Compare commits
13 Commits
develop
...
feature-wa
| Author | SHA1 | Date |
|---|---|---|
|
|
5acdd7f8b7 | |
|
|
64ea68b47c | |
|
|
d0fe5f6982 | |
|
|
5e42854213 | |
|
|
500eeaf339 | |
|
|
cf63e4a0ac | |
|
|
eb5871b588 | |
|
|
056093d1c4 | |
|
|
5f68e61ff8 | |
|
|
04546ff646 | |
|
|
3094ba679e | |
|
|
bc06dedfc0 | |
|
|
436677f2f8 |
|
|
@ -0,0 +1,77 @@
|
||||||
|
// Package config define config struct of wave record project
|
||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"wave_record/constant"
|
||||||
|
"wave_record/log"
|
||||||
|
|
||||||
|
"github.com/spf13/viper"
|
||||||
|
)
|
||||||
|
|
||||||
|
// WaveRecordConfig define config of wave record struct
|
||||||
|
type WaveRecordConfig struct {
|
||||||
|
MonitorDir string
|
||||||
|
BackupDir string
|
||||||
|
ParseConcurrentQuantity int // parse comtrade file concurrent quantity
|
||||||
|
MongoDBURI string
|
||||||
|
MongoDBDataBase string
|
||||||
|
InfluxDBURL string
|
||||||
|
InfluxDBToken string
|
||||||
|
InfluxDBOrg string
|
||||||
|
InfluxDBBucket string
|
||||||
|
LCfg log.CutLogConfig // log config
|
||||||
|
}
|
||||||
|
|
||||||
|
// ComtradeDataStorageConfig define config struct of storage comtrade data
|
||||||
|
type ComtradeDataStorageConfig struct {
|
||||||
|
Ctx context.Context
|
||||||
|
DelChan chan string
|
||||||
|
DBName string
|
||||||
|
ConfigFilePath string
|
||||||
|
DataFilePath string
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReadAndInitConfig return wave record project config struct
|
||||||
|
func ReadAndInitConfig(configDir, configName, configType string) (waveRecordConfig WaveRecordConfig) {
|
||||||
|
config := viper.New()
|
||||||
|
config.AddConfigPath(configDir)
|
||||||
|
config.SetConfigName(configName)
|
||||||
|
config.SetConfigType(configType)
|
||||||
|
if err := config.ReadInConfig(); err != nil {
|
||||||
|
if _, ok := err.(viper.ConfigFileNotFoundError); ok {
|
||||||
|
panic("can not find conifg file")
|
||||||
|
}
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
waveRecordConfig.MonitorDir = config.GetString("comtrade_monitor_dir")
|
||||||
|
waveRecordConfig.BackupDir = config.GetString("comtrade_backup_dir")
|
||||||
|
// init mongodb config from config.yaml
|
||||||
|
mongoDBHost := config.GetString("mongodb_host")
|
||||||
|
mongoDBPort := config.GetString("mongodb_port")
|
||||||
|
waveRecordConfig.MongoDBURI = strings.Join([]string{"mongodb://", mongoDBHost, ":", mongoDBPort}, "")
|
||||||
|
waveRecordConfig.MongoDBDataBase = config.GetString("mongodb_database")
|
||||||
|
// init influxdb config from config.yaml
|
||||||
|
influxDBHost := config.GetString("influxdb_host")
|
||||||
|
influxDBPort := config.GetString("influxdb_port")
|
||||||
|
waveRecordConfig.InfluxDBURL = strings.Join([]string{"http://", influxDBHost, ":", influxDBPort}, "")
|
||||||
|
waveRecordConfig.InfluxDBToken = config.GetString("influxdb_token")
|
||||||
|
waveRecordConfig.InfluxDBOrg = config.GetString("influxdb_org")
|
||||||
|
waveRecordConfig.InfluxDBBucket = config.GetString("influxdb_bucket")
|
||||||
|
// init zap log config from config.yaml
|
||||||
|
waveRecordConfig.LCfg.Mode = config.GetString("log_mode")
|
||||||
|
waveRecordConfig.LCfg.Level = config.GetString("log_level")
|
||||||
|
waveRecordConfig.LCfg.FileName = fmt.Sprintf(config.GetString("log_filepath"), time.Now().Format(constant.LogTimeFormate))
|
||||||
|
waveRecordConfig.LCfg.MaxSize = config.GetInt("log_maxsize")
|
||||||
|
waveRecordConfig.LCfg.MaxBackups = config.GetInt("log_maxbackups")
|
||||||
|
waveRecordConfig.LCfg.MaxAge = config.GetInt("log_maxage")
|
||||||
|
|
||||||
|
waveRecordConfig.ParseConcurrentQuantity = config.GetInt("parse_concurrent_quantity")
|
||||||
|
|
||||||
|
return waveRecordConfig
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
comtrade_monitor_dir: "/home/douxu/comtrade_file/"
|
||||||
|
comtrade_backup_dir: "/home/douxu/comtrade_file_backup/"
|
||||||
|
|
||||||
|
mongodb_host: "localhost"
|
||||||
|
mongodb_port: "27017"
|
||||||
|
mongodb_database: "wave_record"
|
||||||
|
|
||||||
|
influxdb_host: "localhost"
|
||||||
|
influxdb_port: "8086"
|
||||||
|
influxdb_token: "lCuiQ316qlly3iFeoi1EUokPJ0XxW-5lnG-3rXsKaaZSjfuxO5EaZfFdrNGM7Zlrdk1PrN_7TOsM_SCu9Onyew=="
|
||||||
|
influxdb_org: "coslight"
|
||||||
|
influxdb_bucket: "wave_record"
|
||||||
|
|
||||||
|
log_mode: "development"
|
||||||
|
log_level: "debug"
|
||||||
|
log_filepath: "/home/douxu/log/wave_record-%s.log"
|
||||||
|
log_maxsize: 1
|
||||||
|
log_maxbackups: 5
|
||||||
|
log_maxage: 30
|
||||||
|
|
||||||
|
parse_concurrent_quantity: 10
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
// Package constant define constant value
|
||||||
|
package constant
|
||||||
|
|
||||||
|
import "errors"
|
||||||
|
|
||||||
|
// ErrNotFindDatFile define error for not find comtrade data file
|
||||||
|
var ErrNotFindDatFile = errors.New("can not find dat file in map")
|
||||||
|
|
||||||
|
// ErrNotSupportFileType define error for not support file type
|
||||||
|
var ErrNotSupportFileType = errors.New("not support file type")
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
// Package constant define constant value
|
||||||
|
package constant
|
||||||
|
|
||||||
|
const (
|
||||||
|
// ConfigFileSuffix define comtrade config file suffix
|
||||||
|
ConfigFileSuffix = ".cfg"
|
||||||
|
// DataFileSuffix define comtrade data file suffix
|
||||||
|
DataFileSuffix = ".dat"
|
||||||
|
// MixFileSuffix define comtrade mix file suffix
|
||||||
|
MixFileSuffix = ".cff"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
// Package constant define constant value
|
||||||
|
package constant
|
||||||
|
|
||||||
|
const (
|
||||||
|
// DevelopmentLogMode define development operator environment for wave record project
|
||||||
|
DevelopmentLogMode = "development"
|
||||||
|
// ProductionLogMode define production operator environment for wave record project
|
||||||
|
ProductionLogMode = "production"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
// Package constant define constant value
|
||||||
|
package constant
|
||||||
|
|
||||||
|
const (
|
||||||
|
// LogTimeFormate define time format for log file name
|
||||||
|
LogTimeFormate = "2006-01-02 15:04:05"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
// Package database define database operation functions
|
||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
influxDBOnce sync.Once
|
||||||
|
_globalInfluxDBClient *influxdb2.Client
|
||||||
|
_globalInfluxDBMu sync.RWMutex
|
||||||
|
)
|
||||||
|
|
||||||
|
// InfluxDBClient returns the global InfluxDB client.It's safe for concurrent use.
|
||||||
|
func InfluxDBClient() *influxdb2.Client {
|
||||||
|
_globalInfluxDBMu.RLock()
|
||||||
|
client := _globalInfluxDBClient
|
||||||
|
_globalInfluxDBMu.RUnlock()
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetInfluxDBInstance return instance of InfluxDB client
|
||||||
|
func GetInfluxDBInstance(influxDBURL, token string) *influxdb2.Client {
|
||||||
|
mongoOnce.Do(func() {
|
||||||
|
_globalInfluxDBClient = initInfluxDBClient(influxDBURL, token)
|
||||||
|
})
|
||||||
|
return _globalInfluxDBClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// initInfluxDBClient return successfully initialized InfluxDB client
|
||||||
|
func initInfluxDBClient(influxDBURL, token string) *influxdb2.Client {
|
||||||
|
influxDBClient := influxdb2.NewClient(influxDBURL, token)
|
||||||
|
return &influxDBClient
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
// Package database define database operation functions
|
||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
||||||
|
"github.com/influxdata/influxdb-client-go/v2/api"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
// WriterPointIntoInfluxDB return the result of storing point into influxdb
|
||||||
|
func WriterPointIntoInfluxDB(ctx context.Context, writeAPI api.WriteAPIBlocking, measurement string, tags map[string]string, fields map[string]interface{}) error {
|
||||||
|
// TODO 增加api创建示例
|
||||||
|
// aPI := client.WriteAPIBlocking("my-org", "my-bucket")
|
||||||
|
point := influxdb2.NewPoint(measurement, tags, fields, time.Now())
|
||||||
|
return writeAPI.WritePoint(ctx, point)
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryPointFromInfluxDB return the result of query from influxdb by special parameters
|
||||||
|
// Get query client
|
||||||
|
// queryAPI := client.QueryAPI(org)
|
||||||
|
func QueryPointFromInfluxDB(ctx context.Context, queryAPI api.QueryAPI, logger *zap.Logger) ([]interface{}, error) {
|
||||||
|
dataList := make([]interface{}, 0)
|
||||||
|
// get query result
|
||||||
|
// TODO 增加初始化示例
|
||||||
|
query := InitQueryByPara()
|
||||||
|
results, err := queryAPI.Query(ctx, query)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("query data by parameters failed", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for results.Next() {
|
||||||
|
if results.TableChanged() {
|
||||||
|
logger.Info("find new result table", zap.String("table_metadata", results.TableMetadata().String()))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
dataList = append(dataList, results.Record().Value())
|
||||||
|
}
|
||||||
|
|
||||||
|
if results.Err() != nil {
|
||||||
|
logger.Error("query parsing error failed", zap.Error(results.Err()))
|
||||||
|
return nil, results.Err()
|
||||||
|
}
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,135 @@
|
||||||
|
// Package database define database operation functions
|
||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// InfluxDBQueryPara define struct of influxdb query parameters
|
||||||
|
type InfluxDBQueryPara struct {
|
||||||
|
Bucket string `json:"bucket"`
|
||||||
|
Measurement string `json:"measurement"`
|
||||||
|
Start string `json:"start"`
|
||||||
|
Stop string `json:"stop"`
|
||||||
|
Field string `json:"field"`
|
||||||
|
// Value float64 `json:"value"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryPara define influxdb query parameters interface
|
||||||
|
type QueryPara interface {
|
||||||
|
apply(string) string
|
||||||
|
}
|
||||||
|
|
||||||
|
// BucketQueryPara define influxdb bucket query parameter
|
||||||
|
type BucketQueryPara string
|
||||||
|
|
||||||
|
func (b BucketQueryPara) apply(query string) string {
|
||||||
|
template := " from(bucket:\"{bucketId}\") "
|
||||||
|
template = strings.Replace(template, "{bucketId}", string(b), -1)
|
||||||
|
return query + template
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithBucket define func of set bucket parameter in query statment
|
||||||
|
func WithBucket(bucketID string) BucketQueryPara {
|
||||||
|
return BucketQueryPara(bucketID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MeasurementQueryPara define influxdb measurement query parameter
|
||||||
|
type MeasurementQueryPara string
|
||||||
|
|
||||||
|
func (m MeasurementQueryPara) apply(query string) string {
|
||||||
|
template := " |> filter(fn: (r) => r[\"_measurement\"] == \"{measurement}\") "
|
||||||
|
template = strings.Replace(template, "{measurement}", string(m), -1)
|
||||||
|
return query + template
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithMeasurement define func of set measurement parameter in query statment
|
||||||
|
func WithMeasurement(measurement string) MeasurementQueryPara {
|
||||||
|
return MeasurementQueryPara(measurement)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RangeTimeQueryPara define influxdb range query parameter
|
||||||
|
type RangeTimeQueryPara struct {
|
||||||
|
StartTime string
|
||||||
|
StopTime string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r RangeTimeQueryPara) apply(query string) string {
|
||||||
|
template := " |> range(start: {start}, stop: {stop}) "
|
||||||
|
template = strings.Replace(template, "{start}", r.StartTime, -1)
|
||||||
|
template = strings.Replace(template, "{stop}", r.StopTime, -1)
|
||||||
|
return query + template
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithRangeTime define func of set range parameter in query statment
|
||||||
|
func WithRangeTime(startTime, stopTime string) RangeTimeQueryPara {
|
||||||
|
return RangeTimeQueryPara{StartTime: startTime, StopTime: stopTime}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FieldQueryPara define influxdb field query parameter
|
||||||
|
type FieldQueryPara struct {
|
||||||
|
Fields []string
|
||||||
|
Operator string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f FieldQueryPara) apply(query string) string {
|
||||||
|
fieldTemplate := "r[\"_field\"] == \"{value}\""
|
||||||
|
filterTemplate := " |> filter(fn: (r) => {field_template}) "
|
||||||
|
fieldBuilder := strings.Builder{}
|
||||||
|
for index, field := range f.Fields {
|
||||||
|
if index > 0 {
|
||||||
|
operator := " " + f.Operator + " "
|
||||||
|
fieldBuilder.Write([]byte(operator))
|
||||||
|
}
|
||||||
|
filedContent := strings.Replace(fieldTemplate, "{value}", field, -1)
|
||||||
|
fieldBuilder.Write([]byte(filedContent))
|
||||||
|
}
|
||||||
|
filterTemplate = strings.Replace(filterTemplate, "{field_template}", fieldBuilder.String(), -1)
|
||||||
|
return query + filterTemplate
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithField define func of set field parameter in query statment
|
||||||
|
func WithField(fields []string, operator string) FieldQueryPara {
|
||||||
|
return FieldQueryPara{Fields: fields, Operator: operator}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TagQueryPara define influxdb tag query parameter
|
||||||
|
type TagQueryPara struct {
|
||||||
|
Tag []string
|
||||||
|
Value []string
|
||||||
|
Operator string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t TagQueryPara) apply(query string) string {
|
||||||
|
tagTemplate := "r[\"{tag}\"] == \"{value}\""
|
||||||
|
filterTemplate := " |> filter(fn: (r) => {tag_template}) "
|
||||||
|
tagBuilder := strings.Builder{}
|
||||||
|
for i := 0; i < len(t.Tag); i++ {
|
||||||
|
if i > 0 {
|
||||||
|
operator := " " + t.Operator + " "
|
||||||
|
tagBuilder.Write([]byte(operator))
|
||||||
|
}
|
||||||
|
tagContent := strings.Replace(tagTemplate, "{tag}", t.Tag[i], -1)
|
||||||
|
tagContent = strings.Replace(tagContent, "{value}", t.Value[i], -1)
|
||||||
|
fmt.Printf("tagContent:%v\n", tagContent)
|
||||||
|
tagBuilder.Write([]byte(tagContent))
|
||||||
|
}
|
||||||
|
|
||||||
|
filterTemplate = strings.Replace(filterTemplate, "{tag_template}", tagBuilder.String(), -1)
|
||||||
|
return query + filterTemplate
|
||||||
|
}
|
||||||
|
|
||||||
|
// WithTag define func of set tag parameter in query statment
|
||||||
|
func WithTag(tag []string, value []string, operator string) TagQueryPara {
|
||||||
|
return TagQueryPara{Tag: tag, Value: value, Operator: operator}
|
||||||
|
}
|
||||||
|
|
||||||
|
// InitQueryByPara define func of init influxdb query statment
|
||||||
|
func InitQueryByPara(paras ...QueryPara) (queryCmd string) {
|
||||||
|
for _, para := range paras {
|
||||||
|
queryCmd = para.apply(queryCmd)
|
||||||
|
}
|
||||||
|
fmt.Printf("queryCmd:%v\n", queryCmd)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
// Package database define database operation functions
|
||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
mongoOnce sync.Once
|
||||||
|
_globalMongoClient *mongo.Client
|
||||||
|
_globalMongoMu sync.RWMutex
|
||||||
|
)
|
||||||
|
|
||||||
|
// MongoDBClient returns the global MongoDB client.It's safe for concurrent use.
|
||||||
|
func MongoDBClient() *mongo.Client {
|
||||||
|
_globalMongoMu.RLock()
|
||||||
|
client := _globalMongoClient
|
||||||
|
_globalMongoMu.RUnlock()
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMongoDBInstance return instance of MongoDB client
|
||||||
|
func GetMongoDBInstance(ctx context.Context, mongoDBURI string) *mongo.Client {
|
||||||
|
mongoOnce.Do(func() {
|
||||||
|
_globalMongoClient = initMongoDBClient(ctx, mongoDBURI)
|
||||||
|
})
|
||||||
|
return _globalMongoClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// initMongoDBClient return successfully initialized MongoDB client
|
||||||
|
func initMongoDBClient(ctx context.Context, mongoDBURI string) *mongo.Client {
|
||||||
|
ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
mongoDBClient, err := mongo.Connect(ctx, options.Client().ApplyURI(mongoDBURI))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return mongoDBClient
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
// Package database define database operation functions
|
||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"wave_record/go-comtrade"
|
||||||
|
|
||||||
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
// StorageComtradeIntoMongoDB return the result of storing comtrade data into mongoDB
|
||||||
|
func StorageComtradeIntoMongoDB(ctx context.Context, comtradeData *comtrade.Comtrade, collection *mongo.Collection, logger *zap.Logger) error {
|
||||||
|
comtradeBson, err := bson.Marshal(comtradeData)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("bson marshal comtrade data failed", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = collection.InsertOne(ctx, comtradeBson)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("insert comtrade data into mongoDB failed", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO 增加mongodb查找示例
|
||||||
|
// var key, value string
|
||||||
|
// doc := bson.D{} // 创建一个空的bson.D文档
|
||||||
|
|
||||||
|
// // 添加键值对
|
||||||
|
// doc = append(doc, bson.E{Key: key, Value: value})
|
||||||
|
//
|
||||||
|
|
||||||
|
// FindComtradeIntoMongoDB return the query results of comtrade data with specified conditions in MongoDB
|
||||||
|
func FindComtradeIntoMongoDB(ctx context.Context, filter bson.D, collection *mongo.Collection, logger *zap.Logger) ([]*comtrade.Comtrade, error) {
|
||||||
|
var results []*comtrade.Comtrade
|
||||||
|
|
||||||
|
cur, err := collection.Find(ctx, filter, nil)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("")
|
||||||
|
}
|
||||||
|
for cur.Next(ctx) {
|
||||||
|
var element comtrade.Comtrade
|
||||||
|
err := cur.Decode(&element)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
results = append(results, &element)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := cur.Err(); err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
cur.Close(ctx)
|
||||||
|
return results, nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
// Package fileparse define related functions for comtrade data processing
|
||||||
|
package fileparse
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
"wave_record/constant"
|
||||||
|
|
||||||
|
"github.com/fsnotify/fsnotify"
|
||||||
|
"github.com/panjf2000/ants/v2"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DirWatch define function for monitoring directories and passing add file name to channels
|
||||||
|
func DirWatch(monitorDir string, addChan chan string) {
|
||||||
|
logger := zap.L()
|
||||||
|
|
||||||
|
watcher, err := fsnotify.NewWatcher()
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("create dir watcher failed:", zap.Error(err))
|
||||||
|
}
|
||||||
|
defer watcher.Close()
|
||||||
|
|
||||||
|
err = watcher.Add(monitorDir)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("add monitor dir failed:", zap.Error(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case event, ok := <-watcher.Events:
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if event.Op&fsnotify.Create == fsnotify.Create {
|
||||||
|
logger.Info("file add in watcher dir", zap.String("file_name", event.Name))
|
||||||
|
addChan <- event.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
if event.Op&fsnotify.Remove == fsnotify.Remove {
|
||||||
|
logger.Info("file remove in watcher dir", zap.String("file_name", event.Name))
|
||||||
|
}
|
||||||
|
case err, ok := <-watcher.Errors:
|
||||||
|
if !ok {
|
||||||
|
logger.Error("monitor watcher error channel closed", zap.Bool("channel_status", ok))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.Error("monitor watcher error occurred", zap.Error(err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TraverseMonitorDir define function for traverse the files existing in the directory
|
||||||
|
func TraverseMonitorDir(ctx context.Context, monitorDir string, dbName string, comtradeMap *sync.Map, addChan chan string, delChan chan string, pool *ants.PoolWithFunc) {
|
||||||
|
logger := zap.L()
|
||||||
|
err := filepath.Walk(monitorDir, func(path string, info os.FileInfo, err error) error {
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("accessing a path failed", zap.Error(err))
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
fileSuffix := filepath.Ext(path)
|
||||||
|
if !info.IsDir() && fileSuffix == constant.ConfigFileSuffix {
|
||||||
|
processComtradeFile(ctx, path, monitorDir, dbName, comtradeMap, addChan, delChan, pool, logger)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("traversing files that already exist in the monitor directory failed", zap.Error(err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,158 @@
|
||||||
|
// Package fileparse define related functions for comtrade data processing
|
||||||
|
package fileparse
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"wave_record/config"
|
||||||
|
"wave_record/constant"
|
||||||
|
"wave_record/database"
|
||||||
|
"wave_record/go-comtrade"
|
||||||
|
"wave_record/util"
|
||||||
|
|
||||||
|
"github.com/panjf2000/ants/v2"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ParseFunc define ants concourrent exec func
|
||||||
|
var ParseFunc = func(parseConfig interface{}) {
|
||||||
|
logger := zap.L()
|
||||||
|
comtradeStorageConfig, ok := parseConfig.(config.ComtradeDataStorageConfig)
|
||||||
|
if !ok {
|
||||||
|
logger.Error("conversion comtrade parameter config type failed")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fileName := filepath.Base(comtradeStorageConfig.ConfigFilePath)
|
||||||
|
comtradeData, err := parseComtradeData(comtradeStorageConfig.ConfigFilePath, comtradeStorageConfig.DataFilePath)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("parsing comtrade data failed", zap.String("fileName", fileName), zap.Error(err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
collection := database.MongoDBClient().Database(comtradeStorageConfig.DBName).Collection(comtradeData.Conf.StationName)
|
||||||
|
ctx, cancel := context.WithTimeout(comtradeStorageConfig.Ctx, 5*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
err = database.
|
||||||
|
StorageComtradeIntoMongoDB(ctx, comtradeData, collection, logger)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("stroage comtrade data info mongoDB failed", zap.String("fileName", fileName), zap.Error(err))
|
||||||
|
}
|
||||||
|
comtradeStorageConfig.DelChan <- comtradeStorageConfig.ConfigFilePath
|
||||||
|
comtradeStorageConfig.DelChan <- comtradeStorageConfig.DataFilePath
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseComtradeData(configFilePath, dataFilePath string) (*comtrade.Comtrade, error) {
|
||||||
|
logger := zap.L()
|
||||||
|
|
||||||
|
comtrade, err := comtrade.ParseComtrade(configFilePath, dataFilePath)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("parse comtrade file failed", zap.Error(err))
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return comtrade, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ParseComtradeFile define comtrade file parse func
|
||||||
|
func ParseComtradeFile(ctx context.Context, monitorDir string, dbName string, addChan chan string, delChan chan string, comtradeMap *sync.Map, pool *ants.PoolWithFunc) {
|
||||||
|
logger := zap.L()
|
||||||
|
|
||||||
|
for {
|
||||||
|
addFilePath, ok := <-addChan
|
||||||
|
if !ok {
|
||||||
|
logger.Error("monitor add channel closed", zap.Bool("channel_status", ok))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err := processComtradeFile(ctx, addFilePath, monitorDir, dbName, comtradeMap, addChan, delChan, pool, logger)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, constant.ErrNotFindDatFile) {
|
||||||
|
logger.Info("process comtrade file failed", zap.String("err", err.Error()))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
logger.Error("process comtrade file failed", zap.Error(err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func processComtradeFile(ctx context.Context, addFilePath string, monitorDir string, dbName string, comtradeMap *sync.Map, addChan chan string, delChan chan string, pool *ants.PoolWithFunc, logger *zap.Logger) error {
|
||||||
|
lastElement := filepath.Base(addFilePath)
|
||||||
|
fileName := strings.Split(lastElement, ".")[0]
|
||||||
|
fileExtension := filepath.Ext(lastElement)
|
||||||
|
|
||||||
|
switch fileExtension {
|
||||||
|
case constant.ConfigFileSuffix:
|
||||||
|
err := processConfigFile(ctx, dbName, addFilePath, delChan, comtradeMap, pool)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("process comtrade failed:%w", err)
|
||||||
|
}
|
||||||
|
case constant.DataFileSuffix:
|
||||||
|
err := processDataFile(monitorDir, fileName, addFilePath, comtradeMap, addChan)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("process comtrade failed:%w", err)
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
logger.Warn("no support file style", zap.String("file_style", fileExtension))
|
||||||
|
time.Sleep(5 * time.Second)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func processConfigFile(ctx context.Context, dbName string, configFilePath string, delchan chan string, comtradeMap *sync.Map, pool *ants.PoolWithFunc) error {
|
||||||
|
dataFilePath, err := util.FileNameConvert(configFilePath)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("process config file failed:%w", err)
|
||||||
|
}
|
||||||
|
exist := util.FileExists(dataFilePath)
|
||||||
|
if !exist {
|
||||||
|
comtradeMap.Store(configFilePath, "")
|
||||||
|
return constant.ErrNotFindDatFile
|
||||||
|
}
|
||||||
|
|
||||||
|
pool.Invoke(config.ComtradeDataStorageConfig{
|
||||||
|
Ctx: ctx,
|
||||||
|
DelChan: delchan,
|
||||||
|
DBName: dbName,
|
||||||
|
ConfigFilePath: configFilePath,
|
||||||
|
DataFilePath: dataFilePath,
|
||||||
|
})
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func processDataFile(monitorDir string, fileName string, dataFilePath string, comtradeMap *sync.Map, addChan chan string) error {
|
||||||
|
configFileName := strings.Join([]string{fileName, constant.ConfigFileSuffix}, "")
|
||||||
|
configFilePath := filepath.Join(monitorDir, configFileName)
|
||||||
|
exist := util.FileExists(configFilePath)
|
||||||
|
if exist {
|
||||||
|
comtradeMap.Store(configFilePath, dataFilePath)
|
||||||
|
addChan <- configFilePath
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
// addChan <- dataFilePath
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// MoveComtradeFile define comtrade file remove from comtradeMap and move comtrade file from monitor dir to backup dir func
|
||||||
|
func MoveComtradeFile(backupDir string, comtradeMap *sync.Map, delChan chan string) {
|
||||||
|
logger := zap.L()
|
||||||
|
for {
|
||||||
|
filePath := <-delChan
|
||||||
|
fileName := filepath.Base(filePath)
|
||||||
|
fileExtension := filepath.Ext(fileName)
|
||||||
|
if fileExtension == constant.ConfigFileSuffix {
|
||||||
|
comtradeMap.Delete(filePath)
|
||||||
|
}
|
||||||
|
backupFilePath := filepath.Join(backupDir, fileName)
|
||||||
|
err := util.RemoveFile(filePath, backupFilePath)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("remove file to backup dir failed", zap.Error(err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
# go-comtrade
|
||||||
|
|
||||||
|
comtrade文件Golang解析库,基于电力系统暂态数据交换通用格式(Common format of transient data exechange COMTRADE for power systems)的GB/T 22386-2008/IEC 60255-24:2001标准对相关文件进行解析,后续预计支持GB/T 14598.24-2017/IEC 60255-24:2013
|
||||||
|
|
@ -0,0 +1,70 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
// AnalogChan 模拟通道
|
||||||
|
type AnalogChan struct {
|
||||||
|
An uint32 `json:"an"` //模拟通道索引号
|
||||||
|
ChId string `json:"ch_id"` //通道标识
|
||||||
|
Ph string `json:"ph"` //通道相别标识
|
||||||
|
Ccbm string `json:"ccbm"` //被监视的电路元件
|
||||||
|
Uu string `json:"uu"` //通道单位
|
||||||
|
A float32 `json:"a"` //通道增益系数
|
||||||
|
B float32 `json:"b"` //通道偏移量
|
||||||
|
Skew float32 `json:"skew"` //通道时滞
|
||||||
|
Min float32 `json:"min"` //通道最小值
|
||||||
|
Max float32 `json:"max"` //通道最大值
|
||||||
|
Primary float32 `json:"primary"` //一次系数
|
||||||
|
Secondary float32 `json:"secondary"` //二次系数
|
||||||
|
PS string `json:"ps"` //一次二次标识
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *AnalogChan) GetAn() uint32 {
|
||||||
|
return c.An
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *AnalogChan) GetChId() string {
|
||||||
|
return c.ChId
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *AnalogChan) GetPh() string {
|
||||||
|
return c.Ph
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *AnalogChan) GetCcbm() string {
|
||||||
|
return c.Ccbm
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *AnalogChan) GetUu() string {
|
||||||
|
return c.Uu
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *AnalogChan) GetA() float32 {
|
||||||
|
return c.A
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *AnalogChan) GetB() float32 {
|
||||||
|
return c.B
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *AnalogChan) GetSkew() float32 {
|
||||||
|
return c.Skew
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *AnalogChan) GetMin() float32 {
|
||||||
|
return c.Min
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *AnalogChan) GetMax() float32 {
|
||||||
|
return c.Max
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *AnalogChan) GetPrimary() float32 {
|
||||||
|
return c.Primary
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *AnalogChan) GetSecondary() float32 {
|
||||||
|
return c.Secondary
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *AnalogChan) GetPS() string {
|
||||||
|
return c.PS
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,85 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Parse ASCIIData ASCIIData is the ascii data of a comtrade data file.
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Add(TypeASCII, func() Parser {
|
||||||
|
return &ASCIIData{}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
type ASCIIData struct{}
|
||||||
|
|
||||||
|
func (a *ASCIIData) Parse(filePath string, analogNum, digitalNum, endSamp uint32) (*Data, error) {
|
||||||
|
comtradeData := &Data{}
|
||||||
|
datFile, err := os.Open(filePath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer datFile.Close()
|
||||||
|
|
||||||
|
content, err := io.ReadAll(datFile)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
lines := bytes.Split(content, []byte("\n"))
|
||||||
|
if len(lines)-1 != int(endSamp) {
|
||||||
|
return nil, ErrInvalidFile
|
||||||
|
}
|
||||||
|
|
||||||
|
comtradeData.AnalogData = make([]AnalogData, int(endSamp))
|
||||||
|
comtradeData.DigitalData = make([]DigitalData, int(endSamp))
|
||||||
|
|
||||||
|
for i := 0; i < int(endSamp); i++ {
|
||||||
|
comtradeData.AnalogData[i].Data = make([]int32, analogNum)
|
||||||
|
comtradeData.DigitalData[i].Data = make([]uint8, digitalNum)
|
||||||
|
}
|
||||||
|
|
||||||
|
total := 1 + 1 + int(analogNum) + int(digitalNum)
|
||||||
|
var tempList [][]byte
|
||||||
|
for i := 0; i < int(endSamp); i++ {
|
||||||
|
tempList = bytes.Split(lines[i], []byte(","))
|
||||||
|
if len(tempList) != total {
|
||||||
|
return nil, ErrReadFirstLine
|
||||||
|
}
|
||||||
|
|
||||||
|
if value, err := strconv.Atoi(ByteToString(tempList[0])); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeData.AnalogData[i].N = uint32(value)
|
||||||
|
comtradeData.DigitalData[i].N = uint32(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
if value, err := strconv.Atoi(ByteToString(tempList[1])); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeData.AnalogData[i].Timestamp = uint32(value)
|
||||||
|
comtradeData.DigitalData[i].Timestamp = uint32(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
for j := 0; j < int(analogNum); j++ {
|
||||||
|
if value, err := strconv.ParseInt(ByteToString(tempList[j+2]), 10, 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeData.AnalogData[i].Data[j] = int32(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for j := 0; j < int(digitalNum); j++ {
|
||||||
|
if value, err := strconv.ParseInt(ByteToString(tempList[j+2+int(analogNum)]), 10, 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeData.DigitalData[i].Data[j] = uint8(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return comtradeData, nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestASCIIData_Parse(t *testing.T) {
|
||||||
|
filePath := "testdata/test2.cfg"
|
||||||
|
cfg, err := ParseComtradeCfg(filePath)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("ParseComtradeCfg() error = %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
a := &ASCIIData{}
|
||||||
|
dat, err := a.Parse("testdata/test2.dat", cfg.AnalogNum, cfg.DigitalNum, cfg.EndSamp[len(cfg.EndSamp)-1])
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Parse() error = %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if reflect.TypeOf(dat) != reflect.TypeOf(&Data{}) {
|
||||||
|
t.Errorf("Parse() got = %v", dat)
|
||||||
|
}
|
||||||
|
t.Log(dat)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Add(TypeBinary32, func() Parser {
|
||||||
|
return &Binary32Data{}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Binary32Data TODO
|
||||||
|
type Binary32Data struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Binary32Data) Parse(filePath string, analogNum, digitalNum, endSamp uint32) (*Data, error) {
|
||||||
|
return &Data{}, nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,112 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/binary"
|
||||||
|
"math"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
// BinaryData is the binary data of a comtrade data file
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Add(TypeBinary, func() Parser {
|
||||||
|
return &BinaryData{}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 读取数据文件
|
||||||
|
// 1、采样序号和时标,均以四字节,无符号二进制格式存储
|
||||||
|
// 2、模拟通道采样数据,binary两个字节,binary32四个字节二进制补码形式存储
|
||||||
|
// 3、每16个状态通道以两个字节一组存储,字的最低为对应该组16个状态通道中最小编号通道
|
||||||
|
// 4、每次采样字节数=(模拟通道数 * 每个采样数据占据字节数)+(状态通道数 / 16 * 2) + 4 + 4
|
||||||
|
// 5、每个采样数据占据字节数=2或4,取决于数据格式,2表示binary,4表示binary32
|
||||||
|
|
||||||
|
// 05,667,-760,1274,72,61,-140,-502,0,0,0,0,1,1
|
||||||
|
// 05 00 00 00
|
||||||
|
// 9B 02 00 00 667
|
||||||
|
// 08 FD -760
|
||||||
|
// FA 04 1274
|
||||||
|
// 48 00 72
|
||||||
|
// 3D 00 61
|
||||||
|
// 74 FF -140
|
||||||
|
// 0A FE -502
|
||||||
|
// 30 00 0,0,0,0,1,1
|
||||||
|
type BinaryData struct{}
|
||||||
|
|
||||||
|
func (b *BinaryData) Parse(filePath string, analogNum, digitalNum, endSamp uint32) (*Data, error) {
|
||||||
|
comtradeData := &Data{}
|
||||||
|
|
||||||
|
// 打开文件
|
||||||
|
file, err := os.Open(filePath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
comtradeData.AnalogData = make([]AnalogData, int(endSamp))
|
||||||
|
comtradeData.DigitalData = make([]DigitalData, int(endSamp))
|
||||||
|
|
||||||
|
for i := 0; i < int(endSamp); i++ {
|
||||||
|
comtradeData.AnalogData[i].Data = make([]int32, analogNum)
|
||||||
|
comtradeData.DigitalData[i].Data = make([]uint8, digitalNum)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算状态通道组数
|
||||||
|
digitalCount := int(math.Ceil(float64(digitalNum) / 16.0))
|
||||||
|
remainder := int(digitalNum % 16)
|
||||||
|
|
||||||
|
for i := 0; i < int(endSamp); i++ {
|
||||||
|
var (
|
||||||
|
sampleIndex uint32
|
||||||
|
timestamp uint32
|
||||||
|
)
|
||||||
|
// 解析采样序号
|
||||||
|
if err := binary.Read(file, binary.LittleEndian, &sampleIndex); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
comtradeData.AnalogData[i].N = sampleIndex
|
||||||
|
comtradeData.DigitalData[i].N = sampleIndex
|
||||||
|
|
||||||
|
// 解析采样时标
|
||||||
|
if err = binary.Read(file, binary.LittleEndian, ×tamp); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
comtradeData.AnalogData[i].Timestamp = timestamp
|
||||||
|
comtradeData.DigitalData[i].Timestamp = timestamp
|
||||||
|
|
||||||
|
// 解析模拟通道采样数据
|
||||||
|
for m := 0; m < int(analogNum); m++ {
|
||||||
|
var tmp int16
|
||||||
|
if err := binary.Read(file, binary.LittleEndian, &tmp); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeData.AnalogData[i].Data[m] = int32(tmp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3、每16个状态通道以两个字节一组存储,字的最低为对应该组16个状态通道中最小编号通道
|
||||||
|
// 4、每次采样字节数=(模拟通道数 * 每个采样数据占据字节数)+(状态通道数 / 16 * 2) + 4 + 4
|
||||||
|
// 5、每个采样数据占据字节数=2或4,取决于数据格式,2表示binary,4表示binary32
|
||||||
|
|
||||||
|
stateData := make([]uint16, digitalCount)
|
||||||
|
for n, datum := range stateData {
|
||||||
|
data := datum
|
||||||
|
if err := binary.Read(file, binary.LittleEndian, &data); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
stateData[n] = data
|
||||||
|
}
|
||||||
|
for h, datum := range stateData {
|
||||||
|
if remainder != 0 && h == digitalCount-1 {
|
||||||
|
for j := 0; j < remainder; j++ {
|
||||||
|
comtradeData.DigitalData[i].Data[(h*16)+j] = uint8(uint((datum >> uint(j)) & 0x0001))
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
for k := 0; k < 16; k++ {
|
||||||
|
comtradeData.DigitalData[i].Data[(h*16)+k] = uint8(uint((datum >> uint(k)) & 0x0001))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return comtradeData, nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestBinaryData_Parse(t *testing.T) {
|
||||||
|
filePath := "testdata/test1.cfg"
|
||||||
|
cfg, err := ParseComtradeCfg(filePath)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("ParseComtradeCfg() error = %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
b := &BinaryData{}
|
||||||
|
dat, err := b.Parse("testdata/test1.dat", cfg.AnalogNum, cfg.DigitalNum, cfg.EndSamp[len(cfg.EndSamp)-1])
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Parse() error = %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if reflect.TypeOf(dat) != reflect.TypeOf(&Data{}) {
|
||||||
|
t.Errorf("Parse() got = %v", dat)
|
||||||
|
}
|
||||||
|
t.Log(dat)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,40 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
type Comtrade struct {
|
||||||
|
Conf *ComtradeCfg
|
||||||
|
Data *Data
|
||||||
|
}
|
||||||
|
|
||||||
|
func ParseComtrade(configurePath, datafilePath string) (comtrade *Comtrade, err error) {
|
||||||
|
c := &Comtrade{}
|
||||||
|
c.Conf, err = c.parseComtradeConfig(configurePath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
c.Data, err = c.parseComtradeData(datafilePath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return c, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Comtrade) parseComtradeConfig(configurePath string) (*ComtradeCfg, error) {
|
||||||
|
comtradeConfig, err := ParseComtradeCfg(configurePath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return comtradeConfig, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Comtrade) parseComtradeData(datafilePath string) (*Data, error) {
|
||||||
|
creator, ok := Parsers[c.Conf.Ft]
|
||||||
|
if !ok {
|
||||||
|
return nil, ErrUnknownTypeOfData
|
||||||
|
}
|
||||||
|
parser := creator()
|
||||||
|
comtradeData, err := parser.Parse(datafilePath, c.Conf.GetAnalogNum(), c.Conf.GetDigitalNum(), c.Conf.GetEndSamp()[len(c.Conf.GetEndSamp())-1])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return comtradeData, nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,110 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ComtradeCfg struct {
|
||||||
|
StationName string `json:"station_name"` //厂站名称
|
||||||
|
RecDevID string `json:"rec_dev_id"` //记录设备ID
|
||||||
|
RevYear uint16 `json:"rev_year"` //COMTRADE版本年份 1991、1999、2013
|
||||||
|
Total uint32 `json:"total"` //总通道数
|
||||||
|
AnalogNum uint32 `json:"analog_num"` //模拟通道数
|
||||||
|
DigitalNum uint32 `json:"digital_num"` //数字/状态通道数
|
||||||
|
Analog []AnalogChan `json:"analog"` //模拟通道
|
||||||
|
Digital []DigitalChan `json:"digital"` //数字/状态通道
|
||||||
|
Lf float32 `json:"lf"` //标称频率
|
||||||
|
Nrates uint16 `json:"nrates"` //采样率个数
|
||||||
|
Samp []float32 `json:"samp"` //采样率
|
||||||
|
EndSamp []uint32 `json:"end_samp"` //最末采样序号
|
||||||
|
FirstDataTime time.Time `json:"first_data_time"` //第一条数据时间
|
||||||
|
TriggerTime time.Time `json:"trigger_time"` //采样触发时间
|
||||||
|
Ft string `json:"ft"` //数据文件类型,ASCII、BINARY、BINARY32、FLOAT32
|
||||||
|
|
||||||
|
// 2017
|
||||||
|
TimeMult float32 `json:"time_mult"` //时间倍率因子
|
||||||
|
TimeCode string `json:"time_code"` //时间编码
|
||||||
|
LocalCode string `json:"local_code"` //本地编码
|
||||||
|
TmqCode uint8 `json:"tmq_code"` //采样时间品质
|
||||||
|
Leapsec uint8 `json:"leapsec"` //闰秒标识符
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetStationName() string {
|
||||||
|
return cc.StationName
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetRecDevID() string {
|
||||||
|
return cc.RecDevID
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetRevYear() uint16 {
|
||||||
|
return cc.RevYear
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetTotal() uint32 {
|
||||||
|
return cc.Total
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetAnalogNum() uint32 {
|
||||||
|
return cc.AnalogNum
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetDigitalNum() uint32 {
|
||||||
|
return cc.DigitalNum
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetLf() float32 {
|
||||||
|
return cc.Lf
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetNrates() uint16 {
|
||||||
|
return cc.Nrates
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetSamp() []float32 {
|
||||||
|
return cc.Samp
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetEndSamp() []uint32 {
|
||||||
|
return cc.EndSamp
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetTriggerTime() time.Time {
|
||||||
|
return cc.TriggerTime
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetFirstDataTime() time.Time {
|
||||||
|
return cc.FirstDataTime
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetFt() string {
|
||||||
|
return cc.Ft
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetTimeMult() float32 {
|
||||||
|
return cc.TimeMult
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetTimeCode() string {
|
||||||
|
return cc.TimeCode
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetLocalCode() string {
|
||||||
|
return cc.LocalCode
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetTmqCode() uint8 {
|
||||||
|
return cc.TmqCode
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetLeapsec() uint8 {
|
||||||
|
return cc.Leapsec
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetAnalog() []AnalogChan {
|
||||||
|
return cc.Analog
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cc *ComtradeCfg) GetDigital() []DigitalChan {
|
||||||
|
return cc.Digital
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,272 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ParseComtradeCfg(filePath string) (*ComtradeCfg, error) {
|
||||||
|
cfgFile, err := os.Open(filePath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer cfgFile.Close()
|
||||||
|
|
||||||
|
comtradeCfg := &ComtradeCfg{}
|
||||||
|
var tempList [][]byte
|
||||||
|
content, err := io.ReadAll(cfgFile)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
lines := bytes.Split(content, []byte("\n"))
|
||||||
|
|
||||||
|
// read first line
|
||||||
|
tempList = bytes.Split(lines[0], []byte(","))
|
||||||
|
if len(tempList) < 3 {
|
||||||
|
return nil, ErrReadFirstLine
|
||||||
|
}
|
||||||
|
// station_name, rec_dev_id, rev_year
|
||||||
|
comtradeCfg.StationName = ByteToString(tempList[0])
|
||||||
|
comtradeCfg.RecDevID = ByteToString(tempList[1])
|
||||||
|
if value, err := strconv.ParseUint(ByteToString(tempList[2]), 10, 16); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.RevYear = uint16(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
// read second line
|
||||||
|
tempList = bytes.Split(lines[1], []byte(","))
|
||||||
|
if len(tempList) < 3 {
|
||||||
|
return nil, ErrReadSecondLine
|
||||||
|
}
|
||||||
|
|
||||||
|
// total channel number
|
||||||
|
if value, err := strconv.ParseUint(ByteToString(tempList[0]), 10, 16); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.Total = uint32(value)
|
||||||
|
}
|
||||||
|
if !bytes.Contains(tempList[1], []byte("A")) || !bytes.Contains(tempList[2], []byte("D")) {
|
||||||
|
return nil, ErrReadADChannel
|
||||||
|
}
|
||||||
|
// analog channel total number
|
||||||
|
if value, err := strconv.ParseUint(string(bytes.TrimSuffix(bytes.TrimSpace(tempList[1]), []byte("A"))), 10, 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.AnalogNum = uint32(value)
|
||||||
|
}
|
||||||
|
// digit channel total number
|
||||||
|
if value, err := strconv.ParseUint(string(bytes.TrimSuffix(bytes.TrimSpace(tempList[2]), []byte("D"))), 10, 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.DigitalNum = uint32(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
// initialize analog and digital channels
|
||||||
|
comtradeCfg.Analog = make([]AnalogChan, comtradeCfg.AnalogNum)
|
||||||
|
comtradeCfg.Digital = make([]DigitalChan, comtradeCfg.DigitalNum)
|
||||||
|
|
||||||
|
// 读取模拟通道 read analog channels
|
||||||
|
for i := 0; i < int(comtradeCfg.AnalogNum); i++ {
|
||||||
|
tempList = bytes.Split(lines[2+i], []byte(","))
|
||||||
|
if len(tempList) < 10 {
|
||||||
|
return nil, ErrReadAnalogChannel
|
||||||
|
}
|
||||||
|
// 通道索引号 An
|
||||||
|
if num, err := strconv.ParseInt(ByteToString(tempList[0]), 10, 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.Analog[i].An = uint32(num)
|
||||||
|
}
|
||||||
|
// 通道标识 ch_id,通道相标识 ph
|
||||||
|
comtradeCfg.Analog[i].ChId = ByteToString(tempList[1])
|
||||||
|
comtradeCfg.Analog[i].Ph = ByteToString(tempList[2])
|
||||||
|
// 被监视的电路元件 ccbm, 通道单位 uu
|
||||||
|
comtradeCfg.Analog[i].Ccbm = ByteToString(tempList[3])
|
||||||
|
comtradeCfg.Analog[i].Uu = ByteToString(tempList[4])
|
||||||
|
// 通道增益系数 a
|
||||||
|
if num, err := strconv.ParseFloat(ByteToString(tempList[5]), 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.Analog[i].A = float32(num)
|
||||||
|
}
|
||||||
|
// 通道偏移量 b
|
||||||
|
if num, err := strconv.ParseFloat(ByteToString(tempList[6]), 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.Analog[i].B = float32(num)
|
||||||
|
}
|
||||||
|
// 从采样时刻开始的通道时滞 skew
|
||||||
|
if num, err := strconv.ParseFloat(ByteToString(tempList[7]), 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.Analog[i].Skew = float32(num)
|
||||||
|
}
|
||||||
|
// Min Value at current channel
|
||||||
|
if num, err := strconv.ParseFloat(ByteToString(tempList[8]), 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.Analog[i].Min = float32(num)
|
||||||
|
}
|
||||||
|
// Max Value at current channel
|
||||||
|
if num, err := strconv.ParseFloat(ByteToString(tempList[9]), 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.Analog[i].Max = float32(num)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(tempList) > 10 {
|
||||||
|
if num, err := strconv.ParseFloat(ByteToString(tempList[10]), 64); err == nil {
|
||||||
|
comtradeCfg.Analog[i].Primary = float32(num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(tempList) > 11 {
|
||||||
|
if num, err := strconv.ParseFloat(ByteToString(tempList[11]), 64); err == nil {
|
||||||
|
comtradeCfg.Analog[i].Secondary = float32(num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// read digit channels
|
||||||
|
for i := 0; i < int(comtradeCfg.DigitalNum); i++ {
|
||||||
|
tempList = bytes.Split(lines[2+int(comtradeCfg.AnalogNum)+i], []byte(","))
|
||||||
|
if len(tempList) < 3 {
|
||||||
|
return nil, ErrReadDigitalChannel
|
||||||
|
}
|
||||||
|
if num, err := strconv.Atoi(ByteToString(tempList[0])); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.Digital[i].Dn = uint32(num)
|
||||||
|
}
|
||||||
|
comtradeCfg.Digital[i].ChId = ByteToString(tempList[1])
|
||||||
|
comtradeCfg.Digital[i].Ph = ByteToString(tempList[2])
|
||||||
|
|
||||||
|
// checking vector length to avoid IndexError
|
||||||
|
if len(tempList) > 3 {
|
||||||
|
// channel element (usually null)
|
||||||
|
comtradeCfg.Digital[i].Ccbm = ByteToString(tempList[3])
|
||||||
|
}
|
||||||
|
if len(tempList) > 4 {
|
||||||
|
if num, err := strconv.ParseUint(ByteToString(tempList[4]), 10, 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.Digital[i].Y = uint8(num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// read frequency
|
||||||
|
var line uint32 = 2
|
||||||
|
tempList = bytes.Split(lines[line+comtradeCfg.Total], []byte(","))
|
||||||
|
if num, err := strconv.ParseFloat(ByteToString(tempList[0]), 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.Lf = float32(num)
|
||||||
|
line++
|
||||||
|
}
|
||||||
|
|
||||||
|
// read sampling rate num
|
||||||
|
tempList = bytes.Split(lines[line+comtradeCfg.Total], []byte(","))
|
||||||
|
if num, err := strconv.ParseUint(ByteToString(tempList[0]), 10, 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.Nrates = uint16(num)
|
||||||
|
line++
|
||||||
|
}
|
||||||
|
|
||||||
|
// read Sample and endSample
|
||||||
|
for i := 0; i < int(comtradeCfg.Nrates); i++ {
|
||||||
|
tempList = bytes.Split(lines[line+uint32(i)+comtradeCfg.Total], []byte(","))
|
||||||
|
if len(tempList) < 2 {
|
||||||
|
return nil, ErrReadSample
|
||||||
|
}
|
||||||
|
if num, err := strconv.ParseFloat(ByteToString(tempList[0]), 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.Samp = append(comtradeCfg.Samp, float32(num))
|
||||||
|
}
|
||||||
|
if num, err := strconv.ParseFloat(ByteToString(tempList[1]), 64); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.EndSamp = append(comtradeCfg.EndSamp, uint32(num))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
line += uint32(comtradeCfg.Nrates)
|
||||||
|
|
||||||
|
// init comtrade config time parse layout
|
||||||
|
timeParseLayout := DateTimeLayout
|
||||||
|
firstDataTimeStr := ByteToString(lines[line+comtradeCfg.Total])
|
||||||
|
if len(firstDataTimeStr) < DefaultTimeLayoutLen {
|
||||||
|
timeParseLayout = CosLightDateTimeLayout
|
||||||
|
}
|
||||||
|
|
||||||
|
// read first data time (dd/mm/yyyy,hh:mm:ss.ssssss)
|
||||||
|
if start, err := time.Parse(timeParseLayout, firstDataTimeStr); err != nil {
|
||||||
|
if strings.Contains(err.Error(), MonthOutOfRange) {
|
||||||
|
timeParseLayout = DateTimeLayout2
|
||||||
|
// try to parse date reverse month and day: mm/dd/yyyy
|
||||||
|
if start, err = time.Parse(timeParseLayout, firstDataTimeStr); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.FirstDataTime = start
|
||||||
|
line++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
comtradeCfg.FirstDataTime = start
|
||||||
|
line++
|
||||||
|
}
|
||||||
|
|
||||||
|
// read trigger time (dd/mm/yyyy,hh:mm:ss.ssssss)
|
||||||
|
triggerTimeStr := ByteToString(lines[line+comtradeCfg.Total])
|
||||||
|
if trigger, err := time.Parse(timeParseLayout, triggerTimeStr); err != nil {
|
||||||
|
if strings.Contains(err.Error(), MonthOutOfRange) {
|
||||||
|
// try to parse date reverse month and day
|
||||||
|
if trigger, err = time.Parse(timeParseLayout, triggerTimeStr); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else {
|
||||||
|
comtradeCfg.TriggerTime = trigger
|
||||||
|
line++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
comtradeCfg.TriggerTime = trigger
|
||||||
|
line++
|
||||||
|
}
|
||||||
|
|
||||||
|
// read data file type
|
||||||
|
tempList = bytes.Split(lines[line+comtradeCfg.Total], []byte(","))
|
||||||
|
// convert ft value to upper style
|
||||||
|
comtradeCfg.Ft = strings.ToUpper(ByteToString(tempList[0]))
|
||||||
|
fmt.Printf("ft vavlue:%v\n", comtradeCfg.Ft)
|
||||||
|
|
||||||
|
// read time multiplication factor
|
||||||
|
line++
|
||||||
|
tempList = bytes.Split(lines[line+comtradeCfg.Total], []byte(","))
|
||||||
|
if !bytes.Equal(tempList[0], []byte("")) {
|
||||||
|
num, err := strconv.ParseFloat(ByteToString(tempList[0]), 64)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
comtradeCfg.TimeMult = float32(num)
|
||||||
|
} else {
|
||||||
|
comtradeCfg.TimeMult = 1
|
||||||
|
line++
|
||||||
|
}
|
||||||
|
return comtradeCfg, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func ByteToString(b []byte) string {
|
||||||
|
return strings.TrimSpace(string(b))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestParseComtradeCfg(t *testing.T) {
|
||||||
|
filePath := "testdata/test1.cfg"
|
||||||
|
got, err := ParseComtradeCfg(filePath)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("ParseComtradeCfg() error = %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if reflect.TypeOf(got) != reflect.TypeOf(&ComtradeCfg{}) {
|
||||||
|
t.Errorf("ParseComtradeCfg() got = %v", got)
|
||||||
|
}
|
||||||
|
t.Log(got.StationName)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
// Data is the data of a comtrade file.
|
||||||
|
type Data struct {
|
||||||
|
AnalogData []AnalogData
|
||||||
|
DigitalData []DigitalData
|
||||||
|
}
|
||||||
|
|
||||||
|
// AnalogData is the analog data of a comtrade file.
|
||||||
|
type AnalogData struct {
|
||||||
|
N uint32 `json:"n"` //模拟通道序号
|
||||||
|
Timestamp uint32 `json:"timestamp"` //模拟通道时标
|
||||||
|
Data []int32 `json:"data"` //模拟通道数据
|
||||||
|
}
|
||||||
|
|
||||||
|
// DigitalData is the digital data of a comtrade file.
|
||||||
|
type DigitalData struct {
|
||||||
|
N uint32 `json:"n"` //数字通道序号
|
||||||
|
Timestamp uint32 `json:"timestamp"` //数字通道时标
|
||||||
|
Data []uint8 `json:"data"` //数字通道数据
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cd *Data) GetAnalogData() []AnalogData {
|
||||||
|
return cd.AnalogData
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cd *Data) GetDigitalData() []DigitalData {
|
||||||
|
return cd.DigitalData
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
// DigitalChan 数字通道
|
||||||
|
type DigitalChan struct {
|
||||||
|
Dn uint32 `json:"dn"` //数字/状态通道索引号
|
||||||
|
ChId string `json:"ch_id"` //通道标识
|
||||||
|
Ph string `json:"ph"` //通道相别标识
|
||||||
|
Ccbm string `json:"ccbm"` //被监视的电路元件
|
||||||
|
Y uint8 `json:"y"` //通道状态
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *DigitalChan) GetDn() uint32 {
|
||||||
|
return c.Dn
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *DigitalChan) GetChId() string {
|
||||||
|
return c.ChId
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *DigitalChan) GetPh() string {
|
||||||
|
return c.Ph
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *DigitalChan) GetCcbm() string {
|
||||||
|
return c.Ccbm
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *DigitalChan) GetY() uint8 {
|
||||||
|
return c.Y
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
import "errors"
|
||||||
|
|
||||||
|
var (
|
||||||
|
ErrUnknownTypeOfData = errors.New("unknown type of data")
|
||||||
|
ErrInvalidFile = errors.New("invalid file")
|
||||||
|
ErrReadFirstLine = errors.New("read first line error")
|
||||||
|
ErrReadSecondLine = errors.New("read second line error")
|
||||||
|
ErrReadADChannel = errors.New("read A/D channel num line error")
|
||||||
|
ErrReadAnalogChannel = errors.New("read analog channel line error")
|
||||||
|
ErrReadDigitalChannel = errors.New("read digital channel line error")
|
||||||
|
ErrReadSample = errors.New("read sample error")
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
// Package main define comtrade file analyzing example Functions
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"wave_record/go-comtrade"
|
||||||
|
// "server.baseware.net/CL-Softwares/go-comtrade"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
configFile = flag.String("config", "testdata/test1.cfg", "config file path")
|
||||||
|
dataFile = flag.String("data", "testdata/test1.dat", "data file path")
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
c, err := comtrade.ParseComtrade(*configFile, *dataFile)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(c.Conf)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Add(TypeFloat32, func() Parser {
|
||||||
|
return &Float32Data{}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Float32Data TODO
|
||||||
|
type Float32Data struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *Float32Data) Parse(filePath string, analogNum, digitalNum, endSamp uint32) (*Data, error) {
|
||||||
|
return &Data{}, nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
// https://github.com/influxdata/telegraf/blob/master/plugins/parsers/registry.go
|
||||||
|
|
||||||
|
// Creator is the function to create a new parser
|
||||||
|
type Creator func() Parser
|
||||||
|
|
||||||
|
// Parsers contains the registry of all known parsers (following the new style)
|
||||||
|
var Parsers = map[string]Creator{}
|
||||||
|
|
||||||
|
// Add adds a parser to the registry. Usually this function is called in the plugin's init function
|
||||||
|
func Add(name string, creator Creator) {
|
||||||
|
Parsers[name] = creator
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,113 @@
|
||||||
|
Strathmore 275kV,1,2001
|
||||||
|
104,20A,84D
|
||||||
|
1,LINE SUM ILA,,,A,2.181993E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
2,LINE SUM ILB,,,A,1.450719E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
3,LINE SUM ILC,,,A,1.133065E-01,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
4,LINE SUM IN,,,A,1.092105E-01,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
5,REM1 SUM ILA,,,A,1.989423E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
6,REM1 SUM ILB,,,A,1.388269E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
7,REM1 SUM ILC,,,A,1.004310E-01,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
8,REM1 SUM IN,,,A,8.381079E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
9,LINE ULA,,,V,7.933214E+00,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
10,LINE ULB,,,V,8.101845E+00,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
11,LINE ULC,,,V,9.667931E+00,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
12,LINE UN,,,V,8.350841E+00,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
13,I DIFF LA,,,one,4.157818E-03,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
14,I DIFF LB,,,one,4.068515E-03,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
15,I DIFF LC,,,one,1.899858E-01,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
16,I BIAS,,,A,6.681344E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
17,I DIFF LA MAG,,,A,2.440047E-03,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
18,I DIFF LB MAG,,,A,2.881186E-03,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
19,I DIFF LC MAG,,,A,1.145064E-01,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
20,I DIFF NS MAG,,,A,3.879977E-02,0,0,-32767,32767,1.00000000,1.00000000,P
|
||||||
|
1,87L Id>StartA,,,0
|
||||||
|
2,87L Id>StartB,,,0
|
||||||
|
3,87L Id>StartC,,,0
|
||||||
|
4,87L Id>Trip A,,,0
|
||||||
|
5,87L Id>Trip B,,,0
|
||||||
|
6,87L Id>Trip C,,,0
|
||||||
|
7,87L Tr Local,,,0
|
||||||
|
8,87L Tr Remote,,,0
|
||||||
|
9,67N Start FW,,,0
|
||||||
|
10,67N Start RV,,,0
|
||||||
|
11,67NComSchTrp,,,0
|
||||||
|
12,LED Reset,,,0
|
||||||
|
13,67 I>Start LA,,,0
|
||||||
|
14,67 I>Start LB,,,0
|
||||||
|
15,67 I>Start LC,,,0
|
||||||
|
16,67 I> Trip,,,0
|
||||||
|
17,BusCB Trip LA,,,0
|
||||||
|
18,BusCB Trip LB,,,0
|
||||||
|
19,BusCB Trip LC,,,0
|
||||||
|
20,TieCB Trip LA,,,0
|
||||||
|
21,TieCB Trip LB,,,0
|
||||||
|
22,TieCB Trip LC,,,0
|
||||||
|
23,BusCB StBF LA,,,0
|
||||||
|
24,BusCB StBF LB,,,0
|
||||||
|
25,BusCB StBF LC,,,0
|
||||||
|
26,Bus CB Master,,,0
|
||||||
|
27,Tie CB Master,,,0
|
||||||
|
28,Rx AR Perm 1P,,,0
|
||||||
|
29,Rx AR 1PTProg,,,0
|
||||||
|
30,Tx AR Start,,,0
|
||||||
|
31,Tx AR Trip 3P,,,0
|
||||||
|
32,Tx AR Inhibit,,,0
|
||||||
|
33,BusCB 3P Trip,,,0
|
||||||
|
34,TieCB 3PTrip,,,0
|
||||||
|
35,87L 2 Harm LA,,,0
|
||||||
|
36,87L 2 Harm LB,,,0
|
||||||
|
37,87L 2 Harm LC,,,0
|
||||||
|
38,87L 5 Harm LA,,,0
|
||||||
|
39,87L 5 Harm LB,,,0
|
||||||
|
40,87L 5 Harm LC,,,0
|
||||||
|
41,87L Blocked,,,0
|
||||||
|
42,87L Restrnd,,,0
|
||||||
|
43,87L Unrestrnd,,,0
|
||||||
|
44,87L Enhanced,,,0
|
||||||
|
45,87LSustndCurr,,,0
|
||||||
|
46,Open CT Alarm,,,0
|
||||||
|
47,67 2Harmonic,,,0
|
||||||
|
48,67N 2Harmonic,,,0
|
||||||
|
49,ParamSetGrp 1,,,0
|
||||||
|
50,BusMec St CBF,,,0
|
||||||
|
51,TieMec St CBF,,,0
|
||||||
|
52,Spare Input1,,,0
|
||||||
|
53,Spare Input2,,,0
|
||||||
|
54,Spare Input3,,,0
|
||||||
|
55,MU1 DataError,,,0
|
||||||
|
56,MU1SynchAlarm,,,0
|
||||||
|
57,MU1SampleLost,,,0
|
||||||
|
58,MU1-IED Drift,,,0
|
||||||
|
59,MU1 Test Mode,,,0
|
||||||
|
60,MU2 DataError,,,0
|
||||||
|
61,MU2SynchAlarm,,,0
|
||||||
|
62,MU2SampleLost,,,0
|
||||||
|
63,MU2-IED Drift,,,0
|
||||||
|
64,MU2 Test Mode,,,0
|
||||||
|
65,MU3 DataError,,,0
|
||||||
|
66,MU3SynchAlarm,,,0
|
||||||
|
67,MU3SampleLost,,,0
|
||||||
|
68,MU3-IED Drift,,,0
|
||||||
|
69,MU3 Test Mode,,,0
|
||||||
|
70,TieCB StBF LA,,,0
|
||||||
|
71,TieCB StBF LB,,,0
|
||||||
|
72,TieCB StBF LC,,,0
|
||||||
|
73,LDCM1CommFail,,,0
|
||||||
|
74,Rx DTT3 no BU,,,0
|
||||||
|
75,A10TxDTT3noBU,,,0
|
||||||
|
76,IO-Card Fail,,,0
|
||||||
|
77,AR Isolated,,,0
|
||||||
|
78,Rx DTT1withBU,,,0
|
||||||
|
79,Rx Perm DEF,,,0
|
||||||
|
80,Tx Perm DEF,,,0
|
||||||
|
81,67 Start FW,,,0
|
||||||
|
82,67 Start RV,,,0
|
||||||
|
83,VT SupplyFail,,,0
|
||||||
|
84,Dist Rec Made,,,0
|
||||||
|
50
|
||||||
|
1
|
||||||
|
1000,11001
|
||||||
|
31/03/2017,22:01:11.125094
|
||||||
|
31/03/2017,22:01:12.126097
|
||||||
|
BINARY
|
||||||
|
1
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,40 @@
|
||||||
|
南自线路保护PSL603,78,1999
|
||||||
|
22,15A,7D
|
||||||
|
1,1-Ia,A,,A,0.001740,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
2,2-Ib,B,,A,0.001740,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
3,3-Ic,C,,A,0.001740,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
4,4-3I0,N,,A,0.001740,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
5,5-Ua,A,,V,0.003052,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
6,6-Ub,B,,V,0.003052,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
7,7-Uc,C,,V,0.003052,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
8,8-3U0,N,,V,0.012207,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
9,9-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
10,10-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
11,11-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
12,12-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
13,13-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
14,14-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
15,15-AI,N,, ,1.000000,0.000000,0.000000,-32767,32767,1.00,1.00,S
|
||||||
|
1,1-A相跳闸,,,0
|
||||||
|
2,2-B相跳闸,,,0
|
||||||
|
3,3-C相跳闸,,,0
|
||||||
|
4,4-永跳,,,0
|
||||||
|
5,5-两组开关A相跳位,,,0
|
||||||
|
6,6-两组开关B相跳位,,,0
|
||||||
|
7,7-两组开关C相跳位,,,0
|
||||||
|
50
|
||||||
|
10
|
||||||
|
1000,200
|
||||||
|
1000,400
|
||||||
|
1000,600
|
||||||
|
1000,800
|
||||||
|
1000,950
|
||||||
|
1000,950
|
||||||
|
1000,950
|
||||||
|
1000,950
|
||||||
|
1000,950
|
||||||
|
1000,950
|
||||||
|
24/12/2012,17:30:48.384000
|
||||||
|
24/12/2012,17:30:48.384000
|
||||||
|
ASCII
|
||||||
|
1
|
||||||
|
|
@ -0,0 +1,950 @@
|
||||||
|
1,0,000571,000010,000037,000013,000031,000015,000033,000020,000000,000000,000000,000000,000000,000000,000000,0,0,0,0,0,0,0
|
||||||
|
2,1000,000207,000008,000034,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
3,2000,-000170,000010,000036,000013,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
4,3000,-000532,000009,000041,000015,000033,000015,000035,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
5,4000,-000836,000009,000036,000013,000033,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
6,5000,-001057,000009,000035,000013,000034,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
7,6000,-001172,000008,000037,000013,000039,000017,000035,000023,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
8,7000,-001168,000009,000035,000013,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
9,8000,-001052,000002,000035,000012,000039,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
10,9000,-000823,000008,000037,000013,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
11,10000,-000512,000010,000037,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
12,11000,-000152,000008,000037,000016,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
13,12000,000227,000010,000037,000014,000041,000010,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
14,13000,000592,000010,000036,000013,000040,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
15,14000,000896,000010,000035,000014,000039,000010,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
16,15000,001115,000010,000037,000013,000035,000011,000025,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
17,16000,001229,000009,000037,000015,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
18,17000,001225,000008,000037,000014,000033,000012,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
19,18000,001106,000009,000033,000009,000032,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
20,19000,000879,000010,000037,000013,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
21,20000,000573,000010,000037,000014,000032,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
22,21000,000209,000008,000036,000014,000031,000015,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
23,22000,-000170,000008,000036,000013,000031,000015,000036,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
24,23000,-000533,000008,000036,000014,000034,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
25,24000,-000835,000011,000035,000013,000035,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
26,25000,-001057,000008,000035,000013,000035,000014,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
27,26000,-001171,000009,000035,000011,000035,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
28,27000,-001168,000009,000035,000014,000041,000017,000031,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
29,28000,-001047,000008,000035,000013,000040,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
30,29000,-000821,000009,000036,000012,000040,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
31,30000,-000513,000009,000036,000014,000041,000013,000026,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
32,31000,-000154,000008,000035,000011,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
33,32000,000229,000010,000037,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
34,33000,000590,000010,000037,000014,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
35,34000,000897,000009,000037,000014,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
36,35000,001116,000011,000037,000014,000037,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
37,36000,001230,000010,000037,000012,000035,000011,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
38,37000,001226,000009,000036,000014,000033,000012,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
39,38000,001106,000009,000037,000014,000033,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
40,39000,000886,000013,000038,000013,000033,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
41,40000,000570,000009,000036,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
42,41000,000209,000008,000037,000014,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
43,42000,-000171,000009,000035,000014,000031,000014,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
44,43000,-000531,000008,000035,000013,000029,000013,000032,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
45,44000,-000836,000009,000035,000014,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
46,45000,-001056,000009,000036,000013,000034,000014,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
47,46000,-001173,000010,000036,000014,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
48,47000,-001168,000009,000036,000013,000038,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
49,48000,-001048,000010,000041,000018,000038,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
50,49000,-000823,000008,000035,000013,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
51,50000,-000514,000006,000036,000014,000040,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
52,51000,-000152,000010,000037,000014,000042,000014,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
53,52000,000229,000010,000036,000014,000041,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
54,53000,000593,000011,000037,000014,000039,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
55,54000,000896,000010,000037,000014,000037,000013,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
56,55000,001116,000010,000037,000012,000037,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
57,56000,001230,000009,000037,000013,000034,000010,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
58,57000,001227,000009,000037,000014,000033,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
59,58000,001107,000008,000036,000014,000036,000016,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
60,59000,000881,000010,000037,000014,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
61,60000,000570,000009,000036,000014,000031,000015,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
62,61000,000209,000009,000036,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
63,62000,-000170,000008,000035,000014,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
64,63000,-000532,000009,000035,000013,000033,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
65,64000,-000836,000009,000035,000013,000034,000015,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
66,65000,-001057,000009,000036,000013,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
67,66000,-001172,000007,000036,000013,000039,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
68,67000,-001169,000006,000036,000014,000037,000014,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
69,68000,-001048,000007,000036,000014,000038,000013,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
70,69000,-000823,000009,000037,000014,000040,000014,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
71,70000,-000514,000009,000035,000014,000039,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
72,71000,-000152,000009,000036,000014,000042,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
73,72000,000229,000010,000037,000014,000036,000007,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
74,73000,000590,000009,000035,000013,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
75,74000,000894,000009,000035,000015,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
76,75000,001115,000009,000036,000013,000037,000011,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
77,76000,001230,000010,000036,000014,000036,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
78,77000,001227,000009,000036,000011,000033,000012,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
79,78000,001106,000010,000036,000014,000033,000013,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
80,79000,000881,000010,000036,000012,000031,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
81,80000,000570,000011,000037,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
82,81000,000208,000008,000036,000013,000030,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
83,82000,-000169,000009,000035,000013,000031,000016,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
84,83000,-000533,000007,000036,000014,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
85,84000,-000836,000008,000037,000014,000034,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
86,85000,-001056,000009,000034,000015,000036,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
87,86000,-001171,000010,000035,000013,000034,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
88,87000,-001168,000008,000035,000014,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
89,88000,-001047,000009,000036,000013,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
90,89000,-000822,000009,000036,000014,000039,000013,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
91,90000,-000514,000006,000037,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
92,91000,-000152,000010,000033,000012,000040,000009,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
93,92000,000229,000010,000036,000014,000040,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
94,93000,000588,000010,000037,000013,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
95,94000,000895,000010,000037,000014,000035,000009,000025,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
96,95000,001116,000009,000037,000014,000037,000010,000025,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
97,96000,001229,000009,000037,000014,000033,000013,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
98,97000,001227,000009,000037,000014,000033,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
99,98000,001106,000010,000037,000013,000033,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
100,99000,000880,000009,000038,000012,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
101,100000,000571,000008,000035,000013,000029,000013,000031,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
102,101000,000211,000008,000037,000014,000032,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
103,102000,-000171,000007,000037,000015,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
104,103000,-000531,000009,000035,000014,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
105,104000,-000838,000009,000035,000015,000034,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
106,105000,-001056,000010,000036,000014,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
107,106000,-001171,000010,000036,000013,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
108,107000,-001168,000009,000035,000013,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
109,108000,-001048,000008,000035,000014,000038,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
110,109000,-000823,000008,000037,000011,000040,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
111,110000,-000511,000010,000036,000014,000040,000012,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
112,111000,-000152,000009,000037,000013,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
113,112000,000228,000010,000035,000013,000041,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
114,113000,000589,000011,000033,000013,000037,000009,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
115,114000,000895,000009,000037,000013,000037,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
116,115000,001116,000010,000036,000012,000035,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
117,116000,001230,000010,000038,000011,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
118,117000,001226,000010,000037,000014,000033,000012,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
119,118000,001107,000010,000038,000013,000031,000013,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
120,119000,000881,000009,000036,000011,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
121,120000,000573,000010,000032,000008,000031,000015,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
122,121000,000209,000009,000036,000013,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
123,122000,-000171,000009,000036,000014,000032,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
124,123000,-000531,000008,000035,000014,000029,000015,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
125,124000,-000836,000009,000035,000013,000033,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
126,125000,-001060,000005,000036,000014,000035,000018,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
127,126000,-001172,000009,000036,000013,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
128,127000,-001168,000009,000036,000012,000039,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
129,128000,-001048,000009,000037,000013,000037,000011,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
130,129000,-000822,000009,000035,000014,000040,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
131,130000,-000513,000010,000036,000014,000041,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
132,131000,-000154,000009,000036,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
133,132000,000227,000009,000035,000013,000041,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
134,133000,000591,000010,000038,000015,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
135,134000,000895,000009,000038,000014,000038,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
136,135000,001116,000009,000037,000014,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
137,136000,001231,000009,000037,000014,000033,000010,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
138,137000,001226,000007,000037,000013,000034,000012,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
139,138000,001105,000008,000037,000014,000031,000014,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
140,139000,000877,000006,000036,000014,000031,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
141,140000,000573,000009,000037,000014,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
142,141000,000209,000009,000035,000012,000029,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
143,142000,-000171,000008,000035,000013,000029,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
144,143000,-000531,000008,000037,000014,000028,000010,000031,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
145,144000,-000837,000008,000036,000014,000034,000015,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
146,145000,-001058,000008,000035,000013,000035,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
147,146000,-001172,000008,000035,000014,000036,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
148,147000,-001167,000010,000032,000009,000039,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
149,148000,-001048,000009,000035,000014,000039,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
150,149000,-000822,000011,000036,000013,000039,000013,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
151,150000,-000513,000008,000037,000013,000040,000011,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
152,151000,-000154,000007,000036,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
153,152000,000230,000010,000035,000013,000040,000010,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
154,153000,000589,000010,000038,000014,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
155,154000,000896,000008,000035,000014,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
156,155000,001114,000010,000037,000013,000039,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
157,156000,001230,000009,000038,000013,000035,000012,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
158,157000,001228,000009,000036,000014,000034,000011,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
159,158000,001107,000010,000037,000015,000032,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
160,159000,000880,000009,000036,000013,000031,000014,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
161,160000,000570,000009,000036,000013,000031,000014,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
162,161000,000207,000008,000036,000012,000031,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
163,162000,-000170,000009,000037,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
164,163000,-000531,000008,000036,000013,000032,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
165,164000,-000837,000008,000036,000012,000033,000015,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
166,165000,-001057,000008,000037,000014,000035,000017,000038,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
167,166000,-001172,000008,000036,000014,000036,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
168,167000,-001170,000009,000037,000014,000038,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
169,168000,-001049,000008,000037,000014,000039,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
170,169000,-000822,000009,000035,000014,000037,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
171,170000,-000512,000008,000037,000013,000040,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
172,171000,-000153,000008,000037,000013,000041,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
173,172000,000228,000009,000037,000013,000041,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
174,173000,000591,000010,000036,000012,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
175,174000,000895,000010,000036,000014,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
176,175000,001115,000009,000037,000013,000035,000012,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
177,176000,001230,000010,000038,000013,000035,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
178,177000,001228,000011,000037,000013,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
179,178000,001107,000009,000037,000014,000033,000014,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
180,179000,000879,000008,000037,000014,000033,000015,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
181,180000,000574,000011,000037,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
182,181000,000210,000009,000037,000014,000030,000016,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
183,182000,-000170,000010,000037,000013,000030,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
184,183000,-000531,000008,000035,000011,000030,000014,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
185,184000,-000836,000009,000036,000013,000035,000018,000034,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
186,185000,-001057,000008,000035,000014,000036,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
187,186000,-001170,000009,000036,000013,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
188,187000,-001168,000011,000037,000013,000038,000014,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
189,188000,-001047,000010,000037,000015,000037,000014,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
190,189000,-000821,000009,000036,000013,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
191,190000,-000515,000010,000037,000012,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
192,191000,-000152,000009,000037,000013,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
193,192000,000230,000010,000038,000013,000041,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
194,193000,000590,000011,000035,000013,000040,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
195,194000,000896,000011,000036,000012,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
196,195000,001115,000009,000035,000011,000035,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
197,196000,001230,000010,000037,000014,000032,000009,000028,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
198,197000,001227,000011,000038,000014,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
199,198000,001106,000011,000036,000014,000032,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
200,199000,000881,000011,000035,000014,000031,000015,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
201,17092000,-000512,000011,000037,000013,000039,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
202,17093000,-000152,000010,000037,000013,000041,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
203,17094000,000227,000011,000036,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
204,17095000,000590,000009,000036,000013,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
205,17096000,000895,000008,000035,000013,000038,000010,000024,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
206,17097000,001116,000009,000038,000015,000036,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
207,17098000,001228,000008,000036,000013,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
208,17099000,001227,000010,000037,000014,000034,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
209,17100000,001106,000010,000036,000013,000032,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
210,17101000,000881,000010,000036,000013,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
211,17102000,000571,000009,000040,000015,000033,000017,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
212,17103000,000210,000010,000037,000014,000032,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
213,17104000,-000170,000009,000036,000015,000033,000016,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
214,17105000,-000532,000010,000037,000015,000031,000015,000035,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
215,17106000,-000837,000008,000035,000013,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
216,17107000,-001056,000009,000037,000013,000035,000017,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
217,17108000,-001173,000009,000031,000009,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
218,17109000,-001168,000009,000035,000014,000037,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
219,17110000,-001047,000008,000035,000013,000040,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
220,17111000,-000823,000009,000037,000013,000039,000014,000026,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
221,17112000,-000515,000008,000036,000013,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
222,17113000,-000152,000009,000036,000014,000039,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
223,17114000,000228,000009,000037,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
224,17115000,000589,000010,000037,000014,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
225,17116000,000895,000010,000035,000012,000038,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
226,17117000,001115,000009,000037,000014,000033,000006,000028,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
227,17118000,001230,000010,000038,000014,000036,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
228,17119000,001227,000010,000035,000014,000033,000012,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
229,17120000,001107,000011,000037,000013,000034,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
230,17121000,000881,000010,000036,000014,000031,000013,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
231,17122000,000571,000010,000040,000013,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
232,17123000,000209,000008,000038,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
233,17124000,-000171,000009,000036,000014,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
234,17125000,-000531,000008,000036,000012,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
235,17126000,-000836,000011,000036,000014,000035,000017,000035,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
236,17127000,-001057,000009,000037,000013,000035,000015,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
237,17128000,-001172,000008,000036,000013,000037,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
238,17129000,-001163,000012,000036,000014,000038,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
239,17130000,-001048,000009,000036,000013,000039,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
240,17131000,-000822,000008,000036,000013,000040,000014,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
241,17132000,-000512,000009,000037,000014,000041,000014,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
242,17133000,-000152,000009,000036,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
243,17134000,000228,000009,000035,000014,000041,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
244,17135000,000590,000010,000035,000013,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
245,17136000,000895,000010,000037,000013,000038,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
246,17137000,001114,000008,000037,000013,000037,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
247,17138000,001232,000013,000033,000012,000034,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
248,17139000,001226,000010,000036,000012,000033,000012,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
249,17140000,001106,000010,000037,000014,000033,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
250,17141000,000881,000007,000036,000015,000031,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
251,17142000,000570,000009,000036,000013,000030,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
252,17143000,000209,000008,000037,000014,000031,000017,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
253,17144000,-000168,000010,000035,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
254,17145000,-000532,000008,000035,000014,000033,000018,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
255,17146000,-000836,000008,000035,000014,000033,000016,000035,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
256,17147000,-001056,000008,000036,000013,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
257,17148000,-001172,000008,000038,000015,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
258,17149000,-001169,000008,000036,000014,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
259,17150000,-001048,000009,000035,000015,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
260,17151000,-000823,000008,000036,000012,000041,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
261,17152000,-000511,000010,000037,000014,000041,000012,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
262,17153000,-000153,000008,000036,000014,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
263,17154000,000230,000010,000036,000014,000041,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
264,17155000,000589,000008,000038,000013,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
265,17156000,000895,000009,000036,000014,000038,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
266,17157000,001115,000009,000037,000014,000037,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
267,17158000,001228,000008,000037,000013,000035,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
268,17159000,001222,000005,000038,000013,000032,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
269,17160000,001106,000010,000038,000014,000031,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
270,17161000,000881,000010,000037,000014,000032,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
271,17162000,000570,000009,000038,000015,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
272,17163000,000209,000010,000036,000013,000027,000011,000034,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
273,17164000,-000170,000009,000035,000014,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
274,17165000,-000531,000010,000034,000013,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
275,17166000,-000837,000010,000035,000011,000034,000016,000036,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
276,17167000,-001057,000009,000036,000013,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
277,17168000,-001172,000009,000036,000012,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
278,17169000,-001169,000008,000036,000011,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
279,17170000,-001049,000008,000036,000013,000037,000012,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
280,17171000,-000823,000010,000036,000014,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
281,17172000,-000516,000006,000035,000012,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
282,17173000,-000152,000009,000035,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
283,17174000,000229,000009,000035,000013,000040,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
284,17175000,000589,000009,000040,000017,000037,000008,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
285,17176000,000895,000010,000037,000015,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
286,17177000,001117,000009,000037,000015,000035,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
287,17178000,001229,000010,000036,000015,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
288,17179000,001227,000010,000037,000014,000033,000011,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
289,17180000,001106,000010,000036,000014,000031,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
290,17181000,000879,000008,000040,000017,000032,000014,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
291,17182000,000570,000009,000035,000012,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
292,17183000,000209,000009,000036,000013,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
293,17184000,-000170,000007,000036,000013,000032,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
294,17185000,-000531,000009,000035,000013,000036,000019,000033,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
295,17186000,-000836,000008,000036,000013,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
296,17187000,-001056,000009,000035,000013,000035,000018,000034,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
297,17188000,-001171,000008,000036,000013,000036,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
298,17189000,-001170,000009,000035,000011,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
299,17190000,-001048,000009,000036,000014,000039,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
300,17191000,-000821,000008,000035,000013,000039,000012,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
301,17192000,-000514,000009,000035,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
302,17193000,-000152,000009,000036,000015,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
303,17194000,000231,000011,000039,000015,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
304,17195000,000591,000010,000036,000014,000039,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
305,17196000,000895,000010,000036,000012,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
306,17197000,001116,000009,000037,000015,000035,000009,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
307,17198000,001230,000009,000036,000014,000033,000011,000026,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
308,17199000,001226,000009,000037,000013,000034,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
309,17200000,001104,000008,000037,000014,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
310,17201000,000880,000010,000037,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
311,17202000,000571,000008,000037,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
312,17203000,000209,000009,000035,000012,000031,000014,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
313,17204000,-000171,000009,000035,000013,000031,000017,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
314,17205000,-000531,000009,000036,000013,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
315,17206000,-000836,000008,000035,000013,000033,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
316,17207000,-001057,000008,000035,000014,000034,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
317,17208000,-001173,000009,000035,000013,000036,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
318,17209000,-001168,000009,000037,000014,000037,000016,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
319,17210000,-001046,000008,000035,000013,000038,000014,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
320,17211000,-000823,000008,000036,000013,000039,000012,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
321,17212000,-000515,000008,000037,000014,000040,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
322,17213000,-000148,000013,000035,000014,000041,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
323,17214000,000228,000008,000037,000014,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
324,17215000,000590,000010,000036,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
325,17216000,000895,000010,000038,000014,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
326,17217000,001116,000009,000037,000014,000036,000008,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
327,17218000,001230,000009,000038,000013,000034,000012,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
328,17219000,001227,000010,000037,000015,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
329,17220000,001106,000009,000038,000014,000032,000013,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
330,17221000,000880,000009,000036,000013,000031,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
331,17222000,000575,000012,000033,000010,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
332,17223000,000209,000010,000037,000013,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
333,17224000,-000170,000007,000035,000013,000032,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
334,17225000,-000531,000009,000036,000013,000034,000017,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
335,17226000,-000837,000008,000036,000013,000033,000016,000035,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
336,17227000,-001056,000009,000037,000014,000035,000016,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
337,17228000,-001172,000008,000036,000012,000037,000016,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
338,17229000,-001169,000009,000036,000012,000036,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
339,17230000,-001048,000009,000035,000012,000036,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
340,17231000,-000821,000010,000036,000014,000037,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
341,17232000,-000512,000009,000036,000013,000041,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
342,17233000,-000153,000009,000037,000014,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
343,17234000,000228,000009,000036,000013,000041,000011,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
344,17235000,000590,000009,000042,000018,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
345,17236000,000896,000011,000037,000013,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
346,17237000,001115,000011,000036,000014,000036,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
347,17238000,001230,000010,000037,000014,000036,000012,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
348,17239000,001228,000010,000036,000014,000033,000012,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
349,17240000,001109,000011,000037,000014,000032,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
350,17241000,000886,000014,000037,000014,000032,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
351,17242000,000571,000009,000037,000014,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
352,17243000,000209,000009,000037,000012,000030,000015,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
353,17244000,-000171,000008,000038,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
354,17245000,-000531,000009,000036,000011,000028,000011,000034,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
355,17246000,-000836,000009,000035,000014,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
356,17247000,-001056,000009,000036,000013,000034,000016,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
357,17248000,-001172,000008,000034,000013,000037,000016,000034,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
358,17249000,-001164,000011,000036,000015,000037,000014,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
359,17250000,-001048,000008,000036,000013,000039,000013,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
360,17251000,-000823,000008,000035,000014,000042,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
361,17252000,-000514,000008,000035,000013,000041,000011,000025,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
362,17253000,-000151,000010,000038,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
363,17254000,000228,000009,000036,000013,000041,000008,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
364,17255000,000590,000009,000037,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
365,17256000,000895,000009,000036,000013,000038,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
366,17257000,001116,000010,000040,000017,000037,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
367,17258000,001231,000009,000038,000013,000036,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
368,17259000,001226,000009,000038,000014,000034,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
369,17260000,001107,000009,000037,000013,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
370,17261000,000880,000008,000036,000013,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
371,17262000,000570,000009,000035,000013,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
372,17263000,000213,000013,000038,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
373,17264000,-000170,000009,000037,000014,000031,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
374,17265000,-000532,000009,000036,000014,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
375,17266000,-000836,000008,000036,000013,000035,000016,000035,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
376,17267000,-001058,000008,000035,000012,000036,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
377,17268000,-001172,000007,000036,000013,000037,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
378,17269000,-001169,000009,000036,000014,000038,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
379,17270000,-001048,000009,000035,000012,000037,000013,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
380,17271000,-000823,000009,000037,000014,000044,000016,000029,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
381,17272000,-000512,000010,000035,000014,000041,000012,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
382,17273000,-000152,000010,000035,000012,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
383,17274000,000229,000010,000034,000013,000042,000011,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
384,17275000,000590,000010,000035,000014,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
385,17276000,000895,000011,000040,000016,000038,000009,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
386,17277000,001115,000011,000036,000013,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
387,17278000,001229,000010,000037,000014,000033,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
388,17279000,001227,000008,000036,000014,000033,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
389,17280000,001106,000009,000037,000014,000033,000012,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
390,17281000,000881,000009,000036,000014,000033,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
391,17282000,000577,000013,000036,000014,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
392,17283000,000209,000009,000037,000014,000031,000017,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
393,17284000,-000170,000008,000035,000012,000029,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
394,17285000,-000532,000009,000037,000014,000033,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
395,17286000,-000836,000007,000035,000014,000036,000018,000033,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
396,17287000,-001057,000008,000035,000014,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
397,17288000,-001172,000008,000033,000014,000036,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
398,17289000,-001168,000009,000036,000014,000036,000015,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
399,17290000,-001048,000008,000037,000014,000039,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
400,17291000,-000824,000009,000035,000013,000040,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
401,17092000,-001057,000009,000035,000014,000036,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
402,17093000,-001171,000008,000035,000013,000037,000014,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
403,17094000,-001168,000008,000035,000013,000038,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
404,17095000,-001047,000010,000035,000012,000039,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
405,17096000,-000825,000008,000035,000012,000040,000014,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
406,17097000,-000514,000008,000036,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
407,17098000,-000151,000010,000037,000013,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
408,17099000,000228,000009,000036,000012,000039,000010,000025,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
409,17100000,000591,000009,000037,000014,000038,000010,000022,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
410,17101000,000896,000010,000037,000015,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
411,17102000,001114,000007,000037,000014,000035,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
412,17103000,001229,000008,000036,000014,000035,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
413,17104000,001227,000009,000037,000013,000033,000011,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
414,17105000,001106,000008,000037,000014,000033,000013,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
415,17106000,000881,000009,000037,000015,000033,000016,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
416,17107000,000570,000010,000037,000013,000032,000017,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
417,17108000,000209,000009,000036,000014,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
418,17109000,-000170,000009,000036,000011,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
419,17110000,-000531,000007,000035,000012,000032,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
420,17111000,-000838,000007,000035,000013,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
421,17112000,-001059,000009,000037,000015,000037,000017,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
422,17113000,-001171,000010,000036,000013,000036,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
423,17114000,-001168,000009,000035,000013,000038,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
424,17115000,-001047,000008,000036,000013,000039,000014,000035,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
425,17116000,-000823,000007,000036,000013,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
426,17117000,-000512,000008,000037,000015,000040,000012,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
427,17118000,-000153,000009,000035,000013,000040,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
428,17119000,000229,000011,000037,000013,000040,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
429,17120000,000591,000010,000040,000017,000041,000012,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
430,17121000,000895,000009,000036,000015,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
431,17122000,001115,000010,000039,000014,000035,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
432,17123000,001230,000009,000037,000013,000034,000010,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
433,17124000,001228,000010,000037,000013,000033,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
434,17125000,001106,000010,000037,000012,000033,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
435,17126000,000880,000008,000037,000013,000032,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
436,17127000,000571,000010,000041,000017,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
437,17128000,000209,000010,000037,000015,000032,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
438,17129000,-000170,000010,000037,000014,000031,000017,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
439,17130000,-000531,000009,000035,000014,000031,000015,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
440,17131000,-000836,000007,000035,000013,000034,000016,000037,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
441,17132000,-001060,000008,000035,000013,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
442,17133000,-001171,000008,000035,000014,000037,000016,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
443,17134000,-001168,000009,000037,000013,000039,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
444,17135000,-001048,000008,000035,000013,000039,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
445,17136000,-000823,000009,000035,000014,000040,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
446,17137000,-000514,000009,000036,000014,000041,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
447,17138000,-000152,000009,000037,000014,000041,000011,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
448,17139000,000228,000010,000036,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
449,17140000,000590,000009,000036,000014,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
450,17141000,000895,000010,000041,000019,000037,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
451,17142000,001116,000011,000038,000014,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
452,17143000,001230,000011,000037,000013,000035,000012,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
453,17144000,001228,000010,000037,000014,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
454,17145000,001106,000010,000036,000013,000030,000011,000029,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
455,17146000,000881,000010,000037,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
456,17147000,000571,000008,000037,000013,000030,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
457,17148000,000206,000003,000037,000014,000030,000014,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
458,17149000,-000170,000009,000036,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
459,17150000,-000532,000008,000036,000013,000033,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
460,17151000,-000836,000007,000038,000014,000034,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
461,17152000,-001057,000010,000035,000012,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
462,17153000,-001171,000008,000035,000014,000036,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
463,17154000,-001168,000008,000036,000014,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
464,17155000,-001049,000008,000036,000014,000040,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
465,17156000,-000823,000008,000033,000010,000040,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
466,17157000,-000513,000008,000035,000014,000040,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
467,17158000,-000154,000009,000036,000013,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
468,17159000,000228,000008,000037,000012,000043,000013,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
469,17160000,000591,000010,000036,000013,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
470,17161000,000897,000010,000036,000014,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
471,17162000,001116,000010,000038,000015,000036,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
472,17163000,001229,000010,000037,000013,000036,000010,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
473,17164000,001228,000010,000037,000014,000034,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
474,17165000,001107,000009,000039,000014,000035,000015,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
475,17166000,000881,000009,000037,000013,000033,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
476,17167000,000570,000009,000037,000014,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
477,17168000,000209,000009,000037,000014,000032,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
478,17169000,-000172,000008,000036,000014,000032,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
479,17170000,-000533,000008,000035,000013,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
480,17171000,-000837,000009,000033,000010,000035,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
481,17172000,-001057,000009,000035,000014,000036,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
482,17173000,-001172,000010,000036,000014,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
483,17174000,-001168,000008,000036,000013,000037,000015,000037,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
484,17175000,-001046,000011,000036,000013,000039,000015,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
485,17176000,-000822,000008,000036,000014,000040,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
486,17177000,-000514,000008,000036,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
487,17178000,-000152,000008,000038,000016,000037,000009,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
488,17179000,000228,000009,000037,000013,000039,000009,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
489,17180000,000591,000008,000037,000013,000040,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
490,17181000,000895,000010,000036,000013,000037,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
491,17182000,001116,000008,000037,000013,000036,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
492,17183000,001229,000010,000036,000014,000034,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
493,17184000,001228,000010,000041,000018,000033,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
494,17185000,001106,000010,000037,000013,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
495,17186000,000882,000010,000037,000013,000031,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
496,17187000,000571,000009,000037,000012,000033,000015,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
497,17188000,000211,000009,000037,000014,000031,000015,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
498,17189000,-000173,000007,000035,000014,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
499,17190000,-000535,000005,000036,000013,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
500,17191000,-000838,000008,000036,000012,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
501,17192000,-001057,000009,000037,000014,000036,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
502,17193000,-001172,000009,000035,000014,000033,000011,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
503,17194000,-001168,000008,000035,000014,000038,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
504,17195000,-001047,000010,000035,000013,000039,000013,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
505,17196000,-000822,000008,000038,000014,000039,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
506,17197000,-000514,000008,000034,000011,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
507,17198000,-000152,000010,000036,000013,000042,000012,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
508,17199000,000228,000008,000035,000013,000040,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
509,17200000,000589,000010,000037,000014,000041,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
510,17201000,000895,000010,000037,000014,000037,000013,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
511,17202000,001118,000012,000038,000015,000036,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
512,17203000,001232,000012,000035,000014,000036,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
513,17204000,001227,000010,000036,000013,000033,000011,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
514,17205000,001106,000009,000035,000013,000033,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
515,17206000,000879,000008,000037,000014,000035,000015,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
516,17207000,000571,000010,000036,000013,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
517,17208000,000211,000010,000035,000014,000031,000014,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
518,17209000,-000171,000009,000036,000014,000031,000016,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
519,17210000,-000532,000009,000036,000014,000032,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
520,17211000,-000836,000010,000037,000014,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
521,17212000,-001057,000009,000034,000011,000035,000017,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
522,17213000,-001172,000010,000037,000012,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
523,17214000,-001169,000008,000035,000014,000038,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
524,17215000,-001047,000008,000036,000013,000040,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
525,17216000,-000824,000008,000036,000014,000039,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
526,17217000,-000513,000009,000036,000014,000041,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
527,17218000,-000153,000009,000036,000011,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
528,17219000,000228,000009,000041,000017,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
529,17220000,000591,000010,000035,000013,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
530,17221000,000895,000010,000038,000015,000039,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
531,17222000,001114,000009,000036,000013,000036,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
532,17223000,001230,000009,000037,000013,000035,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
533,17224000,001226,000010,000036,000013,000033,000011,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
534,17225000,001109,000011,000037,000013,000032,000013,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
535,17226000,000881,000010,000037,000013,000032,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
536,17227000,000571,000009,000038,000013,000031,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
537,17228000,000209,000009,000037,000011,000030,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
538,17229000,-000170,000009,000035,000013,000031,000014,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
539,17230000,-000531,000008,000036,000013,000034,000014,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
540,17231000,-000838,000009,000037,000014,000033,000018,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
541,17232000,-001058,000009,000037,000012,000036,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
542,17233000,-001172,000007,000034,000012,000034,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
543,17234000,-001168,000009,000035,000012,000039,000018,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
544,17235000,-001047,000008,000036,000013,000038,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
545,17236000,-000822,000009,000036,000013,000041,000014,000032,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
546,17237000,-000512,000010,000036,000013,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
547,17238000,-000152,000010,000036,000014,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
548,17239000,000228,000009,000036,000011,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
549,17240000,000589,000010,000036,000012,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
550,17241000,000895,000009,000037,000013,000037,000008,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
551,17242000,001116,000009,000038,000014,000035,000011,000022,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
552,17243000,001230,000009,000035,000013,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
553,17244000,001227,000011,000037,000014,000031,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
554,17245000,001107,000010,000036,000014,000032,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
555,17246000,000881,000010,000036,000014,000031,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
556,17247000,000571,000010,000038,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
557,17248000,000209,000008,000035,000013,000029,000014,000034,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
558,17249000,-000170,000009,000035,000013,000032,000016,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
559,17250000,-000531,000009,000034,000012,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
560,17251000,-000836,000009,000036,000014,000034,000015,000035,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
561,17252000,-001057,000008,000035,000013,000037,000017,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
562,17253000,-001170,000010,000031,000009,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
563,17254000,-001168,000008,000036,000012,000039,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
564,17255000,-001048,000008,000037,000013,000039,000014,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
565,17256000,-000821,000010,000036,000014,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
566,17257000,-000517,000005,000036,000013,000040,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
567,17258000,-000154,000008,000036,000012,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
568,17259000,000229,000010,000036,000013,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
569,17260000,000591,000010,000040,000016,000042,000013,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
570,17261000,000895,000009,000036,000014,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
571,17262000,001116,000009,000036,000013,000036,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
572,17263000,001230,000009,000037,000013,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
573,17264000,001226,000009,000037,000013,000033,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
574,17265000,001106,000010,000037,000013,000031,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
575,17266000,000878,000008,000035,000012,000033,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
576,17267000,000573,000010,000036,000015,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
577,17268000,000209,000009,000037,000014,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
578,17269000,-000171,000009,000036,000012,000032,000016,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
579,17270000,-000533,000008,000037,000012,000031,000016,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
580,17271000,-000836,000009,000035,000014,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
581,17272000,-001054,000011,000038,000013,000037,000017,000033,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
582,17273000,-001170,000010,000035,000013,000035,000015,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
583,17274000,-001169,000008,000037,000014,000040,000015,000032,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
584,17275000,-001047,000008,000036,000012,000041,000016,000031,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
585,17276000,-000822,000008,000035,000014,000040,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
586,17277000,-000513,000008,000036,000013,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
587,17278000,-000152,000008,000035,000014,000040,000012,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
588,17279000,000228,000011,000038,000015,000038,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
589,17280000,000589,000010,000036,000014,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
590,17281000,000893,000009,000037,000014,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
591,17282000,001114,000010,000036,000014,000035,000009,000026,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
592,17283000,001229,000009,000037,000013,000035,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
593,17284000,001226,000009,000039,000015,000034,000012,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
594,17285000,001102,000007,000036,000013,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
595,17286000,000881,000008,000037,000013,000031,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
596,17287000,000571,000009,000037,000014,000033,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
597,17288000,000209,000009,000035,000011,000029,000015,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
598,17289000,-000170,000008,000036,000014,000031,000014,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
599,17290000,-000532,000008,000036,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
600,17291000,-000836,000008,000036,000014,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
601,17092000,000590,000009,000036,000014,000040,000010,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
602,17093000,000897,000009,000038,000014,000037,000011,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
603,17094000,001115,000010,000036,000014,000034,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
604,17095000,001228,000008,000037,000014,000035,000012,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
605,17096000,001225,000010,000035,000013,000033,000013,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
606,17097000,001106,000010,000037,000013,000032,000012,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
607,17098000,000882,000010,000036,000014,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
608,17099000,000570,000009,000037,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
609,17100000,000209,000009,000036,000013,000031,000016,000036,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
610,17101000,-000172,000007,000036,000013,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
611,17102000,-000530,000010,000035,000012,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
612,17103000,-000836,000008,000035,000014,000033,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
613,17104000,-001057,000008,000035,000012,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
614,17105000,-001172,000009,000037,000016,000038,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
615,17106000,-001168,000008,000035,000014,000037,000013,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
616,17107000,-001049,000008,000035,000014,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
617,17108000,-000823,000008,000034,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
618,17109000,-000514,000008,000035,000011,000040,000014,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
619,17110000,-000150,000012,000034,000011,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
620,17111000,000228,000009,000035,000013,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
621,17112000,000590,000010,000037,000014,000038,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
622,17113000,000897,000010,000037,000013,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
623,17114000,001114,000009,000037,000013,000037,000011,000025,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
624,17115000,001230,000009,000037,000014,000034,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
625,17116000,001228,000010,000037,000013,000032,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
626,17117000,001102,000003,000038,000013,000033,000011,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
627,17118000,000881,000008,000036,000013,000032,000013,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
628,17119000,000570,000009,000034,000013,000032,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
629,17120000,000210,000008,000035,000011,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
630,17121000,-000170,000009,000037,000014,000028,000013,000034,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
631,17122000,-000532,000009,000035,000014,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
632,17123000,-000836,000008,000037,000014,000034,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
633,17124000,-001057,000009,000036,000013,000035,000015,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
634,17125000,-001172,000009,000035,000013,000036,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
635,17126000,-001167,000010,000036,000011,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
636,17127000,-001047,000010,000037,000013,000040,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
637,17128000,-000823,000007,000036,000014,000039,000011,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
638,17129000,-000514,000009,000035,000012,000041,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
639,17130000,-000152,000009,000037,000014,000040,000010,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
640,17131000,000231,000011,000037,000014,000041,000011,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
641,17132000,000590,000010,000037,000014,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
642,17133000,000896,000009,000037,000013,000039,000009,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
643,17134000,001114,000010,000037,000013,000036,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
644,17135000,001230,000009,000037,000013,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
645,17136000,001228,000010,000037,000014,000030,000007,000030,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
646,17137000,001108,000010,000037,000014,000032,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
647,17138000,000881,000009,000036,000015,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
648,17139000,000573,000010,000037,000015,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
649,17140000,000209,000009,000037,000014,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
650,17141000,-000168,000011,000037,000013,000031,000015,000035,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
651,17142000,-000532,000009,000040,000018,000031,000015,000034,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
652,17143000,-000836,000010,000036,000012,000033,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
653,17144000,-001058,000010,000037,000014,000035,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
654,17145000,-001172,000009,000036,000014,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
655,17146000,-001168,000009,000036,000014,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
656,17147000,-001051,000005,000036,000013,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
657,17148000,-000823,000008,000036,000013,000039,000012,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
658,17149000,-000513,000008,000035,000011,000039,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
659,17150000,-000153,000009,000040,000018,000041,000014,000028,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
660,17151000,000228,000009,000036,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
661,17152000,000589,000010,000036,000013,000040,000009,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
662,17153000,000897,000011,000037,000014,000038,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
663,17154000,001115,000010,000038,000014,000036,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
664,17155000,001230,000008,000038,000013,000035,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
665,17156000,001224,000009,000038,000014,000033,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
666,17157000,001107,000010,000037,000015,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
667,17158000,000880,000011,000038,000013,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
668,17159000,000571,000010,000037,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
669,17160000,000209,000008,000038,000013,000031,000014,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
670,17161000,-000170,000008,000036,000014,000031,000016,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
671,17162000,-000530,000008,000037,000013,000031,000017,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
672,17163000,-000836,000009,000036,000013,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
673,17164000,-001058,000008,000035,000012,000035,000018,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
674,17165000,-001170,000009,000039,000014,000035,000014,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
675,17166000,-001168,000009,000035,000012,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
676,17167000,-001048,000009,000038,000011,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
677,17168000,-000823,000009,000035,000013,000040,000014,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
678,17169000,-000514,000008,000036,000013,000040,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
679,17170000,-000153,000009,000035,000014,000041,000012,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
680,17171000,000228,000010,000036,000013,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
681,17172000,000590,000009,000036,000014,000039,000009,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
682,17173000,000893,000010,000036,000014,000036,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
683,17174000,001114,000009,000037,000015,000036,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
684,17175000,001232,000010,000038,000014,000035,000012,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
685,17176000,001228,000011,000038,000014,000033,000012,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
686,17177000,001107,000009,000037,000013,000033,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
687,17178000,000881,000010,000037,000015,000031,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
688,17179000,000571,000009,000036,000014,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
689,17180000,000209,000009,000037,000014,000029,000013,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
690,17181000,-000171,000009,000035,000014,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
691,17182000,-000532,000009,000037,000015,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
692,17183000,-000837,000008,000035,000011,000033,000016,000035,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
693,17184000,-001058,000008,000035,000013,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
694,17185000,-001172,000010,000031,000009,000037,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
695,17186000,-001169,000009,000034,000011,000038,000015,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
696,17187000,-001048,000009,000036,000013,000040,000014,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
697,17188000,-000823,000009,000036,000014,000040,000012,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
698,17189000,-000512,000010,000035,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
699,17190000,-000152,000009,000035,000014,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
700,17191000,000228,000010,000035,000012,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
701,17192000,000590,000010,000038,000015,000041,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
702,17193000,000895,000010,000036,000014,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
703,17194000,001115,000010,000037,000014,000036,000010,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
704,17195000,001230,000009,000037,000014,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
705,17196000,001226,000010,000037,000012,000034,000012,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
706,17197000,001107,000010,000037,000013,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
707,17198000,000884,000013,000039,000016,000033,000013,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
708,17199000,000573,000011,000037,000013,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
709,17200000,000210,000010,000037,000013,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
710,17201000,-000170,000009,000037,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
711,17202000,-000531,000009,000036,000014,000033,000015,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
712,17203000,-000838,000006,000035,000013,000033,000016,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
713,17204000,-001056,000008,000035,000014,000035,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
714,17205000,-001172,000008,000036,000013,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
715,17206000,-001169,000008,000039,000015,000038,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
716,17207000,-001048,000008,000035,000014,000040,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
717,17208000,-000823,000008,000035,000013,000039,000014,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
718,17209000,-000514,000009,000037,000013,000039,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
719,17210000,-000154,000008,000036,000011,000039,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
720,17211000,000228,000009,000031,000010,000039,000011,000025,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
721,17212000,000590,000009,000036,000014,000040,000010,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
722,17213000,000895,000010,000036,000013,000037,000010,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
723,17214000,001116,000010,000036,000014,000037,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
724,17215000,001230,000009,000036,000014,000033,000010,000022,000016,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
725,17216000,001226,000007,000036,000012,000033,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
726,17217000,001102,000004,000037,000013,000031,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
727,17218000,000881,000009,000037,000014,000033,000014,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
728,17219000,000573,000009,000038,000013,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
729,17220000,000210,000008,000036,000011,000031,000013,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
730,17221000,-000171,000010,000036,000013,000033,000018,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
731,17222000,-000531,000009,000035,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
732,17223000,-000836,000008,000036,000014,000035,000016,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
733,17224000,-001056,000009,000037,000013,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
734,17225000,-001169,000013,000037,000013,000036,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
735,17226000,-001168,000008,000035,000014,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
736,17227000,-001047,000009,000037,000013,000037,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
737,17228000,-000823,000009,000035,000013,000039,000013,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
738,17229000,-000515,000009,000036,000014,000039,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
739,17230000,-000158,000003,000036,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
740,17231000,000228,000009,000036,000012,000039,000012,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
741,17232000,000591,000008,000035,000012,000040,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
742,17233000,000895,000008,000040,000017,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
743,17234000,001117,000009,000037,000014,000035,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
744,17235000,001230,000009,000037,000014,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
745,17236000,001226,000011,000038,000014,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
746,17237000,001106,000009,000037,000013,000032,000014,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
747,17238000,000881,000010,000036,000012,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
748,17239000,000568,000007,000035,000012,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
749,17240000,000210,000009,000037,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
750,17241000,-000168,000009,000036,000014,000031,000016,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
751,17242000,-000533,000010,000036,000013,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
752,17243000,-000836,000010,000035,000011,000033,000016,000036,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
753,17244000,-001057,000008,000036,000013,000036,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
754,17245000,-001170,000010,000036,000014,000037,000018,000033,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
755,17246000,-001169,000009,000035,000014,000038,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
756,17247000,-001049,000009,000036,000014,000040,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
757,17248000,-000823,000008,000035,000015,000039,000011,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
758,17249000,-000513,000010,000037,000012,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
759,17250000,-000153,000010,000035,000012,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
760,17251000,000229,000010,000036,000013,000038,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
761,17252000,000591,000011,000037,000014,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
762,17253000,000894,000010,000036,000014,000037,000011,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
763,17254000,001117,000011,000036,000015,000037,000009,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
764,17255000,001230,000010,000036,000014,000036,000012,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
765,17256000,001226,000009,000036,000013,000034,000012,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
766,17257000,001108,000009,000037,000014,000034,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
767,17258000,000875,000004,000037,000014,000031,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
768,17259000,000570,000010,000036,000015,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
769,17260000,000209,000008,000037,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
770,17261000,-000170,000010,000036,000012,000030,000015,000033,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
771,17262000,-000531,000009,000036,000014,000033,000018,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
772,17263000,-000837,000008,000037,000014,000032,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
773,17264000,-001057,000008,000035,000012,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
774,17265000,-001173,000008,000036,000013,000036,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
775,17266000,-001170,000009,000033,000009,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
776,17267000,-001048,000010,000036,000013,000040,000014,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
777,17268000,-000822,000007,000037,000013,000038,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
778,17269000,-000515,000008,000036,000013,000042,000014,000029,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
779,17270000,-000151,000009,000036,000015,000038,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
780,17271000,000225,000006,000036,000014,000038,000009,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
781,17272000,000589,000009,000037,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
782,17273000,000896,000009,000035,000012,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
783,17274000,001116,000010,000035,000012,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
784,17275000,001230,000009,000037,000014,000035,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
785,17276000,001226,000010,000037,000013,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
786,17277000,001106,000011,000036,000013,000033,000012,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
787,17278000,000881,000010,000037,000014,000031,000013,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
788,17279000,000570,000008,000036,000011,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
789,17280000,000211,000009,000035,000012,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
790,17281000,-000170,000009,000037,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
791,17282000,-000531,000010,000036,000014,000031,000016,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
792,17283000,-000836,000009,000037,000014,000034,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
793,17284000,-001056,000008,000035,000013,000034,000017,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
794,17285000,-001174,000007,000036,000014,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
795,17286000,-001169,000008,000035,000014,000037,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
796,17287000,-001047,000009,000035,000013,000039,000014,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
797,17288000,-000823,000010,000037,000014,000037,000009,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
798,17289000,-000513,000008,000035,000013,000040,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
799,17290000,-000152,000010,000035,000015,000040,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
800,17291000,000228,000009,000036,000014,000040,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
801,17092000,-000836,000010,000036,000012,000034,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
802,17093000,-001058,000008,000036,000014,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
803,17094000,-001172,000006,000035,000014,000038,000016,000034,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
804,17095000,-001168,000009,000036,000014,000037,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
805,17096000,-001043,000011,000036,000013,000040,000014,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
806,17097000,-000822,000008,000035,000013,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
807,17098000,-000512,000010,000037,000013,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
808,17099000,-000152,000009,000037,000015,000037,000009,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
809,17100000,000228,000009,000037,000013,000039,000010,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
810,17101000,000589,000010,000037,000013,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
811,17102000,000893,000009,000037,000014,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
812,17103000,001115,000009,000037,000014,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
813,17104000,001229,000010,000038,000014,000034,000012,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
814,17105000,001230,000012,000037,000015,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
815,17106000,001107,000009,000037,000012,000033,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
816,17107000,000881,000010,000037,000014,000032,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
817,17108000,000570,000009,000035,000012,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
818,17109000,000209,000009,000037,000013,000029,000012,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
819,17110000,-000170,000008,000037,000013,000031,000016,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
820,17111000,-000533,000008,000036,000014,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
821,17112000,-000836,000007,000034,000013,000033,000016,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
822,17113000,-001057,000009,000035,000013,000034,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
823,17114000,-001171,000010,000036,000014,000037,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
824,17115000,-001168,000008,000035,000014,000035,000011,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
825,17116000,-001047,000008,000036,000014,000039,000014,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
826,17117000,-000824,000008,000036,000013,000039,000012,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
827,17118000,-000514,000009,000036,000014,000040,000012,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
828,17119000,-000154,000007,000036,000013,000041,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
829,17120000,000228,000009,000034,000011,000039,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
830,17121000,000589,000009,000038,000014,000041,000011,000027,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
831,17122000,000896,000008,000037,000014,000039,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
832,17123000,001116,000009,000037,000014,000036,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
833,17124000,001229,000010,000037,000014,000034,000011,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
834,17125000,001228,000009,000037,000013,000033,000012,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
835,17126000,001104,000007,000036,000014,000032,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
836,17127000,000881,000009,000037,000013,000030,000014,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
837,17128000,000573,000008,000037,000014,000031,000014,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
838,17129000,000209,000009,000037,000013,000031,000014,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
839,17130000,-000169,000009,000037,000014,000029,000014,000031,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
840,17131000,-000530,000008,000037,000013,000032,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
841,17132000,-000836,000008,000036,000013,000035,000018,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
842,17133000,-001057,000010,000035,000012,000036,000016,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
843,17134000,-001170,000009,000035,000012,000037,000015,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
844,17135000,-001168,000009,000037,000014,000039,000014,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
845,17136000,-001047,000008,000036,000013,000039,000013,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
846,17137000,-000824,000009,000036,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
847,17138000,-000512,000008,000037,000013,000043,000015,000030,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
848,17139000,-000152,000008,000035,000014,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
849,17140000,000228,000008,000037,000014,000041,000012,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
850,17141000,000589,000009,000036,000014,000040,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
851,17142000,000895,000009,000036,000014,000037,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
852,17143000,001115,000010,000036,000014,000037,000010,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
853,17144000,001231,000009,000036,000014,000036,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
854,17145000,001228,000011,000037,000014,000030,000007,000029,000016,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
855,17146000,001106,000009,000037,000013,000032,000013,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
856,17147000,000881,000009,000036,000013,000031,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
857,17148000,000570,000009,000035,000013,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
858,17149000,000209,000009,000036,000012,000032,000017,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
859,17150000,-000172,000007,000035,000012,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
860,17151000,-000531,000009,000033,000011,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
861,17152000,-000836,000009,000036,000012,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
862,17153000,-001057,000007,000037,000013,000035,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
863,17154000,-001172,000009,000036,000013,000035,000015,000037,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
864,17155000,-001170,000006,000036,000014,000037,000016,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
865,17156000,-001047,000009,000037,000013,000039,000012,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
866,17157000,-000823,000008,000035,000012,000039,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
867,17158000,-000512,000009,000034,000013,000039,000010,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
868,17159000,-000152,000009,000036,000014,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
869,17160000,000228,000008,000035,000014,000039,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
870,17161000,000591,000010,000037,000013,000039,000011,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
871,17162000,000895,000010,000037,000014,000037,000010,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
872,17163000,001114,000011,000039,000013,000036,000011,000028,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
873,17164000,001232,000010,000041,000018,000035,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
874,17165000,001227,000009,000038,000013,000033,000013,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
875,17166000,001106,000011,000036,000014,000032,000013,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
876,17167000,000881,000009,000036,000014,000033,000013,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
877,17168000,000573,000009,000037,000014,000030,000015,000037,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
878,17169000,000209,000010,000036,000014,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
879,17170000,-000172,000007,000036,000014,000031,000016,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
880,17171000,-000532,000008,000036,000013,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
881,17172000,-000836,000008,000035,000012,000033,000013,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
882,17173000,-001057,000008,000035,000013,000039,000019,000032,000022,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
883,17174000,-001170,000008,000036,000014,000035,000016,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
884,17175000,-001168,000007,000037,000014,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
885,17176000,-001047,000008,000036,000013,000040,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
886,17177000,-000819,000012,000036,000013,000039,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
887,17178000,-000514,000008,000037,000012,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
888,17179000,-000153,000010,000038,000013,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
889,17180000,000228,000009,000036,000013,000040,000011,000025,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
890,17181000,000590,000008,000037,000014,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
891,17182000,000896,000009,000037,000013,000037,000012,000026,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
892,17183000,001116,000010,000037,000014,000036,000012,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
893,17184000,001231,000010,000035,000014,000035,000011,000029,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
894,17185000,001226,000010,000036,000013,000035,000011,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
895,17186000,001106,000008,000037,000012,000033,000013,000030,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
896,17187000,000881,000011,000037,000013,000033,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
897,17188000,000571,000008,000037,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
898,17189000,000211,000010,000035,000014,000031,000015,000032,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
899,17190000,-000170,000007,000035,000014,000031,000018,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
900,17191000,-000533,000007,000035,000013,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
901,17192000,-000838,000010,000033,000010,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
902,17193000,-001057,000008,000036,000014,000034,000016,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
903,17194000,-001172,000008,000035,000014,000035,000015,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
904,17195000,-001169,000008,000035,000014,000038,000013,000034,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
905,17196000,-001044,000012,000037,000014,000041,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
906,17197000,-000823,000008,000035,000013,000040,000011,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
907,17198000,-000514,000009,000036,000013,000039,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
908,17199000,-000152,000009,000037,000015,000037,000009,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
909,17200000,000228,000008,000036,000014,000040,000011,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
910,17201000,000590,000009,000036,000013,000040,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
911,17202000,000895,000010,000036,000013,000040,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
912,17203000,001115,000010,000037,000014,000037,000010,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
913,17204000,001228,000009,000035,000014,000035,000011,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
914,17205000,001226,000010,000035,000014,000033,000012,000027,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
915,17206000,001106,000010,000037,000013,000033,000011,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
916,17207000,000881,000008,000037,000013,000031,000013,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
917,17208000,000570,000008,000038,000013,000030,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
918,17209000,000209,000008,000036,000014,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
919,17210000,-000170,000010,000037,000014,000033,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
920,17211000,-000532,000009,000037,000014,000032,000017,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
921,17212000,-000836,000008,000035,000012,000033,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
922,17213000,-001057,000008,000039,000015,000036,000017,000033,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
923,17214000,-001172,000010,000036,000014,000036,000015,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
924,17215000,-001168,000010,000035,000015,000037,000014,000031,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
925,17216000,-001047,000008,000037,000014,000040,000013,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
926,17217000,-000823,000007,000035,000013,000039,000013,000030,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
927,17218000,-000514,000009,000033,000010,000040,000013,000030,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
928,17219000,-000151,000010,000037,000013,000041,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
929,17220000,000228,000010,000036,000013,000038,000010,000026,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
930,17221000,000591,000009,000037,000014,000039,000011,000025,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
931,17222000,000895,000008,000038,000015,000038,000010,000027,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
932,17223000,001112,000006,000037,000014,000035,000011,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
933,17224000,001230,000010,000037,000013,000034,000011,000029,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
934,17225000,001227,000010,000035,000014,000033,000012,000028,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
935,17226000,001107,000009,000036,000012,000033,000011,000030,000018,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
936,17227000,000881,000008,000037,000014,000036,000017,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
937,17228000,000571,000009,000035,000014,000031,000015,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
938,17229000,000209,000008,000035,000013,000031,000015,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
939,17230000,-000170,000009,000036,000013,000031,000016,000033,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
940,17231000,-000531,000009,000036,000013,000032,000014,000031,000019,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
941,17232000,-000836,000009,000035,000014,000034,000015,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
942,17233000,-001057,000008,000036,000015,000035,000016,000032,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
943,17234000,-001172,000009,000035,000014,000036,000014,000032,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
944,17235000,-001169,000008,000037,000012,000042,000019,000034,000024,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
945,17236000,-001047,000008,000035,000013,000039,000014,000031,000021,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
946,17237000,-000823,000010,000036,000013,000039,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
947,17238000,-000514,000008,000036,000012,000040,000011,000029,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
948,17239000,-000152,000008,000039,000013,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
949,17240000,000228,000009,000036,000014,000035,000006,000027,000017,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
950,17241000,000590,000011,000035,000014,000040,000011,000028,000020,999999,999999,999999,999999,999999,999999,999999,0,0,0,0,0,0,0
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
const (
|
||||||
|
// define len of dd/mm/yyyy,HH:MM:SS.mmmmmm style
|
||||||
|
DefaultTimeLayoutLen = 26
|
||||||
|
// dd/mm/yyyy,HH:MM:SS.mmmmmm
|
||||||
|
DateTimeLayout = "02/01/2006,15:04:05.000000"
|
||||||
|
// mm/dd/yyyy,HH:MM:SS.mmmmmm
|
||||||
|
DateTimeLayout2 = "01/02/2006,15:04:05.000000"
|
||||||
|
// mm/dd/yyyy,HH:MM:SS.mmm
|
||||||
|
CosLightDateTimeLayout = "02/01/2006,15:04:05.000"
|
||||||
|
|
||||||
|
Rcv1991 = 1991
|
||||||
|
Rcv1999 = 1999
|
||||||
|
Rcv2013 = 2013
|
||||||
|
Rcv2017 = 2017
|
||||||
|
|
||||||
|
TypeASCII = "ASCII"
|
||||||
|
TypeBinary = "BINARY"
|
||||||
|
TypeBinary32 = "BINARY32"
|
||||||
|
TypeFloat32 = "FLOAT32"
|
||||||
|
|
||||||
|
NoLeapSecInRecord = 0 // 记录中没有闰秒 no leap seconds are included in the record
|
||||||
|
AddLeapSecToRecord = 1 // 在记录中增加闰秒 add leap seconds to the record
|
||||||
|
RemoveLeapSecFromRecord = 2 // 在记录中删除闰秒 remove leap seconds from the record
|
||||||
|
ClockSourceNotDefinedLeapSecFunc = 3 // 时钟源没有闰秒功能 the clock source does not have leap second functionality.
|
||||||
|
|
||||||
|
MonthOutOfRange = "month out of range"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Parser interface {
|
||||||
|
Parse(filePath string, analogNum, digitalNum, endSamp uint32) (*Data, error)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
package comtrade
|
||||||
|
|
||||||
|
const Release = "v0.0.3"
|
||||||
|
|
@ -0,0 +1,51 @@
|
||||||
|
module wave_record
|
||||||
|
|
||||||
|
go 1.22.5
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/fsnotify/fsnotify v1.7.0
|
||||||
|
github.com/natefinch/lumberjack v2.0.0+incompatible
|
||||||
|
github.com/panjf2000/ants/v2 v2.10.0
|
||||||
|
github.com/spf13/viper v1.19.0
|
||||||
|
// github.com/yonwoo9/go-comtrade v0.0.3
|
||||||
|
go.mongodb.org/mongo-driver v1.16.0
|
||||||
|
go.uber.org/zap v1.21.0
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/BurntSushi/toml v1.4.0 // indirect
|
||||||
|
github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
|
||||||
|
github.com/golang/snappy v0.0.4 // indirect
|
||||||
|
github.com/google/uuid v1.4.0 // indirect
|
||||||
|
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||||
|
github.com/influxdata/influxdb-client-go/v2 v2.13.0
|
||||||
|
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 // indirect
|
||||||
|
github.com/klauspost/compress v1.17.2 // indirect
|
||||||
|
github.com/magiconair/properties v1.8.7 // indirect
|
||||||
|
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||||
|
github.com/montanaflynn/stats v0.7.1 // indirect
|
||||||
|
github.com/oapi-codegen/runtime v1.0.0 // indirect
|
||||||
|
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
|
||||||
|
github.com/sagikazarmark/locafero v0.4.0 // indirect
|
||||||
|
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
|
||||||
|
github.com/sourcegraph/conc v0.3.0 // indirect
|
||||||
|
github.com/spf13/afero v1.11.0 // indirect
|
||||||
|
github.com/spf13/cast v1.6.0 // indirect
|
||||||
|
github.com/spf13/pflag v1.0.5 // indirect
|
||||||
|
github.com/subosito/gotenv v1.6.0 // indirect
|
||||||
|
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
|
||||||
|
github.com/xdg-go/scram v1.1.2 // indirect
|
||||||
|
github.com/xdg-go/stringprep v1.0.4 // indirect
|
||||||
|
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
|
||||||
|
go.uber.org/atomic v1.9.0 // indirect
|
||||||
|
go.uber.org/multierr v1.10.0 // indirect
|
||||||
|
golang.org/x/crypto v0.22.0 // indirect
|
||||||
|
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
|
||||||
|
golang.org/x/net v0.23.0 // indirect
|
||||||
|
golang.org/x/sync v0.7.0 // indirect
|
||||||
|
golang.org/x/sys v0.19.0 // indirect
|
||||||
|
golang.org/x/text v0.14.0 // indirect
|
||||||
|
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||||
|
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,175 @@
|
||||||
|
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
|
||||||
|
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||||
|
github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk=
|
||||||
|
github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ=
|
||||||
|
github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk=
|
||||||
|
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
|
||||||
|
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
||||||
|
github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||||
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
||||||
|
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
||||||
|
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
|
||||||
|
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
|
||||||
|
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
||||||
|
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||||
|
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||||
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
|
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
|
||||||
|
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
||||||
|
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||||
|
github.com/influxdata/influxdb-client-go/v2 v2.13.0 h1:ioBbLmR5NMbAjP4UVA5r9b5xGjpABD7j65pI8kFphDM=
|
||||||
|
github.com/influxdata/influxdb-client-go/v2 v2.13.0/go.mod h1:k+spCbt9hcvqvUiz0sr5D8LolXHqAAOfPw9v/RIRHl4=
|
||||||
|
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7wlPfJLvMCdtV4zPulc4uCPrlywQOmbFOhgQNU=
|
||||||
|
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo=
|
||||||
|
github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE=
|
||||||
|
github.com/klauspost/compress v1.17.2 h1:RlWWUY/Dr4fL8qk9YG7DTZ7PDgME2V4csBXA8L/ixi4=
|
||||||
|
github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||||
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
|
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||||
|
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||||
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
|
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||||
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
|
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
|
||||||
|
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
|
||||||
|
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
|
||||||
|
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||||
|
github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE=
|
||||||
|
github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
|
||||||
|
github.com/natefinch/lumberjack v2.0.0+incompatible h1:4QJd3OLAMgj7ph+yZTuX13Ld4UpgHp07nNdFX7mqFfM=
|
||||||
|
github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk=
|
||||||
|
github.com/oapi-codegen/runtime v1.0.0 h1:P4rqFX5fMFWqRzY9M/3YF9+aPSPPB06IzP2P7oOxrWo=
|
||||||
|
github.com/oapi-codegen/runtime v1.0.0/go.mod h1:LmCUMQuPB4M/nLXilQXhHw+BLZdDb18B34OO356yJ/A=
|
||||||
|
github.com/panjf2000/ants/v2 v2.10.0 h1:zhRg1pQUtkyRiOFo2Sbqwjp0GfBNo9cUY2/Grpx1p+8=
|
||||||
|
github.com/panjf2000/ants/v2 v2.10.0/go.mod h1:7ZxyxsqE4vvW0M7LSD8aI3cKwgFhBHbxnlN8mDqHa1I=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
||||||
|
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
|
||||||
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
||||||
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
|
||||||
|
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
|
||||||
|
github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
|
||||||
|
github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
|
||||||
|
github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE=
|
||||||
|
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
|
||||||
|
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
|
||||||
|
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
|
||||||
|
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
|
||||||
|
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
|
||||||
|
github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0=
|
||||||
|
github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
|
||||||
|
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||||
|
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
|
github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI=
|
||||||
|
github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg=
|
||||||
|
github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
|
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
||||||
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
|
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
|
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
|
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||||
|
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
|
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
|
||||||
|
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
|
||||||
|
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
|
||||||
|
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
||||||
|
github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY=
|
||||||
|
github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4=
|
||||||
|
github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8=
|
||||||
|
github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM=
|
||||||
|
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
|
||||||
|
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
||||||
|
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||||
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
|
go.mongodb.org/mongo-driver v1.16.0 h1:tpRsfBJMROVHKpdGyc1BBEzzjDUWjItxbVSZ8Ls4BQ4=
|
||||||
|
go.mongodb.org/mongo-driver v1.16.0/go.mod h1:oB6AhJQvFQL4LEHyXi6aJzQJtBiTQHiAd83l0GdFaiw=
|
||||||
|
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||||
|
go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
|
||||||
|
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||||
|
go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI=
|
||||||
|
go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
|
||||||
|
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
|
||||||
|
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
|
||||||
|
go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||||
|
go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8=
|
||||||
|
go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
|
||||||
|
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
|
||||||
|
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g=
|
||||||
|
golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k=
|
||||||
|
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
|
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
|
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
|
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||||
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
|
golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
|
||||||
|
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
|
||||||
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||||
|
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
|
||||||
|
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
|
||||||
|
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
|
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||||
|
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||||
|
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||||
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
|
||||||
|
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||||
|
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
|
||||||
|
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
|
||||||
|
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
|
||||||
|
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
// Package log define log struct of wave record project
|
||||||
|
package log
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
"wave_record/constant"
|
||||||
|
|
||||||
|
"github.com/natefinch/lumberjack"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
"go.uber.org/zap/zapcore"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
logger *zap.Logger
|
||||||
|
once sync.Once
|
||||||
|
)
|
||||||
|
|
||||||
|
// CutLogConfig define log config of wave record project
|
||||||
|
type CutLogConfig struct {
|
||||||
|
Mode string `json:"mode"` // Mode 日志模式 development、production
|
||||||
|
Level string `json:"level"` // Level 最低日志等级,DEBUG<INFO<WARN<ERROR<FATAL INFO-->收集INFO等级以上的日志
|
||||||
|
FileName string `json:"file_name"` // FileName 日志文件位置
|
||||||
|
MaxSize int `json:"max_size"` // MaxSize 进行切割之前,日志文件的最大大小(MB为单位)默认为100MB
|
||||||
|
MaxAge int `json:"max_age"` // MaxAge 是根据文件名中编码的时间戳保留旧日志文件的最大天数。
|
||||||
|
MaxBackups int `json:"max_backups"` // MaxBackups 是要保留的旧日志文件的最大数量。默认是保留所有旧的日志文件(尽管 MaxAge 可能仍会导致它们被删除)
|
||||||
|
}
|
||||||
|
|
||||||
|
// getEncoder responsible for setting the log format for encoding
|
||||||
|
func getEncoder() zapcore.Encoder {
|
||||||
|
encoderConfig := zap.NewProductionEncoderConfig()
|
||||||
|
// serialization time eg:2006-01-02 15:04:05
|
||||||
|
encoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05")
|
||||||
|
encoderConfig.TimeKey = "time"
|
||||||
|
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
|
||||||
|
encoderConfig.EncodeCaller = zapcore.ShortCallerEncoder
|
||||||
|
return zapcore.NewJSONEncoder(encoderConfig)
|
||||||
|
}
|
||||||
|
|
||||||
|
// getLogWriter responsible for setting the location of log storage
|
||||||
|
func getLogWriter(mode, filename string, maxsize, maxBackup, maxAge int) zapcore.WriteSyncer {
|
||||||
|
lumberJackLogger := &lumberjack.Logger{
|
||||||
|
Filename: filename, // log file position
|
||||||
|
MaxSize: maxsize, // log file maxsize
|
||||||
|
MaxAge: maxAge, // maximum number of day files retained
|
||||||
|
MaxBackups: maxBackup, // maximum number of old files retained
|
||||||
|
Compress: false, // whether to compress
|
||||||
|
}
|
||||||
|
|
||||||
|
syncConsole := zapcore.AddSync(os.Stderr)
|
||||||
|
if mode == constant.DevelopmentLogMode {
|
||||||
|
return syncConsole
|
||||||
|
}
|
||||||
|
|
||||||
|
syncFile := zapcore.AddSync(lumberJackLogger)
|
||||||
|
return zapcore.NewMultiWriteSyncer(syncFile, syncConsole)
|
||||||
|
}
|
||||||
|
|
||||||
|
// initLogger return successfully initialized zap logger
|
||||||
|
func initLogger(lCfg CutLogConfig) *zap.Logger {
|
||||||
|
writeSyncer := getLogWriter(lCfg.Mode, lCfg.FileName, lCfg.MaxSize, lCfg.MaxBackups, lCfg.MaxAge)
|
||||||
|
encoder := getEncoder()
|
||||||
|
|
||||||
|
l := new(zapcore.Level)
|
||||||
|
err := l.UnmarshalText([]byte(lCfg.Level))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
core := zapcore.NewCore(encoder, writeSyncer, l)
|
||||||
|
logger = zap.New(core, zap.AddCaller())
|
||||||
|
zap.ReplaceGlobals(logger)
|
||||||
|
|
||||||
|
return logger
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetLoggerInstance return instance of zap logger
|
||||||
|
func GetLoggerInstance(lCfg CutLogConfig) *zap.Logger {
|
||||||
|
once.Do(func() {
|
||||||
|
logger = initLogger(lCfg)
|
||||||
|
})
|
||||||
|
return logger
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
// Package main define wave record project entry function
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"flag"
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
"wave_record/config"
|
||||||
|
"wave_record/database"
|
||||||
|
"wave_record/fileparse"
|
||||||
|
"wave_record/log"
|
||||||
|
|
||||||
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
|
||||||
|
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
||||||
|
"github.com/panjf2000/ants/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
comtradeConfigDir = flag.String("comtrade_config_dir", "./config", "config file dir of wave record project")
|
||||||
|
comtradeConfigName = flag.String("comtrade_config_name", "config", "config file name of wave record project")
|
||||||
|
comtradeConfigType = flag.String("comtrade_config_type", "yaml", "config file type of wave record project")
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
waveRecordConfig config.WaveRecordConfig
|
||||||
|
addChan chan string
|
||||||
|
delChan chan string
|
||||||
|
comtradeMap sync.Map
|
||||||
|
mongoDBClient *mongo.Client
|
||||||
|
influxDBClient *influxdb2.Client
|
||||||
|
logger *zap.Logger
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
addChan = make(chan string, 10)
|
||||||
|
delChan = make(chan string, 10)
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
flag.Parse()
|
||||||
|
ctx := context.TODO()
|
||||||
|
|
||||||
|
waveRecordConfig = config.ReadAndInitConfig(*comtradeConfigDir, *comtradeConfigName, *comtradeConfigType)
|
||||||
|
|
||||||
|
// init mongoDBClient
|
||||||
|
mongoDBClient = database.GetMongoDBInstance(ctx, waveRecordConfig.MongoDBURI)
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
if err := mongoDBClient.Disconnect(ctx); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
// init influxDBClient
|
||||||
|
influxDBClient = database.GetInfluxDBInstance(waveRecordConfig.InfluxDBURL, waveRecordConfig.InfluxDBToken)
|
||||||
|
defer func() {
|
||||||
|
client := *influxDBClient
|
||||||
|
client.Close()
|
||||||
|
}()
|
||||||
|
|
||||||
|
// init logger
|
||||||
|
logger = log.GetLoggerInstance(waveRecordConfig.LCfg)
|
||||||
|
defer logger.Sync()
|
||||||
|
|
||||||
|
pool, err := ants.NewPoolWithFunc(waveRecordConfig.ParseConcurrentQuantity, fileparse.ParseFunc)
|
||||||
|
if err != nil {
|
||||||
|
logger.Error("init concurrent parse task pool failed", zap.Error(err))
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer ants.Release()
|
||||||
|
|
||||||
|
go fileparse.DirWatch(waveRecordConfig.MonitorDir, addChan)
|
||||||
|
|
||||||
|
go fileparse.MoveComtradeFile(waveRecordConfig.BackupDir, &comtradeMap, delChan)
|
||||||
|
|
||||||
|
fileparse.TraverseMonitorDir(ctx, waveRecordConfig.MonitorDir, waveRecordConfig.MongoDBDataBase, &comtradeMap, addChan, delChan, pool)
|
||||||
|
|
||||||
|
fileparse.ParseComtradeFile(ctx, waveRecordConfig.MonitorDir, waveRecordConfig.MongoDBDataBase, addChan, delChan, &comtradeMap, pool)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
// Package util define universal utility functions
|
||||||
|
package util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io/fs"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"wave_record/constant"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FileExists return boolean value result specifying whether the file path exists
|
||||||
|
func FileExists(filePath string) bool {
|
||||||
|
_, err := os.Stat(filePath)
|
||||||
|
// return !os.IsNotExist(err)
|
||||||
|
return !errors.Is(err, fs.ErrNotExist)
|
||||||
|
}
|
||||||
|
|
||||||
|
func commandExec(name string, args ...string) (outString string, err error) {
|
||||||
|
var stdout bytes.Buffer
|
||||||
|
var stderr bytes.Buffer
|
||||||
|
|
||||||
|
cmd := exec.Command(name, args...)
|
||||||
|
cmd.Stdout = &stdout
|
||||||
|
cmd.Stderr = &stderr
|
||||||
|
|
||||||
|
err = cmd.Run()
|
||||||
|
outString = stdout.String()
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("exec failed:%v,stderr=%s. name=%s,args=%v", err, stderr.String(), name, args)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveFile return file movement result
|
||||||
|
func RemoveFile(src, dst string) error {
|
||||||
|
_, err := commandExec("mv", src, dst)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// FileNameConvert return the absolute path of the converted config file or data file
|
||||||
|
func FileNameConvert(filePath string) (string, error) {
|
||||||
|
dirPath := filepath.Dir(filePath)
|
||||||
|
fileName := filepath.Base(filePath)
|
||||||
|
name := strings.Split(fileName, ".")[0]
|
||||||
|
suffix := filepath.Ext(fileName)
|
||||||
|
if suffix == constant.ConfigFileSuffix {
|
||||||
|
fileName := strings.Join([]string{name, constant.DataFileSuffix}, "")
|
||||||
|
return filepath.Join(dirPath, fileName), nil
|
||||||
|
} else if suffix == constant.DataFileSuffix {
|
||||||
|
fileName := strings.Join([]string{name, constant.ConfigFileSuffix}, "")
|
||||||
|
return filepath.Join(dirPath, fileName), nil
|
||||||
|
}
|
||||||
|
return "", constant.ErrNotSupportFileType
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue