diff --git a/README.md b/README.md index d11b8d8..e30d6dc 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,30 @@ # ATSC - Advance Time Series Compressor +**NOTE:** This is still under development. Current status is unsupported! + +## Table of Contents + +1. [TL;DR;](#tldr) +2. [Documentation](#documentation) +3. [Building ATSC](#building-atsc) +4. [What is ATSC?](#what-is-atsc) +5. [Where does ATSC fit?](#where-does-atsc-fit) +6. [ATSC Usage](#atsc-usage) +7. [Releases](#releases) +8. [Roadmap](#roadmap) + +## TL;DR + +The fastest way to test ATSC is with a CSV file! + +1. Download the latest [release](https://github.com/instaclustr/atsc/releases) +2. Get a CSV file with the proper format (or get one from [tests folder](https://github.com/instaclustr/atsc/tree/main/atsc/tests/csv)) +3. Run it + +```bash +cargo run --release -- --csv +``` + ## Documentation For full documentation please go to [Docs](https://github.com/instaclustr/atsc/tree/main/docs) @@ -22,11 +47,16 @@ For full documentation please go to [Docs](https://github.com/instaclustr/atsc/t ## What is ATSC? Advanced Time Series Compressor (in short: ATSC), is a configurable, *lossy* compressor that uses the characteristics of a time-series to create a function approximation of the time series. + This way, ATSC only needs to store the parametrization of the function and not the data. + ATSC draws inspiration from established compression and signal analysis techniques, achieving significant compression ratios. + In internal testing ATSC compressed from 46 times to 880 times the time series of our databases with a fitting error within 1% of the original time-series. + In some cases, ATSC would produce highly compressed data without any data loss (Perfect fitting functions). ATSC is meant to be used in long term storage of time series, as it benefits from more points to do a better fitting. + The decompression of data is faster (up to 40x) vs a slower compression speed, as it is expected that the data might be compressed once and decompressed several times. Internally ATSC uses the following methods for time series fitting: @@ -36,11 +66,11 @@ Internally ATSC uses the following methods for time series fitting: * Interpolation - Catmull-Rom * Interpolation - Inverse Distance Weight -For a more detailed insight into ATSC read the paper here: [ATSC - A novel approach to time-series compression](https://some.url.com) +For a more detailed insight into ATSC read the paper here: [ATSC - A novel approach to time-series compression](https://github.com/instaclustr/atsc/tree/main/paper/ATCS-AdvancedTimeSeriesCompressor.pdf) Currently, ATSC uses an internal format to process time series (WBRO) and outputs a compressed format (BRO). A CSV to WBRO format is available here: [CSV Compressor](https://github.com/instaclustr/atsc/tree/main/csv-compressor) -## Where does ATSC fits? +## Where does ATSC fit? ATSC fits in any place that needs space reduction in trade for precision. ATSC is to time series what JPG/MP3 is to image/audio. @@ -53,7 +83,7 @@ Example of use cases: * Long, slow moving data series (e.g. Weather data). Those will most probably follow an easy to fit pattern * Data that is meant to be visualized by humans and not machine processed (e.g. Operation teams). With such a small error, under 1%, it shouldn't impact analysis. -## Usage ATSC +## ATSC Usage ### Prerequisites @@ -67,22 +97,38 @@ Those files would work as input for the compressor. Compressor usage: -```bash +```txt Usage: atsc [OPTIONS] Arguments: input file - --compressor + --compressor Select a compressor, default is auto [default: auto] [possible values: auto, noop, fft, constant, polynomial, idw] -e, --error - Sets the maximum allowed error for the compressed data, must be between 0 and 50. Default is 5 (5%). 0 is lossless compression 50 will do a median filter on the data. In between will pick optimize for the error [default: 5] + Sets the maximum allowed error for the compressed data, must be between 0 and 50. Default is 5 (5%). + 0 is lossless compression + 50 will do a median filter on the data. + In between will pick optimize for the error [default: 5] -u Uncompresses the input file/directory -c, --compression-selection-sample-level - Samples the input data instead of using all the data for selecting the optimal compressor. Only impacts speed, might or not increased compression ratio. For best results use 0 (default). Only works when compression = Auto. 0 will use all the data (slowest) 6 will sample 128 data points (fastest) [default: 0] + Samples the input data instead of using all the data for selecting the optimal compressor. + Only impacts speed, might or not increased compression ratio. For best results use 0 (default). + Only works when compression = Auto. + 0 will use all the data (slowest) + 6 will sample 128 data points (fastest) [default: 0] --verbose Verbose output, dumps everysample in the input file (for compression) and in the ouput file (for decompression) + --csv + Defines user input as a CSV file + --no-header + Defines if the CSV has no header + --fields + Defines names of fields in CSV file. It should follow this format: + --fields=TIME_FIELD_NAME,VALUE_FIELD_NAME + It assumes that the one before comma is a name of time field and the one + after comma is value field. [default: time,value] -h, --help Print help -V, --version @@ -97,15 +143,27 @@ To compress a file using ATSC, run: atsc ``` -### Decompress a File +#### Decompress a File + To decompress a file, use: + ```bash atsc -u ``` +## Releases + +### v0.5 - 30/11/2023 + +* Added Polynomial Compressor (with 2 variants) +* Created and Integrated a proper file type (wbro) +* Benchmarks of the different compressors +* Integration testing +* Several fixes and cleanups + ## Roadmap * Frame expansion (Allowing new data to be appended to existing frames) * Dynamic function loading (e.g. providing more functions without touching the whole code base) * Global/Per frame error storage -* Efficient error encoding \ No newline at end of file +* Efficient error diff --git a/atsc/demo/run_demo.sh b/atsc/demo/run_demo.sh index d8358c6..b69a5b8 100755 --- a/atsc/demo/run_demo.sh +++ b/atsc/demo/run_demo.sh @@ -1,58 +1,106 @@ #!/bin/bash infilename=$1 - echo "Original Size: " du -sb $infilename - -for i in 1 3; -do - echo "### Error Level: $i"; - mfile="comparison-error-$i.m" - - cp $infilename tmp.wbro - - ../../target/debug/atsc --compressor fft --error $i --verbose tmp.wbro > $mfile - echo "FFT Size: " - du -sb tmp.bro - ../../target/debug/atsc -u --verbose tmp.bro >> $mfile - - sed -i -e 's/Output/output_fft/g' $mfile - - cp $infilename tmp.wbro - - ../../target/debug/atsc --compressor idw --error $i tmp.wbro > /dev/null - echo "IDW Size: " - du -sb tmp.bro - ../../target/debug/atsc -u --verbose tmp.bro >> $mfile - - sed -i -e 's/Output/output_idw/g' $mfile - - cp $infilename tmp.wbro - - ../../target/debug/atsc --compressor polynomial --error $i tmp.wbro > /dev/null - echo "Polynomial Size: " - du -sb tmp.bro - ../../target/debug/atsc -u --verbose tmp.bro >> $mfile - - sed -i -e 's/Output/output_poly/g' $mfile - - cp $infilename tmp.wbro - - ../../target/debug/atsc --error $i tmp.wbro > /dev/null - echo "Auto Size: " - du -sb tmp.bro - ../../target/debug/atsc -u --verbose tmp.bro >> $mfile - - sed -i -e 's/Output/output_auto/g' $mfile - - echo "hold on;" >> $mfile - echo "plot(Input,'g+', output_fft,'r', output_auto, 'b', output_poly, 'k')" >> $mfile - echo "plot(Input.*((100+$i)/100), 'color','#D95319');" >> $mfile - echo "plot(Input.*((100-$i)/100), 'color','#D95319');" >> $mfile - echo "legend('Data','FFT Compression', 'Auto Compression', 'Poly compression', 'Upper Error', 'Lower Error')" >> $mfile - echo "print -dpng comparison-$i.png" >> $mfile - -done - -rm tmp.wbro -rm tmp.bro \ No newline at end of file +for i in 1 3; do + echo "### Error Level: $i" + htmlfile="comparison-error-$i.html" + cp $infilename tmp.wbro + ../../target/debug/atsc --compressor fft --error $i --verbose tmp.wbro > input.txt + echo "FFT Size: " + du -sb tmp.bro + ../../target/debug/atsc -u --verbose tmp.bro > tmp_fft.txt + cp $infilename tmp.wbro + ../../target/debug/atsc --compressor idw --error $i tmp.wbro > /dev/null + echo "IDW Size: " + du -sb tmp.bro + ../../target/debug/atsc -u --verbose tmp.bro > tmp_idw.txt + cp $infilename tmp.wbro + ../../target/debug/atsc --compressor polynomial --error $i tmp.wbro > /dev/null + echo "Polynomial Size: " + du -sb tmp.bro + ../../target/debug/atsc -u --verbose tmp.bro > tmp_poly.txt + + # Create HTML file + echo "" > $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "Comparison Error Level $i" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + + rm tmp.wbro + rm tmp.bro + rm tmp_fft.txt + rm tmp_idw.txt + rm tmp_poly.txt + rm input.txt +done \ No newline at end of file diff --git a/atsc/demo/run_demo_csv.sh b/atsc/demo/run_demo_csv.sh new file mode 100755 index 0000000..4ef827e --- /dev/null +++ b/atsc/demo/run_demo_csv.sh @@ -0,0 +1,107 @@ +#!/bin/bash +infilename=$1 +echo "Original Size: " +du -sb $infilename +for i in 1 3; do + echo "### Error Level: $i" + htmlfile="comparison-error-$i-csv.html" + cp $infilename tmp.csv + ../../target/debug/atsc --csv --compressor fft --error $i --verbose tmp.csv > input.txt + echo "FFT Size: " + du -sb tmp.bro + ../../target/debug/atsc -u --verbose tmp.bro > tmp_fft.txt + cp $infilename tmp.csv + ../../target/debug/atsc --csv --compressor idw --error $i tmp.csv > /dev/null + echo "IDW Size: " + du -sb tmp.bro + ../../target/debug/atsc -u --verbose tmp.bro > tmp_idw.txt + cp $infilename tmp.csv + ../../target/debug/atsc --csv --compressor polynomial --error $i tmp.csv > /dev/null + echo "Polynomial Size: " + du -sb tmp.bro + ../../target/debug/atsc -u --verbose tmp.bro > tmp_poly.txt + + # Create HTML file + echo "" > $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "Comparison Error Level $i" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + echo "" >> $htmlfile + + rm tmp.csv + rm tmp.bro + rm tmp.wbro + rm tmp_fft.txt + rm tmp_idw.txt + rm tmp_poly.txt + rm input.txt +done \ No newline at end of file diff --git a/atsc/src/main.rs b/atsc/src/main.rs index 671a816..695d925 100644 --- a/atsc/src/main.rs +++ b/atsc/src/main.rs @@ -181,7 +181,7 @@ struct Args { /// 0 is lossless compression /// 50 will do a median filter on the data. /// In between will pick optimize for the error - #[arg(short, long, default_value_t = 5, value_parser = clap::value_parser!(u8).range(0..51))] + #[arg(short, long, default_value_t = 5, value_parser = clap::value_parser!(u8).range(0..51), verbatim_doc_comment )] error: u8, /// Uncompresses the input file/directory @@ -193,7 +193,7 @@ struct Args { /// Only works when compression = Auto. /// 0 will use all the data (slowest) /// 6 will sample 128 data points (fastest) - #[arg(short, long, default_value_t = 0, value_parser = clap::value_parser!(u8).range(0..7))] + #[arg(short, long, default_value_t = 0, value_parser = clap::value_parser!(u8).range(0..7), verbatim_doc_comment )] compression_selection_sample_level: u8, /// Verbose output, dumps everysample in the input file (for compression) and in the ouput file (for decompression) @@ -212,7 +212,7 @@ struct Args { /// --fields=TIME_FIELD_NAME,VALUE_FIELD_NAME /// It assumes that the one before comma is a name of time field and the one /// after comma is value field. - #[arg(long, default_value = "time,value")] + #[arg(long, default_value = "time,value", verbatim_doc_comment)] fields: Option, } diff --git a/atsc/tests/csv/iowait.csv b/atsc/tests/csv/iowait.csv new file mode 100644 index 0000000..bfc775d --- /dev/null +++ b/atsc/tests/csv/iowait.csv @@ -0,0 +1,2892 @@ +time,value +1730419200,0.027052617340727718 +1730419220,0.006666222251849876 +1730419240,0.006794401413235494 +1730419260,0.006648052120728627 +1730419280,0.03297065611605671 +1730419300,0.02053247553213332 +1730419320,0.02003472685989048 +1730419340,0.006693888479817926 +1730419360,0.0066934404283801865 +1730419380,0.1202404809619238 +1730419400,0.10464355788096799 +1730419420,0.013634194559956372 +1730419440,0.013246787653993909 +1730419460,0.013246787653993909 +1730419480,0.01330849081714134 +1730419500,0.0200253654629197 +1730419520,0.0066657778962804955 +1730419540,0.006655574043261231 +1730419560,0.00663702130483839 +1730419580,0.013334222281485428 +1730419600,0.01316222441592629 +1730419620,0.006749915626054674 +1730419640,0.006707807888382077 +1730419660,0.006720430107526882 +1730419680,0.013239772275916852 +1730419700,0.2161285965149264 +1730419720,0.060773853737592004 +1730419740,0.026849241508927372 +1730419760,0.026581605528973953 +1730419780,0.00669254450542096 +1730419800,0.013392259274139551 +1730419820,0.03307534563736191 +1730419840,0.006777363605557438 +1730419860,0.026682676272430123 +1730419880,0.01314924391847469 +1730419900,0.01366680333470001 +1730419920,0.02011532787984444 +1730419940,0.01330849081714134 +1730419960,0.006778282383244086 +1730419980,0.006699269779594024 +1730420000,0.174403005097934 +1730420020,0.02647603918453799 +1730420040,0.013447186176292609 +1730420060,0.02000400080016003 +1730420080,0.01337971635001338 +1730420100,0.0067994832392738154 +1730420120,0.006757213325224677 +1730420140,0.01354462955438169 +1730420160,0.006729927989770509 +1730420180,0.006660893891960301 +1730420200,0.02004543632233062 +1730420220,0.006731740154830025 +1730420240,0.006796248470844094 +1730420260,0.06725854183481302 +1730420280,0 +1730420300,0.1868285847734703 +1730420320,0.07413897688211903 +1730420340,0.02697599136768276 +1730420360,0.013505300830576 +1730420380,0.01345351809498184 +1730420400,0.013361838588989849 +1730420420,0.013452613170108289 +1730420440,0.01322838812090747 +1730420460,0.013640703860319188 +1730420480,0.013494366102152348 +1730420500,0.1213101496158512 +1730420520,0.07383541414955028 +1730420540,0.0067856415824116174 +1730420560,0.01329433661260303 +1730420580,0.0068157033805888775 +1730420600,0.1083790557474768 +1730420620,0.08084619012329045 +1730420640,0.01335916104468639 +1730420660,0.006725854183481302 +1730420680,0.006767731456415809 +1730420700,0.006781500067815001 +1730420720,0.006725854183481302 +1730420740,0.00675812664729337 +1730420760,0.00673536741429245 +1730420780,0.01356300013563 +1730420800,0.02016942315449778 +1730420820,0.006768189509306261 +1730420840,0.006747183051076176 +1730420860,0.006739452756436177 +1730420880,0.0067686476242046845 +1730420900,0.1942788236082267 +1730420920,0.06825006825006825 +1730420940,0.01324327903588929 +1730420960,0.02021972096785064 +1730420980,0.02687991398427525 +1730421000,0.0133155792276964 +1730421020,0.006805035726437564 +1730421040,0.01284356537374775 +1730421060,0.01406173099908599 +1730421080,0.01359711741110884 +1730421100,0.006680472977486807 +1730421120,0.02015858083590915 +1730421140,0.02015316404675534 +1730421160,0.01337882132584119 +1730421180,0.053687671968324274 +1730421200,0.230071728244688 +1730421220,0.1618232081451015 +1730421240,0.1406281390209603 +1730421260,0.12677653966771202 +1730421280,0.1344357061235464 +1730421300,0.12594458438287148 +1730421320,0.113265374108868 +1730421340,0.1281618887015177 +1730421360,0.1488397266761383 +1730421380,0.1225740551583248 +1730421400,0.1327580484566877 +1730421420,0.1280841310502899 +1730421440,0.13282858471142991 +1730421460,0.119134290820041 +1730421480,0.21538668641044628 +1730421500,0.21538668641044628 +1730421520,0.1650927821435647 +1730421540,0.1554159064801676 +1730421560,0.1346257404415724 +1730421580,0.1414713015359741 +1730421600,0.1538976246236199 +1730421620,0.11962517445337939 +1730421640,0.1292077524651479 +1730421660,0.1408828659600161 +1730421680,0.135556459265284 +1730421700,0.1352356481168436 +1730421720,0.11489591781562579 +1730421740,0.07499829549328424 +1730421760,0.013320900492873319 +1730421780,0.006663557006730193 +1730421800,0.22083918891788798 +1730421820,0.1820756625531054 +1730421840,0.09320284934425138 +1730421860,0.06725854183481302 +1730421880,0.10603751076943471 +1730421900,0.09284435307381125 +1730421920,0.08571240192523241 +1730421940,0.08193922840559918 +1730421960,0.1520359598096245 +1730421980,0.08081352279614788 +1730422000,0.08700307857047249 +1730422020,0.033532291596807734 +1730422040,0.006760868095463458 +1730422060,0.06779661016949153 +1730422080,0.006775526797208484 +1730422100,0.1340123291342804 +1730422120,0.04035512510088781 +1730422140,0.0265041081367612 +1730422160,0.01336541031809677 +1730422180,0.01353912808015164 +1730422200,0.013258203513423931 +1730422220,0 +1730422240,0.01350438892640108 +1730422260,0.02703616086515715 +1730422280,0.0066396653608658115 +1730422300,0.01350894967916245 +1730422320,0.034027494215325985 +1730422340,0.01344809037116729 +1730422360,0.006765899864682004 +1730422380,0.00670196367535688 +1730422400,0.08705551463202305 +1730422420,0.05433306166802499 +1730422440,0.02004811547714515 +1730422460,0.01343183344526528 +1730422480,0.0067105086565561675 +1730422500,0.019854401058901388 +1730422520,0 +1730422540,0.01347799716962059 +1730422560,0.01335202616997129 +1730422580,0.013447186176292609 +1730422600,0.02699784017278618 +1730422620,0.0269414696571698 +1730422640,0.013589726167017731 +1730422660,0.026939655172413788 +1730422680,0.006716367788300087 +1730422700,0.1138570758823923 +1730422720,0.06772773450728073 +1730422740,0.04678518914583612 +1730422760,0.01345080368552021 +1730422780,0.02667377967457989 +1730422800,0.02012207391508485 +1730422820,0.006661781360335754 +1730422840,0.033386752136752136 +1730422860,0.1275253372709578 +1730422880,0.01342101731311233 +1730422900,0.01348254011055683 +1730422920,0.02006823198876179 +1730422940,0.006644518272425249 +1730422960,0.01343363782912413 +1730422980,0.006697475051905432 +1730423000,0.1141169362958985 +1730423020,0.04670714619336759 +1730423040,0.013271400132714 +1730423060,0.006658676255160473 +1730423080,0.013320900492873319 +1730423100,0.006755843804891231 +1730423120,0.006627344423089668 +1730423140,0.01332622601279318 +1730423160,0.01354187825851446 +1730423180,0.02006554745501973 +1730423200,0.0134562336002153 +1730423220,0.006764984440535787 +1730423240,0.01333066719989335 +1730423260,0.006715465717547512 +1730423280,0.02042900919305414 +1730423300,0.1797483523067705 +1730423320,0.0877370587838294 +1730423340,0.01354921753268749 +1730423360,0.04676643506146446 +1730423380,0.01332001332001332 +1730423400,0.02024154915322853 +1730423420,0.01341291663872309 +1730423440,0.020119374958084642 +1730423460,0.006661337596589395 +1730423480,0.01333688983728994 +1730423500,0.02011397921555481 +1730423520,0.0269432843863667 +1730423540,0.03346496218459273 +1730423560,0.026963262554769128 +1730423580,0.026641800985746637 +1730423600,0.152459233726634 +1730423620,0.05422993492407809 +1730423640,0.03988566110483281 +1730423660,0.01338419326775079 +1730423680,0.0066427527567423945 +1730423700,0.01358695652173913 +1730423720,0.006634819532908705 +1730423740,0.026903416733925208 +1730423760,0.01987281399046105 +1730423780,0.02692877339437189 +1730423800,0.006721785306177321 +1730423820,0.013425521917164531 +1730423840,0.0204862059546572 +1730423860,0.06720430107526883 +1730423880,0.006794863083508866 +1730423900,0.1298435044078453 +1730423920,0.0936830835117773 +1730423940,0.02714625042416016 +1730423960,0.0199468085106383 +1730423980,0.00666266906522753 +1730424000,0.006687174000267486 +1730424020,0.013543712331550078 +1730424040,0.006752650415288001 +1730424060,0.01328197635808208 +1730424080,0.006727211570803902 +1730424100,0.01347254968002695 +1730424120,0.033022917905026095 +1730424140,0.0271831464492015 +1730424160,0.013693940431359118 +1730424180,0.006724045185583646 +1730424200,0.1615835184811149 +1730424220,0.06070416835289357 +1730424240,0.06690305746972637 +1730424260,0.07978192939299249 +1730424280,0.03381577167590964 +1730424300,0.01345895020188425 +1730424320,0.01336809036829089 +1730424340,0.02022381016583524 +1730424360,0.006663113006396588 +1730424380,0.03339567192091905 +1730424400,0.006803646754660498 +1730424420,0.0068087424252740525 +1730424440,0.0135308842432853 +1730424460,0.013187392852433071 +1730424480,0.006661337596589395 +1730424500,0.1434132349928293 +1730424520,0.07475873317928504 +1730424540,0.1471670345842531 +1730424560,0.12548708803909908 +1730424580,0.1419206595931608 +1730424600,0.1352539392709813 +1730424620,0.1287166945552838 +1730424640,0.13281140780092268 +1730424660,0.1410911045417898 +1730424680,0.1117538785169603 +1730424700,0.04763200870985302 +1730424720,0.0271333604666938 +1730424740,0.02016400053770668 +1730424760,0.0066163821622336905 +1730424780,0.006685832720465333 +1730424800,0.10014688209373751 +1730424820,0.05999200106652446 +1730424840,0.03334000133360005 +1730424860,0.02697781075065758 +1730424880,0.0066440768055278715 +1730424900,0.033543539514289546 +1730424920,0.04034427111350188 +1730424940,0.013494366102152348 +1730424960,0.006668444918644972 +1730424980,0.006520605112154408 +1730425000,0.026809651474530828 +1730425020,0.0067371825102742035 +1730425040,0.02017484868863484 +1730425060,0.006652032195835828 +1730425080,0.006721785306177321 +1730425100,0.1331380641725469 +1730425120,0.07900454276120877 +1730425140,0.02667377967457989 +1730425160,0.026641800985746637 +1730425180,0.03324689141565264 +1730425200,0.00665513110608279 +1730425220,0.02679348918212874 +1730425240,0.03352105122016626 +1730425260,0.01335202616997129 +1730425280,0.0265357569324665 +1730425300,0.013479813978567099 +1730425320,0.033386752136752136 +1730425340,0.02007763351626288 +1730425360,0.02021699575443089 +1730425380,0.026800670016750423 +1730425400,0.16485328058028348 +1730425420,0.142353579175705 +1730425440,0.1325468884617934 +1730425460,0.24213075060532688 +1730425480,0.2664180098574664 +1730425500,0.263300027005131 +1730425520,0.2254492407665274 +1730425540,0.1825557809330629 +1730425560,0.1661571181709424 +1730425580,0.1935139463499266 +1730425600,0.21816739389131298 +1730425620,0.1398135818908123 +1730425640,0.1148571042497129 +1730425660,0.20731625760716912 +1730425680,0.1199920005332978 +1730425700,0.161485668146952 +1730425720,0.1157565027917745 +1730425740,0.033471682956219044 +1730425760,0.01333066719989335 +1730425780,0.02005347593582888 +1730425800,0.05369127516778523 +1730425820,0.006598482349059716 +1730425840,0.02685464921114468 +1730425860,0.02027986209693774 +1730425880,0.01357865435535338 +1730425900,0.01995875191271372 +1730425920,0.059772863120143446 +1730425940,0.060618306728632054 +1730425960,0.02021699575443089 +1730425980,0.02662584037808693 +1730426000,0.1210979547900969 +1730426020,0.07372654155495978 +1730426040,0.04011231448054553 +1730426060,0.013321787783920602 +1730426080,0 +1730426100,0.026533996683250412 +1730426120,0.033413525795241907 +1730426140,0.006686726847208293 +1730426160,0.01338508901084192 +1730426180,0.01338688085676037 +1730426200,0.006623832549513148 +1730426220,0.01355105359441697 +1730426240,0.02015587207739855 +1730426260,0.006652917304237908 +1730426280,0.00665335994677312 +1730426300,0.1492638577922518 +1730426320,0.07426411018093437 +1730426340,0.02722199537226079 +1730426360,0.020074946466809417 +1730426380,0.01344086021505376 +1730426400,0.006619009796134498 +1730426420,0.03355029188753942 +1730426440,0.1354462955438169 +1730426460,0.006737636437137852 +1730426480,0.01335648457326032 +1730426500,0.013569441617477439 +1730426520,0.02008166543945378 +1730426540,0.01330671989354624 +1730426560,0.0134752728742757 +1730426580,0.01332267519317879 +1730426600,0.1203852327447833 +1730426620,0.0658154534684744 +1730426640,0.05425935973955508 +1730426660,0.0198609731876862 +1730426680,0.01975763962065332 +1730426700,0.006672004270082733 +1730426720,0.013531799729364009 +1730426740,0.01330583460847582 +1730426760,0.02024018351099717 +1730426780,0.020292207792207792 +1730426800,0.01336273134228636 +1730426820,0.03375413488152299 +1730426840,0.01999067102019058 +1730426860,0.01993223041658362 +1730426880,0.01344086021505376 +1730426900,0.1733333333333333 +1730426920,0.06084369929691724 +1730426940,0.039672044432689756 +1730426960,0.02016942315449778 +1730426980,0.02657983919197289 +1730427000,0.006779661016949152 +1730427020,0.013207422571485172 +1730427040,0.03375413488152299 +1730427060,0.027197932957095262 +1730427080,0.013447186176292609 +1730427100,0.01336094595497361 +1730427120,0.12574454003970878 +1730427140,0.1157643854273068 +1730427160,0.1487893953740024 +1730427180,0.13380611493945269 +1730427200,0.2947086403215003 +1730427220,0.1674368762976358 +1730427240,0.1552061542614211 +1730427260,0.147730325006715 +1730427280,0.08723661253523017 +1730427300,0.01336362421488708 +1730427320,0.006719526945303051 +1730427340,0.006695232994108195 +1730427360,0.02672189190994722 +1730427380,0.01338329764453961 +1730427400,0.01991899608259744 +1730427420,0.01348708611504484 +1730427440,0.013352917612498329 +1730427460,0.09899029895070284 +1730427480,0.01361841209314994 +1730427500,0.1413379997307848 +1730427520,0.07976071784646062 +1730427540,0.03344034242910647 +1730427560,0.013187392852433071 +1730427580,0.020166711481581067 +1730427600,0.01335916104468639 +1730427620,0.02021427127552052 +1730427640,0.02019658004577891 +1730427660,0.01344628210299852 +1730427680,0.02008300977373142 +1730427700,0.01329787234042553 +1730427720,0.01338150675766091 +1730427740,0.03342692873378794 +1730427760,0.040838551592703505 +1730427780,0.0067686476242046845 +1730427800,0.1214165261382799 +1730427820,0.060204695966285374 +1730427840,0.01344809037116729 +1730427860,0.02005615724027276 +1730427880,0.01329610424145725 +1730427900,0.0134925453686838 +1730427920,0.01331469276346448 +1730427940,0.02025931928687196 +1730427960,0.02018978396931153 +1730427980,0.01329433661260303 +1730428000,0.006713211600429645 +1730428020,0.013210912213488338 +1730428040,0.02667911692122991 +1730428060,0.0067476383265856945 +1730428080,0.01998001998001998 +1730428100,0.1152386117136659 +1730428120,0.05390109149710282 +1730428140,0.02014639715264254 +1730428160,0.019922964537123118 +1730428180,0.02664002664002664 +1730428200,0.013265238442661009 +1730428220,0.1279806008352418 +1730428240,0.013408420488066512 +1730428260,0.006609385327164574 +1730428280,0.013564839934888771 +1730428300,0.0067087079028579095 +1730428320,0.02028534721752654 +1730428340,0.02649708532061473 +1730428360,0.01329698823216541 +1730428380,0.02030456852791878 +1730428400,0.10751243112484879 +1730428420,0.06601531555320835 +1730428440,0.0462198745460548 +1730428460,0.04649309245483528 +1730428480,0.02023335806299319 +1730428500,0.01330937645571305 +1730428520,0.006645401382243488 +1730428540,0.006721333512568894 +1730428560,0.006656017039403621 +1730428580,0.013346680013346681 +1730428600,0.006572893387669252 +1730428620,0.01337792642140468 +1730428640,0.013241525423728811 +1730428660,0.006648052120728627 +1730428680,0.01990842126219391 +1730428700,0.09491525423728814 +1730428720,0.059996000266648884 +1730428740,0.033406828355715915 +1730428760,0.02004409701342954 +1730428780,0.006723593088146304 +1730428800,0.01332533813045506 +1730428820,0.01995476918983637 +1730428840,0.0135556459265284 +1730428860,0.006644959797993222 +1730428880,0.03327122704285334 +1730428900,0.020135579569098602 +1730428920,0.0269378409320493 +1730428940,0.01339943722363661 +1730428960,0.02000400080016003 +1730428980,0.060402684563758385 +1730429000,0.4061792515647889 +1730429020,0.1337255950788981 +1730429040,0.1271923952336323 +1730429060,0.2097712816348626 +1730429080,0.09332089054792694 +1730429100,0.11297182349813929 +1730429120,0.12065151819827069 +1730429140,0.1004419445560466 +1730429160,0.1219512195121951 +1730429180,0.08695652173913043 +1730429200,0.04698932671007585 +1730429220,0.02013422818791946 +1730429240,0.01343183344526528 +1730429260,0.11471759228018079 +1730429280,0.03385469564628614 +1730429300,0.1337255950788981 +1730429320,0.04671649759743727 +1730429340,0.04034155852887783 +1730429360,0.04752851711026616 +1730429380,0.006621639517944643 +1730429400,0.013376136971642591 +1730429420,0.01331735251032095 +1730429440,0.02005481649842904 +1730429460,0.06633059166887768 +1730429480,0.12659071223932308 +1730429500,0.124467736652473 +1730429520,0.136986301369863 +1730429540,0.11417058428475489 +1730429560,0.1194267515923567 +1730429580,0.12239069830692871 +1730429600,0.2323882876303034 +1730429620,0.1008606777837547 +1730429640,0.03356605800214823 +1730429660,0.01340213093881927 +1730429680,0.026834831611431638 +1730429700,0.01991635132443736 +1730429720,0.02003874156702959 +1730429740,0.013337779259753251 +1730429760,0.013380611493945269 +1730429780,0.02037351443123939 +1730429800,0.02012747400201275 +1730429820,0.02018706681919117 +1730429840,0.01330494944119212 +1730429860,0.02005079534821548 +1730429880,0.006635700066357 +1730429900,0.1264643237486688 +1730429920,0.08833322008561527 +1730429940,0.04010159069643096 +1730429960,0.026657780739753417 +1730429980,0.026878107781212197 +1730430000,0.006712310377231843 +1730430020,0.01331469276346448 +1730430040,0.01361377714246818 +1730430060,0.01332001332001332 +1730430080,0.0134453781512605 +1730430100,0.02016129032258065 +1730430120,0.07375620222609629 +1730430140,0.02666666666666667 +1730430160,0.013531799729364009 +1730430180,0.027014250016883908 +1730430200,0.11491145058807621 +1730430220,0.07324056195485719 +1730430240,0.046923180050945174 +1730430260,0.09473541751251861 +1730430280,0.020118025751072962 +1730430300,0.013328890369876709 +1730430320,0.02008435428800964 +1730430340,0.006766357669666418 +1730430360,0.013629548861932671 +1730430380,0.006695232994108195 +1730430400,0.01331203407880724 +1730430420,0.01355380862022228 +1730430440,0.013323562720671511 +1730430460,0.013498009043666059 +1730430480,0.006645843025187745 +1730430500,0.1839738348323794 +1730430520,0.08019246190858059 +1730430540,0.1390636381696576 +1730430560,0.1420935110629948 +1730430580,0.13249420337860218 +1730430600,0.06050420168067226 +1730430620,0.013332444503699751 +1730430640,0.01999733368884149 +1730430660,0.0066693344004268365 +1730430680,0.01338508901084192 +1730430700,0.0134752728742757 +1730430720,0.02027300986619813 +1730430740,0.013430029546064998 +1730430760,0.02009107956067506 +1730430780,0.01337703163667982 +1730430800,0.1276281319271848 +1730430820,0.053085600530856016 +1730430840,0.04678831628901811 +1730430860,0.02013963480128894 +1730430880,0.03309504898067249 +1730430900,0.013514426650449348 +1730430920,0.01331823932876074 +1730430940,0.08650519031141869 +1730430960,0.1351077484293724 +1730430980,0.1276281319271848 +1730431000,0.1275938486334027 +1730431020,0.1270308216888413 +1730431040,0.1280323450134771 +1730431060,0.1668557698725222 +1730431080,0.12786002691790038 +1730431100,0.2422611036339166 +1730431120,0.09395973154362416 +1730431140,0.04720480140265696 +1730431160,0.02040955167018165 +1730431180,0.02006018054162487 +1730431200,0.01344628210299852 +1730431220,0.0201992997576084 +1730431240,0.02037213092489474 +1730431260,0.02017213555675094 +1730431280,0.01333600053344002 +1730431300,0.01337077149351518 +1730431320,0.01995211492418196 +1730431340,0.026957811025744707 +1730431360,0.013341338136215061 +1730431380,0.006666666666666667 +1730431400,0.1470883198502373 +1730431420,0.05993606819392648 +1730431440,0.04041764904008084 +1730431460,0.020012007204322592 +1730431480,0.02654456168292521 +1730431500,0.01334400854016547 +1730431520,0.02020338069903697 +1730431540,0.013332444503699751 +1730431560,0.013264358668258392 +1730431580,0.00675538742146862 +1730431600,0.02699784017278618 +1730431620,0.0131457867753385 +1730431640,0.03377009320545725 +1730431660,0.02011263073209976 +1730431680,0.01334578940344321 +1730431700,0.1525198938992042 +1730431720,0.18145161290322578 +1730431740,0.1339315609723431 +1730431760,0.1409585179218687 +1730431780,0.1005564121472146 +1730431800,0.02012207391508485 +1730431820,0.01340931947703654 +1730431840,0.02014775016789792 +1730431860,0.0066212010858769784 +1730431880,0.02040816326530612 +1730431900,0.013293452974410098 +1730431920,0.0270800893642949 +1730431940,0.03318951211417192 +1730431960,0.006687621213134488 +1730431980,0.013466199838405598 +1730432000,0.1007996774410322 +1730432020,0.04718570947084597 +1730432040,0.03380662609871535 +1730432060,0.01982422520319831 +1730432080,0.02686547115320035 +1730432100,0.040529586598216705 +1730432120,0.08755977638580185 +1730432140,0.006677350427350427 +1730432160,0.03358635050715389 +1730432180,0.02006688963210702 +1730432200,0.01995609658750748 +1730432220,0.027196083763937992 +1730432240,0.006701514542286557 +1730432260,0.013447186176292609 +1730432280,0.019929582143094402 +1730432300,0.1075341084750319 +1730432320,0.10728894253336019 +1730432340,0.03311039004039468 +1730432360,0.02023472278429786 +1730432380,0.02687449610319807 +1730432400,0.02017213555675094 +1730432420,0.019998666755549628 +1730432440,0.03355254328278083 +1730432460,0.0202020202020202 +1730432480,0.02025931928687196 +1730432500,0.013478905512872352 +1730432520,0.040246847330292455 +1730432540,0.01330494944119212 +1730432560,0.013478905512872352 +1730432580,0.02028534721752654 +1730432600,0.2324963464859838 +1730432620,0.1957343412526998 +1730432640,0.09306654257794324 +1730432660,0.08705551463202305 +1730432680,0.1134997997062358 +1730432700,0.07399434952240011 +1730432720,0.1137275889751137 +1730432740,0.09357663257803624 +1730432760,0.08012820512820512 +1730432780,0.11447811447811451 +1730432800,0.1078167115902965 +1730432820,0.01998401278976819 +1730432840,0.027461211039406838 +1730432860,0.09474182851729039 +1730432880,0.0132459103251871 +1730432900,0.1494768310911809 +1730432920,0.09382120359201179 +1730432940,0.04118616144975288 +1730432960,0.03321376378371197 +1730432980,0.02032658039162545 +1730433000,0.02005883926183472 +1730433020,0.02041649652919559 +1730433040,0.140327430671567 +1730433060,0.1339674459106437 +1730433080,0.1339674459106437 +1730433100,0.1311905542800918 +1730433120,0.11569348033210829 +1730433140,0.1270223291883942 +1730433160,0.1190161332980693 +1730433180,0.1144626986264476 +1730433200,0.1430128030509398 +1730433220,0.1430128030509398 +1730433240,0.1479488903833221 +1730433260,0.0535475234270415 +1730433280,0.027348557363599073 +1730433300,0.03357281944537702 +1730433320,0.02001067235859125 +1730433340,0.0067226890756302525 +1730433360,0.027010601661152 +1730433380,0.027063599458728008 +1730433400,0.027063599458728008 +1730433420,0.01334935255640101 +1730433440,0.01345895020188425 +1730433460,0.02033209081667231 +1730433480,0.01337524242626898 +1730433500,0.006504911207962012 +1730433520,0.01367801942278758 +1730433540,0 +1730433560,0.107252982973589 +1730433580,0.05955532027527791 +1730433600,0.03374730021598272 +1730433620,0.013280212483399731 +1730433640,0.033306687982946975 +1730433660,0.04036326942482341 +1730433680,0.01336719689881032 +1730433700,0.01346166790065289 +1730433720,0.1003143181970173 +1730433740,0.04011767852366943 +1730433760,0.02005883926183472 +1730433780,0.02671118530884808 +1730433800,0.01338688085676037 +1730433820,0.04059539918809202 +1730433840,0.013307605296426911 +1730433860,0.01350256548744261 +1730433880,0.01335559265442404 +1730433900,0.01337077149351518 +1730433920,0.02002269238470266 +1730433940,0.013442667025137791 +1730433960,0.05359774889454643 +1730433980,0.02041510717931269 +1730434000,0.03315869752636116 +1730434020,0.2872219624607575 +1730434040,0.1598721023181455 +1730434060,0.1671905303283622 +1730434080,0.1264895812529126 +1730434100,0.1390452228034165 +1730434120,0.13963694394574108 +1730434140,0.1479886990448002 +1730434160,0.1259946949602122 +1730434180,0.1259946949602122 +1730434200,0.07227332457293034 +1730434220,0.027054447074737913 +1730434240,0.0198952185158167 +1730434260,0.0203334688897926 +1730434280,0.020012007204322592 +1730434300,0.02045268611944369 +1730434320,0.006644518272425249 +1730434340,0.135473819684346 +1730434360,0.09389671361502347 +1730434380,0.03327565553041395 +1730434400,0.026518164942985954 +1730434420,0.013265238442661009 +1730434440,0.033348896151537376 +1730434460,0.006557807069316021 +1730434480,0.006714113065664026 +1730434500,0.01342011675501577 +1730434520,0.013389569525339762 +1730434540,0.006693888479817926 +1730434560,0.026374785704866153 +1730434580,0.01356576002170522 +1730434600,0.13467106592148678 +1730434620,0.006636140420731303 +1730434640,0.1552899871716967 +1730434660,0.07941234862021043 +1730434680,0.01328197635808208 +1730434700,0.03393741939862893 +1730434720,0.0067957866123003734 +1730434740,0.04655493482309125 +1730434760,0.01353912808015164 +1730434780,0.02689256420599704 +1730434800,0.01348799568384138 +1730434820,0.01993223041658362 +1730434840,0.01992428770671448 +1730434860,0.013455328310010761 +1730434880,0.01354004468214745 +1730434900,0.020021356113187398 +1730434920,0.02019114281868354 +1730434940,0.1070592171294747 +1730434960,0.053351117039013005 +1730434980,0.0266187529114261 +1730435000,0.02638174383326738 +1730435020,0 +1730435040,0.01340302908457311 +1730435060,0.006668889629876626 +1730435080,0.006676458806249164 +1730435100,0.013360053440213761 +1730435120,0.0066269052352551355 +1730435140,0.02686727565824825 +1730435160,0.00668985817500669 +1730435180,0.02670761834813381 +1730435200,0.006738090425173506 +1730435220,0.01999200319872051 +1730435240,0.1625575724735844 +1730435260,0.07346557136178455 +1730435280,0.046954655218674535 +1730435300,0.01331735251032095 +1730435320,0.026777346364975228 +1730435340,0.013144922773578711 +1730435360,0.02018163471241171 +1730435380,0.02012477359629704 +1730435400,0.006610259122157588 +1730435420,0.01336630354875359 +1730435440,0.01337971635001338 +1730435460,0.01975763962065332 +1730435480,0.006856359273225918 +1730435500,0.01982422520319831 +1730435520,0.0134453781512605 +1730435540,0.1420179459040733 +1730435560,0.0683526999316473 +1730435580,0.026460276509889528 +1730435600,0.01994813484939158 +1730435620,0.013245033112582778 +1730435640,0.033863867253640365 +1730435660,0.047364503687664934 +1730435680,0.013328002132480341 +1730435700,0.02031694433157253 +1730435720,0.0745560525959062 +1730435740,0.013311148086522461 +1730435760,0.01995609658750748 +1730435780,0.03374046831770025 +1730435800,0.006725854183481302 +1730435820,0.02046384720327422 +1730435840,0.105953248129263 +1730435860,0.04696095532000537 +1730435880,0.020145044319097503 +1730435900,0.02004008016032064 +1730435920,0.01943886477029741 +1730435940,0.04846974103309791 +1730435960,0.013335111348179761 +1730435980,0.02696508022111366 +1730436000,0.02024838012958963 +1730436020,0.01969020740351798 +1730436040,0.02027986209693774 +1730436060,0.02692152375824472 +1730436080,0.04763200870985302 +1730436100,0.01995875191271372 +1730436120,0.013707079706668492 +1730436140,0.2690703618996368 +1730436160,0.1811594202898551 +1730436180,0.1440625643136448 +1730436200,0.1340123291342804 +1730436220,0.08020854220974534 +1730436240,0.1153167819834487 +1730436260,0.1143625967036663 +1730436280,0.10795492881721878 +1730436300,0.1341651573086469 +1730436320,0.1218686526743399 +1730436340,0.07392969957658445 +1730436360,0.08808781677734111 +1730436380,0.026696923179603548 +1730436400,0.128517316017316 +1730436420,0.0478272752118065 +1730436440,0.1472359791192611 +1730436460,0.09501187648456057 +1730436480,0.08141112618724558 +1730436500,0.03357056532832013 +1730436520,0.026888948642108088 +1730436540,0.0200160128102482 +1730436560,0.020270270270270268 +1730436580,0.02010454362685967 +1730436600,0.01984914648670107 +1730436620,0.02019658004577891 +1730436640,0.04103686478353054 +1730436660,0.02008569898232458 +1730436680,0.02714072465734835 +1730436700,0.02035830618892508 +1730436720,0.01351990806462516 +1730436740,0.1471768798501472 +1730436760,0.08682294797301811 +1730436780,0.034190371991247255 +1730436800,0.040176777822418644 +1730436820,0.03984592907424625 +1730436840,0.02041649652919559 +1730436860,0.039672044432689756 +1730436880,0.01355197181189863 +1730436900,0.027116805640295567 +1730436920,0.027116805640295567 +1730436940,0.027116805640295567 +1730436960,0.01960399921584003 +1730436980,0.02040677504931637 +1730437000,0.027184993883376377 +1730437020,0.03311039004039468 +1730437040,0.02044711014176663 +1730437060,0.02010858636637844 +1730437080,0.12667511167411158 +1730437100,0.1079330814894765 +1730437120,0.0475123871580805 +1730437140,0.03376325207644 +1730437160,0.04051316677920324 +1730437180,0.04057892601109157 +1730437200,0.026418334324020867 +1730437220,0.013186523373112678 +1730437240,0.04158292327950655 +1730437260,0.02022790101813768 +1730437280,0.02014639715264254 +1730437300,0.04019831167090982 +1730437320,0.05992808629644428 +1730437340,0.02009242515571629 +1730437360,0.03358409457281032 +1730437380,0.03358409457281032 +1730437400,0.03358409457281032 +1730437420,0.03358409457281032 +1730437440,0.03358409457281032 +1730437460,0.03358409457281032 +1730437480,0.03358409457281032 +1730437500,0.1602564102564103 +1730437520,0.06547073458164201 +1730437540,0.04809343868086568 +1730437560,0.02018299246501615 +1730437580,0.033536789858474754 +1730437600,0.03382263410674423 +1730437620,0.01996007984031936 +1730437640,0.040368700800645904 +1730437660,0.040368700800645904 +1730437680,0.033178500331784995 +1730437700,0.03351880404907153 +1730437720,0.04085245455164431 +1730437740,0.04085245455164431 +1730437760,0.04030362060858467 +1730437780,0.04021447721179625 +1730437800,0.02640089763051944 +1730437820,0.01334578940344321 +1730437840,0.1266160202585632 +1730437860,0.08108108108108107 +1730437880,0.05372011818426001 +1730437900,0.04681961072837937 +1730437920,0.03947368421052632 +1730437940,0.027054447074737913 +1730437960,0.03447087211306446 +1730437980,0.06727664155005382 +1730438000,0.026068821689259652 +1730438020,0.047619047619047616 +1730438040,0.01977456990310461 +1730438060,0.07564296520423601 +1730438080,0.03328894806924101 +1730438100,0.01350347714536493 +1730438120,0.033176298852100064 +1730438140,0.033176298852100064 +1730438160,0.033176298852100064 +1730438180,0.033176298852100064 +1730438200,0.18760469011725292 +1730438220,0.04009891064626078 +1730438240,0.04009891064626078 +1730438260,0.04009891064626078 +1730438280,0.04794192178617903 +1730438300,0.09171907756813416 +1730438320,0.13409319477036538 +1730438340,0.13409319477036538 +1730438360,0.1462571466560298 +1730438380,0.1276624336491299 +1730438400,0.1053255216904746 +1730438420,0.1115631972699829 +1730438440,0.1304317978993616 +1730438460,1.3891658358258558 +1730438480,0.24993245068900302 +1730438500,0.46129841937453364 +1730438520,0.4583194951843241 +1730438540,0.2339572192513369 +1730438560,0.40730432421424206 +1730438580,0.36437246963562747 +1730438600,0.2930752453653217 +1730438620,0.2690160737104042 +1730438640,0.2736799946599025 +1730438660,0.25304654724645403 +1730438680,0.05410157570839251 +1730438700,0.05301875538471734 +1730438720,0.027464982147761597 +1730438740,0.04695150580186465 +1730438760,0.03373136342170951 +1730438780,0.06724949562878278 +1730438800,0.02718684156868076 +1730438820,0.02034725990233315 +1730438840,0.01348617666891436 +1730438860,0.2242457189453656 +1730438880,0.06100454144919677 +1730438900,0.040074806305102864 +1730438920,0.07437960646426398 +1730438940,0.06625588020936858 +1730438960,0.04073319755600815 +1730438980,0.034004352557127304 +1730439000,0.060773853737592004 +1730439020,0.02017349203147065 +1730439040,0.02727954715951715 +1730439060,0.04138216428719222 +1730439080,0.01337524242626898 +1730439100,0.026378264310208392 +1730439120,0.01357773251866938 +1730439140,0.01319348241968468 +1730439160,0.1462960500066498 +1730439180,0.08576329331046312 +1730439200,0.02674511901577962 +1730439220,0.08007473642065928 +1730439240,0.04585353072186558 +1730439260,0.006701065469409636 +1730439280,0.013245033112582778 +1730439300,0.02689256420599704 +1730439320,0.006641870350690755 +1730439340,0.01999200319872051 +1730439360,0.01995476918983637 +1730439380,0.026493575307987807 +1730439400,0.0404040404040404 +1730439420,0 +1730439440,0.02024974687816402 +1730439460,0.1712328767123288 +1730439480,0.1712328767123288 +1730439500,0.26288481494292626 +1730439520,0.06724497343823549 +1730439540,0.047383740607865696 +1730439560,0.047383740607865696 +1730439580,0.047383740607865696 +1730439600,0.02013828287574679 +1730439620,0.054656008744961404 +1730439640,0.013295220368277601 +1730439660,0.006717721348918447 +1730439680,0.027210884353741503 +1730439700,0.006653802648213454 +1730439720,0.02041094026398149 +1730439740,0.02693602693602694 +1730439760,0.013429127778150808 +1730439780,0.006718172657037285 +1730439800,0.020315568497325118 +1730439820,0.2453906353627802 +1730439840,0.07419898819561552 +1730439860,0.027100271002710032 +1730439880,0.026916089092254902 +1730439900,0.03372226343832198 +1730439920,0.013344898912390738 +1730439940,0.04043126684636119 +1730439960,0.020340362058444642 +1730439980,0.0135464643727987 +1730440000,0.02044293015332198 +1730440020,0.0134898151895319 +1730440040,0.013569441617477439 +1730440060,0.03348064818534887 +1730440080,0.03358860674459223 +1730440100,0.0406421459053038 +1730440120,0.20802576835324119 +1730440140,0.1416621694549379 +1730440160,0.1198162817013912 +1730440180,0.1615726403662313 +1730440200,0.1338329764453961 +1730440220,0.1014541765302672 +1730440240,0.1469115191986644 +1730440260,0.1082910321489002 +1730440280,0.1082910321489002 +1730440300,0.08537466342680763 +1730440320,0.08235536339304096 +1730440340,0.19051507110294622 +1730440360,0.19051507110294622 +1730440380,0.04700194722352783 +1730440400,0.006697923643670461 +1730440420,0.07404415724286484 +1730440440,0.02068109747690611 +1730440460,0.11952984925957899 +1730440480,0.0665911966438037 +1730440500,0.033335555703713576 +1730440520,0.04754142895952187 +1730440540,0.006553938917289291 +1730440560,0.02728512960436562 +1730440580,0.0270800893642949 +1730440600,0.0134961873270801 +1730440620,0.01349983125210935 +1730440640,0.02050300710770913 +1730440660,0.02675585284280936 +1730440680,0.040002666844456296 +1730440700,0.04778483172912827 +1730440720,0.027190537692882884 +1730440740,0.03365416975163223 +1730440760,0.1543520569089323 +1730440780,0.10124190064794819 +1730440800,0.026641800985746637 +1730440820,0.06695232994108195 +1730440840,0.013447186176292609 +1730440860,0.03369726378218089 +1730440880,0.02015316404675534 +1730440900,0.10657430227136482 +1730440920,0.10657430227136482 +1730440940,0.1589614518479269 +1730440960,0.1435897435897436 +1730440980,0.1453680454605524 +1730441000,0.1133257782814479 +1730441020,0.11423195807015189 +1730441040,0.1415094339622642 +1730441060,0.1427406199021207 +1730441080,0.2611840342887758 +1730441100,0.2183695076760191 +1730441120,0.15889830508474578 +1730441140,0.15889830508474578 +1730441160,0.1388980752695284 +1730441180,0.1589614518479269 +1730441200,0.053529608564737374 +1730441220,0.026563952716164168 +1730441240,0.02000933769092243 +1730441260,0.02018027714247276 +1730441280,0.020154517971111858 +1730441300,0.02652519893899204 +1730441320,0.020283975659229212 +1730441340,0.019874130506790332 +1730441360,0.03417868617130358 +1730441380,0.02037489812550937 +1730441400,0.1472556894243641 +1730441420,0.14078841512469828 +1730441440,0.05999200106652446 +1730441460,0.026748696001069952 +1730441480,0.02632444883185258 +1730441500,0.013357376611233549 +1730441520,0.03363379523745459 +1730441540,0.0133645172068159 +1730441560,0.0066396653608658115 +1730441580,0.02023745277927685 +1730441600,0.0066163821622336905 +1730441620,0.01319348241968468 +1730441640,0.02020474137931034 +1730441660,0.01340213093881927 +1730441680,0.026860059092129997 +1730441700,0.16556291390728478 +1730441720,0.08717226580835513 +1730441740,0.02671296914652064 +1730441760,0.020074946466809417 +1730441780,0.02648655807177857 +1730441800,0.01321440370003304 +1730441820,0.04699563611950319 +1730441840,0.1341381623071764 +1730441860,0.06800870511425461 +1730441880,0.006666222251849876 +1730441900,0.01345351809498184 +1730441920,0.013353809174066901 +1730441940,0.03295978905735003 +1730441960,0.013429127778150808 +1730441980,0.01999466808850973 +1730442000,0.18796992481203012 +1730442020,0.06672449456195369 +1730442040,0.03379520108144643 +1730442060,0.04731647965391375 +1730442080,0.03343810606567244 +1730442100,0.006744452687664396 +1730442120,0.020162645339068492 +1730442140,0.006612881893929374 +1730442160,0.01351260049996622 +1730442180,0.02031006702322118 +1730442200,0.020037403152551432 +1730442220,0.040680724116889284 +1730442240,0.0066427527567423945 +1730442260,0.07400928480118416 +1730442280,0.013533631073216942 +1730442300,0.14141414141414138 +1730442320,0.08079175924055745 +1730442340,0.03313233052812935 +1730442360,0.02001734836858611 +1730442380,0.02685284640171858 +1730442400,0.013246787653993909 +1730442420,0.020184350400322952 +1730442440,0.01337255950788981 +1730442460,0.1002405773857257 +1730442480,0.1345261317010829 +1730442500,0.15352780188238438 +1730442520,0.1822969414624266 +1730442540,0.1348072256672958 +1730442560,0.0337997701615629 +1730442580,0.01977848101265823 +1730442600,0.14207428455449558 +1730442620,0.040203698740284115 +1730442640,0.026948730041096807 +1730442660,0.02649533019805259 +1730442680,0.02674154298703035 +1730442700,0.03341575887188398 +1730442720,0.06082313982564033 +1730442740,0.02031694433157253 +1730442760,0.006665333599946677 +1730442780,0.03348961821835231 +1730442800,0.01991899608259744 +1730442820,0.01991899608259744 +1730442840,0.03324026060364313 +1730442860,0.006763154335181929 +1730442880,0.026966898132542296 +1730442900,0.02014369166722621 +1730442920,0.1135756280064137 +1730442940,0.07385028533064787 +1730442960,0.04703036818059661 +1730442980,0.03336002135041366 +1730443000,0.020042757883484773 +1730443020,0.02717575922277329 +1730443040,0.01988466892026248 +1730443060,0.02022381016583524 +1730443080,0.01332001332001332 +1730443100,0.01332001332001332 +1730443120,0.006734006734006734 +1730443140,0.01983995767475696 +1730443160,0.01343183344526528 +1730443180,0.026723677177979688 +1730443200,0.02004677581022386 +1730443220,0.04054601973239627 +1730443240,0.14145224302842518 +1730443260,0.10598834128245889 +1730443280,0.02009915583545491 +1730443300,0.01982291529007533 +1730443320,0.02022653721682848 +1730443340,0.01333333333333333 +1730443360,0.019941504918904552 +1730443380,0.013196093956188969 +1730443400,0.02015181030429234 +1730443420,0.02704712962336872 +1730443440,0.013295220368277601 +1730443460,0.013507125008441949 +1730443480,0.026811448488504593 +1730443500,0.006689410662920597 +1730443520,0.013493455673998109 +1730443540,0.1383946223803875 +1730443560,0.1065601065601066 +1730443580,0.03333111125924938 +1730443600,0.04041492657955005 +1730443620,0.02011532787984444 +1730443640,0.01992561105207226 +1730443660,0.02711312953297634 +1730443680,0.013323562720671511 +1730443700,0.01326172004508985 +1730443720,0.02027986209693774 +1730443740,0.03357056532832013 +1730443760,0.027052617340727718 +1730443780,0.013576810807141399 +1730443800,0.02004543632233062 +1730443820,0.01328638809539627 +1730443840,0.2568435282189929 +1730443860,0.1550805744723889 +1730443880,0.165180046250413 +1730443900,0.10201999591920019 +1730443920,0.1270903010033445 +1730443940,0.08562207732332214 +1730443960,0.1280841310502899 +1730443980,0.1210409521888239 +1730444000,0.1414617716402829 +1730444020,0.100677897845493 +1730444040,0.1403837154890033 +1730444060,0.06556517178075007 +1730444080,0.027464982147761597 +1730444100,0.206818333444526 +1730444120,0.013408420488066512 +1730444140,0.1464713715046605 +1730444160,0.08662046908315565 +1730444180,0.04002935486023084 +1730444200,0.046616941928609476 +1730444220,0.02663647865752148 +1730444240,0.01996539331824837 +1730444260,0.02007763351626288 +1730444280,0.01336273134228636 +1730444300,0.03371771528761211 +1730444320,0.01330406439167166 +1730444340,0.02006688963210702 +1730444360,0.02030456852791878 +1730444380,0.0271112918530568 +1730444400,0.006746727836999054 +1730444420,0.013321787783920602 +1730444440,0.12207527975584939 +1730444460,0.06083547384074625 +1730444480,0.03360215053763441 +1730444500,0.02657454158915759 +1730444520,0.02027300986619813 +1730444540,0.01328462304882099 +1730444560,0.01334400854016547 +1730444580,0.02659397646433083 +1730444600,0.02031832035218422 +1730444620,0.01339943722363661 +1730444640,0.01984652024345065 +1730444660,0.01329875656626105 +1730444680,0.01342101731311233 +1730444700,0.013444474321054051 +1730444720,0.013444474321054051 +1730444740,0.013444474321054051 +1730444760,0.01343363782912413 +1730444780,0.12086215000335729 +1730444800,0.08703220191470844 +1730444820,0.02009915583545491 +1730444840,0.02687449610319807 +1730444860,0.046558031260392416 +1730444880,0.02036383383111594 +1730444900,0.01341021858656296 +1730444920,0.02020610224287735 +1730444940,0.013439956992137632 +1730444960,0.006660893891960301 +1730444980,0.02657630722211149 +1730445000,0.02026753141467369 +1730445020,0.01333066719989335 +1730445040,0.006727211570803902 +1730445060,0.01336541031809677 +1730445080,0.1527833134050751 +1730445100,0.07444000812072815 +1730445120,0.02665245202558635 +1730445140,0.026914278024491988 +1730445160,0.026896180742334592 +1730445180,0.02009377093101139 +1730445200,0.013376136971642591 +1730445220,0.0270160745643658 +1730445240,0.020064205457463877 +1730445260,0.0204582651391162 +1730445280,0.027153621614282798 +1730445300,0.013495276653171389 +1730445320,0.02024974687816402 +1730445340,0.02033209081667231 +1730445360,0.006746727836999054 +1730445380,0.1744381080174438 +1730445400,0.08783190324978042 +1730445420,0.0270947639368692 +1730445440,0.020109934307547928 +1730445460,0.04052137502532586 +1730445480,0.02700330790521839 +1730445500,0.020021356113187398 +1730445520,0.01335202616997129 +1730445540,0.02034174125305126 +1730445560,0.01345080368552021 +1730445580,0.02021427127552052 +1730445600,0.01366773730608898 +1730445620,0.026954177897574122 +1730445640,0.03374730021598272 +1730445660,0.013437248051599031 +1730445680,0.1583635763774332 +1730445700,0.1503553854565336 +1730445720,0.1391650099403579 +1730445740,0.1267258053758421 +1730445760,0.14702933903628948 +1730445780,0.1422764227642276 +1730445800,0.1272520259862032 +1730445820,0.1337166544093067 +1730445840,0.12069196727906659 +1730445860,0.05426304008682086 +1730445880,0.006686726847208293 +1730445900,0.0203210729526519 +1730445920,0.02009915583545491 +1730445940,0.10786759253016918 +1730445960,0.026955994339241188 +1730445980,0.14176736650239652 +1730446000,0.027148092846477526 +1730446020,0.04051863857374392 +1730446040,0.06716367788300087 +1730446060,0.046898030282728126 +1730446080,0.04036598493003229 +1730446100,0.02018163471241171 +1730446120,0.01380738695201933 +1730446140,0.013439956992137632 +1730446160,0.006729927989770509 +1730446180,0.01339943722363661 +1730446200,0.02038597444957869 +1730446220,0.01359157322460075 +1730446240,0.01359157322460075 +1730446260,0.0134961873270801 +1730446280,0.02720348204570185 +1730446300,0.19694397283531412 +1730446320,0.143550481919475 +1730446340,0.1731717064073531 +1730446360,0.1296839806156576 +1730446380,0.1362862010221465 +1730446400,0.1151683490278436 +1730446420,0.1412714429868819 +1730446440,0.10770059235325789 +1730446460,0.120789155818011 +1730446480,0.126514848848049 +1730446500,0.1289096953660357 +1730446520,0.1217367780332747 +1730446540,0.1426049164742632 +1730446560,0.1268103851031169 +1730446580,0.0135080372821829 +1730446600,0.1422667840932186 +1730446620,0.09329601492736239 +1730446640,0.05379597875058839 +1730446660,0.0270947639368692 +1730446680,0.019976028765481418 +1730446700,0.0479320734045467 +1730446720,0.013280212483399731 +1730446740,0.02712783994574432 +1730446760,0.0135080372821829 +1730446780,0.006690753378830456 +1730446800,0.013385984873837091 +1730446820,0.02695236170069402 +1730446840,0.03369726378218089 +1730446860,0.01325468884617934 +1730446880,0.01340302908457311 +1730446900,0.1531801531801532 +1730446920,0.060451370231058565 +1730446940,0.01997070962588204 +1730446960,0.01973684210526316 +1730446980,0.013393156097234309 +1730447000,0.02006688963210702 +1730447020,0.01343815091043472 +1730447040,0.04004805766920304 +1730447060,0.01994813484939158 +1730447080,0.013337779259753251 +1730447100,0.026578073089700997 +1730447120,0.01340123291342804 +1730447140,0.02600780234070221 +1730447160,0.020244280990620152 +1730447180,0.019945482348248122 +1730447200,0.1418248125886405 +1730447220,0.08824327993483573 +1730447240,0.08167710318540701 +1730447260,0.01996805111821086 +1730447280,0.019641220374492598 +1730447300,0.02030456852791878 +1730447320,0.0067294751009421274 +1730447340,0.02014233919699208 +1730447360,0.01353912808015164 +1730447380,0.01339674459106437 +1730447400,0.013411117816670018 +1730447420,0.03419972640218878 +1730447440,0.006661781360335754 +1730447460,0.0134961873270801 +1730447480,0.006633059166887769 +1730447500,0.22900249208594328 +1730447520,0.1637778081070015 +1730447540,0.1127545267626186 +1730447560,0.1012555690562981 +1730447580,0.1210409521888239 +1730447600,0.09400389444705566 +1730447620,0.09994669509594883 +1730447640,0.08032128514056225 +1730447660,0.0870089016799411 +1730447680,0.08742434431741762 +1730447700,0.1202083611593429 +1730447720,0.10682334089998659 +1730447740,0.027177605652941982 +1730447760,0.06779201410073893 +1730447780,0.006702862122126148 +1730447800,0.1904502788736226 +1730447820,0.0464067886502254 +1730447840,0.04720480140265696 +1730447860,0.04720480140265696 +1730447880,0.04720480140265696 +1730447900,0.04720480140265696 +1730447920,0.04720480140265696 +1730447940,0.02686547115320035 +1730447960,0.019969380283565197 +1730447980,0.01343634531407457 +1730448000,0.027048958615093318 +1730448020,0.04019023377319311 +1730448040,0.02675943270002676 +1730448060,0.006667111140742716 +1730448080,0.027542518763340913 +1730448100,0.013388673182487619 +1730448120,0.02012207391508485 +1730448140,0.013341338136215061 +1730448160,0.01335470085470085 +1730448180,0.11437798560183 +1730448200,0.06742633672712561 +1730448220,0.06597611664577423 +1730448240,0.02013963480128894 +1730448260,0.03386616093199675 +1730448280,0.03386616093199675 +1730448300,0.020109934307547928 +1730448320,0.02007226013649137 +1730448340,0.02037905033625433 +1730448360,0.02021427127552052 +1730448380,0.0135464643727987 +1730448400,0.0134707348285849 +1730448420,0.013303179459890912 +1730448440,0.02004677581022386 +1730448460,0.02004677581022386 +1730448480,0.03397662408263115 +1730448500,0.0201992997576084 +1730448520,0.13249420337860218 +1730448540,0.04103686478353054 +1730448560,0.033160896670645965 +1730448580,0.013533631073216942 +1730448600,0.013264358668258392 +1730448620,0.02051702913418137 +1730448640,0.019945482348248122 +1730448660,0.01358695652173913 +1730448680,0.006631739505272233 +1730448700,0.006631739505272233 +1730448720,0.006631739505272233 +1730448740,0.006631739505272233 +1730448760,0.006631739505272233 +1730448780,0.006631739505272233 +1730448800,0.006631739505272233 +1730448820,0.006631739505272233 +1730448840,0.006631739505272233 +1730448860,0.006631739505272233 +1730448880,0.006631739505272233 +1730448900,0.006631739505272233 +1730448920,0.006631739505272233 +1730448940,0.01338419326775079 +1730448960,0.01347164219318335 +1730448980,0.01348254011055683 +1730449000,0.08069939475453934 +1730449020,0.00667779632721202 +1730449040,0.01345351809498184 +1730449060,0.1136439601577646 +1730449080,0.06771397616468039 +1730449100,0.01997469871496105 +1730449120,0.013474365020548409 +1730449140,0.02661698163428267 +1730449160,0.02004141893246042 +1730449180,0.006700616456714018 +1730449200,0.006700616456714018 +1730449220,0.020130175132523652 +1730449240,0.013307605296426911 +1730449260,0.019941504918904552 +1730449280,0.02688172043010753 +1730449300,0.01345080368552021 +1730449320,0.013531799729364009 +1730449340,0.006746727836999054 +1730449360,0.013411117816670018 +1730449380,0.10213809069862449 +1730449400,0.09986019572598363 +1730449420,0.033649639948852554 +1730449440,0.02015858083590915 +1730449460,0.019993335554815063 +1730449480,0.013525393927098131 +1730449500,0.013525393927098131 +1730449520,0.006758583400919168 +1730449540,0.020264793299108352 +1730449560,0.02717391304347826 +1730449580,0.013240648791790799 +1730449600,0.027058107285395393 +1730449620,0.020013342228152098 +1730449640,0.02022517359940673 +1730449660,0.020456870098874872 +1730449680,0.15997866951073192 +1730449700,0.1066240170598427 +1730449720,0.053425938293041264 +1730449740,0.03316969616558312 +1730449760,0.026861862870190052 +1730449780,0.01981375074301565 +1730449800,0.02024154915322853 +1730449820,0.01343363782912413 +1730449840,0.01346892046602465 +1730449860,0.0066693344004268365 +1730449880,0.01329698823216541 +1730449900,0.01321178491214163 +1730449920,0.013455328310010761 +1730449940,0.06812453164384495 +1730449960,0.006702412868632709 +1730449980,0.1855656438465107 +1730450000,0.06766815536608473 +1730450020,0.026493575307987807 +1730450040,0.006671559143371805 +1730450060,0.01997203914519672 +1730450080,0.006675121820973233 +1730450100,0.013328890369876709 +1730450120,0.01343815091043472 +1730450140,0.013525393927098131 +1730450160,0.020120724346076462 +1730450180,0.01337524242626898 +1730450200,0.0269850907373676 +1730450220,0.0066414292355714945 +1730450240,0.02699784017278618 +1730450260,0.0066706690681075315 +1730450280,0.1340392735071376 +1730450300,0.0866089273817455 +1730450320,0.02667911692122991 +1730450340,0.02667911692122991 +1730450360,0.02667911692122991 +1730450380,0.09278897136797455 +1730450400,0.1278686318056397 +1730450420,0.1330937645571305 +1730450440,0.1271158091924801 +1730450460,0.1342101731311233 +1730450480,0.1264643237486688 +1730450500,0.1465299054216065 +1730450520,0.13308490817141339 +1730450540,0.06854949273375377 +1730450560,0.006738090425173506 +1730450580,0.02006018054162487 +1730450600,0.013103583830177552 +1730450620,0.1155283724091064 +1730450640,0.05407963225850064 +1730450660,0.033543539514289546 +1730450680,0.026932399676811197 +1730450700,0.040439441935701294 +1730450720,0.01965923984272608 +1730450740,0.02044432329289901 +1730450760,0.01311303435615001 +1730450780,0.026788106080900084 +1730450800,0.02037351443123939 +1730450820,0.01334311828674361 +1730450840,0.02066115702479339 +1730450860,0.02066115702479339 +1730450880,0.02021699575443089 +1730450900,0.01989917750066331 +1730450920,0.006740815638692282 +1730450940,0.006740815638692282 +1730450960,0.006740815638692282 +1730450980,0.006740815638692282 +1730451000,0.006740815638692282 +1730451020,0.006740815638692282 +1730451040,0.1085408045587138 +1730451060,0.06116207951070336 +1730451080,0.03318951211417192 +1730451100,0.0479912244618127 +1730451120,0.013266998341625211 +1730451140,0.02047641799194594 +1730451160,0.01342732460557234 +1730451180,0.02734481815695926 +1730451200,0.006631299734748011 +1730451220,0.02015587207739855 +1730451240,0.02676838653550157 +1730451260,0.013423719712732401 +1730451280,0.01349892008639309 +1730451300,0.01337703163667982 +1730451320,0.013430029546064998 +1730451340,0.1340302908457311 +1730451360,0.06714563889075405 +1730451380,0.04035512510088781 +1730451400,0.02714072465734835 +1730451420,0.02012747400201275 +1730451440,0.02016400053770668 +1730451460,0.0201328769881216 +1730451480,0.01342462075446369 +1730451500,0.02033484714973226 +1730451520,0.02714440825190011 +1730451540,0.006716367788300087 +1730451560,0.01966697259735151 +1730451580,0.03437843784378438 +1730451600,0.01339764201500536 +1730451620,0.01346801346801347 +1730451640,0.180977277297406 +1730451660,0.16799946240172028 +1730451680,0.16799946240172028 +1730451700,0.2000933769092243 +1730451720,0.1523481486388024 +1730451740,0.1523481486388024 +1730451760,0.1523481486388024 +1730451780,0.1523481486388024 +1730451800,0.132890365448505 +1730451820,0.1209758720344109 +1730451840,0.12032889899057421 +1730451860,0.08680555555555557 +1730451880,0.1027749229188078 +1730451900,0.1254705144291092 +1730451920,0.1254705144291092 +1730451940,0.10144045445323599 +1730451960,0.01341831600134183 +1730451980,0.0204806116876024 +1730452000,0.1343634531407457 +1730452020,0.01343454020286156 +1730452040,0.15449721233290792 +1730452060,0.0791817881887166 +1730452080,0.05382855604898399 +1730452100,0.01329787234042553 +1730452120,0.02019522046449007 +1730452140,0.01328727079457879 +1730452160,0.026788106080900084 +1730452180,0.01315616366267596 +1730452200,0.02712232167073501 +1730452220,0.006642311524410495 +1730452240,0.013280212483399731 +1730452260,0.020286718961319988 +1730452280,0.013405724244252298 +1730452300,0.01322838812090747 +1730452320,0.02687991398427525 +1730452340,0.09304180235262843 +1730452360,0.05320917858330562 +1730452380,0.040042712226374795 +1730452400,0.07964425565806066 +1730452420,0.07964425565806066 +1730452440,0.13316465809974032 +1730452460,0.12065151819827069 +1730452480,0.12065151819827069 +1730452500,0.1267258053758421 +1730452520,0.1389348329474032 +1730452540,0.1479787448711912 +1730452560,0.1325468884617934 +1730452580,0.14016820184221068 +1730452600,0.1359619306594154 +1730452620,0.15726361313151171 +1730452640,0.1406752411575563 +1730452660,0.12139196115457239 +1730452680,0.1828524989841528 +1730452700,0.0661769571835087 +1730452720,0.020283975659229212 +1730452740,0.026720106880427523 +1730452760,0.01331026221216558 +1730452780,0.013295220368277601 +1730452800,0.013266118333775539 +1730452820,0.006645401382243488 +1730452840,0.01321789703258212 +1730452860,0.01345895020188425 +1730452880,0.006667555674089879 +1730452900,0.0534045393858478 +1730452920,0.02657983919197289 +1730452940,0.04084411164057182 +1730452960,0.00654407434068451 +1730452980,0.174590384098845 +1730453000,0.1002673796791444 +1730453020,0.033348896151537376 +1730453040,0.019969380283565197 +1730453060,0.02021154753082261 +1730453080,0.006643194047698133 +1730453100,0.02023062917256727 +1730453120,0.02002402883460152 +1730453140,0.01323626737260093 +1730453160,0.013346680013346681 +1730453180,0.026677337601707346 +1730453200,0.013557483731019521 +1730453220,0.01332533813045506 +1730453240,0.01331026221216558 +1730453260,0.01346710659214868 +1730453280,0.148028529134706 +1730453300,0.060313630880579006 +1730453320,0.02012882447665056 +1730453340,0.03995471798628221 +1730453360,0.026894372352585218 +1730453380,0.01988335100742312 +1730453400,0.02023199352576207 +1730453420,0.006609385327164574 +1730453440,0.02003472685989048 +1730453460,0.00669254450542096 +1730453480,0.01332001332001332 +1730453500,0.026643575567841204 +1730453520,0.0134752728742757 +1730453540,0.02021563342318059 +1730453560,0.013408420488066512 +1730453580,0.013408420488066512 +1730453600,0.120627261761158 +1730453620,0.04023874991616927 +1730453640,0.02020474137931034 +1730453660,0.01994415636218588 +1730453680,0.053817692566431215 +1730453700,0.02669157880688643 +1730453720,0.01350621285791464 +1730453740,0.0134698275862069 +1730453760,0.026739755331238717 +1730453780,0.006742179072276161 +1730453800,0.006742179072276161 +1730453820,0.02000933769092243 +1730453840,0.07358843992507359 +1730453860,0.120910861825754 +1730453880,0.1440639119900465 +1730453900,0.144141670670602 +1730453920,0.2603297510179561 +1730453940,0.1825804706518799 +1730453960,0.1531189667798416 +1730453980,0.1531189667798416 +1730454000,0.1553214478660184 +1730454020,0.1402056349312325 +1730454040,0.1542588866532529 +1730454060,0.1351260049996622 +1730454080,0.1341381623071764 +1730454100,0.1272520259862032 +1730454120,0.1373716229476025 +1730454140,0.1377884946606958 +1730454160,0.1405058209554396 +1730454180,0.03956478733926805 +1730454200,0.013501653952609188 +1730454220,0.01343634531407457 +1730454240,0.12168739859383448 +1730454260,0.13369877665619362 +1730454280,0.01994813484939158 +1730454300,0.03373363918499528 +1730454320,0.006678688305616777 +1730454340,0.04001600640256102 +1730454360,0.02683123155352831 +1730454380,0.026668444562970857 +1730454400,0.02014639715264254 +1730454420,0.02014639715264254 +1730454440,0.02014639715264254 +1730454460,0.02014639715264254 +1730454480,0.02014639715264254 +1730454500,0.02014639715264254 +1730454520,0.02014639715264254 +1730454540,0.02014639715264254 +1730454560,0.02676838653550157 +1730454580,0.006633939233116625 +1730454600,0.026581605528973953 +1730454620,0.01337971635001338 +1730454640,0.02 +1730454660,0.00675538742146862 +1730454680,0.1385407045784404 +1730454700,0.06687621213134488 +1730454720,0.02005347593582888 +1730454740,0.01322926313004366 +1730454760,0.0269432843863667 +1730454780,0.01998401278976819 +1730454800,0.013311148086522461 +1730454820,0.02002002002002002 +1730454840,0.00670331143584931 +1730454860,0.01329787234042553 +1730454880,0.01329787234042553 +1730454900,0.01329787234042553 +1730454920,0.019809825673534072 +1730454940,0.02672903441363181 +1730454960,0.01340662287169862 +1730454980,0.013501653952609188 +1730455000,0.02013963480128894 +1730455020,0.2019522046449007 +1730455040,0.07422903029894055 +1730455060,0.060056052315494456 +1730455080,0.02005347593582888 +1730455100,0.01991370726850315 +1730455120,0.006694784762669881 +1730455140,0.01998667554963358 +1730455160,0.013113894170874042 +1730455180,0.013693940431359118 +1730455200,0.006716818914562063 +1730455220,0.01342191799208107 +1730455240,0.006694336591243809 +1730455260,0.02005079534821548 +1730455280,0.006771397616468038 +1730455300,0.01347345728914039 +1730455320,0.14087341517407928 +1730455340,0.1816347124117053 +1730455360,0.14752229598337022 +1730455380,0.1327844907714779 +1730455400,0.1324240217175396 +1730455420,0.13459855979541022 +1730455440,0.1326347901054447 +1730455460,0.1390268123138034 +1730455480,0.1153559069009975 +1730455500,0.11101678312544899 +1730455520,0.1305034686448245 +1730455540,0.13957197926359172 +1730455560,0.1415475869506606 +1730455580,0.1275681482476165 +1730455600,0.1209921355111918 +1730455620,0.334941050375134 +1730455640,0.2545722516245729 +1730455660,0.1935526930521257 +1730455680,0.1137884872824632 +1730455700,0.07327471356248334 +1730455720,0.07327471356248334 +1730455740,0.07327471356248334 +1730455760,0.07327471356248334 +1730455780,0.07327471356248334 +1730455800,0.07327471356248334 +1730455820,0.07327471356248334 +1730455840,0.07327471356248334 +1730455860,0.08739495798319329 +1730455880,0.1550283095173901 +1730455900,0.07366729172247521 +1730455920,0.1331203407880724 +1730455940,0.09525105456524696 +1730455960,0.1127994160971402 +1730455980,0.02024018351099717 +1730456000,0.02009915583545491 +1730456020,0.08221430528912031 +1730456040,0.02029083530605343 +1730456060,0.1550387596899225 +1730456080,0.04739978331527627 +1730456100,0.02661166921695163 +1730456120,0.034078516902944375 +1730456140,0.013505300830576 +1730456160,0.02676480428236869 +1730456180,0.02702520099993244 +1730456200,0.019993335554815063 +1730456220,0.0269378409320493 +1730456240,0.027054447074737913 +1730456260,0.00667779632721202 +1730456280,0.0202757502027575 +1730456300,0.01338419326775079 +1730456320,0.06672449456195369 +1730456340,0.1338777695963585 +1730456360,0.2105549140800109 +1730456380,0.1478991596638655 +1730456400,0.147542083025954 +1730456420,0.1403931006819093 +1730456440,0.12202562538133009 +1730456460,0.1330052537075214 +1730456480,0.14035556743750838 +1730456500,0.1336183858898985 +1730456520,0.1125902377640903 +1730456540,0.11494252873563221 +1730456560,0.02736352442194555 +1730456580,0.0200293764187475 +1730456600,0.0134707348285849 +1730456620,0.0134707348285849 +1730456640,0.0134707348285849 +1730456660,0.0134707348285849 +1730456680,0.0134707348285849 +1730456700,0.0134707348285849 +1730456720,0.0134707348285849 +1730456740,0.0134707348285849 +1730456760,0.0134707348285849 +1730456780,0.0134707348285849 +1730456800,0.0134707348285849 +1730456820,0.0134707348285849 +1730456840,0.0134707348285849 +1730456860,0.0134707348285849 +1730456880,0.026887141224709282 +1730456900,0.013459855979541021 +1730456920,0.013459855979541021 +1730456940,0.013459855979541021 +1730456960,0.013459855979541021 +1730456980,0.08797455505176964 +1730457000,0.08695070563841882 +1730457020,0.03367230116506162 +1730457040,0.03367230116506162 +1730457060,0.03367230116506162 +1730457080,0.03367230116506162 +1730457100,0.03367230116506162 +1730457120,0.03367230116506162 +1730457140,0.03367230116506162 +1730457160,0.01333688983728994 +1730457180,0.04092211158095758 +1730457200,0.03363605785401951 +1730457220,0.013430029546064998 +1730457240,0.01336809036829089 +1730457260,0.02017891975516244 +1730457280,0.019901817699349872 +1730457300,0.02034587995930824 +1730457320,0.02730934662388202 +1730457340,0.013452613170108289 +1730457360,0.02020065988822302 +1730457380,0.013478905512872352 +1730457400,0.1289096953660357 +1730457420,0.1289096953660357 +1730457440,0.1289096953660357 +1730457460,0.1289096953660357 +1730457480,0.1289096953660357 +1730457500,0.1289096953660357 +1730457520,0.07275613466499106 +1730457540,0.05390472340138805 +1730457560,0.1418248125886405 +1730457580,0.1488699418053864 +1730457600,0.15312916111850872 +1730457620,0.1295160190865712 +1730457640,0.1404588321851381 +1730457660,0.12009607686148921 +1730457680,0.1151995663075151 +1730457700,0.07435446802757875 +1730457720,0.013533631073216942 +1730457740,0.006716367788300087 +1730457760,0.006716818914562063 +1730457780,0.013497098123903359 +1730457800,0.1212447797386501 +1730457820,0.07938608097380259 +1730457840,0.04028467839398415 +1730457860,0.03375185635209937 +1730457880,0.01989389920424403 +1730457900,0.013215276860050218 +1730457920,0.033907500339075004 +1730457940,0.01997868939797549 +1730457960,0.02694509936005389 +1730457980,0.0067902492021457185 +1730458000,0.020001333422228148 +1730458020,0.054340442874609436 +1730458040,0.0068157033805888775 +1730458060,0.006755843804891231 +1730458080,0.006746272684341902 +1730458100,0.1585938016255865 +1730458120,0.08755387931034483 +1730458140,0.0205620287868403 +1730458160,0.006590654451987082 +1730458180,0.02045408058907752 +1730458200,0.02697599136768276 +1730458220,0.006680919294494924 +1730458240,0.006631299734748011 +1730458260,0.006697923643670461 +1730458280,0.006697923643670461 +1730458300,0.006697923643670461 +1730458320,0.006697923643670461 +1730458340,0.006697923643670461 +1730458360,0.006697923643670461 +1730458380,0.006697923643670461 +1730458400,0.006697923643670461 +1730458420,0.006697923643670461 +1730458440,0.006697923643670461 +1730458460,0.006697923643670461 +1730458480,0.02044432329289901 +1730458500,0.01361007145287513 +1730458520,0.0068254726639819805 +1730458540,0.006754931099702783 +1730458560,0.1080642982574632 +1730458580,0.01367801942278758 +1730458600,0.1548821548821549 +1730458620,0.10084711577248891 +1730458640,0.013537295248409369 +1730458660,0.027023375219564917 +1730458680,0.013536379018612519 +1730458700,0.0271333604666938 +1730458720,0.01337434800053497 +1730458740,0.02003205128205128 +1730458760,0.013589726167017731 +1730458780,0.01363884342607747 +1730458800,0.01323276432446738 +1730458820,0.026996018087332117 +1730458840,0.020244280990620152 +1730458860,0.02742355683532154 +1730458880,0.006621639517944643 +1730458900,0.1579453371789589 +1730458920,0.06050013444474321 +1730458940,0.03363153292527073 +1730458960,0.03371544167228591 +1730458980,0.013448994687647101 +1730459000,0.04044762033167049 +1730459020,0.013483449066271148 +1730459040,0.02663647865752148 +1730459060,0.02663647865752148 +1730459080,0.013405724244252298 +1730459100,0.006751738572682467 +1730459120,0.01338777695963585 +1730459140,0.01340482573726542 +1730459160,0.0131900019785003 +1730459180,0.006781500067815001 +1730459200,0.02017484868863484 +1730459220,0.13870541611624831 +1730459240,0.06696578048617158 +1730459260,0.08853173522201035 +1730459280,0.033174097664543524 +1730459300,0.034018233773302486 +1730459320,0.02671832208937279 +1730459340,0.03335779571685903 +1730459360,0.01339584728734092 +1730459380,0.02712783994574432 +1730459400,0.02702520099993244 +1730459420,0.02007628990162618 +1730459440,0.02007628990162618 +1730459460,0.03976670201484624 +1730459480,0.02727768685215494 +1730459500,0.013483449066271148 +1730459520,0.013483449066271148 +1730459540,0.013483449066271148 +1730459560,0.013483449066271148 +1730459580,0.013483449066271148 +1730459600,0.013483449066271148 +1730459620,0.013483449066271148 +1730459640,0.013483449066271148 +1730459660,0.006710058377507885 +1730459680,0.14758167303951158 +1730459700,0.07412898443291327 +1730459720,0.07412898443291327 +1730459740,0.07412898443291327 +1730459760,0.07412898443291327 +1730459780,0.07412898443291327 +1730459800,0.07412898443291327 +1730459820,0.07412898443291327 +1730459840,0.059437326641130626 +1730459860,0.01354554690145615 +1730459880,0.027023375219564917 +1730459900,0.01351077484293724 +1730459920,0.02020610224287735 +1730459940,0.01984914648670107 +1730459960,0.027406646111682077 +1730459980,0.01348890537532879 +1730460000,0.02022653721682848 +1730460020,0.0203527815468114 +1730460040,0.02669514148424987 +1730460060,0.013437248051599031 +1730460080,0.02001067235859125 +1730460100,0.09963467286615742 +1730460120,0.06729475100942127 +1730460140,0.03340236488743403 +1730460160,0.0198873052701359 +1730460180,0.02013828287574679 +1730460200,0.02013828287574679 +1730460220,0.02013828287574679 +1730460240,0.05375260364173891 +1730460260,0.02015858083590915 +1730460280,0.013607293509321 +1730460300,0.013607293509321 +1730460320,0.013607293509321 +1730460340,0.02694509936005389 +1730460360,0.013425521917164531 +1730460380,0.01346076187912236 +1730460400,0.013439053890606099 +1730460420,0.02013828287574679 +1730460440,0.02019250185097934 +1730460460,0.026378264310208392 +1730460480,0.297598917822117 +1730460500,0.1405998928762721 +1730460520,0.1212938005390836 +1730460540,0.1135528688798343 +1730460560,0.09470337549888384 +1730460580,0.2553763440860215 +1730460600,0.2005213555243633 +1730460620,0.2546916890080429 +1730460640,0.1758301210522756 +1730460660,0.2297297297297297 +1730460680,0.23135547087642902 +1730460700,0.1743328416253185 +1730460720,0.12717536813922362 +1730460740,0.1802643877687275 +1730460760,0.137807482946324 +1730460780,0.24954474944358268 +1730460800,0.18396846254927732 +1730460820,0.048279191668390925 +1730460840,0.03971931682775056 +1730460860,0.04721435316336166 +1730460880,0.019851773425092638 +1730460900,0.02702154968587448 +1730460920,0.02020065988822302 +1730460940,0.026887141224709282 +1730460960,0.02031694433157253 +1730460980,0.02006018054162487 +1730461000,0.0270947639368692 +1730461020,0.02674690738883317 +1730461040,0.02668801708033093 +1730461060,0.02046245140167792 +1730461080,0.02046245140167792 +1730461100,0.1945133811791535 +1730461120,0.08904109589041095 +1730461140,0.04029279430528507 +1730461160,0.04029279430528507 +1730461180,0.1194346758675602 +1730461200,0.1630656339176519 +1730461220,0.0958904109589041 +1730461240,0.05416751303405782 +1730461260,0.02012882447665056 +1730461280,0.0269850907373676 +1730461300,0.02705078785419625 +1730461320,0.013417415805715819 +1730461340,0.02031832035218422 +1730461360,0.04076640847941296 +1730461380,0.02035554349301126 +1730461400,0.02035554349301126 +1730461420,0.01997735899314111 +1730461440,0.1618122977346278 +1730461460,0.08782596946358599 +1730461480,0.05479452054794521 +1730461500,0.02028260428639037 +1730461520,0.01995211492418196 +1730461540,0.01328727079457879 +1730461560,0.03312135665076842 +1730461580,0.02752924982794219 +1730461600,0.026827632461435276 +1730461620,0.03437843784378438 +1730461640,0.01353271533933284 +1730461660,0.054296185692955065 +1730461680,0.026444532592886424 +1730461700,0.013478905512872352 +1730461720,0.03398355196085095 +1730461740,0.0945754239005607 +1730461760,0.07391479639833357 +1730461780,0.06045949214026602 +1730461800,0.04087471898630697 +1730461820,0.033523298692591345 +1730461840,0.04067520846044336 +1730461860,0.04028467839398415 +1730461880,0.02696144513345915 +1730461900,0.03355254328278083 +1730461920,0.02035830618892508 +1730461940,0.026777346364975228 +1730461960,0.026896180742334592 +1730461980,0.03318730917297226 +1730462000,0.01355472721111488 +1730462020,0.027014250016883908 +1730462040,0.12645590682196342 +1730462060,0.11023839051949841 +1730462080,0.04013646397752358 +1730462100,0.04006410256410256 +1730462120,0.0400320256204964 +1730462140,0.02648831203231574 +1730462160,0.04136219495381222 +1730462180,0.03343363423604146 +1730462200,0.04026845637583893 +1730462220,0.0338569880823402 +1730462240,0.03427474636687689 +1730462260,0.04758991093888096 +1730462280,0.05352602703064365 +1730462300,0.026777346364975228 +1730462320,0.02729257641921397 +1730462340,0.2017620552828031 +1730462360,0.08233276157804459 +1730462380,0.04031445273130417 +1730462400,0.04605566155668136 +1730462420,0.03421142661648991 +1730462440,0.02012747400201275 +1730462460,0.026926960619320088 +1730462480,0.02684383598416214 +1730462500,0.02030044660982542 +1730462520,0.020277120648867858 +1730462540,0.10622759261718229 +1730462560,0.1282051282051282 +1730462580,0.1064608423714153 +1730462600,0.154289930904944 +1730462620,0.1146711635750422 +1730462640,0.1895424836601307 +1730462660,0.1967120977940143 +1730462680,0.1685885764380606 +1730462700,0.141805658721048 +1730462720,0.1577828085339919 +1730462740,0.13640703860319192 +1730462760,0.1343183344526528 +1730462780,0.1210409521888239 +1730462800,0.1371083841776925 +1730462820,0.12775685852608928 +1730462840,0.1493347814281835 +1730462860,0.054975261132490384 +1730462880,0.02697963037906381 +1730462900,0.02716837601032398 +1730462920,0.02021699575443089 +1730462940,0.1410153102336825 +1730462960,0.1370801919122687 +1730462980,0.03348737525952716 +1730463000,0.04715392388009431 +1730463020,0.03423953982058481 +1730463040,0.027137042062415198 +1730463060,0.02672546268457273 +1730463080,0.040983606557377046 +1730463100,0.04065040650406504 +1730463120,0.01360266612256002 +1730463140,0.1007387508394896 +1730463160,0.1340842048806651 +1730463180,0.1137961041569047 +1730463200,0.1296043656207367 +1730463220,0.1272264631043257 +1730463240,0.2789684969721712 +1730463260,0.189817639482069 +1730463280,0.167369619066747 +1730463300,0.1398601398601399 +1730463320,0.1141475861142819 +1730463340,0.02012477359629704 +1730463360,0.013521736190926921 +1730463380,0.013448994687647101 +1730463400,0.02015045674368619 +1730463420,0.006739452756436177 +1730463440,0.01351533991079876 +1730463460,0.02012882447665056 +1730463480,0.026670222696359512 +1730463500,0.0067294751009421274 +1730463520,0.013529053642697691 +1730463540,0.14944636913253181 +1730463560,0.06693440428380187 +1730463580,0.01994946136454316 +1730463600,0.02003071376110035 +1730463620,0.02672189190994722 +1730463640,0.01988598700782182 +1730463660,0.02022790101813768 +1730463680,0.02683663200268366 +1730463700,0.03373819163292848 +1730463720,0.013344898912390738 +1730463740,0.02002402883460152 +1730463760,0.02002402883460152 +1730463780,0.02002402883460152 +1730463800,0.02002402883460152 +1730463820,0.02002402883460152 +1730463840,0.02002402883460152 +1730463860,0.006666222251849876 +1730463880,0.01339764201500536 +1730463900,0.02004677581022386 +1730463920,0.02004677581022386 +1730463940,0.01345080368552021 +1730463960,0.11423963443316981 +1730463980,0.1132050342944663 +1730464000,0.02649708532061473 +1730464020,0.02004409701342954 +1730464040,0.013253810470510271 +1730464060,0.01329610424145725 +1730464080,0.0200253654629197 +1730464100,0.006660893891960301 +1730464120,0.020263424518743668 +1730464140,0.020263424518743668 +1730464160,0.020263424518743668 +1730464180,0.020263424518743668 +1730464200,0.020263424518743668 +1730464220,0.020263424518743668 +1730464240,0.020263424518743668 +1730464260,0.020263424518743668 +1730464280,0.020263424518743668 +1730464300,0.03388222538456326 +1730464320,0.006720881779689495 +1730464340,0.03345376689415228 +1730464360,0.03345376689415228 +1730464380,0.03345376689415228 +1730464400,0.03345376689415228 +1730464420,0.006706458319361545 +1730464440,0.006678242286630158 +1730464460,0.00659935326338019 +1730464480,0.3633916554508748 +1730464500,0.1155362240043496 +1730464520,0.13414715943389902 +1730464540,0.126632897893895 +1730464560,0.1358787961138664 +1730464580,0.1072601729570289 +1730464600,0.12797198087155648 +1730464620,0.08745963401506997 +1730464640,0.053955621501315165 +1730464660,0.09425705244731704 +1730464680,0.07248764415156507 +1730464700,0.06837139340899767 +1730464720,0.006723593088146304 +1730464740,0.10885573413587761 +1730464760,0.0139703827884884 +1730464780,0.1544142329640819 +1730464800,0.09353911939600454 +1730464820,0.020120724346076462 +1730464840,0.01340302908457311 +1730464860,0.02007628990162618 +1730464880,0.03331778503365096 +1730464900,0.03331778503365096 +1730464920,0.01336362421488708 +1730464940,0.01349892008639309 +1730464960,0.03381119826886665 +1730464980,0.02021154753082261 +1730465000,0.01343454020286156 +1730465020,0.03399741619636908 +1730465040,0.013346680013346681 +1730465060,0.013239772275916852 +1730465080,0.006648494116082707 +1730465100,0.1517751088821433 +1730465120,0.08106464905762345 +1730465140,0.03344481605351171 +1730465160,0.02688172043010753 +1730465180,0.02677017802168384 +1730465200,0.01331469276346448 +1730465220,0.03302509907529723 +1730465240,0.020244280990620152 +1730465260,0.00665513110608279 +1730465280,0.01335826876836762 +1730465300,0.04721753794266442 +1730465320,0.02690160737104042 +1730465340,0.0067199784960688125 +1730465360,0.02001868410516482 +1730465380,0.006683151774376795 +1730465400,0.1431688028361058 +1730465420,0.053941069381700485 +1730465440,0.060180541624874614 +1730465460,0.03378378378378378 +1730465480,0.03335112059765208 +1730465500,0.013257324671881211 +1730465520,0.006706908115358819 +1730465540,0.01364163426778528 +1730465560,0.02003874156702959 +1730465580,0.02719238613188307 +1730465600,0.01342281879194631 +1730465620,0.0404040404040404 +1730465640,0.006644518272425249 +1730465660,0.02041232904674423 +1730465680,0.013562080423136908 +1730465700,0.1940318479860832 +1730465720,0.09481240688067182 +1730465740,0.0267755539192717 +1730465760,0.01337792642140468 +1730465780,0.0268564522626561 +1730465800,0 +1730465820,0.02014775016789792 +1730465840,0.020159935488206437 +1730465860,0.040763638834159927 +1730465880,0.020123423665146228 +1730465900,0.020315568497325118 +1730465920,0.013417415805715819 +1730465940,0.01998933901918977 +1730465960,0.02024154915322853 +1730465980,0.01348617666891436 +1730466000,0.10762814475985472 +1730466020,0.1083423618634886 +1730466040,0.1083423618634886 +1730466060,0.03371998920960345 +1730466080,0.026986911347996217 +1730466100,0.026986911347996217 +1730466120,0.026986911347996217 +1730466140,0.026986911347996217 +1730466160,0.026986911347996217 +1730466180,0.01984652024345065 +1730466200,0.020130175132523652 +1730466220,0.013376136971642591 +1730466240,0.013376136971642591 +1730466260,0.0203334688897926 +1730466280,0.01355656476648817 +1730466300,0.02007628990162618 +1730466320,0.02006688963210702 +1730466340,0.027010601661152 +1730466360,0.01339046598821639 +1730466380,0.01343544269783689 +1730466400,0.02016400053770668 +1730466420,0.1276195593766792 +1730466440,0.08087888387140257 +1730466460,0.026705835224996657 +1730466480,0.01340662287169862 +1730466500,0.01340123291342804 +1730466520,0.01340123291342804 +1730466540,0.01340123291342804 +1730466560,0.01982553528945282 +1730466580,0.02001868410516482 +1730466600,0.013307605296426911 +1730466620,0.006777363605557438 +1730466640,0.006628222973420826 +1730466660,0.03361344537815126 +1730466680,0.013452613170108289 +1730466700,0.02052123948286477 +1730466720,0.06798558705554422 +1730466740,0.1273543803203968 +1730466760,0.2245855076293018 +1730466780,0.1787014362300616 +1730466800,0.1498943925870409 +1730466820,0.1544660846205507 +1730466840,0.1467253568093904 +1730466860,0.13419216317767038 +1730466880,0.132749236691889 +1730466900,0.1138037220511447 +1730466920,0.13581420616596498 +1730466940,0.1200640341515475 +1730466960,0.1283176875801986 +1730466980,0.1416717263711799 +1730467000,0.11941090619609919 +1730467020,0.14083562470659242 +1730467040,0.12040133779264209 +1730467060,0.1965968408921429 +1730467080,0.09384006970976606 +1730467100,0.053619302949061656 +1730467120,0.03949707063392798 +1730467140,0.02675585284280936 +1730467160,0.013394950103810858 +1730467180,0.013136288998357962 +1730467200,0.027244244653316988 +1730467220,0.01322576378785875 +1730467240,0.01338508901084192 +1730467260,0.01344628210299852 +1730467280,0.01329168605037549 +1730467300,0.01346892046602465 +1730467320,0.01346892046602465 +1730467340,0.006583278472679394 +1730467360,0.020510015724345392 +1730467380,0.2328521056483268 +1730467400,0.07354415992511867 +1730467420,0.03324689141565264 +1730467440,0.040203698740284115 +1730467460,0.0132476650990263 +1730467480,0.1146556956902947 +1730467500,0.02007897731075564 +1730467520,0.01993090619186819 +1730467540,0.02008435428800964 +1730467560,0.026586905948820207 +1730467580,0.026528717336516783 +1730467600,0.020057498161396 +1730467620,0.03297065611605671 +1730467640,0.01336719689881032 +1730467660,0.03984592907424625 +1730467680,0.1637331150225133 +1730467700,0.07324056195485719 +1730467720,0.05374538125629828 +1730467740,0.020130175132523652 +1730467760,0.020013342228152098 +1730467780,0.01986623402423681 +1730467800,0.02662406815761448 +1730467820,0.02003071376110035 +1730467840,0.02005615724027276 +1730467860,0.01324240217175396 +1730467880,0.03325573661456601 +1730467900,0.006731740154830025 +1730467920,0.013360053440213761 +1730467940,0.03361344537815126 +1730467960,0.0267022696929239 +1730467980,0.149812734082397 +1730468000,0.08720735225062051 +1730468020,0.03370862266567788 +1730468040,0.02663293161994807 +1730468060,0.027326137450471383 +1730468080,0.027326137450471383 +1730468100,0.027326137450471383 +1730468120,0.01329875656626105 +1730468140,0.02048200996791152 +1730468160,0.013357376611233549 +1730468180,0.006652474720596061 +1730468200,0.020277120648867858 +1730468220,0.027137042062415198 +1730468240,0.02033898305084746 +1730468260,0.006750826976304598 +1730468280,0.006750826976304598 +1730468300,0.006750826976304598 +1730468320,0.020159935488206437 +1730468340,0.01338419326775079 +1730468360,0.2462548737943772 +1730468380,0.2462548737943772 +1730468400,0.1736227045075125 +1730468420,0.1856763925729443 +1730468440,0.09564148107664981 +1730468460,0.05369848301785476 +1730468480,0.13666803334700012 +1730468500,0.19577398231283327 +1730468520,0.08084619012329045 +1730468540,0.1541658288089014 +1730468560,0.1009353340959559 +1730468580,0.09361417586091608 +1730468600,0.054204214377667856 +1730468620,0.02022653721682848 +1730468640,0.26102670503982334 +1730468660,0.01369769193890829 +1730468680,0.11634273200109499 +1730468700,0.06715916722632638 +1730468720,0.04702404944242913 +1730468740,0.02015722636565209 +1730468760,0.01321178491214163 +1730468780,0.01340482573726542 +1730468800,0.1324327903588929 +1730468820,0.1418727199027158 +1730468840,0.1403180542563143 +1730468860,0.1260532077224176 +1730468880,0.1273458445040214 +1730468900,0.1294983642311887 +1730468920,0.1339315609723431 +1730468940,0.1148726265288195 +1730468960,0.047422261364406214 +1730468980,0.11582748518089529 +1730469000,0.08609271523178808 +1730469020,0.04069728006511565 +1730469040,0.05405040199986487 +1730469060,0.1404494382022472 +1730469080,0.1388705197725169 +1730469100,0.1213510415964404 +1730469120,0.129172615405534 +1730469140,0.12863913337846988 +1730469160,0.12041744715012041 +1730469180,0.09889892529834508 +1730469200,0.1139486560761445 +1730469220,0.1284564938138057 +1730469240,0.128127318092926 +1730469260,0.1868161195623165 +1730469280,0.2307274701411509 +1730469300,0.16270083384177342 +1730469320,0.16125781092521668 +1730469340,0.04042854255104103 +1730469360,0.03344705331460298 +1730469380,0.03364737550471063 +1730469400,0.03364737550471063 +1730469420,0.026546323334218212 +1730469440,0.033790633236466854 +1730469460,0.03346944239908963 +1730469480,0.02037213092489474 +1730469500,0.039708802117802776 +1730469520,0.03427239701144698 +1730469540,0.026968716289104643 +1730469560,0.01346257404415724 +1730469580,0.02021699575443089 +1730469600,0.226545842217484 +1730469620,0.1822354211663067 +1730469640,0.1822354211663067 +1730469660,0.14749262536873162 +1730469680,0.1320480654958405 +1730469700,0.1418823052496453 +1730469720,0.141280947255113 +1730469740,0.1402056349312325 +1730469760,0.1280064676952099 +1730469780,0.02019793981013937 +1730469800,0.02010723860589812 +1730469820,0.013307605296426911 +1730469840,0.01324240217175396 +1730469860,0.020274379941880107 +1730469880,0.02662229617304493 +1730469900,0.01998933901918977 +1730469920,0.1687934643170616 +1730469940,0.1074763216228925 +1730469960,0.054903575595360646 +1730469980,0.02005615724027276 +1730470000,0.04034969737726967 +1730470020,0.02046943231441048 +1730470040,0.03369953494641774 +1730470060,0.006723593088146304 +1730470080,0.027014250016883908 +1730470100,0.02039013117651057 +1730470120,0.01995609658750748 +1730470140,0.01995609658750748 +1730470160,0.01995609658750748 +1730470180,0.01343273557660017 +1730470200,0.027102107188833928 +1730470220,0.027102107188833928 +1730470240,0.027102107188833928 +1730470260,0.006625149065853982 +1730470280,0.013634194559956372 +1730470300,0.1735068401735068 +1730470320,0.1735068401735068 +1730470340,0.07472318456626588 +1730470360,0.0536480686695279 +1730470380,0.0134898151895319 +1730470400,0.0134898151895319 +1730470420,0.0134898151895319 +1730470440,0.02020338069903697 +1730470460,0.027074590496818738 +1730470480,0.027074590496818738 +1730470500,0.027074590496818738 +1730470520,0.027074590496818738 +1730470540,0.0201992997576084 +1730470560,0.0331389183457052 +1730470580,0.027348557363599073 +1730470600,0.013536379018612519 +1730470620,0.0132749236691889 +1730470640,0.01329610424145725 +1730470660,0.013595268846441442 +1730470680,0.16617920765753788 +1730470700,0.02032244953258366 +1730470720,0.1480982834062605 +1730470740,0.06747638326585695 +1730470760,0.053554692729950455 +1730470780,0.013360053440213761 +1730470800,0.033536789858474754 +1730470820,0.0199468085106383 +1730470840,0.01343273557660017 +1730470860,0.02676838653550157 +1730470880,0.006651147322913203 +1730470900,0.006687174000267486 +1730470920,0.02011532787984444 +1730470940,0.013495276653171389 +1730470960,0.02680426187763854 +1730470980,0.020100502512562807 +1730471000,0.013400335008375211 +1730471020,0.1482579688658265 +1730471040,0.09407969894496337 +1730471060,0.040606388738494856 +1730471080,0.02674511901577962 +1730471100,0.01335202616997129 +1730471120,0.02010319640822891 +1730471140,0.02010319640822891 +1730471160,0.09212344541685859 +1730471180,0.1157013543864425 +1730471200,0.1279978442468337 +1730471220,0.1141475861142819 +1730471240,0.1667778519012675 +1730471260,0.1667778519012675 +1730471280,0.12905855182719742 +1730471300,0.1395998138669148 +1730471320,0.11624726477024071 +1730471340,0.11624726477024071 +1730471360,0.11624726477024071 +1730471380,0.1204980586423885 +1730471400,0.2536679007267243 +1730471420,0.1693766937669377 +1730471440,0.139017608897127 +1730471460,0.14313952695794419 +1730471480,0.1270733012306046 +1730471500,0.14141414141414138 +1730471520,0.1200560261455346 +1730471540,0.1232201533406353 +1730471560,0.1321091221348834 +1730471580,0.1004890466939104 +1730471600,0.1060304837640822 +1730471620,0.1307369435078786 +1730471640,0.11340893929286189 +1730471660,0.11111111111111109 +1730471680,0.1382361072712192 +1730471700,0.1382361072712192 +1730471720,0.2358967446249242 +1730471740,0.173982869379015 +1730471760,0.173982869379015 +1730471780,0.173982869379015 +1730471800,0.1741926839072759 +1730471820,0.06064281382656155 +1730471840,0.02031832035218422 +1730471860,0.02031832035218422 +1730471880,0.0066124446207763005 +1730471900,0.10723860589812328 +1730471920,0.1275681482476165 +1730471940,0.1257861635220126 +1730471960,0.09980039920159682 +1730471980,0.1154812852387745 +1730472000,0.1079258010118044 +1730472020,0.11992005329780149 +1730472040,0.1209433581939125 +1730472060,0.07468259895444361 +1730472080,0.269996625042187 +1730472100,0.1703925845147219 +1730472120,0.14804845222072682 +1730472140,0.1351351351351351 +1730472160,0.1350621285791464 +1730472180,0.1359157322460075 +1730472200,0.1359157322460075 +1730472220,0.1359157322460075 +1730472240,0.1359157322460075 +1730472260,0.13342228152101399 +1730472280,0.1278858450562025 +1730472300,0.08859206760256236 +1730472320,0.01322926313004366 +1730472340,0.020394289598912298 +1730472360,0.040606388738494856 +1730472380,0.006738090425173506 +1730472400,0.013521736190926921 +1730472420,0.013521736190926921 +1730472440,0.02687449610319807 +1730472460,0.2363746876477342 +1730472480,0.12677653966771202 +1730472500,0.12677653966771202 +1730472520,0.12677653966771202 +1730472540,0.0941492938802959 +1730472560,0.1420070327292399 +1730472580,0.1420070327292399 +1730472600,0.06752650415288002 +1730472620,0.17397122783539648 +1730472640,0.1214001483779591 +1730472660,0.1214001483779591 +1730472680,0.1214001483779591 +1730472700,0.1214001483779591 +1730472720,0.1214001483779591 +1730472740,0.1214001483779591 +1730472760,0.12303485987696511 +1730472780,0.06695232994108195 +1730472800,0.09500542888165038 +1730472820,0.13773156118724608 +1730472840,0.01342101731311233 +1730472860,0.026887141224709282 +1730472880,0.1268527173187341 +1730472900,0.0206996481059822 +1730472920,0.180469219971927 +1730472940,0.060366221745254536 +1730472960,0.02703616086515715 +1730472980,0.026809651474530828 +1730473000,0.026791694574681852 +1730473020,0.013511687609782459 +1730473040,0.01324327903588929 +1730473060,0.013517166801838329 +1730473080,0.02708375651702891 +1730473100,0.02710394362379726 +1730473120,0.01328374070138151 +1730473140,0.094010206822455 +1730473160,0.02009377093101139 +1730473180,0.01341921631776704 +1730473200,0.00674399784192069 +1730473220,0.1404870216751405 +1730473240,0.12166272389320719 +1730473260,0.06805962022731912 +1730473280,0.03328894806924101 +1730473300,0.03328894806924101 +1730473320,0.03328894806924101 +1730473340,0.03328894806924101 +1730473360,0.03328894806924101 +1730473380,0.03328894806924101 +1730473400,0.03328894806924101 +1730473420,0.006707807888382077 +1730473440,0.0270929287455974 +1730473460,0.01331469276346448 +1730473480,0.02011397921555481 +1730473500,0.02025931928687196 +1730473520,0.026926960619320088 +1730473540,0.01347345728914039 +1730473560,0.02683123155352831 +1730473580,0.03314111486710413 +1730473600,0.033921302578019 +1730473620,0.006686726847208293 +1730473640,0.0949088197410345 +1730473660,0.03990157611225643 +1730473680,0.026675558519506502 +1730473700,0.0462198745460548 +1730473720,0.02662761283450939 +1730473740,0.027048958615093318 +1730473760,0.02024291497975709 +1730473780,0.020028039254956942 +1730473800,0.01962195042187193 +1730473820,0.01360081604896294 +1730473840,0.026565716942285978 +1730473860,0.02002670226969292 +1730473880,0.02012207391508485 +1730473900,0.0132520540683806 +1730473920,0.0134752728742757 +1730473940,0.0134752728742757 +1730473960,0.0134752728742757 +1730473980,0.0134752728742757 +1730474000,0.1473543201607502 +1730474020,0.060585661393470214 +1730474040,0.04676018704074816 +1730474060,0.04676018704074816 +1730474080,0.0067127609585822656 +1730474100,0.01956947162426614 +1730474120,0.006778282383244086 +1730474140,0.006778282383244086 +1730474160,0.02643579406516423 +1730474180,0.01359064963305246 +1730474200,0.01359064963305246 +1730474220,0.01359064963305246 +1730474240,0.01335559265442404 +1730474260,0.01996805111821086 +1730474280,0.02693421318429735 +1730474300,0.02674690738883317 +1730474320,0.01341291663872309 +1730474340,0.02018027714247276 +1730474360,0.02018027714247276 +1730474380,0.02018027714247276 +1730474400,0.02018027714247276 +1730474420,0.02018027714247276 +1730474440,0.02018027714247276 +1730474460,0.02018027714247276 +1730474480,0.02018027714247276 +1730474500,0.02018027714247276 +1730474520,0.040002666844456296 +1730474540,0.09372698667737832 +1730474560,0.09372698667737832 +1730474580,0.1079622132253711 +1730474600,0.04042581862282711 +1730474620,0.026851043834329062 +1730474640,0.01330140994945464 +1730474660,0.06726306585054147 +1730474680,0.026643575567841204 +1730474700,0.01358049840429144 +1730474720,0.01328374070138151 +1730474740,0.02708925910876338 +1730474760,0.01350256548744261 +1730474780,0.1070090957731407 +1730474800,0.05985634477254589 +1730474820,0.0204932030876426 +1730474840,0.020057498161396 +1730474860,0.1868285847734703 +1730474880,0.06109150149334781 +1730474900,0.04010695187165775 +1730474920,0.04727174500270124 +1730474940,0.019998666755549628 +1730474960,0.03346048316937697 +1730474980,0.033335555703713576 +1730475000,0.02023199352576207 +1730475020,0.020070917240917908 +1730475040,0.09426339886883921 +1730475060,0.02714256632964647 +1730475080,0.00672314105149926 +1730475100,0.02038597444957869 +1730475120,0.05996002664890073 +1730475140,0.006726306585054147 +1730475160,0.2156043659884113 +1730475180,0.08773113780537185 +1730475200,0.03322921512593873 +1730475220,0.03322921512593873 +1730475240,0.03322921512593873 +1730475260,0.03322921512593873 +1730475280,0.03322921512593873 +1730475300,0.03322921512593873 +1730475320,0.03371544167228591 +1730475340,0.013579576317218898 +1730475360,0.01346801346801347 +1730475380,0.01346801346801347 +1730475400,0.01346801346801347 +1730475420,0.01346801346801347 +1730475440,0.01346801346801347 +1730475460,0.01346801346801347 +1730475480,0.01346801346801347 +1730475500,0.01346801346801347 +1730475520,0.01346801346801347 +1730475540,0.01346801346801347 +1730475560,0.01346801346801347 +1730475580,0.01346801346801347 +1730475600,0.01346801346801347 +1730475620,0.01346801346801347 +1730475640,0.01346801346801347 +1730475660,0.01346801346801347 +1730475680,0.01346801346801347 +1730475700,0.01346801346801347 +1730475720,0.01346801346801347 +1730475740,0.01346801346801347 +1730475760,0.01346801346801347 +1730475780,0.01346801346801347 +1730475800,0.01346801346801347 +1730475820,0.01346801346801347 +1730475840,0.01346801346801347 +1730475860,0.01346801346801347 +1730475880,0.01346801346801347 +1730475900,0.01346801346801347 +1730475920,0.01346801346801347 +1730475940,0.01346801346801347 +1730475960,0.01346801346801347 +1730475980,0.01346801346801347 +1730476000,0.01346801346801347 +1730476020,0.01346801346801347 +1730476040,0.01346801346801347 +1730476060,0.01346801346801347 +1730476080,0.01346801346801347 +1730476100,0.01346801346801347 +1730476120,0.01346801346801347 +1730476140,0.01346801346801347 +1730476160,0.01346801346801347 +1730476180,0.01346801346801347 +1730476200,0.01346801346801347 +1730476220,0.01346801346801347 +1730476240,0.01346801346801347 +1730476260,0.01346801346801347 +1730476280,0.01346801346801347 +1730476300,0.01346801346801347 +1730476320,0.01346801346801347 +1730476340,0.01346801346801347 +1730476360,0.01346801346801347 +1730476380,0.01346801346801347 +1730476400,0.01347799716962059 +1730476420,0.01344176355937899 +1730476440,0.02005079534821548 +1730476460,0.02005079534821548 +1730476480,0.02005079534821548 +1730476500,0.02005079534821548 +1730476520,0.02005079534821548 +1730476540,0.02005079534821548 +1730476560,0.02005079534821548 +1730476580,0.02005079534821548 +1730476600,0.02005079534821548 +1730476620,0.02005079534821548 +1730476640,0.01380834023750345 +1730476660,0.0270800893642949 +1730476680,0.0270800893642949 +1730476700,0.0270800893642949 +1730476720,0.026720106880427523 +1730476740,0.006835269993164729 +1730476760,0.013312920189043469 +1730476780,0.013312920189043469 +1730476800,0.013312920189043469 +1730476820,0.013312920189043469 +1730476840,0.013312920189043469 +1730476860,0.013312920189043469 +1730476880,0.013312920189043469 +1730476900,0.013312920189043469 +1730476920,0.013312920189043469 +1730476940,0.013312920189043469 +1730476960,0.013312920189043469 +1730476980,0.013312920189043469 +1730477000,0.013312920189043469 diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100644 index 0000000..8eba513 --- /dev/null +++ b/docs/getting-started.md @@ -0,0 +1,43 @@ +# Getting started + +How to build and/or run ATSC + +## Compiling from source + +1. Get [Rust](https://www.rust-lang.org/) +2. Checkout the repository: + + ```bash + git clone https://github.com/instaclustr/atsc + cd atsc + ``` + +3. Build the project: + + ```bash + cargo build --release + ``` + +4. Get a CSV file with the proper format (or get one from [tests folder](https://github.com/instaclustr/atsc/tree/main/atsc/tests/csv)). + + **Note**: ATSC was originally built with a specific format in mind `WBRO`. For information about this format and how to use it check the [WAVBRRO](https://github.com/instaclustr/atsc/tree/main/wavbrro) library documentation. + +5. Run it + + ```bash + atsc --csv + ``` + +## Docker container + +WIP + +## Binary release + +1. Download the latest [release](https://github.com/instaclustr/atsc/releases) +2. Get a CSV file with the proper format (or get one from [tests folder](https://github.com/instaclustr/atsc/tree/main/atsc/tests/csv)) +3. Run it + +```bash +atsc --csv +``` diff --git a/docs/usage.md b/docs/usage.md new file mode 100644 index 0000000..15eabf7 --- /dev/null +++ b/docs/usage.md @@ -0,0 +1,96 @@ +# Usage + +## CLI Options + +Compressor usage: + +```txt +Usage: atsc [OPTIONS] + +Arguments: + input file + + --compressor + Select a compressor, default is auto [default: auto] [possible values: auto, noop, fft, constant, polynomial, idw] + -e, --error + Sets the maximum allowed error for the compressed data, must be between 0 and 50. Default is 5 (5%). + 0 is lossless compression + 50 will do a median filter on the data. + In between will pick optimize for the error [default: 5] + -u + Uncompresses the input file/directory + -c, --compression-selection-sample-level + Samples the input data instead of using all the data for selecting the optimal compressor. + Only impacts speed, might or not increased compression ratio. For best results use 0 (default). + Only works when compression = Auto. + 0 will use all the data (slowest) + 6 will sample 128 data points (fastest) [default: 0] + --verbose + Verbose output, dumps everysample in the input file (for compression) and in the ouput file (for decompression) + --csv + Defines user input as a CSV file + --no-header + Defines if the CSV has no header + --fields + Defines names of fields in CSV file. It should follow this format: + --fields=TIME_FIELD_NAME,VALUE_FIELD_NAME + It assumes that the one before comma is a name of time field and the one + after comma is value field. [default: time,value] + -h, --help + Print help + -V, --version + Print version +``` + +## Examples + +### Compressing a file with a specific compressor + +When this should be used? + +When data in known and this way, avoid sample analysis and compress faster. + +```bash +atsc --compressor fft +``` + +### Compressing a file with a specific error level + +When this should be used? + +When it is necessary to restrict the error of the output data. + +```bash +atsc -e 1 +``` + +### Compressing a file with a specific compressor and a specific error level + +When this should be used? + +When data in known and this way, avoid sample analysis and compress faster and restrict the error of the output data. + +```bash +atsc --compressor fft -e 1 +``` + +### Improving compression speed by reducing sample analysis + +When this should be used? + +There is enough knowledge about the data structure (e.g. it often repeats) that using a reduced sample size is ok. +The worst case would be a less than ideal compressor selected, impacting the compression ration. + +```bash +atsc -c 6 +``` + +### Decompressing + +When this should be used? + +If the data is needed! + +```bash +atsc -u +``` diff --git a/paper/ATCS-AdvancedTimeSeriesCompressor.pdf b/paper/ATCS-AdvancedTimeSeriesCompressor.pdf new file mode 100644 index 0000000..be68a2a Binary files /dev/null and b/paper/ATCS-AdvancedTimeSeriesCompressor.pdf differ diff --git a/paper/BRRO.md b/paper/BRRO.md deleted file mode 100644 index eb8e884..0000000 --- a/paper/BRRO.md +++ /dev/null @@ -1,144 +0,0 @@ -# BRRO - A Novel Approach to Monitoring TimeSeries Compression - -(BR from Bromhead RO from Rolo, BRRO sounds cool (?). Ok, ok, we can get a new name.) - -> INTERNAL COMMENT: There is a very generic (expired too) patent on compression [11]. - -## Abstract - -Time series data is a collection of observations (behavior) for a single subject (entity) at different time intervals (generally equally spaced as in the case of metrics, or unequally spaced as in the case of events). -For example: Max Temperature, Humidity and Wind (all three behaviors) in New York City (single entity) collected on First day of every year (multiple intervals of time) -The relevance of time as an axis makes time series data distinct from other types of data. [1] - -In this document we propose a novel approach to Monitoring timeseries compression, instead of relying on compression based on the properties of the samples [2] [3] or in the small segments of the sequence [4]. -We propose an approach each timeseries as a digital signal and apply a set of techniques that already exist in other domains, namely in Audio compression. - -One important factor in our approach is that although we rely mostly on Function Approximation (FA), and that is frequently used in Timeseries as a lossy compression, we approach this problem from a lossless perspective. - -> INTERNAL COMMENT: Lossy might be very interesting too! -> INTERNAL COMMENT 2: Lossy might be the only way of getting decent float compression besides changing the FA -> INTERNAL COMMENT 3: Floats are 100% understood. No compression, no loss. Everything can be a counter! Let's go! - -## Prior art and State of the art - -Prior art references: -1. Can't find anything that matches this space - -The state of the art in Timeseries compression can be found here [5] and here [6]. - -## Introduction - -Computer systems monitoring, not general timeseries monitoring, is a process that is normally -characterized by very low frequency sampling (0.05Hz to 1~2Hz) of processes. Processes like database processes, Operating System general health, etc generate a lot of signals [10]. - -> INTERNAL COMMENT: Does very low frequency creates the problem for FFTs, etc or is the tools that aren't expecting such low frequencies? - -Another aspect is that in most cases, the signals don't exhibits any periodicity or any harmonic components. As such, they are treated mostly as isolated samples or a short sequence of samples (eg. XOR compression, delta-delta encoding, etc). - -By looking at the signals as one, we can apply a series of techniques, that themselves are not novel, but are novel in this domain. For example, by leveraging some audio packing and processing we would benefit not only from the compression provided by those, but also by all the streaming functionality that exist around those formats. - -Data compression is not only relevant for at-rest (stored in an hard drive) but also for in-transit. With the advent of cloud, monitoring systems that that is sent to external systems bring egress costs with it. -Also, stored data needs to be uncompressed and processed before sent to the wire. By using audio packing techniques we can benefit from the whole ecosystem of software (servers, clients) and hardware (even at mobile devices) that know how to transport and encode/decode such information. - -We not only get the savings at-rest also in-transit and in compute processing since we can leverage the client side devices [9] to do that in a very efficient way (eg. parallelized: [7] using a System-on-a-Chip [8]). - -## Background - -Why are we doing this: - -- Storage costs are high -- Egress costs are high -- Given the amount of data, techniques like averaging are used to drop points. This reduces information available. - - Techniques like the above consume a lot of Compute to walk over the points. - -## BRRO - -What is BRRO really doing: - -### Write Path - -1. Identifying the type of metric, -2. Pre-processing the signal to apply initial signal reduction techniques (eg: XOR Compression), -3. Packing the signal in an non-compressed format (eg. WAV format), this also includes things like: - 1. Doppler Shift (is it really a Doppler shift? Sounds fancier this way) the signal, - 2. Split integer and float types in types and sizes compatible with audio sampling, - 3. Identifying and exploit local opportunities to mimic audio signals -4. Generate an index to access the samples with precision (eg. Avoid full file seeking), -5. Once a decent number of samples, apply audio compatible **open source licensed**, **non-patented** compression techniques. This might include: - 1. Channel splitting. By dividing data into several channels we can use existing channel correlation techniques to reduce the channels sizes, - 2. Blocking, divide the signal samples in blocks, - 3. Apply a modeling technique to each block that best suits the signal, eg: LPC, Polynomial Prediction, ~~Fast Fourier Transforms, Wavelets~~ (signals we work don't exhibit a decent behavior for Wavelets and/or FFT analysis). -6. Generate the final compressed file - -While from point 4 onwards it is very much a normal audio compression process with fairly well known and document processes, steps 1. to 4. are unique to BRRO and allows us to follow up with step 5 and benefit from all the existing processes. - -TODO: DESCRIBE IN DETAIL 1 to 4 - -> **INTERNAL COMMENT**: 5.1 is very much unique to BRRO since we search for the best way to benefit from channel correlation to improve compression vs just putting a signal into a channel because it belongs there. - -### Read Path - -The novel part on reading, is using the indexing. Since we don't store timestamp information on the file itself, we developed a unique indexing to allow us to stream to the part of the file that is relevant and only decompressing what is relevant. - -While Streaming by blocks and decompressing by blocks is standard is multimedia files, is not known to be applied to the monitoring space. At least in the way we approach. - -> **INTERNAL COMMENT**: Databases (Filesystems?) load partially files and decompress by chunks, which *could* fit the same description. But... the concept of streaming a metric as one streams a multimedia file and benefit from the existing support for multimedia, applied at a metric/timeseries is not documented. - -The read path looks like this: - -1. Identifying the metric to be queried, -2. Locate the file(s) and the corresponding index, -3. Using the index locate the part of the file that we need to obtain -4. Stream the blocks over to the client -5. Decompression and extracting of the blocks by the client - 1. With the information from the index after the decompression the samples get the timestamp attached - -> **INTERNAL COMMENT**: The current implementation doesn't stream, just locates and decompress locally the blocks and sends the metrics. - -### VSRI (Very Small Rolo Index) - -This is an index technique used to address a sequential data file. - -## Results - -### Testing methodology - -The way we test is by setting our `BRRO-server` as a backend (both read and write) for a prometheus instance. Prometheus is connected to a Instaclustr 3 node cassandra cluster -with prometheus endpoint enabled. -After the test runs for a given period of time (indicated in the results), we compare the space usage of Prometheus data directory vs the space usage of `BRRO-server` data directory. -A note on the result of the *BRRO single*. *BRRO single* is the expected output on a server that as run for a very long time. No headers, and a lot of data that can be efficiently compressed. It is not a realistic measure, but a *best case* for the current test. -All the data from every file is pushed into a single file that is then compressed. - -### BRRO-server 0.1.1 - 12/07/2023 - -- Signal Optimizations: None -- Metric Count: 565 -- Running Time: ~14h -- Prometheus data size: 7.8 MB -- BRRO data size: 4.6 MB (69% less) -- BRRO single: 2.9 MB (268% less) - -## Further work - -Explore: - -- Mutual information (transinformation) -- Kullback–Leibler divergence (information gain) - -## Conclusion - -BRRO is the best that you can ever have! - - -## References -1. https://www.influxdata.com/what-is-time-series-data/ -2. Gorilla http://www.vldb.org/pvldb/vol8/p1816-teller.pdf -3. https://faun.pub/victoriametrics-achieving-better-compression-for-time-series-data-than-gorilla-317bc1f95932 -4. https://www.timescale.com/blog/time-series-compression-algorithms-explained/ -5. https://dzone.com/articles/time-series-compression-algorithms-and-their-appli#:~:text=Time%20series%20compression%20algorithms%20take%20advantage%20of%20specific,functions%20or%20predicting%20them%20through%20neural%20network%20models. -6. https://arxiv.org/pdf/2101.08784v1.pdf -7. https://ieeexplore.ieee.org/document/8672328 -8. https://www.microsemi.com/document-portal/doc_view/129825-ac376-smartfusion-csoc-implementation-of-flac-player-using-hardware-and-software-partitioning-app-note -9. https://en.wikipedia.org/wiki/List_of_hardware_and_software_that_supports_FLAC -10. https://cassandra.apache.org/doc/latest/cassandra/operating/metrics.html -11. https://www.freepatentsonline.com/5839100.html \ No newline at end of file diff --git a/plot_comparison.sh b/plot_comparison.sh deleted file mode 100755 index 9082bd2..0000000 --- a/plot_comparison.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -filename=$2 -error=$1 - -cp ../../wbro-july/$filename.wbro tmp.wbro - -target/debug/atsc --compressor fft --error $error --verbose tmp.wbro > ../../comparison-$filename.m -target/debug/atsc -u --verbose tmp.bro >> ../../comparison-$filename.m - -sed -i -e 's/Output/output_fft/g' ../../comparison-$filename.m - -cp ../../wbro-july/$filename.wbro tmp.wbro - -target/debug/atsc --compressor idw --error $error --verbose tmp.wbro > /dev/null -target/debug/atsc -u --verbose tmp.bro >> ../../comparison-$filename.m - -sed -i -e 's/Output/output_idw/g' ../../comparison-$filename.m - -cp ../../wbro-july/$filename.wbro tmp.wbro - -target/debug/atsc --compressor polynomial --error $error --verbose tmp.wbro > /dev/null -target/debug/atsc -u --verbose tmp.bro >> ../../comparison-$filename.m - -sed -i -e 's/Output/output_poly/g' ../../comparison-$filename.m - -echo "plot(Input,'b', output_fft,'r', output_idw, 'g', output_poly, 'k')" >> ../../comparison-$filename.m -echo "print -dpng $filename.png" >> ../../comparison-$filename.m - -rm tmp.wbro -rm tmp.bro \ No newline at end of file diff --git a/plot_data.sh b/plot_data.sh deleted file mode 100755 index 219c4c1..0000000 --- a/plot_data.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -filename=$2 -compressor=$1 -cp ../../wbro-july/$filename.wbro tmp.wbro -target/debug/atsc --compressor $compressor --error 1 --verbose tmp.wbro > ../../$filename-$compressor.m -target/debug/atsc -u --verbose tmp.bro >> ../../$filename-$compressor.m -echo "plot(Input,'b', Output,'r')" >> ../../$filename-$compressor.m -echo "print -dpng $filename.png" >> ../../$filename-$compressor.m -rm tmp.wbro -rm tmp.bro \ No newline at end of file diff --git a/vsri/README.md b/vsri/README.md new file mode 100644 index 0000000..0ce9e80 --- /dev/null +++ b/vsri/README.md @@ -0,0 +1,45 @@ +# VSRI (Very Small Rolo Index) + +1. [What is VSRI](#what-is-vsri) +2. [Characteristics](#characteristics) +3. [API](#api) + +## What is VSRI + +VSRI is an index made for the time part of the time series. +The idea is metrics will mostly have the same sampling rate throughout their lifetime. A CPU metric sampled at once every 15 seconds, should stay like that. + +With this, VSRI tries to map the time into a line. A line can be easily mathematically defined by `y = m*x + B`, and that is what mostly VSRI does. But, something about assumptions, VSRI has the capacity for detection of gaps. + +How does VSRI maps time to a line? + +```text +m - Sampling rate +b - Series initial point in time in (x,y) +x - sample # in the data file, this is ALWAYS sequential. There are no holes in samples +y - time +``` + +With VSRI, discovering the segment number is solving the above equation for `X` if the +time provided is bigger than the initial point. + +## Characteristics + +VSRI has the following characteristics: + +- Best case for sample retrieval O(1) +- Worst case O(N) (N is the number of segments) +- Space usage: 5Bytes for 64k samples. Or 30 Bytes for 2^32 Samples + +Example of content of an index: + +```text +55745 +59435 +15,0,55745,166 +15,166,58505,63 +``` + +## API + +WIP diff --git a/wavbrro/README.md b/wavbrro/README.md index 4a67d35..4d197c4 100644 --- a/wavbrro/README.md +++ b/wavbrro/README.md @@ -1,10 +1,10 @@ # WAVBRRO -**NOTE:** This needs some serious work! +**NOTE:** This library is under development. It might have breaking changes. WAVBRRO is a based on the WAV format to be used to store raw timeseries data. -## SPEC +## WAVBRRO SPECIFICATION The spec for WAVBRRO is the following: @@ -20,16 +20,43 @@ Extension: .wbro - Samples - Blocks of 2048 samples -### Reading/Writting WAVBRRO +### WAVBRRO API -Check the tests in the `wavbrro.rs` +#### Writing a file + +```rust + fn write_wavbrro() { + // Create a temporary directory for the file + let temp_dir = tempfile::tempdir().expect("Failed to create temporary directory"); + let path = temp_dir.path().join("test.wbro"); + // Creating the structure + let mut wb = WavBrro::new(); + // Adding samples + wb.add_sample(1.0); + wb.add_sample(2.0); + wb.add_sample(3.0); + wb.to_file(&path); + let result = is_wavbrro_file(&path); + assert!(result.unwrap()); + } +``` + +#### Reading a file + +```rust + fn read_wavbrro() { + let data = WavBrro::from_file(path); + } +``` + +Check the tests in the `wavbrro.rs` for more examples. ### What it doesn't support WAVBRRO doesn't support the following bitdepths - Windows OS -- Timestamps (VSRI will land here eventually) +- Timestamps ([VSRI](https://github.com/instaclustr/atsc/tree/main/vsri) in here?) - Anything other than f64 - Anything bigger than 64bit bitdepth @@ -37,4 +64,4 @@ WAVBRRO doesn't support the following bitdepths - Implement streaming read and write - Seeking for a specific block -- Support other bitdepth +- Support other bitdepths