1 更新实时波形界面;

2 增加配置页面功能;
master
mzhifa 9 months ago
parent b3242ef58c
commit a7075d8608

1
.gitignore vendored

@ -361,3 +361,4 @@ MigrationBackup/
# Fody - auto-generated XML schema
FodyWeavers.xsd
/mseedC/.vscode

@ -1,14 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
namespace StartServerWPF.Assets
{
public class GlobalData
{
public static string[] StationNames { get; set; }
}
}

@ -84,7 +84,6 @@
<Reference Include="PresentationFramework" />
</ItemGroup>
<ItemGroup>
<Compile Include="GlobalData.cs" />
<Compile Include="LogHelper.cs" />
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>

@ -0,0 +1,164 @@
using Aspose.Cells;
using Newtonsoft.Json;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StartServerWPF.Models
{
public class ApmsModel : BindableBase
{
private string station1;
private List<TTime> ttime1;
private string push2wx1;
private string savepath1;
private string xmin1;
private string xmax1;
private string ymin1;
private string ymax1;
private string zref1;
private string zmin1;
private string zmax1;
private string minstep1;
private List<StationChannelsModel> channels1;
[JsonProperty("station")]
public string station { get => station1; set => SetProperty(ref station1, value); }
[JsonProperty("ttime")]
public List<TTime> ttime { get => ttime1; set => SetProperty(ref ttime1, value); }
[JsonProperty("Main.log_level")]
public string log_level { get; set; }
[JsonProperty("Main.slice_seconds")]
public string slice_seconds { get; set; }
[JsonProperty("Main.overlap_seconds")]
public string overlap_seconds { get; set; }
[JsonProperty("Main.is_mag")]
public string is_mag { get; set; }
[JsonProperty("Main.is_write_slice")]
public string is_write_slice { get; set; }
[JsonProperty("Main.lon")]
public string lon { get; set; }
[JsonProperty("Main.lat")]
public string lat { get; set; }
[JsonProperty("Main.height")]
public string height { get; set; }
[JsonProperty("Main.savepath")]
public string savepath { get => savepath1; set => SetProperty(ref savepath1, value); }
[JsonProperty("Main.push2wx")]
public string push2wx { get => push2wx1; set => SetProperty(ref push2wx1, value); }
[JsonProperty("Main.push_url")]
public string push_url { get; set; }
[JsonProperty("Main.push_mag")]
public string push_mag { get; set; }
[JsonProperty("Main.message_id")]
public string message_id { get; set; }
[JsonProperty("Main.company_id")]
public string company_id { get; set; }
[JsonProperty("Main.area_id")]
public string area_id { get; set; }
[JsonProperty("Main.content")]
public string content { get; set; }
[JsonProperty("Main.push_key")]
public string push_key { get; set; }
[JsonProperty("RServer.host")]
public string host { get; set; }
public List<StationChannelsModel> channels { get => channels1; set => SetProperty(ref channels1, value); }
[JsonProperty("Locate.log_level")]
public string llog_level { get; set; }
[JsonProperty("Locate.work_path")]
public string work_path { get; set; }
[JsonProperty("Locate.xmin")]
public string xmin { get => xmin1; set => SetProperty(ref xmin1, value); }
[JsonProperty("Locate.xmax")]
public string xmax { get => xmax1; set => SetProperty(ref xmax1, value); }
[JsonProperty("Locate.ymin")]
public string ymin { get => ymin1; set => SetProperty(ref ymin1, value); }
[JsonProperty("Locate.ymax")]
public string ymax { get => ymax1; set => SetProperty(ref ymax1, value); }
[JsonProperty("Locate.zref")]
public string zref { get => zref1; set => SetProperty(ref zref1, value); }
[JsonProperty("Locate.zmin")]
public string zmin { get => zmin1; set => SetProperty(ref zmin1, value); }
[JsonProperty("Locate.zmax")]
public string zmax { get => zmax1; set => SetProperty(ref zmax1, value); }
[JsonProperty("Locate.minstep")]
public string minstep { get => minstep1; set => SetProperty(ref minstep1, value); }
[JsonProperty("Locate.method")]
public string method { get; set; }
[JsonProperty("Locate.clusted_otime")]
public string clusted_otime { get; set; }
// public string delaytime { get; set; }
public List<StationControlModel> CreateStationFromCSV(string fn)
{
if (!File.Exists(fn)) return null;
List<StationControlModel> stations = new List<StationControlModel>();
Aspose.Cells.TxtLoadOptions lo = new TxtLoadOptions();
lo.Encoding = Encoding.Default;//设置编码方式
Workbook workbook = new Workbook(fn, lo);
//配置读取文件的类型CSV
workbook.FileFormat = FileFormatType.Csv;//可在此配置Excel文件类型
Worksheet worksheet = workbook.Worksheets[0];//默认第一个Sheet页
Cells cells = worksheet.Cells;
//读取到DataTable中
DataTable dt = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxColumn + 1, true);
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow row = dt.Rows[i];
StationControlModel model = new StationControlModel();
model.NetWork = row[0].ToString();
model.Num = row[1].ToString();
model.Coordinate = new Coordinate3D(double.Parse(row[2].ToString()), double.Parse(row[3].ToString()), double.Parse(row[4].ToString()));
model.Sens = double.Parse(row[5].ToString());
model.BeginUseTime = DateTime.Parse(row[6].ToString());
model.StopUseTime = DateTime.Parse(row[7].ToString());
// model.Location = this.StationConfig.Location;
stations.Add(model);
}
//释放资源
workbook = null;
worksheet = null;
return stations;
}
}
public class TTime : BindableBase
{
private string ttime2d1;
[JsonProperty("station")]
public string station { get; set; }
[JsonProperty("ttime")]
public string ttime { get; set; }
[JsonProperty("ttime2d")]
public string ttime2d { get => ttime2d1;
set => SetProperty(ref ttime2d1, value);
}
}
public class StationChannelsModel : BindableBase
{
private string station1;
public string network { get; set; }
public string location { get; set; }
public string channels { get; set; }
public string station { get => station1;
set => SetProperty(ref station1, value);
}
}
}

@ -4,27 +4,25 @@ using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System.IO;
using StartServerWPF.Modules.Main.Models;
namespace StartServerWPF.Modules.Main
namespace StartServerWPF.Models
{
public class JsonParser
{
// public static string zyProPath = @"\serverprogram";
public static string systemConfigPath = "SystemConfig.json";
public static string serverVision = "20230517";
public static SystemConfig ReadSystemJsonFile(string jsonFile)
public SystemConfigModel ReadSystemJsonFile(string jsonFile)
{
//try
{
//StreamReader sr = File.OpenText(jsonFile);
//JsonTextReader reader = new JsonTextReader(sr);
//JObject jobj = (JObject)JToken.ReadFrom(reader);
SystemConfig sc = new SystemConfig();
SystemConfigModel sc = new SystemConfigModel();
string str = File.ReadAllText(jsonFile);
sc = JsonConvert.DeserializeObject<SystemConfig>(str);
sc = JsonConvert.DeserializeObject<SystemConfigModel>(str);
//sc.SystemLogPath = jobj["SystemLogPath"].ToString();
//sc.DataSavePath = jobj["DataSavePath"].ToString();
@ -92,7 +90,7 @@ namespace StartServerWPF.Modules.Main
// return null;
//}
}
public static void WriteSystemConfigFile(string jsonFile, SystemConfig sc)
public static void WriteSystemConfigFile(string jsonFile, object sc)
{
string str = JsonConvert.SerializeObject(sc, Formatting.Indented);
File.WriteAllText(jsonFile, str);
@ -100,8 +98,11 @@ namespace StartServerWPF.Modules.Main
public static void UpdateApmsJson(string apmsJsonPath, string savePath)
{
StreamReader reader = new StreamReader(apmsJsonPath, Encoding.UTF8);
using (StreamReader reader = new StreamReader(apmsJsonPath, Encoding.UTF8))
{
string saveStr = reader.ReadToEnd();
// strInd = saveStr.IndexOf("station");
int strInd = saveStr.IndexOf("Main.savepath") - 1;
string str1 = saveStr.Substring(strInd);
strInd = str1.IndexOf(",");
@ -113,7 +114,7 @@ namespace StartServerWPF.Modules.Main
saveStr = saveStr.Replace(strs2, $"\"{savePath}\"");
reader.Close();
File.WriteAllText(apmsJsonPath, saveStr);
}
}
public static void UpdateRecvJson(string recvJsonPath, string savePath)
{
@ -141,25 +142,23 @@ namespace StartServerWPF.Modules.Main
}
public static string[] ReadApmsJson(string apmsJsonPath)
public static ApmsModel ReadApmsJson(string apmsJsonPath)
{
ApmsModel model = new ApmsModel();
using (StreamReader sr = File.OpenText(apmsJsonPath))
{
JsonTextReader reader = new JsonTextReader(sr);
JObject jobj = (JObject)JToken.ReadFrom(reader);
model.station = jobj["station"].ToString();
// model.ttime2d = jobj["ttime2d"].ToString();
model.savepath = jobj["Main.savepath"].ToString();
model.push2wx = jobj["push2wx"].ToString();
var jor = jobj["channels"].First;
JObject jordb = JObject.Parse(jor.ToString());
string sta = jordb["station"].ToString();
var staList= sta.Split(",");
return staList;
// model.channels = JsonConvert.DeserializeObject<StationChannelsModel>(jor.ToString());
}
return model;
}
}
}

@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace StartServerWPF.Modules.Main
namespace StartServerWPF.Models
{
public class ProcessInfo
{

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("StartServerWPF.Models")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("StartServerWPF.Models")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("34cc2459-f4f2-4a93-827f-85da7422c736")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StartServerWPF.Modules.Main
namespace StartServerWPF.Models
{
public class RemoteDataBase
{

@ -0,0 +1,70 @@
<?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>{34CC2459-F4F2-4A93-827F-85DA7422C736}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>StartServerWPF.Models</RootNamespace>
<AssemblyName>StartServerWPF.Models</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</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="Aspose.Cells, Version=23.12.0.0, Culture=neutral, PublicKeyToken=716fcc553a201e56, processorArchitecture=MSIL">
<HintPath>..\packages\Aspose.Cells.23.12.0\lib\net40\Aspose.Cells.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="Prism, Version=8.1.97.5141, Culture=neutral, PublicKeyToken=40ee6c3a2184dc59, processorArchitecture=MSIL">
<HintPath>..\packages\Prism.Core.8.1.97\lib\net461\Prism.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
</Reference>
<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="ApmsModel.cs" />
<Compile Include="JsonParser.cs" />
<Compile Include="ProcessInfo.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RemoteDataBase.cs" />
<Compile Include="StationModel.cs" />
<Compile Include="SystemConfigModel.cs" />
<Compile Include="VpnInfo.cs" />
<Compile Include="WorkareaModel.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StartServerWPF.Models
{
public class StationControlModel
{
public string Num { get; set; }
public string VpnName { get; set; }
public string NetWork { get; set;}
public string Location { get; set; }
public bool Enable { get; set; } = true;
public bool Visible { get; set; } = true;
public Coordinate3D Coordinate { get; set; }
public double Sens { get; set; }
public DateTime BeginUseTime { get; set; }
public DateTime StopUseTime { get; set;}
}
}

@ -1,12 +1,13 @@
using System;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StartServerWPF.Modules.Main.Models
namespace StartServerWPF.Models
{
public class SystemConfig
public class SystemConfigModel
{
/// <summary>

@ -2,10 +2,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
namespace StartServerWPF.Modules.Main.Models
namespace StartServerWPF.Models
{
/// <summary>
/// VPN信息类
@ -22,7 +23,9 @@ namespace StartServerWPF.Modules.Main.Models
/// <summary>
/// VPN名称
/// </summary>
public string VpnName { get => vpnName; set => SetProperty(ref vpnName, value); }
public string VpnName { get => vpnName;
set => SetProperty(ref vpnName, value);
}
/// <summary>
/// VPNIP
/// </summary>

@ -0,0 +1,101 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Aspose.Cells;
using Newtonsoft.Json;
namespace StartServerWPF.Models
{
public class WorkareaModel
{
[JsonProperty("StationConfig")]
public StationConfigModel StationConfig { get; set; }
[JsonIgnore]
public List<StationControlModel> Stations { get; set; }
public List<StationControlModel> CreateStationFromCSV(string fn)
{
if (!File.Exists(fn)) return null;
List<StationControlModel> stations = new List<StationControlModel>();
Aspose.Cells.TxtLoadOptions lo = new TxtLoadOptions();
//Debug.WriteLine(Encoding.Default.ToString());
lo.Encoding = Encoding.Default;//设置编码方式
Workbook workbook = new Workbook(fn, lo);
//配置读取文件的类型CSV
workbook.FileFormat = FileFormatType.Csv;//可在此配置Excel文件类型
Worksheet worksheet = workbook.Worksheets[0];//默认第一个Sheet页
Cells cells = worksheet.Cells;
//读取到DataTable中
DataTable dt = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxColumn + 1, true);
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow row = dt.Rows[i];
StationControlModel model = new StationControlModel();
model.NetWork = row[0].ToString();
model.Num = row[1].ToString();
model.Coordinate=new Coordinate3D(double.Parse(row[2].ToString()), double.Parse(row[3].ToString()), double.Parse(row[4].ToString()));
model.Sens = double.Parse(row[5].ToString());
model.BeginUseTime = DateTime.Parse(row[6].ToString());
model.StopUseTime = DateTime.Parse(row[7].ToString());
model.Location=this.StationConfig.Location;
stations.Add(model);
}
//释放资源
workbook = null;
worksheet = null;
return stations;
}
}
public class StationConfigModel
{
[JsonProperty("Network")]
public string Network { get; set; }
[JsonProperty("Location")]
public string Location { get; set; }
[JsonProperty("Channels")]
public string[] Channels { get; set; }
[JsonProperty("StationCoordCsvPath")]
public string StationCoordCsvPath { get; set; }
}
public class Coordinate3D
{
[JsonProperty("X")]
public double X { get; set; }
[JsonProperty("Y")]
public double Y { get; set; }
[JsonProperty("Z")]
public double Z { get; set; }
public Coordinate3D()
{
}
public Coordinate3D(double x,double y,double z)
{
X= x;
Y= y;
Z= z;
}
}
public enum WellType
{
Wellhead=0,
TargetLayer=1
}
}

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Aspose.Cells" version="23.12.0" targetFramework="net461" />
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net461" />
<package id="Prism.Core" version="8.1.97" targetFramework="net461" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net461" />
</packages>

@ -1,27 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StartServerWPF.Modules.Main.Models
{
public class ApmsConfig
{
private string station;
public string Station
{
get { return station; }
set { station = value; }
}
private string mainlog_level;
public string Mainlog_level
{
get { return mainlog_level; }
set { mainlog_level = value; }
}
}
}

@ -5,6 +5,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using StartServerWPF.Models;
using StartServerWPF.Modules.Main.Models;
namespace StartServerWPF.Modules.Main

@ -29,6 +29,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\StartServerWPF.Assets\StartServerWPF.Assets.csproj" />
<ProjectReference Include="..\StartServerWPF.Models\StartServerWPF.Models.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="DotRas">

@ -59,7 +59,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
{
SelectIndexLogType = "全部";
DataList = new List<LogMessageModel>();
string fileName = _mainViewModel.sc.vpnInfo.SystemLogPath+ "SerLog_" + EndTime.ToString("yyyyMMdd") + ".txt";
string fileName = _mainViewModel._systemConfig.vpnInfo.SystemLogPath+ "SerLog_" + EndTime.ToString("yyyyMMdd") + ".txt";
if (!File.Exists(fileName))
return;
Task.Run(() =>

@ -1,6 +1,7 @@
using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using StartServerWPF.Models;
using StartServerWPF.Modules.Main.models;
using StartServerWPF.Modules.Main.Models;
using System;

@ -4,6 +4,7 @@ using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using StartServerWPF.Assets;
using StartServerWPF.Models;
using StartServerWPF.Modules.Main.models;
using StartServerWPF.Modules.Main.Models;
using System;
@ -28,33 +29,31 @@ namespace StartServerWPF.Modules.Main.ViewModels
{
public class MainViewModel : BindableBase
{
public MainViewModel(IDialogService dialogService, WebsocketClient websocket, LoginViewDialogViewModel loginViewDialogViewModel)
public MainViewModel(SystemConfigModel systemConfig, IDialogService dialogService, WebsocketClient websocket, LoginViewDialogViewModel loginViewDialogViewModel)
{
Message = "View A" ;
Console.WriteLine(System.Environment.CurrentDirectory + "\\" + JsonParser.systemConfigPath);
sc = JsonParser.ReadSystemJsonFile(JsonParser.systemConfigPath);
_systemConfig = systemConfig;
// int moniTimeInd = sc.proMonitor.ProParams.IndexOf("-btime");
// string moniTimeStr = sc.proMonitor.ProParams.Substring(moniTimeInd + 7);
// int moniTimeIndEnd = moniTimeStr.IndexOf(">");
//moniTimeStr = moniTimeStr.Substring(0, moniTimeIndEnd - 1);
// MoniStartTime = DateTime.Parse(moniTimeStr);
InitializeParams();
JsonParser.UpdateApmsJson(sc.proApms.ProPath + "apms.json", sc.vpnInfo.DataSavePath);
JsonParser.UpdateRecvJson(sc.proRecv.ProPath + "gw.recvftp.json", sc.vpnInfo.DataSavePath);
JsonParser.UpdateApmsJson(_systemConfig.proApms.ProPath + "apms.json", _systemConfig.vpnInfo.DataSavePath);
JsonParser.UpdateRecvJson(_systemConfig.proRecv.ProPath + "gw.recvftp.json", _systemConfig.vpnInfo.DataSavePath);
// sc.proMonitor.ProParams = JsonParser.CreateMonitorStartParam(sc.vpnInfo.DataSavePath, MoniStartTime);
StartTime = DateTime.Now;
Console.WriteLine(System.Environment.CurrentDirectory);
Console.WriteLine(sc.remoteDb.ServerAddress + "\t" + sc.remoteDb.ServerPort
+ "\t" + sc.remoteDb.UserName + "\t" + sc.remoteDb.Password);
Console.WriteLine(_systemConfig.remoteDb.ServerAddress + "\t" + _systemConfig.remoteDb.ServerPort
+ "\t" + _systemConfig.remoteDb.UserName + "\t" + _systemConfig.remoteDb.Password);
this._dialogService = dialogService;
this._websocket = websocket;
this._loginViewDialogViewModel = loginViewDialogViewModel;
_websocket.WebSocketInit(sc.remoteDb.WebsocketUrl);
_websocket.WebSocketInit(_systemConfig.remoteDb.WebsocketUrl);
_websocket.WebsocketError = WebSocket_Error;
_websocket.WebSocketMessageReceived = WebSocket4Net_MessageReceived;
GlobalData.StationNames = JsonParser.ReadApmsJson(sc.proApms.ProPath + sc.proApms.JsonPath);
DialogParameters param = new DialogParameters();
param.Add("type", 1);// 编辑
_dialogService.ShowDialog(
@ -108,7 +107,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
State = user.account+ "登录",
OriginTime = DateTime.Now,
};
LogHelper.WriteSerLog(sc.vpnInfo.SystemLogPath, log.ToString());
LogHelper.WriteSerLog(_systemConfig.vpnInfo.SystemLogPath, log.ToString());
}
});
break;
@ -307,8 +306,8 @@ namespace StartServerWPF.Modules.Main.ViewModels
}
private void ConnectVPN()
{
vpn.CreateOrUpdateVPN(sc.vpnInfo.VpnName, sc.vpnInfo.VpnIP);
vpn.ConnectVPN(sc.vpnInfo.VpnName, sc.vpnInfo.VpnUserName, sc.vpnInfo.VpnPsw);
vpn.CreateOrUpdateVPN(_systemConfig.vpnInfo.VpnName, _systemConfig.vpnInfo.VpnIP);
vpn.ConnectVPN(_systemConfig.vpnInfo.VpnName, _systemConfig.vpnInfo.VpnUserName, _systemConfig.vpnInfo.VpnPsw);
Thread.Sleep(1000);
var log = new LogMessageModel
{
@ -317,7 +316,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
State="连接",
OriginTime = DateTime.Now,
};
LogHelper.WriteSerLog(sc.vpnInfo.SystemLogPath , log.ToString());
LogHelper.WriteSerLog(_systemConfig.vpnInfo.SystemLogPath , log.ToString());
SetControlstatus();
}
@ -325,7 +324,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
{
if (MessageBox.Show("是否断开VPN连接", "提示", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
vpn.DisConnectVPN(sc.vpnInfo.VpnName);
vpn.DisConnectVPN(_systemConfig.vpnInfo.VpnName);
Thread.Sleep(500);
SetControlstatus();
Thread.Sleep(100);
@ -336,13 +335,13 @@ namespace StartServerWPF.Modules.Main.ViewModels
State = "断开",
OriginTime = DateTime.Now,
};
LogHelper.WriteSerLog(sc.vpnInfo.SystemLogPath , log.ToString());
LogHelper.WriteSerLog(_systemConfig.vpnInfo.SystemLogPath , log.ToString());
}
}
private void GetVPNStatus()
{
if (vpn.CheckVpnStatus(sc.vpnInfo.VpnName))
if (vpn.CheckVpnStatus(_systemConfig.vpnInfo.VpnName))
{
MessageBox.Show("VPN已经连接!");
}
@ -356,7 +355,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
{
DialogParameters param = new DialogParameters();
param.Add("type", 1);// 编辑
param.Add("model", sc);
param.Add("model", _systemConfig);
param.Add("moniTime", MoniStartTime);
_dialogService.ShowDialog(
"SetParamDialog",
@ -372,7 +371,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
private void DisplayLog()
{
Process.Start("explorer.exe", sc.vpnInfo.SystemLogPath);
Process.Start("explorer.exe", _systemConfig.vpnInfo.SystemLogPath);
}
private void Start( object obj)
{
@ -390,9 +389,9 @@ namespace StartServerWPF.Modules.Main.ViewModels
private void OneKeyStart()
{
ProcessDataSource.Clear();
foreach (var item in sc.GetType().GetProperties())
foreach (var item in _systemConfig.GetType().GetProperties())
{
var pro = item.GetValue(sc) as ProcessInfo;
var pro = item.GetValue(_systemConfig) as ProcessInfo;
if (pro != null)
{
StartTime = DateTime.Now;
@ -402,7 +401,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
ProName = pro.ProName,
ProcessTile = pro.ProTitle,
MonitorTime = DateTime.Now.ToString(),
ProcessStatus = sc.proServer.Pid == 0 ? "正常运行" : "未运行"
ProcessStatus = _systemConfig.proServer.Pid == 0 ? "正常运行" : "未运行"
}) ;
Thread.Sleep(10);
}
@ -415,7 +414,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
State = "启动服务程序",
OriginTime = DateTime.Now,
};
LogHelper.WriteSerLog(sc.vpnInfo.SystemLogPath , log.ToString());
LogHelper.WriteSerLog(_systemConfig.vpnInfo.SystemLogPath , log.ToString());
IsIndeterminate =true;
timer1.Interval = TimeSpan.FromSeconds(ProMonInterval);
timer1.Start();
@ -423,9 +422,9 @@ namespace StartServerWPF.Modules.Main.ViewModels
public void OneKeyStop()
{
foreach (var item in sc.GetType().GetProperties())
foreach (var item in _systemConfig.GetType().GetProperties())
{
var pro = item.GetValue(sc) as ProcessInfo;
var pro = item.GetValue(_systemConfig) as ProcessInfo;
if (pro != null)
{
int indexPro = KillProcess(pro);
@ -444,7 +443,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
State = "启动服务关闭",
OriginTime = DateTime.Now,
};
LogHelper.WriteSerLog(sc.vpnInfo.SystemLogPath , log.ToString());
LogHelper.WriteSerLog(_systemConfig.vpnInfo.SystemLogPath , log.ToString());
StartTime = new DateTime();
}
@ -484,7 +483,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
}
private void IntilVPN()
{
vpn = new VPNHelper(sc.vpnInfo.VpnName, sc.vpnInfo.VpnIP, sc.vpnInfo.VpnUserName, sc.vpnInfo.VpnPsw);
vpn = new VPNHelper(_systemConfig.vpnInfo.VpnName, _systemConfig.vpnInfo.VpnIP, _systemConfig.vpnInfo.VpnUserName, _systemConfig.vpnInfo.VpnPsw);
}
@ -494,7 +493,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
public VPNHelper vpn;
public bool vpnStatus = false;
public SystemConfig sc;
public SystemConfigModel _systemConfig;
private DispatcherTimer timer1= new DispatcherTimer();
private readonly IDialogService _dialogService;
@ -520,7 +519,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
State = "程序启动",
OriginTime = DateTime.Now,
};
LogHelper.WriteSerLog(sc.vpnInfo.SystemLogPath , log.ToString());
LogHelper.WriteSerLog(_systemConfig.vpnInfo.SystemLogPath , log.ToString());
}
#region 方法
private bool CMDStartProcess(ProcessInfo proInfo)
@ -564,11 +563,11 @@ namespace StartServerWPF.Modules.Main.ViewModels
{
Application.Current.Dispatcher.BeginInvoke(() =>
{
if (pro.MainModule.ModuleName.Contains(sc.proApms.ProName))
if (pro.MainModule.ModuleName.Contains(_systemConfig.proApms.ProName))
{
AddItems(ApmsProcessSliceSource, new ProcessingInformationModel { ProcessMes = outLine.Data, MonitorTime = DateTime.Now.ToString() });
}
else if (pro.MainModule.ModuleName.Contains(sc.proTools.ProName))
else if (pro.MainModule.ModuleName.Contains(_systemConfig.proTools.ProName))
{
AddItems(ToolsProcessSliceSource, new ProcessingInformationModel { ProcessMes = outLine.Data, MonitorTime = DateTime.Now.ToString() });
}
@ -582,7 +581,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
{
Application.Current.Dispatcher.BeginInvoke(() =>
{
if (pro.MainModule.ModuleName.Contains(sc.proApms.ProName))
if (pro.MainModule.ModuleName.Contains(_systemConfig.proApms.ProName))
{
var ms = new MsEventModel(outLine.Data) { CurrentTime = DateTime.Now };
AddItems(ApmsEventSource, ms);
@ -598,7 +597,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
_websocket.SendMes(jsonStr);
}
}
else if (pro.MainModule.ModuleName.Contains(sc.proTools.ProName))
else if (pro.MainModule.ModuleName.Contains(_systemConfig.proTools.ProName))
{
AddItems(ToolsEventSource, new MsEventModel(outLine.Data) { CurrentTime = DateTime.Now });
}
@ -710,9 +709,9 @@ namespace StartServerWPF.Modules.Main.ViewModels
private void timer1_Tick(object? sender, EventArgs e)
{
foreach (var item in sc.GetType().GetProperties())
foreach (var item in _systemConfig.GetType().GetProperties())
{
var pro = item.GetValue(sc) as ProcessInfo;
var pro = item.GetValue(_systemConfig) as ProcessInfo;
if (pro != null)
{
int sfp = FindProcess(pro);
@ -734,7 +733,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
State = "重启",
OriginTime = DateTime.Now,
};
LogHelper.WriteSerLog(sc.vpnInfo.SystemLogPath , log.ToString());
LogHelper.WriteSerLog(_systemConfig.vpnInfo.SystemLogPath , log.ToString());
string jsonStr= JsonSerializer.Serialize(new CSDeviceWebhook
{
@ -752,10 +751,10 @@ namespace StartServerWPF.Modules.Main.ViewModels
}
}
RunTime = DateDiff(DateTime.Now, StartTime);
vpnStatus = vpn.CheckVpnStatus(sc.vpnInfo.VpnName);
vpnStatus = vpn.CheckVpnStatus(_systemConfig.vpnInfo.VpnName);
if (!vpnStatus)
{
vpn.ConnectVPN(sc.vpnInfo.VpnName, sc.vpnInfo.VpnUserName, sc.vpnInfo.VpnPsw);
vpn.ConnectVPN(_systemConfig.vpnInfo.VpnName, _systemConfig.vpnInfo.VpnUserName, _systemConfig.vpnInfo.VpnPsw);
Thread.Sleep(1000);
var log = new LogMessageModel
{
@ -764,7 +763,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
State = "重连",
OriginTime = DateTime.Now,
};
LogHelper.WriteSerLog(sc.vpnInfo.SystemLogPath , log.ToString());
LogHelper.WriteSerLog(_systemConfig.vpnInfo.SystemLogPath , log.ToString());
string jsonStr = JsonSerializer.Serialize(new CSDeviceWebhook
{
@ -793,7 +792,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
AddressIP = _IPAddress.ToString();
if (AddressIP.Contains("172.16"))
{
sc.vpnInfo.VpnIP = AddressIP;
_systemConfig.vpnInfo.VpnIP = AddressIP;
}
}
}
@ -801,7 +800,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
public void SetControlstatus()
{
vpnStatus = vpn.CheckVpnStatus(sc.vpnInfo.VpnName);
vpnStatus = vpn.CheckVpnStatus(_systemConfig.vpnInfo.VpnName);
if (vpnStatus)
{
VPNIsConnect = true;

@ -1,6 +1,7 @@
using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using StartServerWPF.Models;
using StartServerWPF.Modules.Main.Models;
using System;
using System.Collections.Generic;
@ -34,12 +35,12 @@ namespace StartServerWPF.Modules.Main.ViewModels
// _title = "编辑" + _title;
var _type = parameters.GetValue<int>("type");
// _title = (_type == 0 ? "新增" : "修改") + _title;
_systemConfig = parameters.GetValue<SystemConfig>("model");
_systemConfig = parameters.GetValue<SystemConfigModel>("model");
MainModel= _systemConfig.vpnInfo;
MoniTime= parameters.GetValue<DateTime>("moniTime");
}
private SystemConfig _systemConfig;
private SystemConfigModel _systemConfig;
private VpnInfo _mainModel = new VpnInfo();
public VpnInfo MainModel
{

@ -1,9 +1,14 @@
using Prism.Commands;
using Newtonsoft.Json;
using Prism.Commands;
using Prism.Ioc;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using StartServerWPF.Models;
using StartServerWPF.Modules.Main.Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -14,24 +19,110 @@ namespace StartServerWPF.Modules.Main.ViewModels
{
public class SetParamViewModel : BindableBase
{
public SetParamViewModel(MainViewModel mainViewModel)
public SetParamViewModel(MainViewModel mainViewModel,SystemConfigModel configModel)
{
_systemConfig = mainViewModel.sc;
_systemConfig = mainViewModel._systemConfig;
MainModel = _systemConfig.vpnInfo;
MoniTime = mainViewModel.MoniStartTime;
string sapm = File.ReadAllText(configModel.proApms.ProPath+ "apms.json");
AModel = JsonConvert.DeserializeObject<ApmsModel>(sapm);
ApmsJsonName = _systemConfig.proApms.JsonPath;
var apmsStation = ToolsModel.CreateStationFromCSV(configModel.proApms.ProPath + AModel.station);
ApmsStationSource = new ObservableCollection<StationControlModel>();
foreach (var item in apmsStation)
{
if (item.Enable)
{
ApmsStationSource.Add(item);
}
}
IsApmswxNotity = AModel.push2wx == "NO" ? false : true;
string tool = File.ReadAllText(configModel.proTools.ProPath + "apms.json");
ToolsModel = JsonConvert.DeserializeObject<ApmsModel>(tool);
ToolsJsonName = _systemConfig.proTools.JsonPath;
var st= ToolsModel.CreateStationFromCSV(configModel.proTools.ProPath + AModel.station);
ToolsStationSource = new ObservableCollection<StationControlModel>();
foreach (var item in st)
{
if (item.Enable)
{
ToolsStationSource.Add(item);
}
}
IsToolswxNotity = ToolsModel.push2wx == "NO" ? false : true;
int index= _systemConfig.proTools.ProParams.IndexOf("-delay");
int.TryParse (_systemConfig.proTools.ProParams.Substring(index+ "-delay".Length), out int Time);
DelayTime = Time/60;
}
private string _title = "应用列表";
public string Title => _title;
private SystemConfigModel _systemConfig;
private string _apmsJsonName;
public string ApmsJsonName
{
get => _apmsJsonName;
set { SetProperty(ref _apmsJsonName, value); }
}
private bool _isApmswxNotity;
public bool IsApmswxNotity
{
get => _isApmswxNotity;
set { SetProperty(ref _isApmswxNotity, value); }
}
private ApmsModel _apmsModel = new ApmsModel();
public ApmsModel AModel
{
get => _apmsModel;
set { SetProperty(ref _apmsModel, value); }
}
private string _toolsJsonName;
public string ToolsJsonName
{
get => _toolsJsonName;
set { SetProperty(ref _toolsJsonName, value); }
}
private ApmsModel _toolsModel = new ApmsModel();
public ApmsModel ToolsModel
{
get => _toolsModel;
set { SetProperty(ref _toolsModel, value); }
}
private bool _isToolswxNotity;
public bool IsToolswxNotity
{
get => _isToolswxNotity;
set { SetProperty(ref _isToolswxNotity, value); }
}
private int _delayTime;
public int DelayTime
{
get => _delayTime;
set { SetProperty(ref _delayTime, value); }
}
private ObservableCollection<StationControlModel> _toolsStationSource;
public ObservableCollection<StationControlModel> ToolsStationSource
{ get => _toolsStationSource; set => SetProperty(ref _toolsStationSource, value); }
private ObservableCollection<StationControlModel> _ApmsStationSource;
public ObservableCollection<StationControlModel> ApmsStationSource
{ get => _ApmsStationSource; set => SetProperty(ref _ApmsStationSource, value); }
private SystemConfig _systemConfig;
private VpnInfo _mainModel = new VpnInfo();
public VpnInfo MainModel
{
get => _mainModel;
set { SetProperty(ref _mainModel, value); }
}
private DateTime _moniTime ;
public DateTime MoniTime
{
@ -71,7 +162,6 @@ namespace StartServerWPF.Modules.Main.ViewModels
{
get => new DelegateCommand(() =>
{
// 确认操作
// 数据校验关键字段不能为空、年龄做数字区间的校验、做UserName的唯一检查自定义特性检查
if (string.IsNullOrEmpty(MainModel.VpnName) || string.IsNullOrEmpty(MainModel.VpnIP))
{
@ -82,12 +172,34 @@ namespace StartServerWPF.Modules.Main.ViewModels
MessageBoxImage.Exclamation) == MessageBoxResult.OK)
{
AModel.channels[0].station = string.Join(",", ApmsStationSource.Where(p => p.Enable).Select(a => a.Num));
if(_systemConfig.proApms.JsonPath != ApmsJsonName)
{
_systemConfig.proApms.ProParams = _systemConfig.proApms.ProParams.Replace(_systemConfig.proApms.JsonPath, ApmsJsonName);
_systemConfig.proApms.JsonPath = ApmsJsonName;
}
JsonParser.WriteSystemConfigFile(_systemConfig.proApms.ProPath + ApmsJsonName, AModel);
ToolsModel.channels[0].station = string.Join(",", ToolsStationSource.Where(p => p.Enable).Select(a => a.Num));
if (_systemConfig.proTools.JsonPath != ToolsJsonName)
{
_systemConfig.proTools.ProParams = _systemConfig.proTools.ProParams.Replace(_systemConfig.proTools.JsonPath, ToolsJsonName);
_systemConfig.proTools.JsonPath = ToolsJsonName;
}
if (_systemConfig.vpnInfo.DataSavePath != ToolsModel.savepath)
{
_systemConfig.proTools.ProParams= _systemConfig.proTools.ProParams.Replace(_systemConfig.vpnInfo.DataSavePath, ToolsModel.savepath);
_systemConfig.vpnInfo.DataSavePath = ToolsModel.savepath;
}
JsonParser.WriteSystemConfigFile(_systemConfig.proTools.ProPath + ToolsJsonName, ToolsModel);
int index = _systemConfig.proTools.ProParams.IndexOf("-delay");
_systemConfig.proTools.ProParams= $"{_systemConfig.proTools.ProParams.Substring(0, index)} -delay {DelayTime*60}";
JsonParser.WriteSystemConfigFile(JsonParser.systemConfigPath, _systemConfig);
if (updateJson)
{
JsonParser.UpdateRecvJson(_systemConfig.proRecv.ProPath + _systemConfig.proRecv.JsonPath, _systemConfig.vpnInfo.DataSavePath);
JsonParser.UpdateApmsJson(_systemConfig.proApms.ProPath + _systemConfig.proApms.JsonPath, _systemConfig.vpnInfo.DataSavePath);
//JsonParser.UpdateApmsJson(_systemConfig.proApms.ProPath + _systemConfig.proApms.JsonPath, _systemConfig.vpnInfo.DataSavePath);
}
// RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
}

@ -4,9 +4,10 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:prism="http://prismlibrary.com/"
xmlns:hc="https://handyorg.github.io/handycontrol"
prism:ViewModelLocator.AutoWireViewModel="True"
mc:Ignorable="d" Background="#FFEEF1F3"
d:DesignHeight="300" d:DesignWidth="500">
d:DesignHeight="600" d:DesignWidth="900">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
@ -23,52 +24,242 @@
<TextBlock Text="{Binding Title}" FontSize="16" FontWeight="Bold" VerticalAlignment="Center" Margin="10,0,10,0"/>
</Border>
<Border Background="White" Grid.Row="1" CornerRadius="5" Margin="10">
<Grid Margin="100,0,0,0">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition Height="4*"/>
<RowDefinition Height="2*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="5*"/>
<RowDefinition Height="1*" />
<RowDefinition Height="auto" />
<RowDefinition Height="200" />
</Grid.RowDefinitions>
<Grid Grid.Row="1" >
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Grid.Row="0">
<UniformGrid Columns="1">
<TextBlock Text="实时处理配置" Background="Black" Foreground="White" VerticalAlignment="Center" Height="30" FontSize="18"/>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="JsonName:" Width="65" VerticalAlignment="Center"/>
<Button Content="..." DockPanel.Dock="Right" Visibility="Hidden"/>
<TextBox DockPanel.Dock="Left" Text="{Binding ApmsJsonName}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="station:" Width="65" VerticalAlignment="Center"/>
<Button Content="..." DockPanel.Dock="Right" Command="{Binding }"/>
<TextBox DockPanel.Dock="Left" Text="{Binding AModel.station}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="ttime2d:" Width="65" VerticalAlignment="Center"/>
<Button Content="..." DockPanel.Dock="Right" Command="{Binding }"/>
<TextBox DockPanel.Dock="Left" Text="{Binding AModel.ttime[0].ttime2d}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="savepath:" Width="65" VerticalAlignment="Center"/>
<Button Content="..." DockPanel.Dock="Right" Command="{Binding }"/>
<TextBox DockPanel.Dock="Left" Text="{Binding AModel.savepath}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center" >
<TextBlock Text="微信通知:" Width="65" VerticalAlignment="Center"/>
<CheckBox IsChecked="{Binding IsApmswxNotity}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="network:" VerticalAlignment="Center"/>
<TextBox Text="{Binding AModel.channels[0].network}" IsReadOnly="True"/>
<TextBlock Text="location:" VerticalAlignment="Center"/>
<TextBox Text="{Binding AModel.channels[0].location}" IsReadOnly="True"/>
<TextBlock Text="channels:" VerticalAlignment="Center"/>
<TextBox Text="{Binding AModel.channels[0].channels}" IsReadOnly="True"/>
</DockPanel>
</UniformGrid>
</Border>
<GroupBox Grid.Row="1" Grid.Column="0" Header="台站配置" Style="{StaticResource BaseStyle}">
<ListBox ItemsSource="{Binding ApmsStationSource}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel>
</WrapPanel>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border CornerRadius="5"
BorderThickness="1">
<Grid>
<CheckBox IsChecked="{Binding Enable}" Content="{Binding Num}"/>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</GroupBox>
<GroupBox Grid.Row="2" Grid.Column="0" Header="工区配置" Style="{StaticResource BaseStyle}">
<UniformGrid Columns="2">
<DockPanel VerticalAlignment="Center">
<TextBlock Text="xmin: " VerticalAlignment="Center"/>
<TextBox Text="{Binding AModel.xmin}"/>
</DockPanel>
<DockPanel Margin="10,0,0,0" VerticalAlignment="Center">
<TextBlock Text="xmax: " VerticalAlignment="Center"/>
<TextBox Text="{Binding AModel.xmax}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="ymin: " VerticalAlignment="Center"/>
<TextBox Text="{Binding AModel.ymin}"/>
</DockPanel>
<DockPanel Margin="10,0,0,0" VerticalAlignment="Center">
<TextBlock Text="ymax: " VerticalAlignment="Center"/>
<TextBox Text="{Binding AModel.ymax}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="zmin: " VerticalAlignment="Center"/>
<TextBox Text="{Binding AModel.zmin}"/>
</DockPanel>
<DockPanel Margin="10,0,0,0" VerticalAlignment="Center">
<TextBlock Text="zmax: " VerticalAlignment="Center"/>
<TextBox Text="{Binding AModel.zmax}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text=" zref: " VerticalAlignment="Center" />
<TextBox Text="{Binding AModel.zref}"/>
</DockPanel>
<DockPanel Margin="10,0,0,0" VerticalAlignment="Center">
<TextBlock Text=" step: " VerticalAlignment="Center"/>
<TextBox Text="{Binding AModel.minstep}"/>
</DockPanel>
</UniformGrid>
</GroupBox>
<Border Grid.Row="0" Grid.Column="1" Margin="10,0,10,0">
<UniformGrid Columns="1">
<TextBlock Text="后处理配置" Background="Black" Foreground="White" VerticalAlignment="Center" Height="30" FontSize="18"/>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="JsonName:" Width="65" VerticalAlignment="Center"/>
<Button Content="..." DockPanel.Dock="Right" Visibility="Hidden"/>
<TextBox DockPanel.Dock="Left" Text="{Binding ToolsJsonName}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="station:" Width="65" VerticalAlignment="Center"/>
<Button Content="..." DockPanel.Dock="Right" Command="{Binding }"/>
<TextBox DockPanel.Dock="Left" Text="{Binding ToolsModel.station}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="ttime2d:" Width="65" VerticalAlignment="Center"/>
<Button Content="..." DockPanel.Dock="Right" Command="{Binding }"/>
<TextBox DockPanel.Dock="Left" Text="{Binding ToolsModel.ttime[0].ttime2d}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="savepath:" Width="65" VerticalAlignment="Center"/>
<Button Content="..." DockPanel.Dock="Right" Command="{Binding }"/>
<TextBox DockPanel.Dock="Left" Text="{Binding ToolsModel.savepath}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center" >
<TextBlock Text="微信通知:" Width="65" VerticalAlignment="Center"/>
<CheckBox IsChecked="{Binding IsToolswxNotity}"/>
<TextBlock Text="延迟时间(min):" VerticalAlignment="Center" Margin="20,0,0,0"/>
<hc:NumericUpDown Value="{Binding DelayTime}" Maximum="60" Minimum="0"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="network:" VerticalAlignment="Center"/>
<TextBox Text="{Binding ToolsModel.channels[0].network}" IsReadOnly="True"/>
<TextBlock Text="location:" VerticalAlignment="Center"/>
<TextBox Text="{Binding ToolsModel.channels[0].location}" IsReadOnly="True"/>
<TextBlock Text="channels:" VerticalAlignment="Center"/>
<TextBox Text="{Binding ToolsModel.channels[0].channels}" IsReadOnly="True"/>
</DockPanel>
</UniformGrid>
</Border>
<GroupBox Grid.Row="1" Grid.Column="1" Header="台站配置" Style="{StaticResource BaseStyle}" Margin="10,0,10,0">
<ListBox ItemsSource="{Binding ToolsStationSource}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel>
</WrapPanel>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border CornerRadius="5"
BorderThickness="1">
<Grid>
<CheckBox IsChecked="{Binding Enable}" Content="{Binding Num}"/>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</GroupBox>
<GroupBox Grid.Row="2" Grid.Column="1" Header="工区配置" Style="{StaticResource BaseStyle}" Margin="10,0,10,0">
<UniformGrid Columns="2">
<DockPanel VerticalAlignment="Center">
<TextBlock Text="xmin: " VerticalAlignment="Center"/>
<TextBox Text="{Binding ToolsModel.xmin}"/>
</DockPanel>
<DockPanel Margin="10,0,0,0" VerticalAlignment="Center">
<TextBlock Text="xmax: " VerticalAlignment="Center"/>
<TextBox Text="{Binding ToolsModel.xmax}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="ymin: " VerticalAlignment="Center"/>
<TextBox Text="{Binding ToolsModel.ymin}"/>
</DockPanel>
<DockPanel Margin="10,0,0,0" VerticalAlignment="Center">
<TextBlock Text="ymax: " VerticalAlignment="Center"/>
<TextBox Text="{Binding ToolsModel.ymax}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text="zmin: " VerticalAlignment="Center"/>
<TextBox Text="{Binding ToolsModel.zmin}"/>
</DockPanel>
<DockPanel Margin="10,0,0,0" VerticalAlignment="Center">
<TextBlock Text="zmax: " VerticalAlignment="Center"/>
<TextBox Text="{Binding ToolsModel.zmax}"/>
</DockPanel>
<DockPanel VerticalAlignment="Center">
<TextBlock Text=" zref: " VerticalAlignment="Center" />
<TextBox Text="{Binding ToolsModel.zref}"/>
</DockPanel>
<DockPanel Margin="10,0,0,0" VerticalAlignment="Center">
<TextBlock Text=" step: " VerticalAlignment="Center"/>
<TextBox Text="{Binding ToolsModel.minstep}"/>
</DockPanel>
</UniformGrid>
</GroupBox>
<Border Grid.Row="0" Grid.Column="2" Margin="0,0,10,0">
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="70"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<TextBlock Text="IP地址" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" />
<TextBox Text="{Binding MainModel.VpnIP}" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" />
<TextBlock Text="VPN名称" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" />
<TextBox Text="{Binding MainModel.VpnName}" Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" />
<TextBlock Text="用户名:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" />
<TextBox Text="{Binding MainModel.VpnPsw}" Grid.Row="2" Grid.Column="1" VerticalAlignment="Center" />
<TextBlock Text="密码:" Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" />
<TextBlock Text="系统配置" Background="Black" Foreground="White" VerticalAlignment="Center" Height="30" FontSize="18" Grid.ColumnSpan="3" />
<TextBlock Text="IP地址" Grid.Row="1" Grid.Column="0" VerticalAlignment="Top" Margin="0,14,0,0" />
<TextBox Text="{Binding MainModel.VpnIP}" Grid.Row="1" Grid.Column="1" VerticalAlignment="Top" Margin="0,7,0,0" />
<TextBlock Text="VPN名称" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" />
<TextBox Text="{Binding MainModel.VpnName}" Grid.Row="2" Grid.Column="1" VerticalAlignment="Center" />
<TextBlock Text="用户名:" Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" />
<TextBox Text="{Binding MainModel.VpnPsw}" Grid.Row="3" Grid.Column="1" VerticalAlignment="Center" />
<TextBlock Text="密码:" Grid.Row="4" Grid.Column="0" VerticalAlignment="Center" />
<TextBox Text="{Binding MainModel.VpnPsw}" Grid.Row="4" Grid.Column="1" VerticalAlignment="Center" />
<TextBlock Text="存储路径:" Grid.Row="5" Grid.Column="0" VerticalAlignment="Center"/>
<TextBox Text="{Binding MainModel.DataSavePath}" IsReadOnly="True" Grid.Row="5" Grid.Column="1" VerticalAlignment="Center"/>
<Button Content="..." Command="{Binding FilePathSaveCommand}" Grid.Row="5" Grid.Column="2"/>
<TextBlock Text="日志路径:" Grid.Row="6" Grid.Column="0" VerticalAlignment="Center" />
<TextBox Text="{Binding MainModel.SystemLogPath}" IsReadOnly="True" Grid.Row="6" Grid.Column="1" VerticalAlignment="Center" />
<Button Content="..." Command="{Binding LogPathSaveCommand}" Grid.Row="6" Grid.Column="2"/>
</Grid>
<Grid Grid.Row="2" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBlock Text="存储路径:" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center"/>
<TextBox Text="{Binding MainModel.DataSavePath}" IsReadOnly="True" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"/>
<Button Content="..." Command="{Binding FilePathSaveCommand}" Grid.Row="0" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Left"/>
<TextBlock Text="日志路径:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" />
<TextBox Text="{Binding MainModel.SystemLogPath}" IsReadOnly="True" Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" />
<Button Content="..." Command="{Binding LogPathSaveCommand}" Grid.Row="1" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Left"/>
</Grid>
<StackPanel Grid.Row="3" Orientation="Horizontal" VerticalAlignment="Center" Visibility="Collapsed">
</Border>
<StackPanel Grid.Row="3" Grid.Column="2" Orientation="Horizontal" VerticalAlignment="Center" Visibility="Collapsed">
<StackPanel Orientation="Horizontal" VerticalAlignment="Top">
<TextBlock>
<Run Text="监控日期:"/>
@ -80,8 +271,8 @@
<Calendar Name="calendar" SelectedDate="{Binding MoniTime}" HorizontalAlignment="Left" Margin="0,44,0,0" VerticalAlignment="Top" />
</Popup>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Grid.Row="3" >
<Button Content="应用" Width="100" Height="30" Margin="150,0"
<StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Center" Grid.Row="3" Grid.Column="2" Margin="0,0,0,30">
<Button Content="应用" Width="100" Height="30"
Background="#FF0ABEFF"
Command="{Binding ConfirmCommand}"/>
<!--<Button Content="取消" Width="100" Height="30"

@ -25,18 +25,18 @@ namespace StartServerWPF.Modules.MseedChart.Models
//添加Z分量波形
if (item.dz.Count > 0)
{
axisY.SetRange(0, 5000);
axisY.SetRange(0, 100);
}
axisY.Title.Text = string.Format("Ch{0}.Z", item.Name);
axisY.Title.Text = string.Format("{0}.Z", item.Name);
axisY.Title.DistanceToAxis = distancetoX;
axisYList.Add(axisY);
//添加N分量波形
axisY = new AxisY(curChart.ViewXY);
if (item.dn.Count > 0)
{
axisY.SetRange(0, 5000);
axisY.SetRange(0, 100);
}
axisY.Title.Text = string.Format("Ch{0}.N", item.Name);
axisY.Title.Text = string.Format("{0}.N", item.Name);
axisY.Title.DistanceToAxis = distancetoX;
axisYList.Add(axisY);
@ -44,9 +44,9 @@ namespace StartServerWPF.Modules.MseedChart.Models
axisY = new AxisY(curChart.ViewXY);
if (item.de.Count > 0)
{
axisY.SetRange(0, 6000);
axisY.SetRange(0, 100);
}
axisY.Title.Text = string.Format("Ch{0}.E", item.Name);
axisY.Title.Text = string.Format("{0}.E", item.Name);
axisY.Title.DistanceToAxis = distancetoX;
axisYList.Add(axisY);

@ -1,10 +1,12 @@
using ServiceStack;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace StartServerWPF.Modules.MseedChart
{
@ -15,7 +17,7 @@ namespace StartServerWPF.Modules.MseedChart
public extern static int MseedDatas(int a, string[] name);
//public extern static int MseedDatas(Byte[] bytes, int lenght);
[DllImport("mseedC.dll", EntryPoint = "bufferMseedData")]
public extern static int bufferMseedData(int argc, Byte[] argv);
public extern static int bufferMseedData(int length, Byte[] data);
[DllImport("mseedC.dll", EntryPoint = "testc")]
public extern static int testc(int a, int b);
[DllImport("mseedC.dll")]
@ -43,28 +45,45 @@ namespace StartServerWPF.Modules.MseedChart
public int Index { set; get; }
public string sid { set; get; }
public double samprate { set; get; }
public double StartOATime { set; get; }
public Int64 numsamples { set; get; }
public double Average { set; get; } = 0;
public List<double[]> datas { get; }=new List<double[]>();
public void AddData(double aoTime, double[] da)
public DateTime FirstSampleTime { set; get; }
public ConcurrentQueue<ChartSamples> DataOrders { get; set; } = new ConcurrentQueue<ChartSamples>();
public void AddChartSam(Int64 freque,ChartSamples samples)
{
StartOATime = aoTime;
if (datas.Count >= 30)
if (DataOrders.Count != 0)
{
datas.RemoveAt(0);
}
if (da[0] == 0)
ChartSamples chartLast = DataOrders.Last();
var ts = samples.StartTime.Subtract(chartLast.StartTime).Duration();
// 时间差等于上一次收到数据
double count = ts.TotalMilliseconds - chartLast.DataArray.Length;
if (count > 1)
{
if (datas.Count!= 0)
System.Diagnostics.Debug.WriteLine($"填充均值数据总数:{count}********{samples.StartTime}, {chartLast.StartTime}时间差:{ts.TotalSeconds}秒, 频率:{freque}");
var temp = DataOrders.Last();
var Average = temp.DataArray.Average();
DataOrders.Enqueue(new ChartSamples
{
double[] temp = datas.Last();
Average = temp.Average();
da = Enumerable.Repeat(Average, temp.Length).ToArray();
StartTime = samples.StartTime,
DataArray = Enumerable.Repeat(Average, (int)ts.TotalMilliseconds).ToArray()
});
}
}
datas.Add(da);
DataOrders.Enqueue(samples);
}
}
public class ChartSamples
{
public DateTime StartTime { set; get; }
public double samprate { set; get; }
public double[] DataArray { set; get; }
}
}

@ -244,7 +244,7 @@ namespace ZhaoXi.Advanced.MyRedis.Service
base.iClient.PublishMessage(channel, message);
}
public void Subscribe(string channel, Action<string, byte[], IRedisSubscription> actionOnMessage)
public void Subscribe( Action<string, byte[], IRedisSubscription> actionOnMessage, params string[] channel)
{
var subscription = base.iClient.CreateSubscription();
@ -264,10 +264,10 @@ namespace ZhaoXi.Advanced.MyRedis.Service
// ByteToFile(s, "test.mseed");
actionOnMessage(c, s, subscription);
};
Console.WriteLine($"开始启动监听 {channel}");
Console.WriteLine($"开始启动监听 {string.Join(", ", channel)}");
subscription.SubscribeToChannels(channel); //blocking
}
public void UnSubscribeFromChannels(string channel)
public void UnSubscribeFromChannels(string[] channel)
{
var subscription = base.iClient.CreateSubscription();
subscription.UnSubscribeFromChannels(channel);

@ -434,6 +434,10 @@
<Project>{ea0d3c2d-5beb-420c-9222-2e6e5f40bf5c}</Project>
<Name>StartServerWPF.Assets</Name>
</ProjectReference>
<ProjectReference Include="..\StartServerWPF.Models\StartServerWPF.Models.csproj">
<Project>{34cc2459-f4f2-4a93-827f-85da7422c736}</Project>
<Name>StartServerWPF.Models</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

@ -8,12 +8,14 @@ using Prism.Mvvm;
using Prism.Regions;
using ServiceStack;
using StartServerWPF.Assets;
using StartServerWPF.Models;
using StartServerWPF.Modules.MseedChart.Models;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
@ -21,11 +23,8 @@ using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Threading;
using System.Xml.Linq;
using ZhaoXi.Advanced.MyRedis.Service;
namespace StartServerWPF.Modules.MseedChart.ViewModels
@ -34,16 +33,35 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
{
Mseed2asciiApi.LoopCallbackHandler loopCallback;
public ChartPlotRealDataViewModel()
WorkareaModel workarea;
public ChartPlotRealDataViewModel(SystemConfigModel configModel,WorkareaModel workareaModel)
{
_dispatcher = Application.Current.Dispatcher;
_wavesModel = new WavesModel();
(Application.Current.MainWindow as System.Windows.Window).Closing += ApplicationClosingDispose;
IntervalTime=1000;
CreateChart();
_dispatcher = Application.Current.Dispatcher;
IntervalTime =1000;
loopCallback = new Mseed2asciiApi.LoopCallbackHandler(Mseed2AsciiEvent);
Mseed2asciiApi.MseedDatasCallFun(loopCallback);
GC.KeepAlive(loopCallback);
workarea= workareaModel;
_wavesModel = new WavesModel();
if (workarea.Stations != null)
{
List<string> devicesNums = new List<string>();
foreach (var item in workarea.Stations)
{
if (item.Enable)
{
devicesNums.Add(item.Num);
}
}
devicesNums.Sort();
smList = _wavesModel.ReadWavesFromJson(devicesNums.ToArray());
subNameList = new Dictionary<string, ASCiiData>();
CreateChart();
StartChart();
Sure();
}
}
#region 字段
@ -51,7 +69,7 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
Dispatcher _dispatcher;
public int CurPoints;
int _channelCount = 0;
int _samplingFrequency = 500; // 采样频率 (Hz).
int _samplingFrequency = 1000; // 采样频率 (Hz).
WavesModel _wavesModel;
private int _lChartCount = 1;
public ConcurrentQueue<StationModel> smList=new ConcurrentQueue<StationModel>();
@ -60,7 +78,6 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
// Dictionary<string, ASCiiData> cacheChartDic=new Dictionary<string, ASCiiData>();
Dictionary<string, ASCiiData> subNameList;
bool isSubScribeOK = false;
#endregion
#region 属性
@ -73,16 +90,24 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
SetProperty(ref _title, value);
}
}
private bool _isRealtimeData =false;
public bool IsRealtimeData
private bool _IsEnableStartRealtime = true;
public bool IsEnableStartRealtime
{
get { return _isRealtimeData; }
get { return _IsEnableStartRealtime; }
set
{
SetProperty(ref _isRealtimeData, value);
SetProperty(ref _IsEnableStartRealtime, value);
}
}
private bool _IsEnableStopRealtime = false;
public bool IsEnableStopRealtime
{
get { return _IsEnableStopRealtime; }
set
{
SetProperty(ref _IsEnableStopRealtime, value);
}
}
private bool _isMultFiles;
public bool IsMultFiles
{
@ -124,16 +149,9 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
public FrameworkElement ChildContent
{
get { return childContent; }
set { childContent = value; }
set { SetProperty(ref childContent, value); }
}
private Grid gridChart;
public Grid GridChart
{
get { return gridChart; }
set { gridChart = value; }
}
private StationEventJson _currentEventTime;
public StationEventJson CurrentEventTime
@ -198,45 +216,54 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
}
private bool _SingleChannel=false;
private int _StationsNumberIndex=3;
public bool SingleChannel
public int StationsNumberIndex
{
get { return _SingleChannel; }
get { return _StationsNumberIndex; }
set
{
if(!value)
{
YasixZENVisible("SHZ", false);
YasixZENVisible("SHN", false);
YasixZENVisible("SHE", false);
SetProperty(ref _StationsNumberIndex, value);
}
else
{
YasixZENVisible("SHZ", true);
YasixZENVisible("SHN", true);
YasixZENVisible("SHE", true);
YasixZENVisible(SelectChannel, false);
}
SetProperty(ref _SingleChannel, value);
private bool _SHZChannel=true;
public bool SHZChannel
{
get { return _SHZChannel; }
set
{
SetProperty(ref _SHZChannel, value);
}
}
private string _SelectChannel;
public string SelectChannel
private bool _SHEChannel = true;
public bool SHEChannel
{
get { return _SelectChannel; }
get { return _SHEChannel; }
set
{
if (SingleChannel)
SetProperty(ref _SHEChannel, value);
}
}
private bool _SHNChannel = true;
public bool SHNChannel
{
get { return _SHNChannel; }
set
{
//隐藏上当前轴
YasixZENVisible(_SelectChannel, true);
//显示选择轴
YasixZENVisible(value, false);
SetProperty(ref _SHNChannel, value);
}
SetProperty(ref _SelectChannel, value);
}
private double _ChartHeight;
public double ChartHeight
{
get { return _ChartHeight; }
set
{
SetProperty(ref _ChartHeight, value);
}
}
#endregion
@ -244,7 +271,7 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
#region 事件
public DelegateCommand LoadedCommand => new DelegateCommand(Loaded);
public DelegateCommand UnloadedCommand => new DelegateCommand(UnLoaded);
public DelegateCommand<object> AxesYVisibleCommand => new DelegateCommand<object>(AxesYVisible);
public DelegateCommand SureCommand => new DelegateCommand(Sure);
public DelegateCommand<object> FileSelectorCommand => new DelegateCommand<object>(FileSelector);
public DelegateCommand<object> OtimeSortCommand => new DelegateCommand<object>(OtimeSort);
public DelegateCommand IntervalSureCommand => new DelegateCommand(IntervalSure);
@ -252,38 +279,37 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
private void Loaded()
{
//N08,N25,N26
var stations = GlobalData.StationNames;// station.Split(',');
smList = _wavesModel.ReadWavesFromJson(stations);
subNameList = new Dictionary<string, ASCiiData>();
}
private void UnLoaded()
{
time.Stop();
if(subNameList == null) return;
foreach (var subName in subNameList)
{
using (RedisListService service = new RedisListService())
{
//停止订阅
service.Publish(subName.Key, "shutoff");
}
}
}
private void AxesYVisible(object isCheck)
private void Sure()
{
if (_lChartAll != null)
{
bool yAxesVisible = ((bool)isCheck == true);
_lChartAll.BeginUpdate();
foreach (AxisY yAxis in _lChartAll.ViewXY.YAxes)
int index = (StationsNumberIndex == 3) ? _chartAxisY.Count : ((StationsNumberIndex + 1) * 3) * 3;
_lChartAll.ViewXY.YAxes.Clear();
for (int i = 0; i < index; i++)
{
yAxis.Visible = yAxesVisible;
_lChartAll.ViewXY.YAxes.Add(_chartAxisY[i]);
_lChartAll.ViewXY.SampleDataSeries[i].AssignYAxisIndex = i;
}
YasixZENVisible(".Z", SHZChannel);
YasixZENVisible(".E", SHEChannel);
YasixZENVisible(".N", SHNChannel);
_lChartAll.EndUpdate();
//if (index * 30 < 800)
//{
// ChartHeight = 800;
//}
//else
//{
// ChartHeight = index * 50;
//}
}
}
@ -355,46 +381,36 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
/// Y轴的显示和隐藏
/// </summary>
/// <param name="content">SHZ,SHN,SHE</param>
/// <param name="yAxesVisible">true 隐藏轴false显示轴</param>
private void YasixZENVisible(string content, bool yAxesVisible)
/// <param name="isVisible">true 隐藏轴false显示轴</param>
private void YasixZENVisible(string content, bool isVisible)
{
if (_lChartAll != null)
{
_lChartAll.BeginUpdate();
ViewXY v = _lChartAll.ViewXY;
string conStr = (content == "SHZ") ? ".Z" : (content == "SHN") ? ".N" : ".E";
for (int i = 0; i <_chartAxisY.Count; i++)
{
AxisY axisY = _chartAxisY[i];
if (axisY.Title.Text.Contains(conStr))
List<AxisY> currentY= new List<AxisY>();
currentY.AddRange( v.YAxes.Where(y => y.Title.Text.Contains(content)));
foreach (var item in currentY)
{
if (yAxesVisible)
if (!isVisible)
{
//隐藏轴
v.YAxes.Remove(axisY);
v.YAxes.Remove(item);
}
else
{
//显示轴
var axis= v.YAxes.Where(y => y.Title.Text==axisY.Title.Text).FirstOrDefault();
if (axis != null)
var yAxis = v.YAxes.Where(vy => vy.Title.Text == item.Title.Text).FirstOrDefault();
if (yAxis == null)
{
//找到相同的轴不用处理
continue;
}
string str = axisY.Title.Text.Replace(conStr, "");
//没有查到重新添加
string str = item.Title.Text.Replace(content, "");
int yIndex = 0;
if (content == "SHZ")
if (content == ".Z")
{
yIndex = v.YAxes.FindIndex(y => y.Title.Text.Contains(str));
}
else if (content == "SHE")
else if (content == ".E")
{
yIndex = v.YAxes.FindLastIndex(y => y.Title.Text.Contains(str));
if (yIndex != -1) yIndex += 1;
}
else
else if (content == ".N")
{
yIndex = v.YAxes.FindIndex(y => y.Title.Text.Contains(str));
if (yIndex != -1)
@ -409,25 +425,18 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
if (yIndex == -1 || (yIndex == v.YAxes.Count))
{
yIndex = v.YAxes.Count;
v.YAxes.Add(axisY);
v.YAxes.Add(item);
}
else
{
v.YAxes.Insert(yIndex, axisY);
v.YAxes.Insert(yIndex, item);
}
int sampleIndex = v.SampleDataSeries.FindIndex(y => y.Title.Text == _chartAxisY[i].Title.Text);
int sampleIndex = v.SampleDataSeries.FindIndex(y => y.Title.Text == item.Title.Text);
v.SampleDataSeries[sampleIndex].AssignYAxisIndex = yIndex;
int lineIndex = v.LineCollections.FindIndex(a => a.Title.Text.Contains(_chartAxisY[i].Title.Text));
if (lineIndex != -1)
{
v.LineCollections[lineIndex].AssignYAxisIndex = yIndex;
}
}
}
}
_lChartAll.EndUpdate();
}
}
private void IntervalSure()
{
@ -481,7 +490,6 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
_channelCount = smList.Count * 3;
CurrentTime = smList.First().BeginTime.ToShortDateString();
StationsName = smList.Select(a => new StationAxis { Name = a.Name, IsChecked = true, SelectCommand = new DelegateCommand<object>(StationsNameVisible) }).ToList();
if (_lChartAll != null)
{
bool isStartRealData = (Convert.ToBoolean(isCheck) == true);
@ -492,64 +500,62 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
_lChartAll.BeginUpdate();
if (isStartRealData)
{
currentOATime = 0;
IsEnableStartRealtime = false;
IsEnableStopRealtime = true;
_data = new double[smList.Count * 3][];
StartChart();
//Set real-time monitoring automatic old data destruction
beginTime = DateTime.Now.AddSeconds(-0.5);
currentTime = beginTime;
if (AxisValueType.DateTime == LChartALL.ViewXY.XAxes[0].ValueType)
{
DateTime MaxDateTime = currentTime.AddSeconds(_samplingFrequency == 1000 ? 30 : 60);
LChartALL.ViewXY.XAxes[0].SetRange(LChartALL.ViewXY.XAxes[0].DateTimeToAxisValue(currentTime), LChartALL.ViewXY.XAxes[0].DateTimeToAxisValue(MaxDateTime));
}
LChartALL.ViewXY.DropOldSeriesData = true;
//Set real-time monitoring automatic old data destruction
_pointsAppended = LChartALL.ViewXY.XAxes[0].Minimum;
_lChartAll.ViewXY.XAxes[0].ScrollPosition = _pointsAppended;
time.Elapsed -= CompositionTarget_Rendering;
time.Elapsed += CompositionTarget_Rendering;
LChartALL.ViewXY.XAxes[0].ScrollMode = XAxisScrollMode.Scrolling;
Task.Run(() =>
{
Thread.Sleep(3000);
time.Start();
});
using (RedisListService service = new RedisListService())
{
service.FlushAll();
}
foreach (var subName in subNameList)
{
//清空缓存数据;
while (subName.Value.DataOrders.TryDequeue(out ChartSamples result))
{
}
}
Task.Run(() =>
{
using (RedisListService service = new RedisListService())
{
Debug.WriteLine($"注册,:{subName.Key},时间:{DateTime.Now}");
// Debug.WriteLine($"注册,:{subName.Key},时间:{DateTime.Now}");
service.Subscribe((c, message, iRedisSubscription) =>
{
if(subName.Key== subNameList.Keys.Last())
// Debug.WriteLine($"Name:{subName.Key}, length:{message.Length}");
string mes = System.Text.Encoding.Default.GetString(message);
byte[] data = message.Skip(15).ToArray();
string mes1 = System.Text.Encoding.Default.GetString(data);
// if (message.Length == 7 && System.Text.Encoding.Default.GetString(message) == "shutoff")
if(!IsEnableStopRealtime)
{
isSubScribeOK = true;
Debug.WriteLine($"******注册完成********:{subName.Key},时间:{DateTime.Now}");
}
service.Subscribe(subName.Key, (c, message, iRedisSubscription) =>
{
if(message.Length==7 && System.Text.Encoding.Default.GetString(message)== "shutoff")
{
iRedisSubscription.UnSubscribeFromChannels(subName.Key);
iRedisSubscription.UnSubscribeFromChannels(subNameList.Keys.ToArray());
}
Mseed2asciiApi.bufferMseedData(message.Length, message);
});
}
}, subNameList.Keys.ToArray());
}
});
}
}
else
{
IsEnableStartRealtime = true;
IsEnableStopRealtime = false;
time.Stop();
time.Elapsed -= CompositionTarget_Rendering;
LChartALL.ViewXY.XAxes[0].ScrollMode = XAxisScrollMode.None;
foreach (var subName in subNameList)
{
using (RedisListService service = new RedisListService())
{
service.Publish(subName.Key, "shutoff");
}
}
}
_lChartAll.EndUpdate();
@ -558,17 +564,20 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
private void Mseed2AsciiEvent(AsciiDataStruct asciiData)
{
DateTime startTime = Convert.ToDateTime(asciiData.endtime).AddHours(8);
DateTime startTime = Convert.ToDateTime(asciiData.starttime).AddHours(8);
DateTime endTime = Convert.ToDateTime(asciiData.endtime).AddHours(8);
byte[] bytes = new byte[asciiData.numsamples * asciiData.samplesize];
// IntPtr bufferHandler = Marshal.AllocHGlobal((int)asciiData.datasize);
Marshal.Copy(asciiData.datasamples, bytes, 0, bytes.Length);
List<double> lines = new List<double>();
//时间添加到开始
lines.Add(startTime.ToOADate());
string[] sid = asciiData.sid.Split('_');
string name = $"HA.{sid[1]}.{sid[2]}.{sid[3]}{sid[4]}{sid[5]}";
string[] sid = asciiData.sid.Substring(5).Split('_');
string name = $"{sid[0]}.{sid[1]}.{sid[2]}.{sid[3]}{sid[4]}{sid[5]}";
var ts = DateTime.Now.Subtract(startTime);
//System.Diagnostics.Debug.WriteLine($"台站号:{name},总数:{asciiData.samprate},{asciiData.datasize},{asciiData.samplecnt}, {asciiData.numsamples},当前时间:{DateTime.Now.ToString("o")},接时间:{startTime.ToString("o")}********时间差:{ts.TotalSeconds}秒");
if ( ts.TotalSeconds > 10)
{
return;
}
if (asciiData.sampletype == 'i')
{
for (int index = 0; index < bytes.Length; index += 4)
@ -593,20 +602,29 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
lines.Add(b);
}
}
Debug.WriteLine($"接收:{asciiData.sid}:{startTime},count:{lines.Count}");
string lineStr = String.Join(",", lines);
if(!isSubScribeOK)
subNameList[name].AddChartSam(asciiData.numsamples, new ChartSamples
{
return;
StartTime = startTime,
DataArray = lines.ToArray()
});
while (true)
{
var flag = subNameList[name].DataOrders.TryPeek(out ChartSamples dataOrder);
if (flag && DateTime.Now.Subtract(dataOrder.StartTime).TotalSeconds > 35)
{
//删除过期数据
subNameList[name].DataOrders.TryDequeue(out ChartSamples chart);
}
using (RedisListService service = new RedisListService())
else
{
service.LPush(name, lineStr);
break;
}
}
}
#endregion
Grid GridChart;
private void CreateChart()
{
if (LChartALL != null)
@ -618,8 +636,10 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
LChartALL.ChartRenderOptions.DeviceType = RendererDeviceType.AutoPreferD11;
LChartALL.ChartRenderOptions.LineAAType2D = LineAntiAliasingType.QLAA;
LChartALL.Title.Text = "事件波形";
LChartALL.Title.Font = new WpfFont("等线", 20);
LChartALL.Title.Text = "Realtime Waves";
LChartALL.Title.Color = Colors.Black;
LChartALL.Title.Font = new WpfFont("Arial", 20);
LChartALL.Title.Shadow.Style = 0;
//轴属性和布局
LChartALL.ViewXY.AxisLayout.YAxesLayout = YAxesLayout.Stacked;
@ -630,14 +650,19 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
LChartALL.ViewXY.AxisLayout.YAxisTitleAutoPlacement = false;
LChartALL.ViewXY.AxisLayout.AutoAdjustMargins = false;
LChartALL.ViewXY.ZoomPanOptions.DevicePrimaryButtonAction = UserInteractiveDeviceButtonAction.Pan;
LChartALL.ViewXY.ZoomPanOptions.DevicePrimaryButtonAction = UserInteractiveDeviceButtonAction.None;
LChartALL.ViewXY.ZoomPanOptions.DeviceSecondaryButtonAction = UserInteractiveDeviceButtonAction.None;
LChartALL.ViewXY.ZoomPanOptions.WheelZooming = WheelZooming.Horizontal;
LChartALL.ViewXY.ZoomPanOptions.WheelZooming = WheelZooming.Off;
LChartALL.Options.AllowInternalCursorChange = false;//来禁用掉全部图表的鼠标交互
// LChartALL.Options.ShowHints = HintsVisible.Never;
//鼠标选中高亮
LChartALL.Options.AllowUserInteraction = false;
// 反锯齿系数。值0和1都不会应用反锯齿
LChartALL.ChartRenderOptions.AntiAliasLevel = 0;
//X轴设置
LChartALL.ViewXY.XAxes[0].AllowScrolling = true;
LChartALL.ViewXY.XAxes[0].PanningEnabled = true;
LChartALL.ViewXY.XAxes[0].AllowScrolling = false;
LChartALL.ViewXY.XAxes[0].PanningEnabled = false;
LChartALL.ViewXY.XAxes[0].MajorGrid.Pattern = LinePattern.Solid;
LChartALL.ViewXY.XAxes[0].ValueType = AxisValueType.DateTime;
LChartALL.ViewXY.XAxes[0].KeepDivCountOnRangeChange = true;
@ -645,6 +670,10 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
LChartALL.ViewXY.XAxes[0].LabelsColor = Colors.Black;
LChartALL.ViewXY.XAxes[0].AutoDivSpacing = false;
LChartALL.ViewXY.XAxes[0].MajorDivCount = 5;
LChartALL.ViewXY.XAxes[0].Title.Text = "times";
LChartALL.ViewXY.XAxes[0].Title.Font = new WpfFont("Arial", 14);
LChartALL.ViewXY.XAxes[0].Title.Shadow.Style = 0;
LChartALL.ViewXY.XAxes[0].Title.Color = Colors.Black;
XaisInterval = 5;
//图表背景颜色
@ -687,16 +716,16 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
v.LegendBoxes[0].Shadow.Visible = false;
StationModel stationModel = smList.First();
var beginTime = DateTime.Now;// stationModel.BeginTime;
var beginTime = DateTime.Now;
if (AxisValueType.DateTime == v.XAxes[0].ValueType)
{
//设置X轴的开始时间
v.XAxes[0].AutoFormatLabels = false;
v.XAxes[0].LabelsTimeFormat = "HH:mm:ss.ff";
v.XAxes[0].LabelsTimeFormat = "HH:mm:ss.f";
// v.XAxes[0].DateOriginYear = beginTime.Year;
// v.XAxes[0].DateOriginDay = beginTime.Day;
// v.XAxes[0].DateOriginMonth = beginTime.Month;
DateTime MaxDateTime = beginTime.AddSeconds(_samplingFrequency == 500 ? 31 : 61);
DateTime MaxDateTime = beginTime.AddSeconds(_samplingFrequency == 1000? 30 : 60);
v.XAxes[0].SetRange(v.XAxes[0].DateTimeToAxisValue(beginTime), v.XAxes[0].DateTimeToAxisValue(MaxDateTime));
}
double firstSampleTimeStamp = v.XAxes[0].DateTimeToAxisValue(beginTime);
@ -713,12 +742,13 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
int seriesIndex = i;
AxisY axisY = v.YAxes[seriesIndex];
axisY.LabelsColor = Colors.Black;
axisY.Title.Shadow.DropColor = Colors.Transparent;
axisY.Title.Shadow.Style = 0;
axisY.Title.Font = new WpfFont("Courier New", 16);
// axisY.Title.Shadow.ContrastColor = Colors.Transparent;
axisY.Title.AllowDragging = true;
axisY.AllowAutoYFit = true;
axisY.Title.AllowDragging = false;
axisY.AllowAutoYFit = false;
axisY.Units.Visible = false;
axisY.LabelsFont.Size = 10;
axisY.LabelsFont = new WpfFont("Courier New", 7);
axisY.Title.Angle = 0;
axisY.MinorGrid.Visible = false;
axisY.AutoDivSpacing = false;
@ -727,14 +757,14 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
axisY.MinorDivTickStyle.Visible = false;
axisY.MajorGrid.Visible = true;
axisY.MajorGrid.Pattern = LinePattern.Solid;
axisY.MajorDivTickStyle.Alignment = seriesIndex % 2 == 0 ? Alignment.Near : Alignment.Far;
axisY.MajorDivTickStyle.Alignment = Alignment.Far; //seriesIndex % 2 == 0 ? Alignment.Near : Alignment.Far;
// axisY.MajorDivTickStyle.LineLength = 6;
axisY.MajorDivTickStyle.Color = Colors.Black;
axisY.Title.Color = Colors.Black;
axisY.Title.Font = new WpfFont("Segoe UI", 10, false, false);
axisY.Title.Font = new WpfFont("Courier New", 12);
axisY.PanningEnabled = false;
axisY.AllowScrolling = true;
axisY.AllowScaling = true;
axisY.AllowScrolling = false;
axisY.AllowScaling = false;
SampleDataSeries series = new SampleDataSeries(v, v.XAxes[0], axisY);
series.ShowInLegendBox = false;
@ -744,27 +774,30 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
series.SampleFormat = SampleFormat.DoubleFloat;
string subName = string.Empty;
string name = axisY.Title.Text.Substring(2,3);
string name = axisY.Title.Text.Substring(0,4);
if (seriesIndex % 3 == 0)
{
subName = $"HA.{name}.06.SHZ";
subName = $"{workarea.StationConfig.Network}.{name}.{workarea.StationConfig.Location}." +
$"{workarea.StationConfig.Channels[0]}";
series.LineStyle.Color = System.Windows.Media.Colors.DeepSkyBlue;
}
else if (seriesIndex % 3 == 1)
{
subName = $"HA.{name}.06.SHN";
subName = $"{workarea.StationConfig.Network}.{name}.{workarea.StationConfig.Location}." +
$"{workarea.StationConfig.Channels[1]}";
series.LineStyle.Color = System.Windows.Media.Colors.OrangeRed;
}
else if (seriesIndex % 3 == 2)
{
subName = $"HA.{name}.06.SHE";
subName = $"{workarea.StationConfig.Network}.{name}.{workarea.StationConfig.Location}." +
$"{workarea.StationConfig.Channels[2]}";
series.LineStyle.Color = System.Windows.Media.Colors.ForestGreen;
}
if (isAdd)
{
subNameList.Add(subName, new ASCiiData { Index = i, sid = subName });
}
series.LineStyle.Width = 0.2;
series.LineStyle.Width = 1;
series.ScrollModePointsKeepLevel = 1;
//series.ScrollingStabilizing = true;
v.SampleDataSeries.Add(series);
@ -861,7 +894,7 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
}
public void Dispose()
{
gridChart.Children.Clear();
GridChart.Children.Clear();
if (LChartALL != null)
{
@ -872,128 +905,63 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
#region 实时数据
private void CompositionTarget_Rendering(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
RenderNextFrame();
}
catch (Exception ex)
{
throw ex;
}
//_dispatcher.Invoke(() =>
//{
//测试数据
// FeedDataTest();
//});
}
static double currentOATime = 0;
DateTime currentTime = DateTime.Now;
DateTime beginTime = DateTime.Now;
private void RenderNextFrame()
{
Stopwatch stopwatch = Stopwatch.StartNew();
string minName = string.Empty;
if (_lChartAll == null && !isSubScribeOK)
if (_lChartAll == null )
{
Debug.WriteLine("注册未完成,时间:{1}", DateTime.Now);
return;
}
List<double> datasStr = new List<double>();
//计算数据中最小时间
if (currentOATime == 0)
{
double minTime = DateTime.Now.AddHours(1).ToOADate();
string name = string.Empty;
foreach (var item in subNameList)
{
List<double> dataDouList = new List<double>();
using (RedisListService service = new RedisListService())
{
var data = service.Get(item.Key, 0, 0).FirstOrDefault();
if (data != null)
{
datasStr = data.Split(',').Select(a => Convert.ToDouble(a)).ToList();
double oaTime = datasStr.First();
if (oaTime < minTime)
{
minTime = oaTime;
currentOATime = oaTime;
name=item.Key;
}
}
}
}
if (currentOATime == 0) return;
Debug.WriteLine("currentTimeFirst:{0},now:{1},sid:{2},count:{3}", DateTime.FromOADate(currentOATime),DateTime.Now, name, datasStr.Count);
}
else
{
//更新图表数据时间,每秒刷新一次
currentOATime = DateTime.FromOADate(currentOATime).AddSeconds(1).ToOADate();
}
foreach (var item in subNameList)
{
using (RedisListService service = new RedisListService())
{
var data = service.Get(item.Key, 0, 0).FirstOrDefault();
if (data != null)
{
datasStr = data.Split(',').Select(a => Convert.ToDouble(a)).ToList();
DateTime firstTime = DateTime.FromOADate(datasStr.First());
DateTime currentTime = DateTime.FromOADate(currentOATime);
datasStr.RemoveAt(0);
if (Math.Abs((currentTime - firstTime).TotalSeconds) < 1 && firstTime.Second == currentTime.Second)
{
service.RemoveStartFromList(item.Key);
_data[item.Value.Index] = datasStr.ToArray();
}
else if ((currentTime - firstTime).TotalSeconds < 0)
{
_data[item.Value.Index] = new double[_samplingFrequency];
}
else if ((currentTime - firstTime).TotalSeconds > 0)
{
firstTime.AddMilliseconds(-firstTime.Millisecond);
//出更数据需要重新绘图表点
_data[item.Value.Index] = new double[_samplingFrequency];
int offset = (int)(currentTime - firstTime).TotalSeconds;
while (offset > 0)
{
service.RemoveStartFromList(item.Key);
if (offset < 30)
Stopwatch stopwatch = Stopwatch.StartNew();
; foreach (var item in subNameList)
{
// 不能超过缓存数, 更新数据
var time = currentTime.AddSeconds(-offset);
int iCount= item.Value.datas.Count;
if (iCount - offset > 0)
List<double> temDou = new List<double>();
var tem = item.Value.DataOrders.Where(d => d.StartTime > currentTime.AddSeconds(-30));
if (tem.Any())
{
item.Value.datas[iCount - offset] = datasStr.ToArray();
}
}
data = service.Get(item.Key, 0, 0).FirstOrDefault();
if (data == null) break;
datasStr = data.Split(',').Select(a => Convert.ToDouble(a)).ToList();
firstTime = DateTime.FromOADate(datasStr.First());
offset = (int)(currentTime - firstTime).TotalSeconds;
datasStr.RemoveAt(0);
Debug.WriteLine("timeMinData:{0},Time1:{1},sid:{2},offset:{3}", currentTime, firstTime, item.Key, offset);
}
}
else
item.Value.FirstSampleTime = tem.ElementAt(0).StartTime; //设置数据的开始时间
tem.ToList().ForEach(d => temDou.AddRange(d.DataArray));
var time = (currentTime - tem.Last().StartTime).Duration();
if (time.TotalSeconds > 2 && time.TotalSeconds < 30)
{
throw new Exception($"数据解析异常:{item.Key},{currentTime},{firstTime}");
//中途未收数据填充均值
temDou.AddRange(Enumerable.Repeat(temDou.Average(), (int)time.TotalMilliseconds));
}
_data[item.Value.Index] = temDou.ToArray();
}
else
{
_data[item.Value.Index] = new double[_samplingFrequency];
}
//没有收到数据的通道填充0
var duration = (DateTime.Now - beginTime).Duration();
item.Value.FirstSampleTime = duration.TotalSeconds > 30 ? currentTime.AddSeconds(-29) : beginTime;
int feed = duration.TotalSeconds > 30 ? 30 * 1000 : (int)duration.TotalMilliseconds;
_data[item.Value.Index] = new double[feed];
}
item.Value.AddData(currentOATime, _data[item.Value.Index]);
}
stopwatch.Stop();
double time1 = stopwatch.ElapsedMilliseconds;
stopwatch.Restart();
//有新数据开始刷新
DateTime startTime = DateTime.Today;
foreach (var item in subNameList)
{
List<double> temDou = new List<double>();
item.Value.datas.ForEach(d => temDou.AddRange(d));
_data[item.Value.Index] = temDou.ToArray();
}
stopwatch.Stop();
double time2 = stopwatch.ElapsedMilliseconds;
stopwatch.Restart();
@ -1002,8 +970,9 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
FeedData();
});
stopwatch.Stop();
currentTime = currentTime.AddSeconds(1);
double time3 = stopwatch.ElapsedMilliseconds;
Debug.WriteLine("timeFrame:{0},time1:{1},time2:{2}time3:{3}", DateTime.FromOADate(currentOATime), time1, time2,time3);
Debug.WriteLine("timeFrame:{0},time1:{1}ms,time2:{2}mstime3:{3}ms", currentTime, time1, time2,time3);
}
double _pointsAppended = 0;
double[][] _data;
@ -1012,20 +981,26 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
{
if (_lChartAll == null) return;
_lChartAll.BeginUpdate();
foreach (var item in _lChartAll.ViewXY.SampleDataSeries)
foreach (var item in subNameList)
{
item.Clear();
item.FirstSampleTimeStamp = _lChartAll.ViewXY.XAxes[0].Minimum;
int index = item.Value.Index;
_lChartAll.ViewXY.SampleDataSeries[index].Clear();
var d = _lChartAll.ViewXY.XAxes[0].DateTimeToAxisValue(item.Value.FirstSampleTime);
_lChartAll.ViewXY.SampleDataSeries[index].FirstSampleTimeStamp = d;// _lChartAll.ViewXY.XAxes[0].Minimum;// item.Value.FirstSampleTimeStamp;
}
//Append data to series
System.Threading.Tasks.Parallel.For(0, _channelCount, (seriesIndex) =>
{
double[] thisSeriesData = _data[seriesIndex];
_lChartAll.ViewXY.YAxes[seriesIndex].SetRange(thisSeriesData.Min(), thisSeriesData.Max()+1);
int yindex = _lChartAll.ViewXY.SampleDataSeries[seriesIndex].AssignYAxisIndex;
if (yindex >= 0)
{
_lChartAll.ViewXY.YAxes[yindex].SetRange(thisSeriesData.Min()-1, thisSeriesData.Max() + 1);
}
_lChartAll.ViewXY.SampleDataSeries[seriesIndex].AddSamples(thisSeriesData, false);
// _data[seriesIndex] = null;
System.Diagnostics.Debug.WriteLine("***********index:{0}, pointCount:{1}", seriesIndex,
_lChartAll.ViewXY.SampleDataSeries[seriesIndex].PointCount);
Debug.WriteLine($"{DateTime.Now}*********** index:{seriesIndex}," +
$" pointCount:{_lChartAll.ViewXY.SampleDataSeries[seriesIndex].PointCount}");
});
_pointsAppended += 1;
@ -1051,6 +1026,7 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
//Y axis maximum
private const double YMax = 100;
private double[][] CreateInputData(int seriesCount, int appendCountPerRound)
{
//Create input data for all series.
@ -1160,17 +1136,23 @@ namespace StartServerWPF.Modules.MseedChart.ViewModels
}
}
public void OnNavigatedTo(NavigationContext navigationContext)
private DateTime GetTime()
{
var str= navigationContext.Parameters.GetValue<string>("model");
if(str == "实时波形")
DateTime time ;
var client = new System.Net.Sockets.TcpClient("time.nist.gov", 13);
using (var streamReader = new System.IO.StreamReader(client.GetStream()))
{
IsRealtimeData = true;
var response = streamReader.ReadToEnd();
var utcDateTimeString = response.Substring(7, 17);
time= DateTime.ParseExact(utcDateTimeString, "yy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);
}
else
{
IsRealtimeData = false;
return time;
}
public void OnNavigatedTo(NavigationContext navigationContext)
{
var str= navigationContext.Parameters.GetValue<string>("model");
}
public bool IsNavigationTarget(NavigationContext navigationContext)

@ -11,13 +11,62 @@
prism:ViewModelLocator.AutoWireViewModel="True">
<UserControl.Resources>
<converter:Bool2VisibilityConverter x:Key="Bool2Visibility"/>
<Style TargetType="RadioButton" x:Key="NormalRButtonStyle">
<Setter Property="Foreground" Value="White"/>
<Setter Property="Width" Value="50"/>
<Setter Property="Height" Value="50"/>
<Setter Property="Background"
Value="#673ab7"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="RadioButton">
<Border Background="{TemplateBinding Background}" CornerRadius="4">
<Border Background="Transparent" Name="back" CornerRadius="4">
<ContentPresenter VerticalAlignment="{TemplateBinding VerticalAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}"/>
</Border>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#11000000" TargetName="back"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background"
Value="lightgray" TargetName="back"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="Button" x:Key="NormalButtonStyle">
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background"
Value="#673ab7"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="{TemplateBinding Background}" CornerRadius="5">
<Border Background="Transparent" Name="back" CornerRadius="5" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}">
<ContentPresenter VerticalAlignment="{TemplateBinding VerticalAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}"/>
</Border>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#11000000" TargetName="back"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background"
Value="lightgray" TargetName="back"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition Height="50"/>
<RowDefinition Height="1000*"/>
</Grid.RowDefinitions>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<i:InvokeCommandAction Command="{Binding Path=LoadedCommand}"/>
@ -26,34 +75,44 @@
<i:InvokeCommandAction Command="{Binding Path=UnloadedCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<Border Background="White">
<!--<Border Background="White">
<TextBlock Text="{Binding Title}" FontSize="16" FontWeight="Bold" VerticalAlignment="Center" Margin="10,0,10,0"/>
</Border>
<Border Background="White" Grid.Row="1" Grid.RowSpan="2" CornerRadius="5" Margin="10">
</Border>-->
<Border Background="White" CornerRadius="5" Margin="10">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="1000*"/>
</Grid.RowDefinitions>
<!--实时波形-->
<StackPanel Orientation="Horizontal" Visibility="{Binding IsRealtimeData,Converter={StaticResource Bool2Visibility}}" Background="White">
<Button Grid.Column="1" Grid.Row="1" Command="{Binding RealTimeDataCommand}" CommandParameter="true" Background="#FF3BB4FF" >开始接收</Button>
<Button Grid.Column="1" Grid.Row="1" Command="{Binding RealTimeDataCommand}" CommandParameter="false" Background="#FFFFAF20" Margin="20,0,20,0">停止接收</Button>
<CheckBox Content="通道选择" x:Name="cBoxAllChannel" IsChecked="{Binding SingleChannel}" VerticalAlignment="Center"/>
<ComboBox IsEnabled="{Binding ElementName=cBoxAllChannel, Path=IsChecked}" Text="{Binding SelectChannel}" SelectedIndex="0" VerticalAlignment="Center">
<ComboBoxItem Content="SHZ"/>
<ComboBoxItem Content="SHN"/>
<ComboBoxItem Content="SHE"/>
<StackPanel Orientation="Horizontal">
<Button Grid.Column="1" Content="开始接收" Width="90" Height="40" IsEnabled="{Binding IsEnableStartRealtime}"
Command="{Binding RealTimeDataCommand}" CommandParameter="True" Margin="10,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center">
</Button>
<Button Grid.Column="1" Height="40" Content="停止接收" Width="90" IsEnabled="{Binding IsEnableStopRealtime}"
Command="{Binding RealTimeDataCommand}" CommandParameter="False" Margin="20,0,20,0" VerticalAlignment="Center" HorizontalAlignment="Center">
</Button>
<TextBlock Text="通道:" VerticalAlignment="Center"/>
<CheckBox Content="Z" IsChecked="{Binding SHZChannel}" VerticalAlignment="Center" Style="{x:Null}" />
<CheckBox Content="E" IsChecked="{Binding SHEChannel}" VerticalAlignment="Center" Style="{x:Null}" Margin="5,0,5,0"/>
<CheckBox Content="N" IsChecked="{Binding SHNChannel}" VerticalAlignment="Center" Style="{x:Null}" />
<TextBlock Text="台站数:" VerticalAlignment="Center" Margin="20,0,0,0"/>
<ComboBox SelectedIndex="{Binding StationsNumberIndex}" VerticalAlignment="Center">
<ComboBoxItem Content="3"/>
<ComboBoxItem Content="6"/>
<ComboBoxItem Content="9"/>
<ComboBoxItem Content="All"/>
</ComboBox>
<Button Content="确认选择" x:Name="cBoxAllChannel" Margin="10,0,0,0" Height="40" Width="90" Command="{Binding SureCommand}" VerticalAlignment="Center" />
<!--<TextBlock VerticalAlignment="Center" Margin="20,0,0,0">时间间隔:</TextBlock>
<TextBox Text="{Binding XaisInterval}" Width="60" VerticalAlignment="Center"/>
<Button Command="{Binding IntervalSureCommand}" Background="#FF66B1FF" HorizontalAlignment="Right">确认</Button>-->
<CheckBox Command="{Binding AxesYVisibleCommand}" Visibility="Collapsed" CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self},Path=IsChecked}" Content="Y轴显示" VerticalContentAlignment="Center" IsChecked="True" FontSize="15" Foreground="Black" Margin="5,0,5,0" FontWeight="Bold" />
<CheckBox Command="{Binding RealTimeDataCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=Self},Path=IsChecked}" Visibility="Collapsed" Content="实时" VerticalContentAlignment="Center" FontSize="15" Foreground="Black" FontWeight="Bold" DockPanel.Dock="Right"></CheckBox>
<TextBox Text="{Binding IntervalTime}" Visibility="Collapsed" Width="60" VerticalAlignment="Center"></TextBox>
<!--<TextBox Text="{Binding IntervalTime}" Width="60" VerticalAlignment="Center"></TextBox>-->
</StackPanel>
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
<ContentControl x:Name="contentControl" Content="{Binding ChildContent}" Grid.Row="1"/>
</ScrollViewer>
<TextBlock Text="{Binding CurrentTime}" Grid.Row="1" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="0,0,0,46"></TextBlock>
</Grid>
</Border>

@ -13,6 +13,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mseedC", "mseedC\mseedC.vcx
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StartServerWPF.Modules.Main", "StartServerWPF.Modules.Main\StartServerWPF.Modules.Main.csproj", "{9A6AF364-195E-4017-9CF8-D3E59928D124}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartServerWPF.Models", "StartServerWPF.Models\StartServerWPF.Models.csproj", "{34CC2459-F4F2-4A93-827F-85DA7422C736}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -83,6 +85,18 @@ Global
{9A6AF364-195E-4017-9CF8-D3E59928D124}.Release|x64.Build.0 = Release|x64
{9A6AF364-195E-4017-9CF8-D3E59928D124}.Release|x86.ActiveCfg = Release|Any CPU
{9A6AF364-195E-4017-9CF8-D3E59928D124}.Release|x86.Build.0 = Release|Any CPU
{34CC2459-F4F2-4A93-827F-85DA7422C736}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{34CC2459-F4F2-4A93-827F-85DA7422C736}.Debug|Any CPU.Build.0 = Debug|Any CPU
{34CC2459-F4F2-4A93-827F-85DA7422C736}.Debug|x64.ActiveCfg = Debug|Any CPU
{34CC2459-F4F2-4A93-827F-85DA7422C736}.Debug|x64.Build.0 = Debug|Any CPU
{34CC2459-F4F2-4A93-827F-85DA7422C736}.Debug|x86.ActiveCfg = Debug|Any CPU
{34CC2459-F4F2-4A93-827F-85DA7422C736}.Debug|x86.Build.0 = Debug|Any CPU
{34CC2459-F4F2-4A93-827F-85DA7422C736}.Release|Any CPU.ActiveCfg = Release|Any CPU
{34CC2459-F4F2-4A93-827F-85DA7422C736}.Release|Any CPU.Build.0 = Release|Any CPU
{34CC2459-F4F2-4A93-827F-85DA7422C736}.Release|x64.ActiveCfg = Release|Any CPU
{34CC2459-F4F2-4A93-827F-85DA7422C736}.Release|x64.Build.0 = Release|Any CPU
{34CC2459-F4F2-4A93-827F-85DA7422C736}.Release|x86.ActiveCfg = Release|Any CPU
{34CC2459-F4F2-4A93-827F-85DA7422C736}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

@ -10,6 +10,9 @@ using System.Threading.Tasks;
using System.Windows;
using System.Windows.Threading;
using StartServerWPF.Modules.MseedChart;
using Newtonsoft.Json;
using System.IO;
using StartServerWPF.Models;
namespace StartServerWPF
{
@ -32,6 +35,15 @@ namespace StartServerWPF
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<WebsocketClient>();
string str = File.ReadAllText("SystemConfig.json");
SystemConfigModel sc = JsonConvert.DeserializeObject<SystemConfigModel>(str);
containerRegistry.RegisterSingleton<SystemConfigModel>(() => sc);
string st = File.ReadAllText("Workarea.json");
WorkareaModel wm = JsonConvert.DeserializeObject<WorkareaModel>(st);
wm.Stations = wm.CreateStationFromCSV(sc.proTools.ProPath + wm.StationConfig.StationCoordCsvPath);
containerRegistry.RegisterSingleton<WorkareaModel>(() => wm);
}
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
@ -48,11 +60,10 @@ namespace StartServerWPF
{
System.Exception error = (System.Exception)e.ExceptionObject;
StringBuilder stringBuilder = ExtractAllStackTrace(error);
}
catch(Exception ex)
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

@ -12,6 +12,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\StartServerWPF.Assets\StartServerWPF.Assets.csproj" />
<ProjectReference Include="..\StartServerWPF.Models\StartServerWPF.Models.csproj" />
<ProjectReference Include="..\StartServerWPF.Modules.Main\StartServerWPF.Modules.Main.csproj" />
<ProjectReference Include="..\StartServerWPF.Modules.MseedChart\StartServerWPF.Modules.MseedChart.csproj" />
</ItemGroup>
@ -23,6 +24,9 @@
</Compile>
</ItemGroup>
<ItemGroup>
<None Update="apms.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="mseed2ascii.exe">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
@ -33,6 +37,9 @@
<None Update="SystemConfig.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Workarea.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<ProjectExtensions><VisualStudio><UserProperties systemconfig_1json__JsonSchema="https://developer.1password.com/schema/ssh-agent-config.json" /></VisualStudio></ProjectExtensions>
</Project>

@ -53,18 +53,9 @@
"ProTitle": "后处理",
"ProPath": "serverprogram\\tools\\",
"ProParams": "-cfg apms.json -savepath e:\\yuwuN3102mseed -delay 600",
"JsonPath": null,
"JsonPath": "apms.json",
"Pid": 0,
"OperationStr": "open",
"ShowState": 0
}
//"proPlot": {
// "ProName": "gw.plot",
// "ProPath": "serverprogram\\plot\\",
// "ProParams": null,
// "JsonPath": null,
// "Pid": 0,
// "OperationStr": "open",
// "ShowState": 0
//}
}

@ -32,7 +32,7 @@ namespace StartServerWPF.ViewModels
State = "程序退出",
OriginTime = DateTime.Now,
};
LogHelper.WriteSerLog(main.sc.vpnInfo.SystemLogPath, log.ToString());
LogHelper.WriteSerLog(main._systemConfig.vpnInfo.SystemLogPath, log.ToString());
main.OneKeyStop();
Application.Current.Shutdown();

@ -0,0 +1,8 @@
{
"StationConfig": {
"Network": "YA",
"Location": "06",
"Channels": [ "SHZ", "SHN", "SHE" ],
"StationCoordCsvPath": "N3102_staion_20230403.csv"
}
}

@ -0,0 +1,39 @@
{
"station" :"N3102_staion_20230403.csv",
"ttime":[{"station":"ttime","ttime2d":"ttime_gw20210427.tab"}],
"Main.log_level":"DEBUG",
"Main.slice_seconds": 30 ,
"Main.overlap_seconds": 10 ,
"Main.is_mag":"YES",
"Main.is_write_slice":"NO",
"Main.lon":38398463.49,
"Main.lat":4031112.103,
"Main.height":1102.63,
"Main.savepath":"I://yuwuN3102mseed//post",
"Main.push2wx":"NO",
"Main.push_url":"http://www.txgy.cloud/api/index/push",
"Main.push_mag":-1.0,
"Main.message_id":1,
"Main.company_id":1,
"Main.area_id":8,
"Main.content":"通知事件",
"Main.push_key":"Y3qYFBQPMbfTt6m",
"RServer.host":"127.0.0.1",
"channels":[
{"network":"HA","station":"N02,N03,N04,N05,N06,N07,N08,N09,N10,N11,N12,N13,N14,N15,N16,N17,N18,N19,N20,N21,N22,N23,N24,N25,N26,N27","location":"06","channels":"SHZ:SHN:SHE"}
],
"Locate.log_level" : "DEBUG",
"Locate.work_path" :".",
"Locate.xmin":38396517,
"Locate.xmax":38398317,
"Locate.ymin":4029418,
"Locate.ymax":4031218,
"Locate.zref":1039,
"Locate.zmin":300,
"Locate.zmax":800,
"Locate.minstep":10,
"Locate.method":"",
"Locate.clusted_otime":0.5
}

@ -0,0 +1,10 @@
net,sta,x2000,y2000,z2000,sens,begin,stop
HA,N02,38397345.33,4030593.53,1074,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N03,38397862.83,4030967.95,1057.7,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N04,38396851.28,4030947.41,1054,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N05,38397197.82,4031016.84,1071,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N06,38397507.28,4030786.06,1094.7,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N07,38397699.97,4030514.93,1091.6,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N08,38398079.1,4030542.79,1019,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N09,38396697.57,4030703.24,1053,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N10,38397284.87,4029883.38,1028,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
1 net sta x2000 y2000 z2000 sens begin stop
2 HA N02 38397345.33 4030593.53 1074 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
3 HA N03 38397862.83 4030967.95 1057.7 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
4 HA N04 38396851.28 4030947.41 1054 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
5 HA N05 38397197.82 4031016.84 1071 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
6 HA N06 38397507.28 4030786.06 1094.7 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
7 HA N07 38397699.97 4030514.93 1091.6 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
8 HA N08 38398079.1 4030542.79 1019 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
9 HA N09 38396697.57 4030703.24 1053 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
10 HA N10 38397284.87 4029883.38 1028 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000

@ -0,0 +1,10 @@
net,sta,x2000,y2000,z2000,sens,begin,stop
HA,N02,38397345.33,4030593.53,1074,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N03,38397862.83,4030967.95,1057.7,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N04,38396851.28,4030947.41,1054,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N05,38397197.82,4031016.84,1071,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N06,38397507.28,4030786.06,1094.7,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N07,38397699.97,4030514.93,1091.6,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N08,38398079.1,4030542.79,1019,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N09,38396697.57,4030703.24,1053,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
HA,N10,38397284.87,4029883.38,1028,3.20E+09,2023-03-12T00:00:00.000,2023-12-21T23:59:59.000
1 net sta x2000 y2000 z2000 sens begin stop
2 HA N02 38397345.33 4030593.53 1074 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
3 HA N03 38397862.83 4030967.95 1057.7 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
4 HA N04 38396851.28 4030947.41 1054 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
5 HA N05 38397197.82 4031016.84 1071 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
6 HA N06 38397507.28 4030786.06 1094.7 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
7 HA N07 38397699.97 4030514.93 1091.6 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
8 HA N08 38398079.1 4030542.79 1019 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
9 HA N09 38396697.57 4030703.24 1053 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000
10 HA N10 38397284.87 4029883.38 1028 3.20E+09 2023-03-12T00:00:00.000 2023-12-21T23:59:59.000

@ -0,0 +1,207 @@
Pg Sg
depth 0.00000 0.01000 0.02000 0.03000 0.04000 0.05000 0.06000 0.07000 0.08000 0.09000 0.10000 0.11000 0.12000 0.13000 0.14000 0.15000 0.16000 0.17000 0.18000 0.19000 0.20000 0.21000 0.22000 0.23000 0.24000 0.25000 0.26000 0.27000 0.28000 0.29000 0.30000 0.31000 0.32000 0.33000 0.34000 0.35000 0.36000 0.37000 0.38000 0.39000 0.40000 0.41000 0.42000 0.43000 0.44000 0.45000 0.46000 0.47000 0.48000 0.49000 0.50000 0.51000 0.52000 0.53000 0.54000 0.55000 0.56000 0.57000 0.58000 0.59000 0.60000 0.61000 0.62000 0.63000 0.64000 0.65000 0.66000 0.67000 0.68000 0.69000 0.70000 0.71000 0.72000 0.73000 0.74000 0.75000 0.76000 0.77000 0.78000 0.79000 0.80000 0.81000 0.82000 0.83000 0.84000 0.85000 0.86000 0.87000 0.88000 0.89000 0.90000 0.91000 0.92000 0.93000 0.94000 0.95000 0.96000 0.97000 0.98000 0.99000 1.00000
delta 0.00000 0.00040 0.00080 0.00120 0.00160 0.00200 0.00240 0.00280 0.00320 0.00360 0.00400 0.00440 0.00480 0.00520 0.00560 0.00600 0.00640 0.00680 0.00720 0.00760 0.00800 0.00840 0.00880 0.00920 0.00960 0.01000 0.01040 0.01080 0.01120 0.01160 0.01200 0.01240 0.01280 0.01320 0.01360 0.01400 0.01440 0.01480 0.01520 0.01560 0.01600 0.01640 0.01680 0.01720 0.01760 0.01800 0.01840 0.01880 0.01920 0.01960 0.02000
Pg 101 depth(row) 51 delta(column)
0.00000 0.05560 0.11119 0.16679 0.22239 0.25156 0.26268 0.27379 0.28491 0.29603 0.30715 0.31827 0.32939 0.34051 0.35163 0.36275 0.37387 0.38499 0.39611 0.40723 0.41835 0.42947 0.44058 0.45170 0.46282 0.47394 0.48506 0.49618 0.50730 0.51842 0.52954 0.54066 0.55178 0.56290 0.57402 0.58514 0.59626 0.60738 0.61849 0.62961 0.64073 0.65185 0.66297 0.67409 0.68521 0.69633 0.70745 0.71857 0.72969 0.74081 0.75193
0.01250 0.05849 0.11399 0.16949 0.22500 0.23931 0.25043 0.26155 0.27267 0.28379 0.29491 0.30602 0.31714 0.32826 0.33938 0.35050 0.36162 0.37274 0.38386 0.39498 0.40610 0.41722 0.42834 0.43946 0.45058 0.46170 0.47281 0.48393 0.49505 0.50617 0.51729 0.52841 0.53953 0.55065 0.56177 0.57289 0.58401 0.59513 0.60625 0.61737 0.62849 0.63961 0.65072 0.66184 0.67296 0.68408 0.69520 0.70632 0.71744 0.72856 0.73968
0.02500 0.06148 0.11698 0.17249 0.21594 0.22706 0.23818 0.24930 0.26042 0.27154 0.28266 0.29378 0.30490 0.31602 0.32714 0.33825 0.34937 0.36049 0.37161 0.38273 0.39385 0.40497 0.41609 0.42721 0.43833 0.44945 0.46057 0.47169 0.48281 0.49393 0.50504 0.51616 0.52728 0.53840 0.54952 0.56064 0.57176 0.58288 0.59400 0.60512 0.61624 0.62736 0.63848 0.64960 0.66072 0.67184 0.68295 0.69407 0.70519 0.71631 0.72743
0.03750 0.06706 0.11998 0.17548 0.20369 0.21481 0.22593 0.23705 0.24817 0.25929 0.27041 0.28153 0.29265 0.30377 0.31489 0.32601 0.33713 0.34825 0.35937 0.37048 0.38160 0.39272 0.40384 0.41496 0.42608 0.43720 0.44832 0.45944 0.47056 0.48168 0.49280 0.50392 0.51504 0.52616 0.53727 0.54839 0.55951 0.57063 0.58175 0.59287 0.60399 0.61511 0.62623 0.63735 0.64847 0.65959 0.67071 0.68183 0.69295 0.70407 0.71518
0.05000 0.07477 0.12296 0.17847 0.19145 0.20257 0.21369 0.22480 0.23592 0.24704 0.25816 0.26928 0.28040 0.29152 0.30264 0.31376 0.32488 0.33600 0.34712 0.35824 0.36936 0.38048 0.39160 0.40271 0.41383 0.42495 0.43607 0.44719 0.45831 0.46943 0.48055 0.49167 0.50279 0.51391 0.52503 0.53615 0.54727 0.55839 0.56950 0.58062 0.59174 0.60286 0.61398 0.62510 0.63622 0.64734 0.65846 0.66958 0.68070 0.69182 0.70294
0.06250 0.08365 0.12756 0.16808 0.17920 0.19032 0.20144 0.21256 0.22368 0.23480 0.24592 0.25703 0.26815 0.27927 0.29039 0.30151 0.31263 0.32375 0.33487 0.34599 0.35711 0.36823 0.37935 0.39047 0.40159 0.41271 0.42383 0.43494 0.44606 0.45718 0.46830 0.47942 0.49054 0.50166 0.51278 0.52390 0.53502 0.54614 0.55726 0.56838 0.57950 0.59062 0.60173 0.61285 0.62397 0.63509 0.64621 0.65733 0.66845 0.67957 0.69069
0.07500 0.09338 0.13412 0.15583 0.16695 0.17807 0.18919 0.20031 0.21143 0.22255 0.23367 0.24479 0.25591 0.26703 0.27815 0.28926 0.30038 0.31150 0.32262 0.33374 0.34486 0.35598 0.36710 0.37822 0.38934 0.40046 0.41158 0.42270 0.43382 0.44494 0.45606 0.46717 0.47829 0.48941 0.50053 0.51165 0.52277 0.53389 0.54501 0.55613 0.56725 0.57837 0.58949 0.60061 0.61173 0.62285 0.63396 0.64508 0.65620 0.66732 0.67844
0.08750 0.10378 0.13247 0.14359 0.15470 0.16582 0.17694 0.18806 0.19918 0.21030 0.22142 0.23254 0.24366 0.25478 0.26590 0.27702 0.28814 0.29926 0.31038 0.32149 0.33261 0.34373 0.35485 0.36597 0.37709 0.38821 0.39933 0.41045 0.42157 0.43269 0.44381 0.45493 0.46605 0.47717 0.48829 0.49940 0.51052 0.52164 0.53276 0.54388 0.55500 0.56612 0.57724 0.58836 0.59948 0.61060 0.62172 0.63284 0.64396 0.65508 0.66619
0.10000 0.10910 0.12022 0.13134 0.14246 0.15358 0.16470 0.17582 0.18693 0.19805 0.20917 0.22029 0.23141 0.24253 0.25365 0.26477 0.27589 0.28701 0.29813 0.30925 0.32037 0.33149 0.34261 0.35372 0.36484 0.37596 0.38708 0.39820 0.40932 0.42044 0.43156 0.44268 0.45380 0.46492 0.47604 0.48716 0.49828 0.50940 0.52052 0.53163 0.54275 0.55387 0.56499 0.57611 0.58723 0.59835 0.60947 0.62059 0.63171 0.64283 0.65395
0.10250 0.10952 0.12039 0.13144 0.14255 0.15366 0.16477 0.17588 0.18699 0.19810 0.20922 0.22033 0.23145 0.24256 0.25367 0.26479 0.27591 0.28703 0.29814 0.30926 0.32038 0.33150 0.34262 0.35374 0.36486 0.37597 0.38709 0.39821 0.40933 0.42045 0.43157 0.44269 0.45381 0.46493 0.47605 0.48717 0.49829 0.50940 0.52052 0.53164 0.54276 0.55388 0.56500 0.57612 0.58724 0.59836 0.60948 0.62060 0.63172 0.64284 0.65395
0.10500 0.11063 0.12089 0.13176 0.14277 0.15382 0.16490 0.17600 0.18711 0.19822 0.20933 0.22044 0.23155 0.24267 0.25378 0.26489 0.27600 0.28711 0.29823 0.30934 0.32045 0.33157 0.34267 0.35378 0.36490 0.37601 0.38713 0.39825 0.40936 0.42048 0.43160 0.44272 0.45383 0.46495 0.47607 0.48719 0.49831 0.50943 0.52054 0.53166 0.54278 0.55390 0.56502 0.57614 0.58726 0.59838 0.60949 0.62061 0.63173 0.64285 0.65397
0.10750 0.11217 0.12169 0.13228 0.14315 0.15412 0.16515 0.17620 0.18727 0.19835 0.20945 0.22056 0.23167 0.24278 0.25389 0.26501 0.27612 0.28723 0.29834 0.30945 0.32056 0.33168 0.34279 0.35390 0.36499 0.37610 0.38722 0.39833 0.40944 0.42054 0.43166 0.44277 0.45389 0.46500 0.47612 0.48723 0.49835 0.50947 0.52058 0.53171 0.54282 0.55394 0.56505 0.57617 0.58729 0.59841 0.60952 0.62064 0.63176 0.64288 0.65400
0.11000 0.11398 0.12276 0.13299 0.14367 0.15454 0.16549 0.17649 0.18753 0.19858 0.20964 0.22072 0.23180 0.24290 0.25401 0.26512 0.27623 0.28735 0.29846 0.30957 0.32068 0.33179 0.34290 0.35401 0.36513 0.37624 0.38735 0.39844 0.40955 0.42066 0.43175 0.44287 0.45398 0.46509 0.47620 0.48732 0.49843 0.50954 0.52066 0.53177 0.54288 0.55400 0.56511 0.57623 0.58734 0.59846 0.60958 0.62069 0.63181 0.64292 0.65404
0.11250 0.11596 0.12404 0.13388 0.14434 0.15507 0.16593 0.17687 0.18785 0.19887 0.20991 0.22095 0.23201 0.24309 0.25417 0.26525 0.27635 0.28746 0.29857 0.30969 0.32080 0.33191 0.34302 0.35413 0.36524 0.37635 0.38746 0.39858 0.40969 0.42080 0.43189 0.44300 0.45408 0.46520 0.47631 0.48742 0.49853 0.50962 0.52074 0.53185 0.54296 0.55407 0.56519 0.57630 0.58741 0.59853 0.60964 0.62076 0.63187 0.64298 0.65410
0.11500 0.11805 0.12551 0.13493 0.14514 0.15571 0.16647 0.17732 0.18825 0.19922 0.21022 0.22125 0.23229 0.24333 0.25439 0.26546 0.27654 0.28762 0.29870 0.30980 0.32092 0.33203 0.34314 0.35425 0.36536 0.37647 0.38758 0.39869 0.40980 0.42092 0.43203 0.44314 0.45425 0.46533 0.47644 0.48753 0.49864 0.50975 0.52086 0.53195 0.54306 0.55417 0.56528 0.57640 0.58751 0.59862 0.60973 0.62084 0.63196 0.64306 0.65417
0.11750 0.12023 0.12713 0.13613 0.14607 0.15646 0.16709 0.17786 0.18872 0.19964 0.21059 0.22158 0.23259 0.24363 0.25467 0.26571 0.27677 0.28783 0.29891 0.30999 0.32107 0.33215 0.34326 0.35437 0.36548 0.37659 0.38770 0.39881 0.40992 0.42103 0.43215 0.44326 0.45437 0.46548 0.47659 0.48770 0.49878 0.50989 0.52098 0.53209 0.54320 0.55429 0.56540 0.57650 0.58762 0.59873 0.60984 0.62093 0.63204 0.64315 0.65426
0.12000 0.12247 0.12887 0.13746 0.14711 0.15731 0.16781 0.17848 0.18926 0.20011 0.21102 0.22197 0.23295 0.24395 0.25497 0.26601 0.27705 0.28809 0.29915 0.31021 0.32128 0.33236 0.34344 0.35452 0.36560 0.37671 0.38782 0.39893 0.41004 0.42115 0.43226 0.44337 0.45449 0.46560 0.47671 0.48782 0.49893 0.51004 0.52115 0.53223 0.54334 0.55443 0.56554 0.57662 0.58773 0.59884 0.60995 0.62106 0.63215 0.64326 0.65437
0.12250 0.12475 0.13071 0.13890 0.14827 0.15826 0.16861 0.17917 0.18986 0.20065 0.21151 0.22241 0.23336 0.24432 0.25531 0.26632 0.27735 0.28839 0.29943 0.31047 0.32153 0.33259 0.34365 0.35473 0.36581 0.37689 0.38797 0.39905 0.41016 0.42127 0.43238 0.44349 0.45460 0.46571 0.47683 0.48794 0.49905 0.51016 0.52127 0.53238 0.54349 0.55460 0.56569 0.57680 0.58788 0.59899 0.61007 0.62118 0.63229 0.64340 0.65448
0.12500 0.12707 0.13263 0.14044 0.14952 0.15930 0.16949 0.17993 0.19054 0.20125 0.21205 0.22291 0.23380 0.24474 0.25570 0.26668 0.27768 0.28870 0.29973 0.31076 0.32181 0.33285 0.34390 0.35496 0.36603 0.37710 0.38818 0.39926 0.41034 0.42142 0.43250 0.44361 0.45472 0.46583 0.47694 0.48806 0.49917 0.51028 0.52139 0.53250 0.54361 0.55472 0.56583 0.57694 0.58806 0.59914 0.61022 0.62133 0.63244 0.64352 0.65463
0.12750 0.12941 0.13463 0.14208 0.15087 0.16043 0.17045 0.18077 0.19127 0.20191 0.21264 0.22345 0.23430 0.24520 0.25612 0.26708 0.27805 0.28904 0.30005 0.31107 0.32211 0.33314 0.34419 0.35523 0.36628 0.37734 0.38840 0.39947 0.41055 0.42163 0.43271 0.44379 0.45487 0.46596 0.47706 0.48817 0.49928 0.51040 0.52151 0.53262 0.54373 0.55484 0.56595 0.57706 0.58817 0.59929 0.61040 0.62148 0.63259 0.64367 0.65478
0.13000 0.13178 0.13668 0.14380 0.15230 0.16164 0.17149 0.18167 0.19207 0.20263 0.21329 0.22404 0.23484 0.24570 0.25659 0.26751 0.27846 0.28943 0.30041 0.31141 0.32242 0.33345 0.34449 0.35552 0.36656 0.37761 0.38866 0.39972 0.41078 0.42185 0.43292 0.44400 0.45508 0.46615 0.47724 0.48832 0.49941 0.51051 0.52162 0.53274 0.54385 0.55496 0.56607 0.57718 0.58829 0.59940 0.61051 0.62163 0.63274 0.64385 0.65493
0.13250 0.13416 0.13878 0.14558 0.15381 0.16292 0.17260 0.18264 0.19293 0.20340 0.21399 0.22468 0.23543 0.24624 0.25709 0.26798 0.27890 0.28984 0.30080 0.31178 0.32277 0.33377 0.34480 0.35583 0.36686 0.37790 0.38894 0.39999 0.41104 0.42210 0.43316 0.44422 0.45530 0.46637 0.47745 0.48852 0.49961 0.51069 0.52177 0.53286 0.54396 0.55508 0.56619 0.57730 0.58841 0.59952 0.61063 0.62174 0.63285 0.64397 0.65508
0.13500 0.13656 0.14093 0.14744 0.15539 0.16428 0.17378 0.18368 0.19386 0.20423 0.21474 0.22536 0.23606 0.24682 0.25764 0.26849 0.27938 0.29029 0.30123 0.31218 0.32315 0.33414 0.34514 0.35615 0.36718 0.37821 0.38924 0.40028 0.41132 0.42237 0.43342 0.44448 0.45553 0.46660 0.47767 0.48874 0.49982 0.51090 0.52197 0.53306 0.54414 0.55522 0.56631 0.57742 0.58853 0.59964 0.61075 0.62186 0.63297 0.64389 0.65474
0.13750 0.13897 0.14311 0.14934 0.15703 0.16570 0.17502 0.18478 0.19483 0.20511 0.21554 0.22609 0.23673 0.24745 0.25822 0.26903 0.27989 0.29077 0.30168 0.31261 0.32357 0.33453 0.34551 0.35650 0.36750 0.37852 0.38955 0.40059 0.41162 0.42266 0.43370 0.44475 0.45580 0.46685 0.47791 0.48897 0.50004 0.51112 0.52219 0.53327 0.54434 0.55542 0.56651 0.57759 0.58867 0.59976 0.61080 0.62165 0.63250 0.64334 0.65419
0.14000 0.14139 0.14532 0.15130 0.15874 0.16719 0.17633 0.18593 0.19587 0.20604 0.21639 0.22687 0.23745 0.24811 0.25884 0.26961 0.28043 0.29128 0.30217 0.31307 0.32400 0.33495 0.34591 0.35688 0.36787 0.37887 0.38987 0.40090 0.41193 0.42296 0.43400 0.44504 0.45608 0.46713 0.47818 0.48923 0.50029 0.51135 0.52242 0.53349 0.54456 0.55564 0.56672 0.57771 0.58856 0.59940 0.61025 0.62110 0.63195 0.64279 0.65364
0.14250 0.14381 0.14756 0.15330 0.16050 0.16874 0.17769 0.18715 0.19696 0.20702 0.21729 0.22769 0.23821 0.24881 0.25949 0.27023 0.28101 0.29183 0.30268 0.31356 0.32446 0.33539 0.34633 0.35729 0.36826 0.37924 0.39023 0.40123 0.41225 0.42328 0.43431 0.44534 0.45638 0.46742 0.47846 0.48951 0.50056 0.51161 0.52267 0.53373 0.54462 0.55546 0.56631 0.57716 0.58801 0.59885 0.60970 0.62055 0.63140 0.64225 0.65309
0.14500 0.14625 0.14983 0.15534 0.16231 0.17034 0.17911 0.18841 0.19810 0.20806 0.21823 0.22856 0.23901 0.24956 0.26018 0.27087 0.28162 0.29240 0.30322 0.31408 0.32495 0.33585 0.34677 0.35772 0.36867 0.37964 0.39061 0.40160 0.41259 0.42360 0.43462 0.44565 0.45669 0.46772 0.47876 0.48980 0.50068 0.51152 0.52237 0.53322 0.54407 0.55491 0.56576 0.57661 0.58746 0.59831 0.60915 0.62000 0.63085 0.64170 0.65255
0.14750 0.14869 0.15211 0.15741 0.16416 0.17199 0.18058 0.18973 0.19929 0.20914 0.21922 0.22946 0.23985 0.25034 0.26091 0.27156 0.28226 0.29301 0.30380 0.31462 0.32547 0.33635 0.34725 0.35816 0.36910 0.38005 0.39101 0.40199 0.41297 0.42396 0.43496 0.44589 0.45674 0.46758 0.47843 0.48928 0.50013 0.51097 0.52182 0.53267 0.54352 0.55437 0.56521 0.57606 0.58691 0.59776 0.60861 0.61945 0.63030 0.64115 0.65200
0.15000 0.15113 0.15441 0.15952 0.16606 0.17369 0.18211 0.19110 0.20053 0.21027 0.22025 0.23042 0.24073 0.25116 0.26168 0.27227 0.28293 0.29364 0.30440 0.31519 0.32601 0.33686 0.34771 0.35856 0.36940 0.38025 0.39110 0.40195 0.41280 0.42364 0.43449 0.44534 0.45619 0.46703 0.47788 0.48873 0.49958 0.51043 0.52127 0.53212 0.54297 0.55382 0.56467 0.57551 0.58636 0.59721 0.60806 0.61890 0.62975 0.64060 0.65145
0.15244 0.15352 0.15666 0.16158 0.16792 0.17534 0.18358 0.19241 0.20169 0.21131 0.22118 0.23125 0.24147 0.25182 0.26227 0.27279 0.28339 0.29404 0.30474 0.31547 0.32623 0.33705 0.34788 0.35872 0.36955 0.38039 0.39122 0.40206 0.41289 0.42373 0.43457 0.44541 0.45625 0.46709 0.47793 0.48877 0.49960 0.51045 0.52129 0.53214 0.54298 0.55383 0.56468 0.57553 0.58637 0.59722 0.60807 0.61892 0.62976 0.64061 0.65146
0.15488 0.15592 0.15893 0.16367 0.16981 0.17704 0.18510 0.19377 0.20291 0.21240 0.22216 0.23213 0.24227 0.25254 0.26292 0.27338 0.28391 0.29451 0.30515 0.31583 0.32655 0.33730 0.34806 0.35889 0.36972 0.38056 0.39139 0.40223 0.41306 0.42390 0.43474 0.44557 0.45641 0.46725 0.47809 0.48892 0.49973 0.51057 0.52139 0.53223 0.54307 0.55391 0.56474 0.57558 0.58642 0.59727 0.60811 0.61895 0.62980 0.64064 0.65149
0.15732 0.15831 0.16121 0.16578 0.17174 0.17879 0.18667 0.19518 0.20418 0.21354 0.22320 0.23307 0.24312 0.25331 0.26362 0.27402 0.28449 0.29503 0.30562 0.31626 0.32694 0.33765 0.34838 0.35913 0.36989 0.38072 0.39155 0.40239 0.41323 0.42406 0.43490 0.44574 0.45657 0.46741 0.47825 0.48909 0.49992 0.51076 0.52156 0.53240 0.54321 0.55402 0.56486 0.57570 0.58652 0.59736 0.60820 0.61904 0.62988 0.64072 0.65156
0.15976 0.16071 0.16350 0.16792 0.17370 0.18057 0.18828 0.19664 0.20550 0.21474 0.22428 0.23405 0.24402 0.25413 0.26437 0.27470 0.28512 0.29561 0.30615 0.31674 0.32738 0.33804 0.34874 0.35946 0.37020 0.38096 0.39173 0.40255 0.41339 0.42422 0.43506 0.44590 0.45673 0.46757 0.47841 0.48925 0.50008 0.51092 0.52176 0.53260 0.54340 0.55420 0.56503 0.57584 0.58665 0.59749 0.60833 0.61916 0.63000 0.64084 0.65168
0.16220 0.16311 0.16580 0.17008 0.17569 0.18238 0.18993 0.19814 0.20686 0.21598 0.22541 0.23509 0.24496 0.25500 0.26516 0.27543 0.28579 0.29623 0.30672 0.31727 0.32786 0.33849 0.34915 0.35984 0.37055 0.38129 0.39203 0.40279 0.41356 0.42438 0.43522 0.44606 0.45689 0.46773 0.47857 0.48941 0.50024 0.51108 0.52192 0.53276 0.54359 0.55443 0.56523 0.57603 0.58683 0.59767 0.60847 0.61931 0.63014 0.64098 0.65181
0.16463 0.16552 0.16811 0.17225 0.17770 0.18423 0.19162 0.19968 0.20826 0.21726 0.22658 0.23616 0.24595 0.25591 0.26600 0.27621 0.28651 0.29689 0.30733 0.31784 0.32839 0.33898 0.34960 0.36026 0.37094 0.38165 0.39237 0.40311 0.41386 0.42462 0.43539 0.44621 0.45705 0.46789 0.47873 0.48956 0.50040 0.51124 0.52208 0.53291 0.54375 0.55459 0.56543 0.57627 0.58706 0.59786 0.60866 0.61947 0.63030 0.64113 0.65197
0.16707 0.16793 0.17043 0.17444 0.17974 0.18611 0.19334 0.20125 0.20970 0.21858 0.22779 0.23728 0.24698 0.25685 0.26688 0.27702 0.28726 0.29759 0.30799 0.31844 0.32895 0.33951 0.35010 0.36072 0.37137 0.38204 0.39274 0.40346 0.41420 0.42494 0.43569 0.44645 0.45722 0.46804 0.47888 0.48972 0.50056 0.51139 0.52223 0.53307 0.54391 0.55475 0.56559 0.57642 0.58726 0.59810 0.60890 0.61970 0.63050 0.64130 0.65213
0.16951 0.17034 0.17276 0.17665 0.18181 0.18802 0.19510 0.20287 0.21119 0.21994 0.22905 0.23843 0.24804 0.25784 0.26779 0.27787 0.28806 0.29833 0.30868 0.31909 0.32956 0.34007 0.35062 0.36121 0.37183 0.38248 0.39315 0.40384 0.41456 0.42528 0.43602 0.44677 0.45752 0.46828 0.47906 0.48987 0.50071 0.51155 0.52239 0.53323 0.54406 0.55490 0.56574 0.57658 0.58742 0.59826 0.60909 0.61993 0.63073 0.64153 0.65233
0.17195 0.17275 0.17510 0.17887 0.18389 0.18996 0.19689 0.20451 0.21270 0.22134 0.23034 0.23962 0.24915 0.25887 0.26875 0.27876 0.28888 0.29910 0.30940 0.31977 0.33019 0.34067 0.35118 0.36174 0.37233 0.38295 0.39360 0.40426 0.41494 0.42565 0.43637 0.44711 0.45785 0.46859 0.47935 0.49011 0.50089 0.51171 0.52254 0.53338 0.54422 0.55506 0.56590 0.57673 0.58757 0.59841 0.60925 0.62009 0.63093 0.64177 0.65256
0.17439 0.17516 0.17744 0.18110 0.18599 0.19192 0.19870 0.20620 0.21426 0.22277 0.23166 0.24085 0.25029 0.25993 0.26974 0.27968 0.28975 0.29991 0.31016 0.32048 0.33086 0.34130 0.35178 0.36230 0.37286 0.38345 0.39407 0.40471 0.41537 0.42605 0.43674 0.44746 0.45819 0.46893 0.47967 0.49042 0.50118 0.51195 0.52272 0.53354 0.54437 0.55521 0.56605 0.57689 0.58773 0.59857 0.60941 0.62024 0.63108 0.64192 0.65276
0.17683 0.17758 0.17979 0.18335 0.18811 0.19390 0.20055 0.20791 0.21584 0.22424 0.23303 0.24212 0.25147 0.26103 0.27076 0.28064 0.29064 0.30075 0.31095 0.32122 0.33156 0.34196 0.35240 0.36289 0.37342 0.38398 0.39457 0.40518 0.41582 0.42648 0.43715 0.44784 0.45856 0.46928 0.48002 0.49075 0.50150 0.51225 0.52301 0.53378 0.54455 0.55537 0.56621 0.57704 0.58788 0.59872 0.60956 0.62040 0.63124 0.64208 0.65291
0.17927 0.17999 0.18214 0.18560 0.19024 0.19590 0.20242 0.20965 0.21746 0.22574 0.23442 0.24342 0.25268 0.26216 0.27182 0.28163 0.29157 0.30163 0.31177 0.32200 0.33229 0.34265 0.35306 0.36351 0.37401 0.38454 0.39510 0.40569 0.41630 0.42694 0.43759 0.44826 0.45895 0.46965 0.48037 0.49110 0.50184 0.51258 0.52333 0.53408 0.54484 0.55561 0.56638 0.57720 0.58804 0.59888 0.60971 0.62055 0.63139 0.64223 0.65307
0.18171 0.18241 0.18450 0.18787 0.19239 0.19793 0.20431 0.21141 0.21910 0.22728 0.23585 0.24475 0.25392 0.26332 0.27291 0.28265 0.29253 0.30253 0.31262 0.32280 0.33305 0.34337 0.35374 0.36416 0.37462 0.38512 0.39565 0.40622 0.41680 0.42741 0.43805 0.44870 0.45937 0.47005 0.48074 0.49146 0.50219 0.51293 0.52366 0.53441 0.54516 0.55591 0.56667 0.57744 0.58821 0.59903 0.60987 0.62071 0.63155 0.64238 0.65322
0.18415 0.18483 0.18686 0.19014 0.19456 0.19997 0.20623 0.21321 0.22078 0.22884 0.23730 0.24611 0.25519 0.26451 0.27403 0.28371 0.29352 0.30346 0.31351 0.32364 0.33384 0.34412 0.35445 0.36483 0.37526 0.38573 0.39624 0.40677 0.41734 0.42792 0.43853 0.44917 0.45982 0.47048 0.48116 0.49185 0.50256 0.51328 0.52401 0.53475 0.54549 0.55623 0.56698 0.57774 0.58850 0.59927 0.61005 0.62086 0.63170 0.64254 0.65338
0.18659 0.18725 0.18922 0.19242 0.19674 0.20203 0.20817 0.21503 0.22248 0.23043 0.23879 0.24750 0.25650 0.26574 0.27518 0.28479 0.29454 0.30443 0.31442 0.32450 0.33466 0.34489 0.35519 0.36554 0.37593 0.38637 0.39684 0.40735 0.41789 0.42845 0.43904 0.44965 0.46028 0.47093 0.48159 0.49226 0.50295 0.51365 0.52437 0.53510 0.54583 0.55657 0.56731 0.57806 0.58881 0.59957 0.61033 0.62110 0.63188 0.64269 0.65353
0.18902 0.18967 0.19159 0.19471 0.19893 0.20411 0.21013 0.21687 0.22420 0.23205 0.24031 0.24892 0.25783 0.26699 0.27636 0.28590 0.29559 0.30542 0.31536 0.32539 0.33551 0.34570 0.35595 0.36626 0.37662 0.38703 0.39747 0.40796 0.41847 0.42901 0.43957 0.45016 0.46077 0.47140 0.48204 0.49270 0.50337 0.51405 0.52475 0.53547 0.54619 0.55692 0.56766 0.57840 0.58914 0.59989 0.61064 0.62140 0.63217 0.64294 0.65371
0.19146 0.19210 0.19397 0.19701 0.20113 0.20620 0.21211 0.21873 0.22596 0.23369 0.24185 0.25037 0.25919 0.26827 0.27756 0.28704 0.29667 0.30644 0.31632 0.32630 0.33638 0.34652 0.35674 0.36701 0.37734 0.38771 0.39813 0.40858 0.41907 0.42958 0.44012 0.45069 0.46128 0.47188 0.48251 0.49316 0.50381 0.51448 0.52516 0.53585 0.54656 0.55728 0.56801 0.57874 0.58948 0.60022 0.61097 0.62172 0.63247 0.64323 0.65400
0.19390 0.19452 0.19634 0.19931 0.20334 0.20831 0.21411 0.22062 0.22773 0.23536 0.24342 0.25185 0.26058 0.26958 0.27880 0.28821 0.29777 0.30748 0.31731 0.32725 0.33727 0.34738 0.35755 0.36779 0.37808 0.38842 0.39881 0.40923 0.41969 0.43018 0.44070 0.45124 0.46181 0.47240 0.48300 0.49363 0.50427 0.51492 0.52559 0.53626 0.54695 0.55765 0.56837 0.57910 0.58983 0.60057 0.61131 0.62205 0.63280 0.64355 0.65430
0.19634 0.19694 0.19872 0.20162 0.20556 0.21043 0.21612 0.22252 0.22953 0.23705 0.24502 0.25335 0.26200 0.27092 0.28006 0.28940 0.29890 0.30856 0.31833 0.32821 0.33819 0.34825 0.35839 0.36859 0.37885 0.38915 0.39951 0.40990 0.42033 0.43080 0.44129 0.45181 0.46236 0.47293 0.48351 0.49412 0.50474 0.51538 0.52604 0.53670 0.54737 0.55806 0.56875 0.57947 0.59019 0.60092 0.61165 0.62239 0.63313 0.64387 0.65462
0.19878 0.19937 0.20110 0.20394 0.20780 0.21257 0.21815 0.22444 0.23135 0.23877 0.24664 0.25488 0.26344 0.27228 0.28135 0.29062 0.30006 0.30965 0.31937 0.32921 0.33914 0.34916 0.35925 0.36941 0.37963 0.38991 0.40023 0.41060 0.42100 0.43144 0.44191 0.45241 0.46293 0.47348 0.48405 0.49463 0.50524 0.51586 0.52650 0.53715 0.54781 0.55848 0.56916 0.57985 0.59056 0.60128 0.61201 0.62274 0.63348 0.64421 0.65496
0.20122 0.20179 0.20349 0.20626 0.21004 0.21471 0.22020 0.22639 0.23319 0.24051 0.24828 0.25643 0.26491 0.27367 0.28266 0.29186 0.30124 0.31077 0.32044 0.33022 0.34011 0.35008 0.36013 0.37026 0.38044 0.39069 0.40098 0.41131 0.42169 0.43210 0.44254 0.45302 0.46352 0.47405 0.48459 0.49517 0.50575 0.51635 0.52697 0.53761 0.54826 0.55892 0.56959 0.58027 0.59095 0.60165 0.61237 0.62310 0.63383 0.64456 0.65530
0.20366 0.20422 0.20588 0.20859 0.21228 0.21687 0.22226 0.22835 0.23504 0.24227 0.24994 0.25801 0.26640 0.27508 0.28400 0.29313 0.30245 0.31192 0.32153 0.33126 0.34110 0.35103 0.36104 0.37113 0.38128 0.39148 0.40174 0.41205 0.42240 0.43278 0.44320 0.45365 0.46413 0.47464 0.48516 0.49571 0.50628 0.51687 0.52747 0.53809 0.54873 0.55938 0.57003 0.58070 0.59137 0.60206 0.61275 0.62347 0.63419 0.64492 0.65565
0.20610 0.20664 0.20827 0.21092 0.21454 0.21904 0.22433 0.23032 0.23692 0.24405 0.25163 0.25960 0.26791 0.27651 0.28536 0.29443 0.30368 0.31309 0.32265 0.33233 0.34212 0.35200 0.36197 0.37202 0.38213 0.39230 0.40253 0.41280 0.42312 0.43348 0.44388 0.45430 0.46476 0.47524 0.48575 0.49628 0.50683 0.51740 0.52799 0.53859 0.54920 0.55984 0.57049 0.58114 0.59181 0.60248 0.61316 0.62385 0.63456 0.64528 0.65601
0.20854 0.20907 0.21066 0.21326 0.21681 0.22122 0.22642 0.23232 0.23882 0.24585 0.25334 0.26122 0.26945 0.27797 0.28675 0.29574 0.30493 0.31429 0.32379 0.33341 0.34315 0.35299 0.36292 0.37293 0.38300 0.39314 0.40334 0.41358 0.42387 0.43420 0.44457 0.45497 0.46541 0.47587 0.48636 0.49686 0.50739 0.51795 0.52852 0.53911 0.54971 0.56032 0.57096 0.58160 0.59226 0.60292 0.61359 0.62427 0.63496 0.64565 0.65637
0.21098 0.21150 0.21305 0.21560 0.21908 0.22341 0.22852 0.23432 0.24073 0.24767 0.25507 0.26287 0.27101 0.27945 0.28816 0.29708 0.30621 0.31550 0.32495 0.33452 0.34421 0.35401 0.36389 0.37386 0.38390 0.39400 0.40416 0.41438 0.42464 0.43494 0.44528 0.45566 0.46607 0.47651 0.48698 0.49747 0.50798 0.51851 0.52907 0.53964 0.55022 0.56082 0.57144 0.58207 0.59272 0.60337 0.61403 0.62470 0.63537 0.64606 0.65675
0.21341 0.21393 0.21545 0.21794 0.22135 0.22561 0.23063 0.23634 0.24266 0.24951 0.25682 0.26453 0.27259 0.28096 0.28959 0.29845 0.30751 0.31674 0.32613 0.33565 0.34530 0.35505 0.36489 0.37481 0.38481 0.39488 0.40501 0.41519 0.42542 0.43570 0.44602 0.45637 0.46675 0.47717 0.48761 0.49809 0.50858 0.51909 0.52963 0.54019 0.55076 0.56134 0.57194 0.58255 0.59318 0.60383 0.61448 0.62514 0.63581 0.64648 0.65716
0.21585 0.21635 0.21784 0.22029 0.22364 0.22782 0.23276 0.23838 0.24460 0.25136 0.25858 0.26621 0.27419 0.28248 0.29104 0.29983 0.30883 0.31800 0.32733 0.33681 0.34640 0.35610 0.36590 0.37579 0.38575 0.39578 0.40588 0.41603 0.42623 0.43648 0.44676 0.45709 0.46745 0.47785 0.48827 0.49872 0.50920 0.51969 0.53021 0.54074 0.55130 0.56188 0.57246 0.58306 0.59367 0.60430 0.61494 0.62559 0.63625 0.64692 0.65759
0.21829 0.21878 0.22024 0.22264 0.22593 0.23003 0.23489 0.24043 0.24656 0.25323 0.26037 0.26791 0.27581 0.28403 0.29251 0.30124 0.31017 0.31928 0.32856 0.33798 0.34752 0.35718 0.36694 0.37678 0.38671 0.39670 0.40676 0.41688 0.42705 0.43727 0.44753 0.45783 0.46817 0.47854 0.48895 0.49937 0.50983 0.52031 0.53081 0.54133 0.55186 0.56242 0.57299 0.58358 0.59418 0.60479 0.61541 0.62606 0.63671 0.64736 0.65803
0.22073 0.22121 0.22264 0.22500 0.22822 0.23226 0.23704 0.24249 0.24854 0.25512 0.26217 0.26963 0.27745 0.28559 0.29401 0.30266 0.31153 0.32059 0.32981 0.33917 0.34867 0.35828 0.36799 0.37779 0.38768 0.39764 0.40767 0.41775 0.42789 0.43808 0.44832 0.45859 0.46891 0.47926 0.48963 0.50004 0.51048 0.52093 0.53142 0.54192 0.55244 0.56298 0.57354 0.58411 0.59470 0.60529 0.61590 0.62653 0.63717 0.64782 0.65848
0.22317 0.22364 0.22505 0.22735 0.23052 0.23449 0.23919 0.24456 0.25052 0.25702 0.26399 0.27137 0.27911 0.28718 0.29552 0.30411 0.31291 0.32191 0.33107 0.34039 0.34983 0.35940 0.36907 0.37883 0.38867 0.39860 0.40859 0.41864 0.42875 0.43891 0.44912 0.45937 0.46966 0.47998 0.49034 0.50073 0.51114 0.52158 0.53204 0.54253 0.55303 0.56356 0.57410 0.58466 0.59523 0.60582 0.61641 0.62702 0.63764 0.64829 0.65893
0.22561 0.22607 0.22745 0.22972 0.23283 0.23673 0.24135 0.24664 0.25253 0.25894 0.26582 0.27313 0.28079 0.28878 0.29705 0.30558 0.31432 0.32325 0.33236 0.34162 0.35102 0.36053 0.37016 0.37988 0.38969 0.39957 0.40953 0.41955 0.42963 0.43976 0.44994 0.46016 0.47043 0.48073 0.49106 0.50143 0.51182 0.52224 0.53268 0.54315 0.55364 0.56415 0.57467 0.58521 0.59578 0.60635 0.61693 0.62753 0.63814 0.64876 0.65940
0.22805 0.22850 0.22985 0.23208 0.23514 0.23897 0.24353 0.24874 0.25454 0.26087 0.26768 0.27490 0.28249 0.29040 0.29861 0.30706 0.31574 0.32462 0.33367 0.34288 0.35222 0.36169 0.37127 0.38095 0.39072 0.40057 0.41049 0.42048 0.43053 0.44063 0.45078 0.46098 0.47121 0.48149 0.49180 0.50214 0.51252 0.52292 0.53334 0.54379 0.55426 0.56475 0.57526 0.58579 0.59633 0.60689 0.61747 0.62805 0.63865 0.64926 0.65988
0.23049 0.23093 0.23226 0.23445 0.23745 0.24122 0.24571 0.25084 0.25657 0.26282 0.26954 0.27669 0.28420 0.29204 0.30018 0.30856 0.31718 0.32600 0.33499 0.34415 0.35344 0.36287 0.37240 0.38204 0.39177 0.40158 0.41147 0.42142 0.43144 0.44151 0.45163 0.46180 0.47201 0.48227 0.49255 0.50288 0.51323 0.52361 0.53401 0.54444 0.55490 0.56537 0.57587 0.58638 0.59690 0.60745 0.61801 0.62859 0.63917 0.64977 0.66037
0.23293 0.23336 0.23467 0.23682 0.23977 0.24348 0.24790 0.25296 0.25860 0.26478 0.27142 0.27849 0.28593 0.29370 0.30176 0.31009 0.31864 0.32740 0.33634 0.34544 0.35469 0.36406 0.37355 0.38315 0.39284 0.40261 0.41246 0.42238 0.43237 0.44241 0.45250 0.46264 0.47283 0.48306 0.49332 0.50362 0.51395 0.52431 0.53470 0.54511 0.55555 0.56600 0.57648 0.58698 0.59749 0.60802 0.61857 0.62913 0.63970 0.65029 0.66088
0.23537 0.23580 0.23708 0.23919 0.24209 0.24574 0.25009 0.25508 0.26065 0.26675 0.27332 0.28031 0.28768 0.29537 0.30337 0.31163 0.32012 0.32882 0.33770 0.34675 0.35594 0.36527 0.37472 0.38427 0.39392 0.40366 0.41347 0.42336 0.43331 0.44332 0.45339 0.46350 0.47367 0.48387 0.49411 0.50438 0.51469 0.52503 0.53540 0.54579 0.55621 0.56665 0.57711 0.58759 0.59809 0.60861 0.61914 0.62968 0.64025 0.65082 0.66141
0.23991 0.10910 0.12022 0.13134 0.14246 0.15358 0.16470 0.17582 0.18693 0.19805 0.20917 0.22029 0.23141 0.24253 0.25365 0.26477 0.27589 0.28701 0.29813 0.30925 0.32037 0.33149 0.34261 0.35372 0.36484 0.37596 0.38708 0.39820 0.40932 0.42044 0.43156 0.44268 0.45380 0.46492 0.47604 0.48716 0.49828 0.50940 0.52052 0.53163 0.54275 0.55382 0.56467 0.57551 0.58636 0.59721 0.60806 0.61890 0.62975 0.64060 0.65145
0.24241 0.24283 0.24408 0.24613 0.24897 0.25254 0.25679 0.26168 0.26714 0.27313 0.27959 0.28648 0.29375 0.30135 0.30925 0.31742 0.32583 0.33445 0.34327 0.35225 0.36138 0.33686 0.34771 0.35856 0.36940 0.38025 0.39110 0.40195 0.41280 0.42364 0.43449 0.44534 0.45619 0.46703 0.47788 0.48873 0.49958 0.51043 0.52127 0.53212 0.54297 0.55382 0.56467 0.57551 0.58636 0.59721 0.60806 0.61890 0.62975 0.64060 0.65145
0.24491 0.24532 0.24655 0.24857 0.25136 0.25488 0.25907 0.26389 0.26929 0.27521 0.28160 0.28841 0.29561 0.30315 0.31098 0.31909 0.32745 0.33601 0.34477 0.35370 0.36279 0.33686 0.34771 0.35856 0.36940 0.38025 0.39110 0.40195 0.41280 0.42364 0.43449 0.44534 0.45619 0.46703 0.47788 0.48873 0.49958 0.51043 0.52127 0.53212 0.54297 0.55382 0.56467 0.57551 0.58636 0.59721 0.60806 0.61890 0.62975 0.64060 0.65145
0.24741 0.24782 0.24902 0.25102 0.25376 0.25722 0.26136 0.26612 0.27144 0.27729 0.28361 0.29036 0.29749 0.30496 0.31273 0.32078 0.32907 0.33759 0.34629 0.35518 0.36422 0.33686 0.34771 0.35856 0.36940 0.38025 0.39110 0.40195 0.41280 0.42364 0.43449 0.44534 0.45619 0.46703 0.47788 0.48873 0.49958 0.51043 0.52127 0.53212 0.54297 0.55382 0.56467 0.57551 0.58636 0.59721 0.60806 0.61890 0.62975 0.64060 0.65145
0.24991 0.25031 0.25150 0.25346 0.25616 0.25958 0.26365 0.26835 0.27361 0.27939 0.28564 0.29232 0.29938 0.30678 0.31449 0.32248 0.33072 0.33917 0.34783 0.35666 0.36565 0.33686 0.34771 0.35856 0.36940 0.38025 0.39110 0.40195 0.41280 0.42364 0.43449 0.44534 0.45619 0.46703 0.47788 0.48873 0.49958 0.51043 0.52127 0.53212 0.54297 0.55382 0.56467 0.57551 0.58636 0.59721 0.60806 0.61890 0.62975 0.64060 0.65145
0.25241 0.25280 0.25397 0.25590 0.25857 0.26193 0.26595 0.27059 0.27578 0.28150 0.28768 0.29429 0.30128 0.30862 0.31627 0.32420 0.33238 0.34078 0.34938 0.35816 0.36711 0.33686 0.34771 0.35856 0.36940 0.38025 0.39110 0.40195 0.41280 0.42364 0.43449 0.44534 0.45619 0.46703 0.47788 0.48873 0.49958 0.51043 0.52127 0.53212 0.54297 0.55382 0.56467 0.57551 0.58636 0.59721 0.60806 0.61890 0.62975 0.64060 0.65145
0.25491 0.25530 0.25645 0.25835 0.26098 0.26429 0.26826 0.27283 0.27796 0.28361 0.28973 0.29627 0.30320 0.31047 0.31806 0.32593 0.33405 0.34239 0.35094 0.35968 0.36858 0.37762 0.38681 0.39611 0.40553 0.41505 0.42466 0.43435 0.44412 0.45395 0.46384 0.47372 0.48360 0.49348 0.50337 0.51325 0.52313 0.53302 0.54290 0.55278 0.56267 0.57255 0.58243 0.59231 0.60220 0.61208 0.62196 0.63185 0.64173 0.65161 0.66149
0.25713 0.25751 0.25864 0.26051 0.26310 0.26636 0.27026 0.27477 0.27983 0.28540 0.29144 0.29791 0.30475 0.31195 0.31946 0.32725 0.33529 0.34356 0.35204 0.36070 0.36952 0.37850 0.38761 0.39685 0.40619 0.41564 0.42517 0.43478 0.44447 0.45421 0.46401 0.47383 0.48368 0.49355 0.50342 0.51329 0.52317 0.53305 0.54293 0.55281 0.56269 0.57257 0.58245 0.59234 0.60222 0.61210 0.62199 0.63187 0.64175 0.65163 0.66152
0.25936 0.25973 0.26084 0.26268 0.26522 0.26843 0.27228 0.27672 0.28171 0.28721 0.29317 0.29955 0.30632 0.31344 0.32087 0.32859 0.33655 0.34475 0.35316 0.36175 0.37050 0.37941 0.38846 0.39763 0.40690 0.41628 0.42575 0.43530 0.44491 0.45459 0.46432 0.47409 0.48390 0.49372 0.50356 0.51342 0.52328 0.53314 0.54301 0.55288 0.56276 0.57263 0.58251 0.59239 0.60226 0.61214 0.62202 0.63190 0.64178 0.65166 0.66154
0.26158 0.26194 0.26304 0.26485 0.26735 0.27051 0.27430 0.27867 0.28360 0.28902 0.29491 0.30122 0.30791 0.31495 0.32231 0.32995 0.33784 0.34597 0.35430 0.36282 0.37151 0.38036 0.38934 0.39844 0.40766 0.41697 0.42638 0.43587 0.44542 0.45504 0.46472 0.47444 0.48419 0.49398 0.50379 0.51361 0.52345 0.53330 0.54315 0.55301 0.56287 0.57274 0.58260 0.59248 0.60235 0.61222 0.62210 0.63197 0.64185 0.65172 0.66160
0.26380 0.26416 0.26524 0.26702 0.26948 0.27259 0.27632 0.28064 0.28549 0.29085 0.29666 0.30290 0.30952 0.31648 0.32377 0.33133 0.33915 0.34721 0.35547 0.36393 0.37255 0.38133 0.39025 0.39929 0.40845 0.41770 0.42705 0.43648 0.44598 0.45555 0.46517 0.47484 0.48455 0.49430 0.50407 0.51386 0.52368 0.53350 0.54333 0.55318 0.56303 0.57288 0.58274 0.59260 0.60246 0.61233 0.62220 0.63207 0.64194 0.65181 0.66169
0.26602 0.26638 0.26744 0.26919 0.27161 0.27468 0.27836 0.28261 0.28740 0.29269 0.29843 0.30459 0.31114 0.31803 0.32524 0.33273 0.34049 0.34847 0.35667 0.36506 0.37362 0.38233 0.39119 0.40017 0.40927 0.41847 0.42776 0.43714 0.44659 0.45611 0.46568 0.47530 0.48497 0.49468 0.50441 0.51417 0.52395 0.53375 0.54357 0.55339 0.56322 0.57306 0.58291 0.59276 0.60261 0.61247 0.62233 0.63219 0.64206 0.65192 0.66179
0.26824 0.26859 0.26964 0.27136 0.27375 0.27677 0.28039 0.28459 0.28931 0.29453 0.30021 0.30630 0.31277 0.31960 0.32673 0.33416 0.34184 0.34976 0.35789 0.36621 0.37471 0.38336 0.39216 0.40108 0.41012 0.41927 0.42851 0.43783 0.44723 0.45670 0.46623 0.47581 0.48543 0.49510 0.50480 0.51453 0.52428 0.53405 0.54384 0.55364 0.56346 0.57328 0.58311 0.59295 0.60279 0.61264 0.62249 0.63234 0.64220 0.65206 0.66192
0.27047 0.27081 0.27184 0.27353 0.27589 0.27886 0.28244 0.28657 0.29124 0.29639 0.30200 0.30802 0.31443 0.32118 0.32824 0.33560 0.34321 0.35107 0.35913 0.36739 0.37583 0.38442 0.39316 0.40202 0.41101 0.42010 0.42929 0.43856 0.44791 0.45733 0.46681 0.47635 0.48594 0.49556 0.50523 0.51492 0.52464 0.53439 0.54415 0.55393 0.56373 0.57353 0.58335 0.59317 0.60300 0.61283 0.62267 0.63252 0.64237 0.65222 0.66208
0.27269 0.27303 0.27404 0.27571 0.27803 0.28096 0.28448 0.28857 0.29317 0.29826 0.30380 0.30975 0.31609 0.32277 0.32977 0.33706 0.34461 0.35239 0.36039 0.36859 0.37696 0.38550 0.39418 0.40299 0.41192 0.42096 0.43009 0.43932 0.44862 0.45800 0.46743 0.47693 0.48647 0.49606 0.50569 0.51535 0.52505 0.53476 0.54450 0.55426 0.56403 0.57382 0.58361 0.59342 0.60324 0.61306 0.62289 0.63272 0.64256 0.65240 0.66225
0.27491 0.27524 0.27624 0.27789 0.28017 0.28306 0.28654 0.29056 0.29511 0.30014 0.30561 0.31150 0.31777 0.32438 0.33131 0.33853 0.34602 0.35374 0.36168 0.36981 0.37812 0.38660 0.39522 0.40398 0.41286 0.42184 0.43093 0.44011 0.44936 0.45869 0.46809 0.47754 0.48705 0.49660 0.50619 0.51582 0.52548 0.53517 0.54488 0.55462 0.56437 0.57413 0.58391 0.59370 0.60350 0.61331 0.62313 0.63295 0.64278 0.65261 0.66245
0.27713 0.27746 0.27844 0.28007 0.28231 0.28517 0.28860 0.29257 0.29706 0.30202 0.30743 0.31326 0.31946 0.32601 0.33287 0.34002 0.34744 0.35510 0.36298 0.37105 0.37931 0.38773 0.39629 0.40500 0.41382 0.42276 0.43179 0.44092 0.45013 0.45942 0.46877 0.47818 0.48765 0.49717 0.50672 0.51632 0.52595 0.53561 0.54530 0.55500 0.56473 0.57448 0.58424 0.59401 0.60379 0.61359 0.62339 0.63320 0.64302 0.65284 0.66267
0.27936 0.27968 0.28065 0.28225 0.28446 0.28728 0.29066 0.29458 0.29901 0.30392 0.30927 0.31503 0.32116 0.32764 0.33444 0.34153 0.34889 0.35648 0.36430 0.37231 0.38051 0.38887 0.39738 0.40603 0.41481 0.42369 0.43268 0.44176 0.45093 0.46017 0.46948 0.47885 0.48828 0.49776 0.50729 0.51685 0.52645 0.53608 0.54574 0.55542 0.56513 0.57485 0.58459 0.59434 0.60411 0.61389 0.62368 0.63347 0.64328 0.65309 0.66291
0.28158 0.28190 0.28285 0.28443 0.28661 0.28939 0.29272 0.29660 0.30097 0.30582 0.31111 0.31681 0.32288 0.32930 0.33603 0.34306 0.35035 0.35788 0.36564 0.37359 0.38173 0.39004 0.39850 0.40709 0.41581 0.42465 0.43359 0.44263 0.45175 0.46095 0.47022 0.47955 0.48894 0.49839 0.50788 0.51741 0.52698 0.53658 0.54621 0.55587 0.56555 0.57525 0.58497 0.59470 0.60445 0.61422 0.62399 0.63377 0.64356 0.65336 0.66317
0.28380 0.28411 0.28505 0.28661 0.28876 0.29150 0.29479 0.29862 0.30294 0.30773 0.31296 0.31859 0.32460 0.33096 0.33763 0.34460 0.35182 0.35930 0.36699 0.37489 0.38297 0.39122 0.39963 0.40817 0.41684 0.42563 0.43453 0.44352 0.45259 0.46175 0.47098 0.48028 0.48963 0.49904 0.50849 0.51799 0.52753 0.53710 0.54671 0.55634 0.56600 0.57567 0.58537 0.59509 0.60482 0.61457 0.62432 0.63409 0.64387 0.65365 0.66345
0.28602 0.28633 0.28726 0.28879 0.29092 0.29362 0.29687 0.30064 0.30491 0.30965 0.31482 0.32039 0.32634 0.33264 0.33925 0.34615 0.35332 0.36073 0.36837 0.37621 0.38423 0.39243 0.40078 0.40927 0.41790 0.42664 0.43548 0.44443 0.45346 0.46258 0.47177 0.48102 0.49034 0.49971 0.50913 0.51860 0.52811 0.53765 0.54723 0.55684 0.56647 0.57612 0.58580 0.59550 0.60521 0.61494 0.62468 0.63443 0.64420 0.65397 0.66375
0.28824 0.28855 0.28946 0.29098 0.29307 0.29574 0.29895 0.30268 0.30690 0.31158 0.31669 0.32220 0.32809 0.33432 0.34087 0.34771 0.35482 0.36218 0.36976 0.37754 0.38551 0.39365 0.40195 0.41039 0.41897 0.42766 0.43646 0.44536 0.45435 0.46343 0.47258 0.48179 0.49107 0.50041 0.50980 0.51924 0.52871 0.53823 0.54778 0.55736 0.56697 0.57660 0.58625 0.59593 0.60562 0.61533 0.62506 0.63479 0.64454 0.65430 0.66407
0.29047 0.29077 0.29167 0.29316 0.29523 0.29786 0.30103 0.30471 0.30888 0.31351 0.31857 0.32402 0.32985 0.33602 0.34251 0.34929 0.35634 0.36364 0.37116 0.37889 0.38680 0.39489 0.40314 0.41153 0.42006 0.42870 0.43746 0.44632 0.45526 0.46430 0.47341 0.48259 0.49183 0.50113 0.51049 0.51989 0.52934 0.53882 0.54835 0.55790 0.56748 0.57709 0.58673 0.59638 0.60606 0.61575 0.62545 0.63518 0.64491 0.65465 0.66441
0.29269 0.29299 0.29387 0.29535 0.29739 0.29999 0.30312 0.30675 0.31087 0.31545 0.32045 0.32585 0.33162 0.33774 0.34417 0.35089 0.35788 0.36512 0.37258 0.38025 0.38812 0.39615 0.40435 0.41269 0.42117 0.42977 0.43848 0.44729 0.45620 0.46519 0.47426 0.48340 0.49261 0.50188 0.51120 0.52057 0.52999 0.53944 0.54894 0.55847 0.56803 0.57761 0.58722 0.59686 0.60651 0.61618 0.62587 0.63558 0.64530 0.65503 0.66477
0.29491 0.29520 0.29608 0.29753 0.29955 0.30211 0.30521 0.30880 0.31287 0.31740 0.32234 0.32769 0.33340 0.33946 0.34583 0.35249 0.35943 0.36661 0.37402 0.38163 0.38944 0.39743 0.40557 0.41387 0.42229 0.43085 0.43951 0.44828 0.45715 0.46610 0.47513 0.48424 0.49341 0.50264 0.51193 0.52127 0.53066 0.54009 0.54955 0.55905 0.56859 0.57815 0.58774 0.59735 0.60699 0.61664 0.62631 0.63600 0.64570 0.65542 0.66514
0.29713 0.29742 0.29829 0.29972 0.30171 0.30425 0.30730 0.31085 0.31488 0.31935 0.32424 0.32953 0.33519 0.34119 0.34750 0.35411 0.36099 0.36811 0.37547 0.38303 0.39079 0.39872 0.40681 0.41506 0.42344 0.43195 0.44057 0.44929 0.45812 0.46703 0.47602 0.48509 0.49423 0.50343 0.51268 0.52199 0.53135 0.54075 0.55019 0.55966 0.56917 0.57871 0.58828 0.59787 0.60748 0.61712 0.62677 0.63644 0.64613 0.65582 0.66554
0.29936 0.29964 0.30050 0.30191 0.30388 0.30638 0.30939 0.31290 0.31688 0.32131 0.32615 0.33139 0.33699 0.34293 0.34919 0.35574 0.36256 0.36963 0.37693 0.38444 0.39214 0.40003 0.40807 0.41627 0.42460 0.43306 0.44164 0.45033 0.45911 0.46798 0.47694 0.48597 0.49507 0.50423 0.51346 0.52273 0.53206 0.54143 0.55084 0.56029 0.56977 0.57929 0.58883 0.59840 0.60800 0.61761 0.62725 0.63690 0.64657 0.65625 0.66595
0.30158 0.30186 0.30270 0.30410 0.30604 0.30851 0.31149 0.31496 0.31890 0.32327 0.32807 0.33325 0.33880 0.34468 0.35089 0.35738 0.36415 0.37116 0.37841 0.38587 0.39352 0.40135 0.40935 0.41749 0.42578 0.43420 0.44273 0.45137 0.46012 0.46895 0.47787 0.48686 0.49593 0.50506 0.51425 0.52349 0.53279 0.54213 0.55151 0.56094 0.57040 0.57989 0.58941 0.59896 0.60853 0.61812 0.62774 0.63737 0.64703 0.65670 0.66638
0.30380 0.30408 0.30491 0.30629 0.30821 0.31065 0.31359 0.31702 0.32092 0.32524 0.32999 0.33512 0.34061 0.34645 0.35260 0.35904 0.36575 0.37271 0.37990 0.38730 0.39491 0.40269 0.41063 0.41874 0.42698 0.43535 0.44384 0.45244 0.46114 0.46993 0.47881 0.48777 0.49680 0.50590 0.51506 0.52427 0.53354 0.54285 0.55221 0.56160 0.57104 0.58050 0.59000 0.59953 0.60908 0.61865 0.62825 0.63787 0.64750 0.65716 0.66682
0.30602 0.30630 0.30712 0.30848 0.31038 0.31279 0.31570 0.31909 0.32294 0.32722 0.33192 0.33700 0.34244 0.34822 0.35431 0.36070 0.36736 0.37426 0.38140 0.38876 0.39631 0.40404 0.41194 0.41999 0.42819 0.43652 0.44496 0.45352 0.46218 0.47094 0.47978 0.48870 0.49770 0.50676 0.51588 0.52507 0.53430 0.54359 0.55292 0.56229 0.57170 0.58114 0.59061 0.60012 0.60965 0.61920 0.62878 0.63838 0.64800 0.65763 0.66728
0.30824 0.30852 0.30933 0.31068 0.31255 0.31493 0.31781 0.32116 0.32497 0.32920 0.33385 0.33888 0.34427 0.35000 0.35604 0.36237 0.36898 0.37583 0.38292 0.39022 0.39772 0.40541 0.41326 0.42126 0.42941 0.43770 0.44610 0.45462 0.46324 0.47196 0.48076 0.48965 0.49861 0.50764 0.51673 0.52588 0.53509 0.54434 0.55365 0.56299 0.57237 0.58179 0.59124 0.60072 0.61023 0.61977 0.62933 0.63891 0.64851 0.65813 0.66776
0.31047 0.31074 0.31154 0.31287 0.31472 0.31707 0.31992 0.32323 0.32700 0.33119 0.33579 0.34077 0.34611 0.35179 0.35778 0.36406 0.37061 0.37741 0.38445 0.39170 0.39915 0.40679 0.41459 0.42255 0.43066 0.43890 0.44726 0.45573 0.46431 0.47299 0.48176 0.49061 0.49954 0.50853 0.51759 0.52671 0.53589 0.54512 0.55439 0.56371 0.57307 0.58246 0.59189 0.60135 0.61084 0.62035 0.62989 0.63945 0.64903 0.65864 0.66826
0.31269 0.31295 0.31375 0.31506 0.31689 0.31922 0.32203 0.32531 0.32903 0.33318 0.33774 0.34267 0.34796 0.35358 0.35952 0.36575 0.37225 0.37900 0.38599 0.39319 0.40059 0.40818 0.41594 0.42385 0.43191 0.44011 0.44843 0.45686 0.46541 0.47404 0.48278 0.49159 0.50048 0.50944 0.51847 0.52756 0.53671 0.54591 0.55515 0.56444 0.57378 0.58315 0.59255 0.60199 0.61145 0.62095 0.63047 0.64001 0.64958 0.65916 0.66876
0.31491 0.31517 0.31596 0.31726 0.31906 0.32136 0.32414 0.32739 0.33107 0.33518 0.33969 0.34457 0.34982 0.35539 0.36128 0.36746 0.37391 0.38061 0.38754 0.39469 0.40205 0.40959 0.41730 0.42517 0.43318 0.44134 0.44961 0.45801 0.46651 0.47511 0.48381 0.49258 0.50144 0.51037 0.51937 0.52843 0.53754 0.54671 0.55593 0.56520 0.57450 0.58385 0.59323 0.60264 0.61209 0.62156 0.63106 0.64059 0.65013 0.65970 0.66929
0.31713 0.31739 0.31817 0.31945 0.32124 0.32351 0.32626 0.32947 0.33312 0.33718 0.34165 0.34648 0.35168 0.35720 0.36304 0.36917 0.37557 0.38222 0.38911 0.39621 0.40351 0.41101 0.41867 0.42649 0.43447 0.44258 0.45081 0.45917 0.46763 0.47620 0.48485 0.49359 0.50242 0.51131 0.52028 0.52931 0.53839 0.54754 0.55673 0.56596 0.57525 0.58457 0.59392 0.60332 0.61274 0.62219 0.63167 0.64118 0.65071 0.66026 0.66983
0.31936 0.31961 0.32038 0.32165 0.32341 0.32566 0.32838 0.33155 0.33516 0.33919 0.34361 0.34840 0.35355 0.35903 0.36481 0.37089 0.37724 0.38384 0.39068 0.39774 0.40499 0.41244 0.42006 0.42784 0.43577 0.44383 0.45203 0.46034 0.46877 0.47729 0.48591 0.49462 0.50341 0.51227 0.52121 0.53020 0.53926 0.54837 0.55754 0.56675 0.57600 0.58530 0.59464 0.60400 0.61341 0.62284 0.63230 0.64178 0.65129 0.66083 0.67038
0.32158 0.32183 0.32259 0.32384 0.32559 0.32781 0.33050 0.33364 0.33722 0.34120 0.34558 0.35033 0.35542 0.36085 0.36659 0.37262 0.37893 0.38548 0.39227 0.39927 0.40648 0.41388 0.42145 0.42919 0.43708 0.44510 0.45326 0.46153 0.46992 0.47840 0.48699 0.49566 0.50442 0.51325 0.52215 0.53111 0.54014 0.54923 0.55836 0.56755 0.57678 0.58605 0.59536 0.60471 0.61409 0.62350 0.63294 0.64241 0.65190 0.66141 0.67095
Sg 101 depth(row) 51 delta(column)
0.00000 0.09754 0.19508 0.29262 0.39016 0.43989 0.45906 0.47823 0.49740 0.51657 0.53575 0.55492 0.57409 0.59326 0.61243 0.63160 0.65077 0.66994 0.68912 0.70829 0.72746 0.74663 0.76580 0.78497 0.80414 0.82332 0.84249 0.86166 0.88083 0.90000 0.91917 0.93834 0.95751 0.97669 0.99586 1.01503 1.03420 1.05337 1.07254 1.09171 1.11088 1.13006 1.14923 1.16840 1.18757 1.20674 1.22591 1.24508 1.26426 1.28343 1.30260
0.02193 0.10506 0.20234 0.29963 0.39692 0.41839 0.43756 0.45673 0.47590 0.49507 0.51424 0.53342 0.55259 0.57176 0.59093 0.61010 0.62927 0.64844 0.66761 0.68679 0.70596 0.72513 0.74430 0.76347 0.78264 0.80181 0.82098 0.84016 0.85933 0.87850 0.89767 0.91684 0.93601 0.95518 0.97435 0.99353 1.01270 1.03187 1.05104 1.07021 1.08938 1.10855 1.12773 1.14690 1.16607 1.18524 1.20441 1.22358 1.24275 1.26192 1.28110
0.04386 0.11284 0.21013 0.30742 0.37771 0.39689 0.41606 0.43523 0.45440 0.47357 0.49274 0.51191 0.53108 0.55026 0.56943 0.58860 0.60777 0.62694 0.64611 0.66528 0.68445 0.70363 0.72280 0.74197 0.76114 0.78031 0.79948 0.81865 0.83783 0.85700 0.87617 0.89534 0.91451 0.93368 0.95285 0.97202 0.99120 1.01037 1.02954 1.04871 1.06788 1.08705 1.10622 1.12539 1.14457 1.16374 1.18291 1.20208 1.22125 1.24042 1.25959
0.06579 0.12062 0.21792 0.31522 0.35621 0.37538 0.39455 0.41373 0.43290 0.45207 0.47124 0.49041 0.50958 0.52875 0.54792 0.56710 0.58627 0.60544 0.62461 0.64378 0.66295 0.68212 0.70130 0.72047 0.73964 0.75881 0.77798 0.79715 0.81632 0.83549 0.85467 0.87384 0.89301 0.91218 0.93135 0.95052 0.96969 0.98886 1.00804 1.02721 1.04638 1.06555 1.08472 1.10389 1.12306 1.14224 1.16141 1.18058 1.19975 1.21892 1.23809
0.08772 0.13118 0.22570 0.31554 0.33471 0.35388 0.37305 0.39222 0.41140 0.43057 0.44974 0.46891 0.48808 0.50725 0.52642 0.54559 0.56477 0.58394 0.60311 0.62228 0.64145 0.66062 0.67979 0.69896 0.71814 0.73731 0.75648 0.77565 0.79482 0.81399 0.83316 0.85233 0.87151 0.89068 0.90985 0.92902 0.94819 0.96736 0.98653 1.00571 1.02488 1.04405 1.06322 1.08239 1.10156 1.12073 1.13990 1.15908 1.17825 1.19742 1.21659
0.10965 0.14675 0.23348 0.29404 0.31321 0.33238 0.35155 0.37072 0.38989 0.40906 0.42824 0.44741 0.46658 0.48575 0.50492 0.52409 0.54326 0.56243 0.58161 0.60078 0.61995 0.63912 0.65829 0.67746 0.69663 0.71581 0.73498 0.75415 0.77332 0.79249 0.81166 0.83083 0.85000 0.86918 0.88835 0.90752 0.92669 0.94586 0.96503 0.98420 1.00337 1.02255 1.04172 1.06089 1.08006 1.09923 1.11840 1.13757 1.15674 1.17592 1.19509
0.13158 0.16379 0.24125 0.27253 0.29171 0.31088 0.33005 0.34922 0.36839 0.38756 0.40673 0.42590 0.44508 0.46425 0.48342 0.50259 0.52176 0.54093 0.56010 0.57928 0.59845 0.61762 0.63679 0.65596 0.67513 0.69430 0.71347 0.73265 0.75182 0.77099 0.79016 0.80933 0.82850 0.84767 0.86684 0.88602 0.90519 0.92436 0.94353 0.96270 0.98187 1.00104 1.02022 1.03939 1.05856 1.07773 1.09690 1.11607 1.13524 1.15441 1.17359
0.15351 0.18188 0.23186 0.25103 0.27020 0.28937 0.30855 0.32772 0.34689 0.36606 0.38523 0.40440 0.42357 0.44275 0.46192 0.48109 0.50026 0.51943 0.53860 0.55777 0.57694 0.59612 0.61529 0.63446 0.65363 0.67280 0.69197 0.71114 0.73031 0.74949 0.76866 0.78783 0.80700 0.82617 0.84534 0.86451 0.88369 0.90286 0.92203 0.94120 0.96037 0.97954 0.99871 1.01788 1.03706 1.05623 1.07540 1.09457 1.11374 1.13291 1.15208
0.17544 0.19119 0.21036 0.22953 0.24870 0.26787 0.28704 0.30622 0.32539 0.34456 0.36373 0.38290 0.40207 0.42124 0.44041 0.45959 0.47876 0.49793 0.51710 0.53627 0.55544 0.57461 0.59379 0.61296 0.63213 0.65130 0.67047 0.68964 0.70881 0.72798 0.74716 0.76633 0.78550 0.80467 0.82384 0.84301 0.86218 0.88135 0.90053 0.91970 0.93887 0.95804 0.97721 0.99638 1.01555 1.03472 1.05390 1.07307 1.09224 1.11141 1.13058
0.17975 0.19191 0.21065 0.22972 0.24883 0.26798 0.28713 0.30629 0.32545 0.34462 0.36379 0.38296 0.40213 0.42129 0.44046 0.45963 0.47880 0.49797 0.51714 0.53630 0.55547 0.57464 0.59381 0.61298 0.63215 0.65132 0.67049 0.68966 0.70883 0.72800 0.74717 0.76634 0.78551 0.80469 0.82386 0.84303 0.86220 0.88137 0.90054 0.91971 0.93888 0.95805 0.97723 0.99640 1.01557 1.03474 1.05391 1.07308 1.09225 1.11142 1.13059
0.18406 0.19381 0.21152 0.23026 0.24923 0.26829 0.28739 0.30651 0.32564 0.34479 0.36394 0.38309 0.40224 0.42140 0.44056 0.45972 0.47889 0.49806 0.51722 0.53639 0.55556 0.57473 0.59390 0.61306 0.63223 0.65140 0.67057 0.68974 0.70891 0.72807 0.74723 0.76640 0.78557 0.80474 0.82391 0.84308 0.86225 0.88142 0.90058 0.91975 0.93892 0.95809 0.97726 0.99643 1.01560 1.03477 1.05394 1.07311 1.09228 1.11145 1.13062
0.18837 0.19646 0.21290 0.23115 0.24989 0.26881 0.28782 0.30687 0.32596 0.34507 0.36419 0.38331 0.40245 0.42159 0.44074 0.45989 0.47904 0.49820 0.51735 0.53651 0.55566 0.57482 0.59399 0.61316 0.63232 0.65149 0.67066 0.68983 0.70900 0.72816 0.74733 0.76650 0.78567 0.80484 0.82400 0.84317 0.86234 0.88150 0.90067 0.91983 0.93900 0.95816 0.97733 0.99650 1.01567 1.03484 1.05400 1.07317 1.09234 1.11151 1.13068
0.19268 0.19956 0.21473 0.23238 0.25080 0.26953 0.28841 0.30738 0.32640 0.34545 0.36453 0.38364 0.40275 0.42186 0.44098 0.46011 0.47925 0.49840 0.51755 0.53670 0.55585 0.57500 0.59415 0.61331 0.63246 0.65162 0.67077 0.68993 0.70909 0.72826 0.74742 0.76659 0.78576 0.80493 0.82410 0.84326 0.86243 0.88160 0.90077 0.91994 0.93910 0.95827 0.97744 0.99661 1.01576 1.03493 1.05410 1.07326 1.09243 1.11159 1.13076
0.19699 0.20297 0.21693 0.23391 0.25195 0.27044 0.28917 0.30803 0.32696 0.34595 0.36498 0.38404 0.40311 0.42221 0.44131 0.46042 0.47954 0.49866 0.51779 0.53692 0.55606 0.57520 0.59435 0.61350 0.63265 0.65180 0.67095 0.69011 0.70926 0.72841 0.74757 0.76673 0.78588 0.80504 0.82420 0.84336 0.86252 0.88169 0.90086 0.92003 0.93919 0.95836 0.97753 0.99670 1.01587 1.03503 1.05420 1.07337 1.09254 1.11171 1.13087
0.20130 0.20658 0.21946 0.23571 0.25333 0.27155 0.29009 0.30881 0.32765 0.34656 0.36553 0.38453 0.40357 0.42262 0.44169 0.46078 0.47988 0.49899 0.51810 0.53722 0.55634 0.57546 0.59459 0.61372 0.63286 0.65201 0.67116 0.69031 0.70946 0.72861 0.74776 0.76691 0.78606 0.80522 0.82437 0.84352 0.86268 0.88183 0.90099 0.92015 0.93931 0.95847 0.97763 0.99679 1.01596 1.03512 1.05429 1.07346 1.09263 1.11180 1.13096
0.20561 0.21033 0.22224 0.23777 0.25492 0.27284 0.29117 0.30974 0.32846 0.34728 0.36617 0.38512 0.40410 0.42312 0.44215 0.46120 0.48027 0.49935 0.51845 0.53756 0.55667 0.57578 0.59489 0.61401 0.63313 0.65226 0.67139 0.69053 0.70967 0.72881 0.74796 0.76711 0.78626 0.80541 0.82456 0.84371 0.86286 0.88202 0.90117 0.92032 0.93948 0.95863 0.97779 0.99694 1.01610 1.03526 1.05441 1.07357 1.09273 1.11189 1.13105
0.20992 0.21419 0.22524 0.24006 0.25672 0.27431 0.29240 0.31080 0.32939 0.34811 0.36692 0.38579 0.40472 0.42368 0.44268 0.46170 0.48073 0.49978 0.51885 0.53793 0.55702 0.57613 0.59523 0.61434 0.63345 0.65257 0.67169 0.69081 0.70993 0.72906 0.74820 0.76733 0.78647 0.80562 0.82477 0.84392 0.86307 0.88222 0.90137 0.92052 0.93967 0.95882 0.97797 0.99712 1.01628 1.03543 1.05459 1.07374 1.09290 1.11205 1.13121
0.21423 0.21812 0.22841 0.24254 0.25870 0.27594 0.29378 0.31199 0.33043 0.34904 0.36775 0.38655 0.40542 0.42433 0.44328 0.46225 0.48126 0.50028 0.51932 0.53837 0.55743 0.57651 0.59560 0.61470 0.63380 0.65291 0.67202 0.69113 0.71025 0.72936 0.74849 0.76761 0.78674 0.80587 0.82500 0.84414 0.86328 0.88242 0.90157 0.92072 0.93987 0.95902 0.97817 0.99732 1.01647 1.03562 1.05477 1.07393 1.09308 1.11223 1.13139
0.21854 0.22211 0.23172 0.24521 0.26086 0.27773 0.29530 0.31330 0.33159 0.35007 0.36869 0.38740 0.40619 0.42505 0.44394 0.46288 0.48184 0.50082 0.51984 0.53886 0.55790 0.57695 0.59602 0.61509 0.63417 0.65327 0.67237 0.69148 0.71059 0.72970 0.74881 0.76792 0.78704 0.80616 0.82528 0.84441 0.86354 0.88267 0.90181 0.92094 0.94008 0.95923 0.97838 0.99752 1.01667 1.03582 1.05497 1.07412 1.09328 1.11243 1.13158
0.22285 0.22615 0.23516 0.24802 0.26318 0.27967 0.29696 0.31474 0.33286 0.35120 0.36971 0.38833 0.40705 0.42584 0.44468 0.46356 0.48248 0.50143 0.52040 0.53940 0.55842 0.57745 0.59649 0.61554 0.63460 0.65367 0.67275 0.69184 0.71094 0.73005 0.74915 0.76826 0.78737 0.80649 0.82560 0.84472 0.86384 0.88296 0.90208 0.92121 0.94034 0.95947 0.97861 0.99775 1.01689 1.03603 1.05518 1.07433 1.09348 1.11263 1.13178
0.22716 0.23023 0.23870 0.25098 0.26565 0.28175 0.29875 0.31630 0.33424 0.35244 0.37082 0.38935 0.40798 0.42670 0.44548 0.46431 0.48318 0.50209 0.52103 0.53999 0.55897 0.57798 0.59700 0.61603 0.63507 0.65412 0.67318 0.69225 0.71133 0.73041 0.74951 0.76862 0.78772 0.80683 0.82594 0.84505 0.86416 0.88328 0.90239 0.92151 0.94063 0.95976 0.97888 0.99801 1.01714 1.03628 1.05542 1.07455 1.09369 1.11284 1.13198
0.23147 0.23434 0.24232 0.25406 0.26825 0.28397 0.30066 0.31798 0.33572 0.35377 0.37203 0.39045 0.40899 0.42763 0.44635 0.46512 0.48394 0.50281 0.52171 0.54063 0.55959 0.57856 0.59755 0.61656 0.63558 0.65461 0.67365 0.69270 0.71176 0.73083 0.74991 0.76899 0.78809 0.80719 0.82629 0.84540 0.86451 0.88361 0.90273 0.92184 0.94095 0.96007 0.97919 0.99831 1.01743 1.03656 1.05568 1.07481 1.09395 1.11308 1.13222
0.23578 0.23847 0.24602 0.25725 0.27097 0.28631 0.30269 0.31976 0.33731 0.35519 0.37332 0.39163 0.41008 0.42864 0.44728 0.46600 0.48477 0.50358 0.52244 0.54133 0.56024 0.57919 0.59815 0.61713 0.63612 0.65514 0.67416 0.69319 0.71224 0.73129 0.75034 0.76941 0.78849 0.80757 0.82666 0.84576 0.86486 0.88397 0.90307 0.92218 0.94129 0.96040 0.97951 0.99863 1.01775 1.03686 1.05598 1.07511 1.09423 1.11336 1.13249
0.24009 0.24263 0.24978 0.26053 0.27381 0.28876 0.30483 0.32165 0.33900 0.35671 0.37470 0.39289 0.41124 0.42971 0.44828 0.46693 0.48564 0.50441 0.52322 0.54207 0.56095 0.57986 0.59879 0.61774 0.63671 0.65570 0.67470 0.69372 0.71274 0.73178 0.75082 0.76987 0.78893 0.80799 0.82707 0.84614 0.86523 0.88433 0.90343 0.92254 0.94164 0.96075 0.97986 0.99897 1.01808 1.03719 1.05631 1.07542 1.09454 1.11366 1.13278
0.24440 0.24680 0.25359 0.26390 0.27675 0.29132 0.30708 0.32365 0.34078 0.35832 0.37616 0.39423 0.41248 0.43086 0.44935 0.46793 0.48658 0.50529 0.52406 0.54286 0.56170 0.58057 0.59947 0.61840 0.63734 0.65630 0.67528 0.69427 0.71328 0.73230 0.75133 0.77036 0.78940 0.80845 0.82751 0.84658 0.86565 0.88472 0.90380 0.92290 0.94200 0.96111 0.98021 0.99932 1.01842 1.03753 1.05664 1.07575 1.09487 1.11398 1.13310
0.24871 0.25098 0.25745 0.26735 0.27978 0.29399 0.30943 0.32574 0.34265 0.36002 0.37771 0.39565 0.41378 0.43207 0.45048 0.46899 0.48757 0.50623 0.52494 0.54370 0.56250 0.58134 0.60020 0.61909 0.63801 0.65694 0.67590 0.69487 0.71385 0.73284 0.75186 0.77088 0.78991 0.80894 0.82799 0.84704 0.86609 0.88516 0.90423 0.92330 0.94238 0.96147 0.98057 0.99968 1.01878 1.03789 1.05699 1.07610 1.09521 1.11432 1.13343
0.25302 0.25518 0.26136 0.27087 0.28290 0.29675 0.31188 0.32792 0.34462 0.36180 0.37933 0.39714 0.41516 0.43335 0.45167 0.47010 0.48863 0.50722 0.52588 0.54459 0.56335 0.58214 0.60097 0.61983 0.63871 0.65762 0.67655 0.69550 0.71446 0.73343 0.75242 0.77142 0.79044 0.80946 0.82849 0.84753 0.86657 0.88562 0.90467 0.92374 0.94281 0.96188 0.98096 1.00004 1.01914 1.03825 1.05735 1.07645 1.09556 1.11467 1.13377
0.25734 0.25939 0.26529 0.27444 0.28609 0.29959 0.31442 0.33020 0.34667 0.36366 0.38103 0.39871 0.41661 0.43470 0.45293 0.47128 0.48973 0.50827 0.52687 0.54553 0.56424 0.58299 0.60178 0.62061 0.63946 0.65834 0.67724 0.69616 0.71510 0.73405 0.75302 0.77200 0.79099 0.81000 0.82902 0.84804 0.86707 0.88611 0.90515 0.92420 0.94326 0.96232 0.98139 1.00046 1.01954 1.03862 1.05772 1.07682 1.09592 1.11502 1.13413
0.26165 0.26360 0.26926 0.27807 0.28936 0.30252 0.31704 0.33255 0.34881 0.36560 0.38281 0.40034 0.41813 0.43611 0.45425 0.47252 0.49089 0.50936 0.52791 0.54651 0.56518 0.58389 0.60264 0.62143 0.64025 0.65909 0.67797 0.69686 0.71577 0.73470 0.75365 0.77261 0.79158 0.81057 0.82957 0.84858 0.86760 0.88662 0.90565 0.92469 0.94374 0.96278 0.98184 1.00090 1.01997 1.03904 1.05812 1.07720 1.09629 1.11539 1.13449
0.26595 0.26782 0.27325 0.28174 0.29269 0.30551 0.31973 0.33498 0.35101 0.36761 0.38465 0.40204 0.41969 0.43756 0.45560 0.47378 0.49209 0.51048 0.52897 0.54752 0.56613 0.58479 0.60350 0.62225 0.64103 0.65984 0.67868 0.69755 0.71643 0.73534 0.75426 0.77320 0.79216 0.81112 0.83010 0.84908 0.86808 0.88709 0.90611 0.92514 0.94417 0.96321 0.98225 1.00130 1.02035 1.03941 1.05847 1.07754 1.09662 1.11569 1.13477
0.27025 0.27204 0.27726 0.28545 0.29607 0.30858 0.32250 0.33749 0.35329 0.36969 0.38656 0.40380 0.42132 0.43908 0.45702 0.47511 0.49333 0.51166 0.53008 0.54857 0.56713 0.58574 0.60441 0.62312 0.64186 0.66064 0.67944 0.69828 0.71714 0.73601 0.75491 0.77383 0.79276 0.81170 0.83066 0.84963 0.86861 0.88760 0.90660 0.92561 0.94463 0.96366 0.98269 1.00172 1.02076 1.03981 1.05886 1.07792 1.09698 1.11604 1.13512
0.27455 0.27628 0.28129 0.28921 0.29952 0.31171 0.32534 0.34007 0.35564 0.37184 0.38854 0.40563 0.42302 0.44066 0.45849 0.47650 0.49464 0.51289 0.53124 0.54967 0.56818 0.58674 0.60536 0.62402 0.64273 0.66147 0.68024 0.69905 0.71787 0.73672 0.75560 0.77449 0.79339 0.81232 0.83126 0.85021 0.86917 0.88814 0.90712 0.92611 0.94511 0.96413 0.98315 1.00217 1.02120 1.04024 1.05928 1.07832 1.09737 1.11642 1.13548
0.27886 0.28051 0.28534 0.29300 0.30301 0.31490 0.32825 0.34273 0.35806 0.37407 0.39059 0.40752 0.42478 0.44230 0.46003 0.47794 0.49599 0.51417 0.53245 0.55082 0.56927 0.58778 0.60635 0.62497 0.64364 0.66234 0.68108 0.69985 0.71865 0.73747 0.75631 0.77518 0.79406 0.81296 0.83188 0.85081 0.86976 0.88871 0.90767 0.92665 0.94563 0.96463 0.98363 1.00264 1.02166 1.04069 1.05972 1.07875 1.09779 1.11683 1.13588
0.28316 0.28475 0.28941 0.29682 0.30655 0.31815 0.33122 0.34545 0.36056 0.37636 0.39271 0.40948 0.42660 0.44400 0.46163 0.47944 0.49741 0.51550 0.53372 0.55202 0.57041 0.58887 0.60739 0.62597 0.64459 0.66325 0.68196 0.70069 0.71946 0.73825 0.75707 0.77591 0.79477 0.81364 0.83254 0.85145 0.87037 0.88931 0.90826 0.92722 0.94618 0.96516 0.98415 1.00314 1.02214 1.04116 1.06018 1.07921 1.09824 1.11727 1.13631
0.28746 0.28900 0.29350 0.30068 0.31013 0.32145 0.33426 0.34823 0.36312 0.37872 0.39489 0.41151 0.42849 0.44576 0.46328 0.48099 0.49887 0.51689 0.53503 0.55327 0.57160 0.59000 0.60847 0.62700 0.64558 0.66420 0.68287 0.70157 0.72030 0.73907 0.75786 0.77667 0.79550 0.81436 0.83323 0.85211 0.87102 0.88993 0.90886 0.92781 0.94676 0.96572 0.98469 1.00367 1.02266 1.04166 1.06066 1.07968 1.09870 1.11772 1.13675
0.29177 0.29325 0.29760 0.30456 0.31375 0.32481 0.33735 0.35108 0.36574 0.38115 0.39714 0.41360 0.43043 0.44758 0.46498 0.48260 0.50038 0.51832 0.53639 0.55456 0.57283 0.59117 0.60959 0.62807 0.64661 0.66519 0.68382 0.70248 0.72118 0.73992 0.75867 0.77746 0.79627 0.81510 0.83394 0.85281 0.87169 0.89059 0.90950 0.92842 0.94736 0.96631 0.98527 1.00423 1.02320 1.04218 1.06117 1.08017 1.09918 1.11819 1.13721
0.29607 0.29750 0.30171 0.30846 0.31742 0.32821 0.34050 0.35398 0.36843 0.38363 0.39944 0.41574 0.43244 0.44946 0.46675 0.48426 0.50195 0.51981 0.53779 0.55590 0.57410 0.59239 0.61076 0.62919 0.64768 0.66622 0.68480 0.70343 0.72210 0.74080 0.75953 0.77828 0.79707 0.81587 0.83469 0.85354 0.87240 0.89128 0.91017 0.92907 0.94799 0.96692 0.98586 1.00481 1.02377 1.04274 1.06171 1.08070 1.09969 1.11869 1.13769
0.30037 0.30176 0.30584 0.31239 0.32111 0.33165 0.34369 0.35695 0.37117 0.38618 0.40181 0.41795 0.43450 0.45139 0.46856 0.48597 0.50357 0.52134 0.53925 0.55728 0.57542 0.59365 0.61196 0.63034 0.64878 0.66728 0.68583 0.70442 0.72305 0.74171 0.76041 0.77914 0.79789 0.81667 0.83547 0.85429 0.87313 0.89199 0.91086 0.92974 0.94864 0.96755 0.98648 1.00541 1.02436 1.04332 1.06228 1.08125 1.10022 1.11921 1.13820
0.30467 0.30602 0.30997 0.31634 0.32484 0.33514 0.34694 0.35996 0.37397 0.38878 0.40423 0.42021 0.43661 0.45337 0.47043 0.48773 0.50523 0.52292 0.54075 0.55871 0.57678 0.59495 0.61320 0.63153 0.64993 0.66838 0.68689 0.70544 0.72403 0.74266 0.76133 0.78003 0.79875 0.81750 0.83628 0.85507 0.87389 0.89272 0.91157 0.93044 0.94932 0.96822 0.98712 1.00604 1.02497 1.04391 1.06286 1.08182 1.10078 1.11976 1.13874
0.30898 0.31028 0.31412 0.32031 0.32859 0.33866 0.35023 0.36302 0.37682 0.39143 0.40671 0.42252 0.43878 0.45541 0.47235 0.48954 0.50695 0.52454 0.54229 0.56018 0.57818 0.59629 0.61449 0.63276 0.65111 0.66952 0.68798 0.70649 0.72505 0.74365 0.76228 0.78094 0.79964 0.81836 0.83711 0.85588 0.87468 0.89349 0.91232 0.93117 0.95003 0.96891 0.98779 1.00669 1.02561 1.04453 1.06347 1.08241 1.10137 1.12032 1.13929
0.31328 0.31454 0.31827 0.32430 0.33238 0.34222 0.35356 0.36613 0.37972 0.39414 0.40924 0.42489 0.44101 0.45750 0.47432 0.49140 0.50871 0.52621 0.54388 0.56169 0.57963 0.59767 0.61581 0.63403 0.65233 0.67069 0.68911 0.70758 0.72610 0.74466 0.76326 0.78189 0.80056 0.81926 0.83798 0.85672 0.87549 0.89428 0.91309 0.93192 0.95076 0.96962 0.98849 1.00737 1.02627 1.04518 1.06409 1.08302 1.10197 1.12091 1.13987
0.31758 0.31881 0.32244 0.32830 0.33618 0.34582 0.35693 0.36929 0.38267 0.39690 0.41182 0.42731 0.44328 0.45964 0.47634 0.49331 0.51052 0.52793 0.54552 0.56325 0.58112 0.59910 0.61717 0.63534 0.65358 0.67190 0.69027 0.70870 0.72718 0.74570 0.76427 0.78287 0.80151 0.82017 0.83887 0.85759 0.87633 0.89510 0.91389 0.93269 0.95151 0.97035 0.98920 1.00807 1.02695 1.04584 1.06475 1.08366 1.10258 1.12152 1.14046
0.32189 0.32308 0.32661 0.33232 0.34002 0.34944 0.36034 0.37249 0.38567 0.39970 0.41445 0.42978 0.44560 0.46183 0.47841 0.49527 0.51238 0.52969 0.54719 0.56485 0.58264 0.60056 0.61857 0.63668 0.65487 0.67314 0.69147 0.70985 0.72829 0.74678 0.76531 0.78388 0.80249 0.82112 0.83979 0.85848 0.87720 0.89594 0.91471 0.93349 0.95229 0.97111 0.98995 1.00879 1.02766 1.04654 1.06542 1.08432 1.10323 1.12215 1.14108
0.32619 0.32735 0.33078 0.33636 0.34387 0.35310 0.36379 0.37573 0.38871 0.40256 0.41713 0.43230 0.44798 0.46407 0.48052 0.49727 0.51428 0.53150 0.54891 0.56649 0.58421 0.60206 0.62001 0.63806 0.65620 0.67442 0.69270 0.71104 0.72944 0.74789 0.76639 0.78492 0.80349 0.82210 0.84074 0.85940 0.87810 0.89682 0.91556 0.93432 0.95310 0.97190 0.99071 1.00954 1.02839 1.04725 1.06612 1.08500 1.10389 1.12280 1.14171
0.33049 0.33162 0.33497 0.34040 0.34775 0.35678 0.36727 0.37901 0.39179 0.40546 0.41985 0.43487 0.45039 0.46635 0.48268 0.49932 0.51622 0.53335 0.55068 0.56818 0.58582 0.60360 0.62149 0.63948 0.65757 0.67573 0.69396 0.71226 0.73062 0.74903 0.76749 0.78599 0.80453 0.82310 0.84171 0.86035 0.87902 0.89771 0.91643 0.93517 0.95393 0.97270 0.99150 1.01031 1.02914 1.04798 1.06683 1.08570 1.10458 1.12347 1.14237
0.33480 0.33590 0.33916 0.34446 0.35164 0.36049 0.37078 0.38232 0.39492 0.40840 0.42263 0.43748 0.45286 0.46868 0.48489 0.50141 0.51821 0.53524 0.55248 0.56990 0.58747 0.60518 0.62300 0.64094 0.65896 0.67708 0.69526 0.71352 0.73183 0.75020 0.76862 0.78709 0.80559 0.82414 0.84272 0.86133 0.87997 0.89863 0.91733 0.93604 0.95478 0.97354 0.99231 1.01110 1.02991 1.04873 1.06757 1.08642 1.10529 1.12416 1.14305
0.33910 0.34017 0.34335 0.34853 0.35556 0.36422 0.37433 0.38567 0.39808 0.41138 0.42544 0.44013 0.45537 0.47106 0.48714 0.50355 0.52024 0.53718 0.55433 0.57166 0.58916 0.60679 0.62455 0.64243 0.66040 0.67846 0.69659 0.71480 0.73307 0.75140 0.76978 0.78821 0.80669 0.82520 0.84375 0.86233 0.88094 0.89958 0.91825 0.93694 0.95566 0.97439 0.99314 1.01192 1.03071 1.04951 1.06833 1.08717 1.10601 1.12488 1.14375
0.34340 0.34445 0.34755 0.35262 0.35948 0.36798 0.37790 0.38906 0.40128 0.41441 0.42830 0.44283 0.45792 0.47348 0.48943 0.50572 0.52231 0.53915 0.55621 0.57346 0.59088 0.60845 0.62614 0.64395 0.66187 0.67987 0.69796 0.71612 0.73435 0.75263 0.77098 0.78937 0.80781 0.82629 0.84480 0.86336 0.88194 0.90056 0.91920 0.93786 0.95656 0.97527 0.99400 1.01275 1.03152 1.05031 1.06912 1.08793 1.10676 1.12561 1.14446
0.34770 0.34873 0.35176 0.35671 0.36343 0.37176 0.38150 0.39248 0.40452 0.41747 0.43119 0.44557 0.46052 0.47594 0.49177 0.50794 0.52443 0.54117 0.55814 0.57530 0.59264 0.61014 0.62777 0.64551 0.66337 0.68132 0.69936 0.71747 0.73565 0.75390 0.77220 0.79055 0.80896 0.82740 0.84589 0.86441 0.88297 0.90155 0.92017 0.93881 0.95748 0.97617 0.99488 1.01361 1.03236 1.05113 1.06992 1.08872 1.10753 1.12636 1.14520
0.35201 0.35300 0.35597 0.36081 0.36739 0.37556 0.38513 0.39593 0.40779 0.42057 0.43413 0.44836 0.46315 0.47844 0.49414 0.51021 0.52658 0.54322 0.56010 0.57718 0.59444 0.61186 0.62942 0.64711 0.66490 0.68280 0.70078 0.71885 0.73699 0.75519 0.77345 0.79177 0.81013 0.82855 0.84700 0.86549 0.88402 0.90258 0.92117 0.93978 0.95843 0.97709 0.99578 1.01450 1.03323 1.05197 1.07074 1.08952 1.10832 1.12713 1.14596
0.35631 0.35728 0.36018 0.36492 0.37137 0.37938 0.38878 0.39940 0.41109 0.42370 0.43710 0.45118 0.46583 0.48098 0.49656 0.51251 0.52877 0.54532 0.56210 0.57910 0.59628 0.61363 0.63112 0.64874 0.66647 0.68431 0.70224 0.72026 0.73835 0.75651 0.77473 0.79301 0.81134 0.82971 0.84814 0.86660 0.88509 0.90362 0.92219 0.94078 0.95940 0.97804 0.99671 1.01540 1.03411 1.05284 1.07158 1.09035 1.10913 1.12792 1.14673
0.36061 0.36157 0.36440 0.36903 0.37535 0.38321 0.39245 0.40291 0.41443 0.42687 0.44011 0.45403 0.46855 0.48356 0.49902 0.51485 0.53101 0.54745 0.56414 0.58105 0.59815 0.61542 0.63285 0.65040 0.66808 0.68586 0.70374 0.72170 0.73975 0.75786 0.77604 0.79428 0.81257 0.83091 0.84930 0.86773 0.88619 0.90470 0.92323 0.94180 0.96039 0.97901 0.99766 1.01632 1.03501 1.05372 1.07245 1.09120 1.10996 1.12874 1.14753
0.36492 0.36585 0.36862 0.37316 0.37935 0.38707 0.39615 0.40644 0.41780 0.43008 0.44316 0.45693 0.47130 0.48618 0.50151 0.51723 0.53328 0.54962 0.56622 0.58304 0.60006 0.61726 0.63461 0.65210 0.66971 0.68744 0.70526 0.72318 0.74117 0.75924 0.77738 0.79558 0.81383 0.83213 0.85049 0.86888 0.88732 0.90579 0.92430 0.94284 0.96141 0.98000 0.99863 1.01727 1.03594 1.05463 1.07334 1.09206 1.11081 1.12957 1.14834
0.36922 0.37013 0.37285 0.37729 0.38337 0.39094 0.39987 0.41000 0.42119 0.43331 0.44624 0.45986 0.47409 0.48884 0.50404 0.51964 0.53558 0.55183 0.56833 0.58507 0.60201 0.61913 0.63641 0.65383 0.67138 0.68905 0.70682 0.72468 0.74263 0.76065 0.77874 0.79690 0.81512 0.83338 0.85170 0.87007 0.88847 0.90691 0.92539 0.94390 0.96245 0.98102 0.99962 1.01824 1.03689 1.05555 1.07424 1.09295 1.11168 1.13042 1.14918
0.37352 0.37441 0.37707 0.38143 0.38739 0.39483 0.40360 0.41358 0.42461 0.43658 0.44935 0.46282 0.47691 0.49153 0.50661 0.52210 0.53793 0.55407 0.57048 0.58713 0.60398 0.62103 0.63824 0.65559 0.67308 0.69069 0.70840 0.72621 0.74411 0.76209 0.78014 0.79825 0.81643 0.83466 0.85294 0.87127 0.88965 0.90806 0.92651 0.94499 0.96351 0.98206 1.00063 1.01923 1.03785 1.05650 1.07517 1.09386 1.11256 1.13129 1.15003
0.37782 0.37870 0.38130 0.38558 0.39142 0.39873 0.40736 0.41718 0.42806 0.43987 0.45249 0.46582 0.47977 0.49426 0.50922 0.52459 0.54031 0.55635 0.57266 0.58922 0.60600 0.62296 0.64010 0.65739 0.67481 0.69236 0.71002 0.72777 0.74562 0.76355 0.78156 0.79963 0.81777 0.83596 0.85421 0.87251 0.89085 0.90923 0.92765 0.94611 0.96459 0.98312 1.00166 1.02024 1.03884 1.05747 1.07612 1.09478 1.11347 1.13218 1.15090
0.38213 0.38298 0.38554 0.38973 0.39547 0.40265 0.41114 0.42081 0.43154 0.44319 0.45567 0.46885 0.48267 0.49702 0.51186 0.52711 0.54273 0.55866 0.57488 0.59135 0.60804 0.62493 0.64199 0.65921 0.67657 0.69406 0.71166 0.72937 0.74716 0.76505 0.78301 0.80104 0.81914 0.83729 0.85550 0.87376 0.89207 0.91042 0.92881 0.94724 0.96570 0.98420 1.00272 1.02127 1.03985 1.05846 1.07708 1.09573 1.11440 1.13308 1.15179
0.38643 0.38727 0.38977 0.39389 0.39952 0.40658 0.41493 0.42446 0.43504 0.44654 0.45887 0.47192 0.48559 0.49982 0.51453 0.52967 0.54518 0.56101 0.57714 0.59352 0.61012 0.62693 0.64392 0.66107 0.67837 0.69579 0.71334 0.73099 0.74873 0.76657 0.78448 0.80247 0.82053 0.83864 0.85682 0.87504 0.89332 0.91164 0.93000 0.94840 0.96683 0.98530 1.00380 1.02233 1.04088 1.05946 1.07807 1.09670 1.11534 1.13401 1.15270
0.39073 0.39156 0.39401 0.39805 0.40358 0.41052 0.41874 0.42813 0.43856 0.44992 0.46210 0.47501 0.48855 0.50265 0.51724 0.53226 0.54766 0.56339 0.57942 0.59571 0.61224 0.62897 0.64588 0.66296 0.68019 0.69756 0.71504 0.73264 0.75033 0.76812 0.78599 0.80393 0.82195 0.84002 0.85816 0.87635 0.89459 0.91288 0.93121 0.94958 0.96798 0.98643 1.00490 1.02340 1.04193 1.06049 1.07908 1.09768 1.11631 1.13496 1.15363
0.39504 0.39584 0.39825 0.40222 0.40766 0.41448 0.42257 0.43182 0.44211 0.45332 0.46536 0.47813 0.49154 0.50551 0.51998 0.53489 0.55018 0.56581 0.58174 0.59794 0.61438 0.63103 0.64787 0.66488 0.68205 0.69935 0.71678 0.73432 0.75196 0.76970 0.78752 0.80542 0.82339 0.84143 0.85953 0.87768 0.89589 0.91414 0.93244 0.95078 0.96916 0.98757 1.00602 1.02450 1.04301 1.06154 1.08010 1.09869 1.11729 1.13592 1.15457
0.39934 0.40013 0.40250 0.40639 0.41173 0.41844 0.42641 0.43552 0.44567 0.45675 0.46865 0.48128 0.49456 0.50840 0.52275 0.53754 0.55273 0.56826 0.58409 0.60020 0.61656 0.63313 0.64989 0.66683 0.68393 0.70117 0.71854 0.73602 0.75361 0.77130 0.78908 0.80693 0.82486 0.84286 0.86092 0.87904 0.89721 0.91543 0.93370 0.95201 0.97035 0.98874 1.00716 1.02561 1.04410 1.06261 1.08115 1.09971 1.11830 1.13691 1.15554
0.40364 0.40442 0.40674 0.41057 0.41582 0.42242 0.43026 0.43925 0.44926 0.46020 0.47196 0.48446 0.49760 0.51133 0.52555 0.54023 0.55531 0.57074 0.58648 0.60250 0.61877 0.63526 0.65195 0.66882 0.68585 0.70302 0.72033 0.73776 0.75530 0.77293 0.79066 0.80847 0.82636 0.84431 0.86233 0.88042 0.89855 0.91674 0.93497 0.95325 0.97157 0.98993 1.00832 1.02675 1.04521 1.06370 1.08221 1.10076 1.11932 1.13791 1.15652
0.40794 0.40871 0.41099 0.41475 0.41991 0.42641 0.43413 0.44299 0.45287 0.46367 0.47530 0.48766 0.50068 0.51428 0.52839 0.54295 0.55792 0.57325 0.58889 0.60482 0.62100 0.63742 0.65403 0.67083 0.68779 0.70490 0.72215 0.73952 0.75701 0.77459 0.79227 0.81003 0.82788 0.84579 0.86377 0.88182 0.89992 0.91807 0.93627 0.95452 0.97281 0.99114 1.00951 1.02791 1.04634 1.06481 1.08330 1.10182 1.12036 1.13893 1.15752
0.41225 0.41300 0.41524 0.41893 0.42402 0.43041 0.43802 0.44675 0.45650 0.46717 0.47866 0.49089 0.50378 0.51726 0.53125 0.54570 0.56056 0.57579 0.59134 0.60718 0.62327 0.63960 0.65614 0.67287 0.68976 0.70681 0.72400 0.74131 0.75874 0.77628 0.79391 0.81162 0.82942 0.84730 0.86524 0.88324 0.90131 0.91943 0.93760 0.95581 0.97407 0.99237 1.01071 1.02909 1.04750 1.06594 1.08441 1.10290 1.12142 1.13997 1.15854
0.42012 0.19119 0.21036 0.22953 0.24870 0.26787 0.28704 0.30622 0.32539 0.34456 0.36373 0.38290 0.40207 0.42124 0.44041 0.45959 0.47876 0.49793 0.51710 0.53627 0.55544 0.57461 0.59379 0.61296 0.63213 0.65130 0.67047 0.68964 0.70881 0.72798 0.74716 0.76633 0.78550 0.80467 0.82384 0.84301 0.86218 0.88135 0.90053 0.91970 0.93887 0.95804 0.97721 0.99638 1.01555 1.03472 1.05390 1.07307 1.09224 1.11141 1.13058
0.42442 0.42516 0.42734 0.43094 0.43589 0.44214 0.44958 0.45812 0.46768 0.47816 0.48947 0.50151 0.51422 0.52752 0.54135 0.55564 0.57036 0.58544 0.60086 0.61658 0.63256 0.64879 0.66522 0.68185 0.69866 0.71563 0.73274 0.74998 0.76734 0.78480 0.80237 0.82003 0.83778 0.85560 0.87349 0.89145 0.90947 0.92755 0.94568 0.96385 0.98208 1.00034 1.01865 1.03699 1.05537 1.07378 1.09222 1.11008 1.12712 1.14416 1.16120
0.42873 0.42945 0.43159 0.43513 0.44001 0.44616 0.45349 0.46192 0.47136 0.48171 0.49289 0.50480 0.51739 0.53057 0.54428 0.55846 0.57307 0.58806 0.60338 0.61900 0.63490 0.65104 0.66740 0.68396 0.70070 0.71760 0.73465 0.75183 0.76913 0.78655 0.80407 0.82168 0.83938 0.85716 0.87501 0.89293 0.91091 0.92895 0.94705 0.96519 0.98339 1.00162 1.01990 1.03822 1.05657 1.07404 1.09108 1.10812 1.12516 1.14220 1.15924
0.43303 0.43374 0.43585 0.43933 0.44413 0.45019 0.45742 0.46573 0.47505 0.48527 0.49632 0.50812 0.52058 0.53364 0.54724 0.56131 0.57581 0.59070 0.60592 0.62146 0.63727 0.65333 0.66961 0.68610 0.70276 0.71960 0.73658 0.75371 0.77095 0.78832 0.80579 0.82335 0.84100 0.85874 0.87655 0.89443 0.91238 0.93038 0.94844 0.96655 0.98472 1.00292 1.02096 1.03800 1.05504 1.07208 1.08912 1.10616 1.12320 1.14024 1.15728
0.43733 0.43803 0.44011 0.44353 0.44826 0.45423 0.46135 0.46956 0.47875 0.48886 0.49978 0.51146 0.52380 0.53674 0.55022 0.56418 0.57858 0.59336 0.60850 0.62394 0.63966 0.65564 0.67185 0.68826 0.70486 0.72163 0.73855 0.75561 0.77280 0.79011 0.80753 0.82505 0.84265 0.86035 0.87811 0.89596 0.91386 0.93183 0.94986 0.96789 0.98493 1.00197 1.01901 1.03605 1.05309 1.07013 1.08716 1.10420 1.12124 1.13828 1.15532
0.44164 0.44232 0.44437 0.44774 0.45239 0.45827 0.46530 0.47339 0.48247 0.49246 0.50327 0.51482 0.52704 0.53986 0.55323 0.56708 0.58138 0.59606 0.61110 0.62645 0.64209 0.65798 0.67411 0.69045 0.70698 0.72368 0.74054 0.75754 0.77468 0.79193 0.80930 0.82677 0.84433 0.86198 0.87970 0.89750 0.91481 0.93185 0.94889 0.96593 0.98297 1.00001 1.01705 1.03409 1.05113 1.06817 1.08521 1.10225 1.11929 1.13632 1.15336
0.44594 0.44661 0.44863 0.45195 0.45653 0.46233 0.46925 0.47724 0.48621 0.49608 0.50677 0.51820 0.53030 0.54301 0.55627 0.57001 0.58420 0.59878 0.61372 0.62899 0.64454 0.66035 0.67640 0.69266 0.70912 0.72576 0.74256 0.75950 0.77654 0.79358 0.81062 0.82766 0.84469 0.86173 0.87877 0.89581 0.91285 0.92989 0.94693 0.96397 0.98101 0.99805 1.01509 1.03213 1.04917 1.06621 1.08325 1.10029 1.11733 1.13437 1.15141
0.44977 0.45043 0.45241 0.45567 0.46018 0.46588 0.47270 0.48057 0.48941 0.49914 0.50969 0.52098 0.53294 0.54551 0.55862 0.57223 0.58627 0.60072 0.61552 0.63065 0.64607 0.66175 0.67766 0.69379 0.71010 0.72659 0.74322 0.75998 0.77684 0.79378 0.81076 0.82777 0.84479 0.86181 0.87884 0.89587 0.91290 0.92994 0.94697 0.96401 0.98105 0.99809 1.01513 1.03217 1.04921 1.06625 1.08329 1.10033 1.11737 1.13440 1.15144
0.45360 0.45425 0.45620 0.45941 0.46384 0.46945 0.47617 0.48392 0.49263 0.50223 0.51264 0.52379 0.53561 0.54804 0.56102 0.57448 0.58840 0.60271 0.61738 0.63238 0.64767 0.66322 0.67900 0.69500 0.71119 0.72754 0.74405 0.76068 0.77742 0.79425 0.81113 0.82808 0.84504 0.86202 0.87902 0.89603 0.91305 0.93007 0.94710 0.96412 0.98115 0.99817 1.01521 1.03224 1.04927 1.06630 1.08334 1.10037 1.11741 1.13445 1.15149
0.45743 0.45807 0.45998 0.46314 0.46751 0.47303 0.47964 0.48728 0.49587 0.50534 0.51562 0.52664 0.53832 0.55061 0.56345 0.57678 0.59056 0.60475 0.61929 0.63416 0.64932 0.66475 0.68042 0.69630 0.71237 0.72860 0.74499 0.76151 0.77814 0.79487 0.81167 0.82853 0.84543 0.86237 0.87933 0.89630 0.91328 0.93028 0.94729 0.96430 0.98132 0.99834 1.01536 1.03238 1.04941 1.06643 1.08346 1.10048 1.11751 1.13454 1.15158
0.46127 0.46189 0.46377 0.46688 0.47117 0.47661 0.48312 0.49065 0.49913 0.50847 0.51862 0.52950 0.54106 0.55321 0.56592 0.57912 0.59277 0.60683 0.62125 0.63599 0.65104 0.66635 0.68190 0.69766 0.71362 0.72975 0.74603 0.76244 0.77898 0.79561 0.81232 0.82910 0.84594 0.86281 0.87972 0.89667 0.91362 0.93059 0.94756 0.96455 0.98154 0.99855 1.01555 1.03256 1.04958 1.06660 1.08362 1.10064 1.11767 1.13469 1.15172
0.46510 0.46572 0.46756 0.47062 0.47485 0.48020 0.48662 0.49404 0.50240 0.51162 0.52165 0.53240 0.54382 0.55585 0.56842 0.58150 0.59502 0.60895 0.62325 0.63788 0.65280 0.66800 0.68343 0.69909 0.71494 0.73097 0.74715 0.76346 0.77990 0.79644 0.81307 0.82977 0.84654 0.86335 0.88021 0.89710 0.91402 0.93096 0.94792 0.96488 0.98184 0.99882 1.01581 1.03280 1.04980 1.06681 1.08382 1.10083 1.11785 1.13487 1.15189
0.46893 0.46954 0.47136 0.47436 0.47853 0.48380 0.49012 0.49744 0.50569 0.51479 0.52469 0.53532 0.54661 0.55851 0.57096 0.58391 0.59731 0.61111 0.62529 0.63980 0.65462 0.66970 0.68503 0.70058 0.71632 0.73225 0.74833 0.76455 0.78090 0.79736 0.81390 0.83053 0.84723 0.86398 0.88078 0.89763 0.91450 0.93139 0.94832 0.96526 0.98221 0.99917 1.01613 1.03310 1.05008 1.06707 1.08406 1.10106 1.11807 1.13507 1.15208
0.47276 0.47336 0.47515 0.47811 0.48221 0.48740 0.49364 0.50085 0.50899 0.51798 0.52776 0.53826 0.54943 0.56120 0.57353 0.58635 0.59963 0.61332 0.62738 0.64178 0.65648 0.67145 0.68667 0.70212 0.71776 0.73359 0.74958 0.76571 0.78197 0.79834 0.81481 0.83137 0.84800 0.86469 0.88143 0.89822 0.91504 0.93190 0.94878 0.96568 0.98261 0.99956 1.01651 1.03346 1.05042 1.06739 1.08436 1.10134 1.11833 1.13533 1.15233
0.47659 0.47718 0.47894 0.48186 0.48590 0.49102 0.49716 0.50428 0.51231 0.52119 0.53085 0.54123 0.55227 0.56392 0.57613 0.58883 0.60199 0.61556 0.62950 0.64379 0.65838 0.67325 0.68837 0.70371 0.71926 0.73499 0.75089 0.76693 0.78310 0.79939 0.81579 0.83227 0.84883 0.86546 0.88215 0.89888 0.91566 0.93247 0.94932 0.96618 0.98307 0.99997 1.01691 1.03385 1.05080 1.06776 1.08471 1.10168 1.11865 1.13562 1.15260
0.48042 0.48100 0.48274 0.48561 0.48959 0.49463 0.50069 0.50772 0.51564 0.52441 0.53395 0.54422 0.55514 0.56667 0.57875 0.59134 0.60438 0.61783 0.63167 0.64584 0.66032 0.67509 0.69010 0.70535 0.72080 0.73644 0.75225 0.76820 0.78430 0.80051 0.81682 0.83324 0.84973 0.86630 0.88293 0.89961 0.91633 0.93310 0.94990 0.96673 0.98359 1.00047 1.01736 1.03426 1.05120 1.06815 1.08510 1.10205 1.11901 1.13597 1.15294
0.48425 0.48483 0.48654 0.48937 0.49329 0.49826 0.50424 0.51116 0.51899 0.52764 0.53708 0.54723 0.55803 0.56945 0.58141 0.59388 0.60680 0.62014 0.63387 0.64793 0.66231 0.67697 0.69188 0.70703 0.72239 0.73794 0.75366 0.76953 0.78554 0.80167 0.81792 0.83426 0.85069 0.86719 0.88376 0.90039 0.91707 0.93379 0.95055 0.96734 0.98416 1.00101 1.01787 1.03475 1.05165 1.06856 1.08550 1.10244 1.11939 1.13634 1.15330
0.48809 0.48865 0.49033 0.49312 0.49699 0.50189 0.50779 0.51462 0.52235 0.53090 0.54022 0.55026 0.56095 0.57224 0.58409 0.59644 0.60926 0.62249 0.63610 0.65006 0.66433 0.67889 0.69371 0.70876 0.72403 0.73948 0.75512 0.77091 0.78684 0.80289 0.81906 0.83534 0.85170 0.86814 0.88465 0.90123 0.91785 0.93453 0.95124 0.96800 0.98478 1.00159 1.01842 1.03528 1.05215 1.06904 1.08594 1.10285 1.11979 1.13674 1.15369
0.49192 0.49247 0.49413 0.49688 0.50069 0.50553 0.51134 0.51809 0.52572 0.53417 0.54338 0.55331 0.56389 0.57507 0.58680 0.59904 0.61174 0.62486 0.63837 0.65222 0.66639 0.68085 0.69557 0.71053 0.72570 0.74107 0.75662 0.77233 0.78818 0.80416 0.82026 0.83646 0.85276 0.86914 0.88559 0.90211 0.91869 0.93532 0.95199 0.96870 0.98544 1.00222 1.01902 1.03585 1.05270 1.06956 1.08644 1.10333 1.12023 1.13715 1.15409
0.49575 0.49630 0.49793 0.50064 0.50440 0.50917 0.51491 0.52157 0.52910 0.53745 0.54656 0.55637 0.56684 0.57791 0.58953 0.60166 0.61425 0.62727 0.64066 0.65441 0.66848 0.68284 0.69747 0.71234 0.72742 0.74270 0.75817 0.77379 0.78957 0.80548 0.82150 0.83764 0.85387 0.87019 0.88658 0.90305 0.91958 0.93615 0.95278 0.96945 0.98616 1.00290 1.01967 1.03646 1.05327 1.07011 1.08697 1.10384 1.12072 1.13761 1.15452
0.49958 0.50012 0.50173 0.50440 0.50811 0.51281 0.51848 0.52505 0.53249 0.54074 0.54975 0.55946 0.56982 0.58078 0.59229 0.60431 0.61679 0.62970 0.64299 0.65664 0.67061 0.68487 0.69941 0.71418 0.72918 0.74437 0.75975 0.77530 0.79100 0.80683 0.82279 0.83886 0.85503 0.87128 0.88762 0.90403 0.92051 0.93704 0.95362 0.97025 0.98691 1.00362 1.02035 1.03711 1.05390 1.07071 1.08753 1.10439 1.12125 1.13812 1.15501
0.50341 0.50394 0.50553 0.50817 0.51182 0.51647 0.52206 0.52855 0.53590 0.54405 0.55296 0.56256 0.57282 0.58367 0.59507 0.60699 0.61936 0.63216 0.64535 0.65890 0.67277 0.68694 0.70138 0.71606 0.73097 0.74608 0.76138 0.77685 0.79247 0.80823 0.82412 0.84012 0.85622 0.87242 0.88870 0.90506 0.92148 0.93796 0.95450 0.97108 0.98771 1.00437 1.02108 1.03780 1.05456 1.07134 1.08814 1.10496 1.12180 1.13866 1.15553
0.50724 0.50777 0.50934 0.51193 0.51554 0.52012 0.52564 0.53206 0.53932 0.54738 0.55618 0.56568 0.57583 0.58658 0.59788 0.60968 0.62195 0.63465 0.64774 0.66119 0.67496 0.68904 0.70338 0.71798 0.73280 0.74783 0.76305 0.77844 0.79398 0.80967 0.82549 0.84142 0.85747 0.87360 0.88982 0.90613 0.92250 0.93893 0.95542 0.97196 0.98855 1.00518 1.02184 1.03853 1.05526 1.07201 1.08879 1.10558 1.12239 1.13922 1.15607
0.51107 0.51159 0.51314 0.51570 0.51926 0.52378 0.52923 0.53557 0.54274 0.55071 0.55942 0.56882 0.57887 0.58951 0.60070 0.61241 0.62457 0.63717 0.65016 0.66351 0.67719 0.69116 0.70542 0.71993 0.73466 0.74961 0.76475 0.78006 0.79553 0.81115 0.82690 0.84277 0.85875 0.87482 0.89099 0.90723 0.92355 0.93994 0.95638 0.97288 0.98942 1.00601 1.02264 1.03930 1.05599 1.07271 1.08946 1.10623 1.12302 1.13983 1.15665
0.51490 0.51542 0.51694 0.51947 0.52298 0.52745 0.53283 0.53909 0.54618 0.55406 0.56267 0.57197 0.58192 0.59246 0.60355 0.61515 0.62722 0.63971 0.65260 0.66585 0.67944 0.69332 0.70749 0.72191 0.73656 0.75142 0.76648 0.78172 0.79712 0.81266 0.82835 0.84415 0.86006 0.87608 0.89219 0.90838 0.92465 0.94098 0.95738 0.97383 0.99034 1.00689 1.02348 1.04010 1.05676 1.07345 1.09017 1.10691 1.12368 1.14046 1.15726
0.51874 0.51924 0.52075 0.52324 0.52671 0.53112 0.53643 0.54262 0.54963 0.55741 0.56593 0.57514 0.58499 0.59543 0.60642 0.61792 0.62988 0.64228 0.65507 0.66823 0.68172 0.69551 0.70959 0.72392 0.73849 0.75327 0.76825 0.78341 0.79874 0.81422 0.82983 0.84557 0.86142 0.87738 0.89343 0.90957 0.92578 0.94207 0.95842 0.97483 0.99129 1.00780 1.02435 1.04094 1.05757 1.07423 1.09091 1.10763 1.12436 1.14112 1.15790
0.52257 0.52306 0.52455 0.52702 0.53044 0.53479 0.54004 0.54615 0.55308 0.56078 0.56921 0.57832 0.58807 0.59842 0.60931 0.62070 0.63257 0.64487 0.65757 0.67063 0.68402 0.69773 0.71172 0.72597 0.74045 0.75515 0.77006 0.78514 0.80039 0.81580 0.83135 0.84702 0.86281 0.87871 0.89470 0.91079 0.92695 0.94319 0.95949 0.97585 0.99227 1.00874 1.02526 1.04181 1.05840 1.07503 1.09169 1.10837 1.12509 1.14182 1.15857
0.52640 0.52689 0.52836 0.53079 0.53417 0.53847 0.54366 0.54970 0.55654 0.56416 0.57250 0.58152 0.59118 0.60142 0.61221 0.62351 0.63528 0.64748 0.66009 0.67305 0.68636 0.69998 0.71388 0.72804 0.74244 0.75707 0.77189 0.78690 0.80208 0.81742 0.83290 0.84851 0.86424 0.88007 0.89601 0.91204 0.92815 0.94434 0.96060 0.97692 0.99329 1.00972 1.02620 1.04272 1.05928 1.07587 1.09250 1.10915 1.12583 1.14254 1.15927
0.53023 0.53072 0.53216 0.53457 0.53790 0.54215 0.54728 0.55324 0.56002 0.56755 0.57580 0.58473 0.59429 0.60444 0.61514 0.62634 0.63801 0.65012 0.66263 0.67550 0.68872 0.70225 0.71606 0.73014 0.74446 0.75901 0.77376 0.78869 0.80380 0.81907 0.83448 0.85003 0.86570 0.88147 0.89736 0.91333 0.92939 0.94553 0.96174 0.97801 0.99435 1.01073 1.02717 1.04365 1.06018 1.07674 1.09333 1.10996 1.12661 1.14330 1.16000
0.53406 0.53454 0.53597 0.53834 0.54164 0.54584 0.55090 0.55680 0.56350 0.57095 0.57912 0.58796 0.59742 0.60748 0.61808 0.62919 0.64077 0.65278 0.66520 0.67798 0.69111 0.70455 0.71828 0.73227 0.74651 0.76098 0.77565 0.79052 0.80555 0.82075 0.83610 0.85158 0.86719 0.88291 0.89873 0.91465 0.93066 0.94675 0.96291 0.97914 0.99543 1.01178 1.02818 1.04462 1.06111 1.07764 1.09420 1.11080 1.12743 1.14408 1.16076
0.53789 0.53837 0.53978 0.54212 0.54538 0.54953 0.55453 0.56036 0.56699 0.57436 0.58244 0.59119 0.60057 0.61053 0.62104 0.63206 0.64354 0.65546 0.66778 0.68048 0.69352 0.70687 0.72052 0.73443 0.74859 0.76298 0.77758 0.79237 0.80733 0.82247 0.83775 0.85316 0.86871 0.88437 0.90014 0.91601 0.93196 0.94800 0.96412 0.98030 0.99655 1.01285 1.02921 1.04562 1.06207 1.07857 1.09510 1.11167 1.12826 1.14489 1.16154
0.54172 0.54219 0.54359 0.54590 0.54912 0.55322 0.55817 0.56393 0.57048 0.57778 0.58578 0.59444 0.60373 0.61360 0.62402 0.63494 0.64633 0.65816 0.67040 0.68300 0.69595 0.70922 0.72278 0.73661 0.75069 0.76501 0.77953 0.79425 0.80914 0.82421 0.83942 0.85478 0.87026 0.88587 0.90158 0.91739 0.93330 0.94929 0.96535 0.98149 0.99770 1.01396 1.03028 1.04665 1.06307 1.07953 1.09603 1.11256 1.12913 1.14573 1.16235
0.54556 0.54602 0.54740 0.54968 0.55286 0.55691 0.56180 0.56751 0.57399 0.58121 0.58912 0.59770 0.60691 0.61669 0.62701 0.63785 0.64915 0.66089 0.67303 0.68555 0.69841 0.71159 0.72507 0.73882 0.75283 0.76706 0.78151 0.79616 0.81098 0.82598 0.84113 0.85642 0.87185 0.88739 0.90305 0.91881 0.93466 0.95060 0.96662 0.98271 0.99887 1.01510 1.03138 1.04771 1.06409 1.08051 1.09698 1.11348 1.13002 1.14659 1.16319
0.54939 0.54984 0.55121 0.55347 0.55661 0.56061 0.56545 0.57109 0.57750 0.58464 0.59248 0.60098 0.61009 0.61979 0.63002 0.64077 0.65198 0.66363 0.67568 0.68811 0.70089 0.71399 0.72739 0.74106 0.75498 0.76914 0.78352 0.79809 0.81285 0.82778 0.84286 0.85810 0.87346 0.88895 0.90455 0.92025 0.93605 0.95194 0.96792 0.98396 1.00008 1.01626 1.03250 1.04880 1.06514 1.08153 1.09796 1.11444 1.13094 1.14748 1.16406
0.55322 0.55367 0.55502 0.55725 0.56036 0.56431 0.56910 0.57467 0.58102 0.58809 0.59585 0.60426 0.61329 0.62290 0.63305 0.64370 0.65483 0.66639 0.67836 0.69070 0.70339 0.71641 0.72972 0.74332 0.75716 0.77125 0.78555 0.80005 0.81474 0.82961 0.84463 0.85980 0.87510 0.89053 0.90607 0.92173 0.93748 0.95332 0.96924 0.98524 1.00132 1.01746 1.03366 1.04991 1.06622 1.08257 1.09897 1.11541 1.13189 1.14840 1.16495
0.55705 0.55750 0.55883 0.56103 0.56410 0.56802 0.57275 0.57827 0.58454 0.59154 0.59922 0.60756 0.61651 0.62603 0.63609 0.64666 0.65769 0.66917 0.68105 0.69331 0.70592 0.71885 0.73209 0.74560 0.75937 0.77338 0.78761 0.80204 0.81666 0.83146 0.84642 0.86152 0.87677 0.89214 0.90763 0.92323 0.93893 0.95472 0.97059 0.98655 1.00258 1.01868 1.03484 1.05105 1.06732 1.08364 1.10001 1.11642 1.13286 1.14935 1.16586
0.56088 0.56132 0.56264 0.56482 0.56786 0.57172 0.57640 0.58186 0.58807 0.59500 0.60261 0.61087 0.61973 0.62917 0.63915 0.64963 0.66058 0.67197 0.68376 0.69594 0.70846 0.72132 0.73447 0.74790 0.76160 0.77553 0.78969 0.80405 0.81861 0.83334 0.84823 0.86328 0.87846 0.89378 0.90921 0.92476 0.94040 0.95614 0.97197 0.98788 1.00387 1.01993 1.03604 1.05222 1.06846 1.08474 1.10107 1.11745 1.13386 1.15031 1.16680
Loading…
Cancel
Save