diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:36:04 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 12:36:04 +0000 |
commit | b09c6d56832eb1718c07d74abf3bc6ae3fe4e030 (patch) | |
tree | d2caec2610d4ea887803ec9e9c3cd77136c448ba /dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4 | |
parent | Initial commit. (diff) | |
download | icingadb-upstream.tar.xz icingadb-upstream.zip |
Adding upstream version 1.1.0.upstream/1.1.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4')
58 files changed, 5122 insertions, 0 deletions
diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/.gitignore b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/.gitignore new file mode 100644 index 0000000..63bd916 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/.gitignore @@ -0,0 +1,5 @@ +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/.travis.yml b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/.travis.yml new file mode 100644 index 0000000..9a203a6 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/.travis.yml @@ -0,0 +1,11 @@ +language: go +arch: + - amd64 + - ppc64le + +go: + - 1.14.x + +script: + - go test -race ./... + - for i in _examples/*/; do go build $i/*.go || exit 1; done diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/README.md b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/README.md new file mode 100644 index 0000000..a87786d --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/README.md @@ -0,0 +1,120 @@ +# Multi Progress Bar + +[![GoDoc](https://pkg.go.dev/badge/github.com/vbauerster/mpb)](https://pkg.go.dev/github.com/vbauerster/mpb/v6) +[![Build Status](https://travis-ci.org/vbauerster/mpb.svg?branch=master)](https://travis-ci.org/vbauerster/mpb) +[![Go Report Card](https://goreportcard.com/badge/github.com/vbauerster/mpb)](https://goreportcard.com/report/github.com/vbauerster/mpb) + +**mpb** is a Go lib for rendering progress bars in terminal applications. + +## Features + +- **Multiple Bars**: Multiple progress bars are supported +- **Dynamic Total**: Set total while bar is running +- **Dynamic Add/Remove**: Dynamically add or remove bars +- **Cancellation**: Cancel whole rendering process +- **Predefined Decorators**: Elapsed time, [ewma](https://github.com/VividCortex/ewma) based ETA, Percentage, Bytes counter +- **Decorator's width sync**: Synchronized decorator's width among multiple bars + +## Usage + +#### [Rendering single bar](_examples/singleBar/main.go) + +```go +package main + +import ( + "math/rand" + "time" + + "github.com/vbauerster/mpb/v6" + "github.com/vbauerster/mpb/v6/decor" +) + +func main() { + // initialize progress container, with custom width + p := mpb.New(mpb.WithWidth(64)) + + total := 100 + name := "Single Bar:" + // adding a single bar, which will inherit container's width + bar := p.Add(int64(total), + // progress bar filler with customized style + mpb.NewBarFiller("╢▌▌░╟"), + mpb.PrependDecorators( + // display our name with one space on the right + decor.Name(name, decor.WC{W: len(name) + 1, C: decor.DidentRight}), + // replace ETA decorator with "done" message, OnComplete event + decor.OnComplete( + decor.AverageETA(decor.ET_STYLE_GO, decor.WC{W: 4}), "done", + ), + ), + mpb.AppendDecorators(decor.Percentage()), + ) + // simulating some work + max := 100 * time.Millisecond + for i := 0; i < total; i++ { + time.Sleep(time.Duration(rand.Intn(10)+1) * max / 10) + bar.Increment() + } + // wait for our bar to complete and flush + p.Wait() +} +``` + +#### [Rendering multiple bars](_examples/multiBars/main.go) + +```go + var wg sync.WaitGroup + // pass &wg (optional), so p will wait for it eventually + p := mpb.New(mpb.WithWaitGroup(&wg)) + total, numBars := 100, 3 + wg.Add(numBars) + + for i := 0; i < numBars; i++ { + name := fmt.Sprintf("Bar#%d:", i) + bar := p.AddBar(int64(total), + mpb.PrependDecorators( + // simple name decorator + decor.Name(name), + // decor.DSyncWidth bit enables column width synchronization + decor.Percentage(decor.WCSyncSpace), + ), + mpb.AppendDecorators( + // replace ETA decorator with "done" message, OnComplete event + decor.OnComplete( + // ETA decorator with ewma age of 60 + decor.EwmaETA(decor.ET_STYLE_GO, 60), "done", + ), + ), + ) + // simulating some work + go func() { + defer wg.Done() + rng := rand.New(rand.NewSource(time.Now().UnixNano())) + max := 100 * time.Millisecond + for i := 0; i < total; i++ { + // start variable is solely for EWMA calculation + // EWMA's unit of measure is an iteration's duration + start := time.Now() + time.Sleep(time.Duration(rng.Intn(10)+1) * max / 10) + bar.Increment() + // we need to call DecoratorEwmaUpdate to fulfill ewma decorator's contract + bar.DecoratorEwmaUpdate(time.Since(start)) + } + }() + } + // Waiting for passed &wg and for all bars to complete and flush + p.Wait() +``` + +#### [Dynamic total](_examples/dynTotal/main.go) + +![dynamic total](_svg/godEMrCZmJkHYH1X9dN4Nm0U7.svg) + +#### [Complex example](_examples/complex/main.go) + +![complex](_svg/wHzf1M7sd7B3zVa2scBMnjqRf.svg) + +#### [Bytes counters](_examples/io/main.go) + +![byte counters](_svg/hIpTa3A5rQz65ssiVuRJu87X6.svg) diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/UNLICENSE b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/UNLICENSE new file mode 100644 index 0000000..68a49da --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/UNLICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to <http://unlicense.org/> diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/_examples/.gitignore b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/_examples/.gitignore new file mode 100644 index 0000000..08cb523 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/_examples/.gitignore @@ -0,0 +1 @@ +go.sum diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/_svg/godEMrCZmJkHYH1X9dN4Nm0U7.svg b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/_svg/godEMrCZmJkHYH1X9dN4Nm0U7.svg new file mode 100644 index 0000000..f794408 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/_svg/godEMrCZmJkHYH1X9dN4Nm0U7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1020" height="130.26"><rect width="1020" height="130.26" rx="0" ry="0" class="a"/><svg height="130.26" viewBox="0 0 102 13.026" width="1020" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><style>@keyframes n{0%{transform:translateX(0)}2.4%{transform:translateX(-408px)}2.5%{transform:translateX(-612px)}2.7%{transform:translateX(-714px)}2.8%{transform:translateX(-918px)}5.7%{transform:translateX(-1020px)}6.4%{transform:translateX(-1122px)}7.2%{transform:translateX(-1224px)}8.3%{transform:translateX(-1326px)}9.5%{transform:translateX(-1428px)}10%{transform:translateX(-1530px)}12.6%{transform:translateX(-1734px)}14.4%{transform:translateX(-1938px)}14.5%{transform:translateX(-2244px)}17.4%{transform:translateX(-2346px)}18.1%{transform:translateX(-2448px)}18.9%{transform:translateX(-2550px)}19.6%{transform:translateX(-2652px)}20.3%{transform:translateX(-2754px)}21.1%{transform:translateX(-2856px)}21.8%{transform:translateX(-2958px)}22.6%{transform:translateX(-3060px)}23.3%{transform:translateX(-3162px)}24%{transform:translateX(-3264px)}24.8%{transform:translateX(-3366px)}25.5%{transform:translateX(-3468px)}26.2%{transform:translateX(-3570px)}27%{transform:translateX(-3672px)}27.7%{transform:translateX(-3774px)}28.4%{transform:translateX(-3876px)}29.2%{transform:translateX(-3978px)}29.9%{transform:translateX(-4080px)}30.6%{transform:translateX(-4182px)}31.4%{transform:translateX(-4284px)}32.1%{transform:translateX(-4386px)}32.9%{transform:translateX(-4488px)}33.6%{transform:translateX(-4590px)}34.4%{transform:translateX(-4692px)}35.1%{transform:translateX(-4794px)}35.8%{transform:translateX(-4896px)}36.5%{transform:translateX(-4998px)}37.3%{transform:translateX(-5100px)}38%{transform:translateX(-5202px)}38.8%{transform:translateX(-5304px)}39.5%{transform:translateX(-5406px)}40.2%{transform:translateX(-5508px)}41%{transform:translateX(-5610px)}41.7%{transform:translateX(-5712px)}42.4%{transform:translateX(-5814px)}43.2%{transform:translateX(-5916px)}43.9%{transform:translateX(-6018px)}44.6%{transform:translateX(-6120px)}45.4%{transform:translateX(-6222px)}46.1%{transform:translateX(-6324px)}46.8%{transform:translateX(-6426px)}47.6%{transform:translateX(-6528px)}48.3%{transform:translateX(-6630px)}49.1%{transform:translateX(-6732px)}49.8%{transform:translateX(-6834px)}50.5%{transform:translateX(-6936px)}51.3%{transform:translateX(-7038px)}52%{transform:translateX(-7140px)}52.7%{transform:translateX(-7242px)}53.5%{transform:translateX(-7344px)}54.2%{transform:translateX(-7446px)}55%{transform:translateX(-7548px)}55.7%{transform:translateX(-7650px)}56.4%{transform:translateX(-7752px)}57.2%{transform:translateX(-7854px)}57.9%{transform:translateX(-7956px)}58.6%{transform:translateX(-8058px)}59.4%{transform:translateX(-8160px)}60.1%{transform:translateX(-8262px)}60.8%{transform:translateX(-8364px)}61.5%{transform:translateX(-8466px)}62.3%{transform:translateX(-8568px)}63%{transform:translateX(-8670px)}63.8%{transform:translateX(-8772px)}64.5%{transform:translateX(-8874px)}65.2%{transform:translateX(-8976px)}66%{transform:translateX(-9078px)}66.7%{transform:translateX(-9180px)}67.5%{transform:translateX(-9282px)}68.2%{transform:translateX(-9384px)}68.9%{transform:translateX(-9486px)}69.7%{transform:translateX(-9588px)}70.4%{transform:translateX(-9690px)}71.1%{transform:translateX(-9792px)}71.9%{transform:translateX(-9894px)}72.6%{transform:translateX(-9996px)}73.3%{transform:translateX(-10098px)}74.1%{transform:translateX(-10200px)}74.8%{transform:translateX(-10302px)}75.5%{transform:translateX(-10404px)}76.3%{transform:translateX(-10506px)}77%{transform:translateX(-10608px)}77.8%{transform:translateX(-10710px)}78.5%{transform:translateX(-10812px)}79.2%{transform:translateX(-10914px)}79.9%{transform:translateX(-11016px)}80.7%{transform:translateX(-11118px)}81.4%{transform:translateX(-11220px)}82.2%{transform:translateX(-11322px)}82.9%{transform:translateX(-11424px)}83.6%{transform:translateX(-11526px)}84.4%{transform:translateX(-11628px)}85.1%{transform:translateX(-11730px)}85.9%{transform:translateX(-11832px)}86.6%{transform:translateX(-11934px)}87.3%{transform:translateX(-12036px)}88%{transform:translateX(-12138px)}95%{transform:translateX(-12342px)}95.3%{transform:translateX(-12750px)}to{transform:translateX(-12852px)}}.a{fill:#f8f8f8}.c{fill:#4f97d7}.d{fill:#a31db1}.e{fill:#6c6c6c}.f{fill:#2d9574}.g{fill:#67b11d}.h{fill:#afafaf}.i{fill:#444155}</style><g font-size="1.67" font-family="Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace"><defs><symbol id="1"><text y="1.67" class="c">~/go/src/github.com/vbauerster/mpb/examples/dynTotal</text></symbol><symbol id="2"><text y="1.67" class="d">❯</text></symbol><symbol id="3"><text y="1.67" class="c">~/go/src/github.com/vbauerster/mpb/examples/dynTotal</text><text x="53.106" y="1.67" class="e">master*</text><text x="61.122" y="1.67" class="f">⇡</text></symbol><symbol id="4"><text y="1.67" class="d">❯</text><text x="2.004" y="1.67" class="g">go</text><text x="5.01" y="1.67" class="h">run</text><text x="9.018" y="1.67" class="h">-race</text><text x="15.03" y="1.67" class="h">main.go</text></symbol><symbol id="5"><text y="1.67" class="d">❯</text><text x="2.004" y="1.67" class="g">go</text><text x="5.01" y="1.67" class="i">run</text><path fill="#b9c0cb" d="M8.016 0h1v2.171h-1z"/><text x="8.016" y="1.67" class="a"></text><text x="9.018" y="1.67" class="i">-race</text><text x="15.03" y="1.67" class="i">main.go</text></symbol><symbol id="6"><text y="1.67" class="d">❯</text><text x="2.004" y="1.67" class="g">go</text><text x="5.01" y="1.67" class="i">run</text><text x="9.018" y="1.67" class="i">-race</text><text x="15.03" y="1.67" fill="#444155" text-decoration="underline">main.go</text></symbol><symbol id="7"><text y="1.67" class="i">55.7</text><text x="5.01" y="1.67" class="i">KiB</text><text x="9.018" y="1.67" class="i">/</text><text x="11.022" y="1.67" class="i">56.7</text><text x="16.032" y="1.67" class="i">KiB</text><text x="20.04" y="1.67" class="i">[============================================================>-]</text><text x="85.17" y="1.67" class="i">98</text><text x="88.176" y="1.67" class="i">%</text></symbol><symbol id="8"><text y="1.67" class="i">100.7</text><text x="6.012" y="1.67" class="i">KiB</text><text x="10.02" y="1.67" class="i">/</text><text x="12.024" y="1.67" class="i">100.7</text><text x="18.036" y="1.67" class="i">KiB</text><text x="22.044" y="1.67" class="i">[==============================================================]</text><text x="87.174" y="1.67" class="i">100</text><text x="91.182" y="1.67" class="i">%</text></symbol><symbol id="9"><text y="1.67" class="c">~/go/src/github.com/vbauerster/mpb/examples/dynTotal</text><text x="53.106" y="1.67" class="e">master*</text><text x="61.122" y="1.67" class="f">⇡</text><text x="63.126" y="1.67" fill="#b1951d">13s</text></symbol><symbol id="a"><path fill="transparent" d="M0 0h102v7H0z"/></symbol><symbol id="b"><path class="i" d="M0 0h1.102v2.171H0z"/></symbol></defs><path class="a" d="M0 0h102v13.026H0z"/><g style="animation-duration:16.308492s;animation-iteration-count:infinite;animation-name:n;animation-timing-function:steps(1,end)"><svg width="12954"><svg><use xlink:href="#a"/><use xlink:href="#b" x="-.004"/></svg><svg x="102"><use xlink:href="#a"/><use xlink:href="#b" x="-.004"/></svg><svg x="204"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="2.146"/></svg><svg x="306"><use xlink:href="#a"/><use xlink:href="#b" x=".996" y="4.317"/><use xlink:href="#1" y="2.171"/></svg><svg x="408"><use xlink:href="#a"/><use xlink:href="#b" x=".996" y="4.317"/><use xlink:href="#1" y="2.171"/></svg><svg x="510"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="4.317"/><use xlink:href="#1" y="2.171"/><use xlink:href="#2" y="4.342"/></svg><svg x="612"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="4.317"/><use xlink:href="#1" y="2.171"/><use xlink:href="#2" y="4.342"/></svg><svg x="714"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="4.317"/><text y="3.841" class="c">~/go/src/github.com/vbauerster/mpb/examples/dynTotal</text><text x="53.106" y="3.841" class="e">master</text><use xlink:href="#2" y="4.342"/></svg><svg x="816"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="4.317"/><text y="3.841" class="c">~/go/src/github.com/vbauerster/mpb/examples/dynTotal</text><text x="53.106" y="3.841" class="e">master</text><text x="60.12" y="3.841" class="f">⇡</text><use xlink:href="#2" y="4.342"/></svg><svg x="918"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#2" y="4.342"/></svg><svg x="1020"><use xlink:href="#a"/><use xlink:href="#b" x="2.996" y="4.317"/><use xlink:href="#3" y="2.171"/><text y="6.012" class="d">❯</text><text x="2.004" y="6.012" class="g">g</text><text x="3.006" y="6.012" class="h">o</text><text x="5.01" y="6.012" class="h">run</text><text x="9.018" y="6.012" class="h">-race</text><text x="15.03" y="6.012" class="h">main.go</text></svg><svg x="1122"><use xlink:href="#a"/><use xlink:href="#b" x="3.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/></svg><svg x="1224"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/></svg><svg x="1326"><use xlink:href="#a"/><use xlink:href="#b" x="5.996" y="4.317"/><use xlink:href="#3" y="2.171"/><text y="6.012" class="d">❯</text><text x="2.004" y="6.012" class="g">go</text><text x="5.01" y="6.012" class="i">r</text><text x="6.012" y="6.012" class="h">un</text><text x="9.018" y="6.012" class="h">-race</text><text x="15.03" y="6.012" class="h">main.go</text></svg><svg x="1428"><use xlink:href="#a"/><use xlink:href="#b" x="6.996" y="4.317"/><use xlink:href="#3" y="2.171"/><text y="6.012" class="d">❯</text><text x="2.004" y="6.012" class="g">go</text><text x="5.01" y="6.012" class="i">ru</text><text x="7.014" y="6.012" class="h">n</text><text x="9.018" y="6.012" class="h">-race</text><text x="15.03" y="6.012" class="h">main.go</text></svg><svg x="1530"><use xlink:href="#a"/><use xlink:href="#b" x="7.996" y="4.317"/><use xlink:href="#3" y="2.171"/><text y="6.012" class="d">❯</text><text x="2.004" y="6.012" class="g">go</text><text x="5.01" y="6.012" class="i">run</text><text x="9.018" y="6.012" class="h">-race</text><text x="15.03" y="6.012" class="h">main.go</text></svg><svg x="1632"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#5" y="4.342"/></svg><svg x="1734"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#5" y="4.342"/></svg><svg x="1836"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="1938"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="2040"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="2142"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="6.488"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="2244"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="6.488"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="2346"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">519</text><text x="4.008" y="8.183" class="i">b</text><text x="6.012" y="8.183" class="i">/</text><text x="8.016" y="8.183" class="i">1.5</text><text x="12.024" y="8.183" class="i">KiB</text><text x="16.032" y="8.183" class="i">[====================>-----------------------------------------]</text><text x="81.162" y="8.183" class="i">34</text><text x="84.168" y="8.183" class="i">%</text></svg><svg x="2448"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">2.2</text><text x="4.008" y="8.183" class="i">KiB</text><text x="8.016" y="8.183" class="i">/</text><text x="10.02" y="8.183" class="i">3.2</text><text x="14.028" y="8.183" class="i">KiB</text><text x="18.036" y="8.183" class="i">[==========================================>-------------------]</text><text x="83.166" y="8.183" class="i">69</text><text x="86.172" y="8.183" class="i">%</text></svg><svg x="2550"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">2.5</text><text x="4.008" y="8.183" class="i">KiB</text><text x="8.016" y="8.183" class="i">/</text><text x="10.02" y="8.183" class="i">3.5</text><text x="14.028" y="8.183" class="i">KiB</text><text x="18.036" y="8.183" class="i">[===========================================>------------------]</text><text x="83.166" y="8.183" class="i">72</text><text x="86.172" y="8.183" class="i">%</text></svg><svg x="2652"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">3.2</text><text x="4.008" y="8.183" class="i">KiB</text><text x="8.016" y="8.183" class="i">/</text><text x="10.02" y="8.183" class="i">4.2</text><text x="14.028" y="8.183" class="i">KiB</text><text x="18.036" y="8.183" class="i">[==============================================>---------------]</text><text x="83.166" y="8.183" class="i">76</text><text x="86.172" y="8.183" class="i">%</text></svg><svg x="2754"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">3.6</text><text x="4.008" y="8.183" class="i">KiB</text><text x="8.016" y="8.183" class="i">/</text><text x="10.02" y="8.183" class="i">4.6</text><text x="14.028" y="8.183" class="i">KiB</text><text x="18.036" y="8.183" class="i">[================================================>-------------]</text><text x="83.166" y="8.183" class="i">78</text><text x="86.172" y="8.183" class="i">%</text></svg><svg x="2856"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">6.5</text><text x="4.008" y="8.183" class="i">KiB</text><text x="8.016" y="8.183" class="i">/</text><text x="10.02" y="8.183" class="i">7.5</text><text x="14.028" y="8.183" class="i">KiB</text><text x="18.036" y="8.183" class="i">[=====================================================>--------]</text><text x="83.166" y="8.183" class="i">87</text><text x="86.172" y="8.183" class="i">%</text></svg><svg x="2958"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">8.0</text><text x="4.008" y="8.183" class="i">KiB</text><text x="8.016" y="8.183" class="i">/</text><text x="10.02" y="8.183" class="i">9.0</text><text x="14.028" y="8.183" class="i">KiB</text><text x="18.036" y="8.183" class="i">[======================================================>-------]</text><text x="83.166" y="8.183" class="i">89</text><text x="86.172" y="8.183" class="i">%</text></svg><svg x="3060"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">10.6</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">11.6</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[========================================================>-----]</text><text x="85.17" y="8.183" class="i">91</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="3162"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">12.1</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">13.1</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[========================================================>-----]</text><text x="85.17" y="8.183" class="i">92</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="3264"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">13.1</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">14.1</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[=========================================================>----]</text><text x="85.17" y="8.183" class="i">93</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="3366"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">13.2</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">14.2</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[=========================================================>----]</text><text x="85.17" y="8.183" class="i">93</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="3468"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">13.9</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">14.9</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[=========================================================>----]</text><text x="85.17" y="8.183" class="i">93</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="3570"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">15.5</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">16.5</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[=========================================================>----]</text><text x="85.17" y="8.183" class="i">94</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="3672"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">15.8</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">16.8</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[=========================================================>----]</text><text x="85.17" y="8.183" class="i">94</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="3774"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">17.6</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">18.6</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[==========================================================>---]</text><text x="85.17" y="8.183" class="i">95</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="3876"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">18.9</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">19.9</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[==========================================================>---]</text><text x="85.17" y="8.183" class="i">95</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="3978"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">20.0</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">21.0</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[==========================================================>---]</text><text x="85.17" y="8.183" class="i">95</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="4080"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">21.0</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">22.0</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[==========================================================>---]</text><text x="85.17" y="8.183" class="i">95</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="4182"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">21.3</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">22.3</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[==========================================================>---]</text><text x="85.17" y="8.183" class="i">96</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="4284"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">22.6</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">23.6</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[==========================================================>---]</text><text x="85.17" y="8.183" class="i">96</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="4386"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">23.9</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">24.9</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">96</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="4488"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">25.7</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">26.7</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">96</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="4590"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">26.1</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">27.1</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">96</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="4692"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">26.8</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">27.8</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">96</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="4794"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">28.0</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">29.0</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">97</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="4896"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">28.4</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">29.4</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">97</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="4998"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">29.6</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">30.6</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">97</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="5100"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">30.0</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">31.0</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">97</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="5202"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">30.4</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">31.4</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">97</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="5304"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">31.8</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">32.8</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">97</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="5406"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">34.4</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">35.4</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">97</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="5508"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">34.5</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">35.5</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">97</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="5610"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">37.0</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">38.0</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">97</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="5712"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">38.5</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">39.5</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[===========================================================>--]</text><text x="85.17" y="8.183" class="i">97</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="5814"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">40.4</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">41.4</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="5916"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">41.1</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">42.1</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="6018"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">42.2</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">43.2</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="6120"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">43.9</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">44.9</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="6222"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">44.9</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">45.9</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="6324"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">46.2</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">47.2</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="6426"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">46.9</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">47.9</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="6528"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">48.4</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">49.4</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="6630"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">48.7</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">49.7</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="6732"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">49.3</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">50.3</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="6834"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">50.1</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">51.1</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="6936"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">50.5</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">51.5</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="7038"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">50.6</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">51.6</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="7140"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">50.8</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">51.8</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="7242"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">51.7</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">52.7</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="7344"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">52.7</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">53.7</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="7446"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">53.6</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">54.6</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="7548"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#7" y="6.513"/></svg><svg x="7650"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#7" y="6.513"/></svg><svg x="7752"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">57.5</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">58.5</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="7854"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">58.3</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">59.3</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="7956"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">58.7</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">59.7</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="8058"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">60.1</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">61.1</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="8160"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">62.0</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">63.0</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="8262"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">63.7</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">64.7</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="8364"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">64.7</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">65.7</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="8466"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">65.2</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">66.2</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">98</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="8568"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">65.8</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">66.8</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="8670"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">66.4</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">67.4</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="8772"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">67.6</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">68.6</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="8874"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">68.5</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">69.5</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="8976"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">70.0</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">71.0</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="9078"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">70.4</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">71.4</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="9180"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">70.8</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">71.8</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="9282"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">72.3</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">73.3</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="9384"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">73.1</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">74.1</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="9486"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">74.4</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">75.4</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="9588"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">75.7</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">76.7</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="9690"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">78.2</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">79.2</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="9792"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">79.3</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">80.3</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="9894"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">80.1</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">81.1</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="9996"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">81.3</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">82.3</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="10098"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">82.3</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">83.3</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="10200"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">82.6</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">83.6</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="10302"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">84.0</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">85.0</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="10404"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">84.7</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">85.7</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="10506"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">85.9</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">86.9</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="10608"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">87.7</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">88.7</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="10710"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">88.8</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">89.8</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="10812"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">90.3</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">91.3</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="10914"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">91.6</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">92.6</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="11016"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">92.8</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">93.8</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="11118"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">93.5</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">94.5</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="11220"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">93.6</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">94.6</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="11322"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">95.1</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">96.1</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="11424"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">96.4</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">97.4</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="11526"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">97.6</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">98.6</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="11628"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">98.8</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">99.8</text><text x="16.032" y="8.183" class="i">KiB</text><text x="20.04" y="8.183" class="i">[============================================================>-]</text><text x="85.17" y="8.183" class="i">99</text><text x="88.176" y="8.183" class="i">%</text></svg><svg x="11730"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">99.7</text><text x="5.01" y="8.183" class="i">KiB</text><text x="9.018" y="8.183" class="i">/</text><text x="11.022" y="8.183" class="i">100.7</text><text x="17.034" y="8.183" class="i">KiB</text><text x="21.042" y="8.183" class="i">[============================================================>-]</text><text x="86.172" y="8.183" class="i">99</text><text x="89.178" y="8.183" class="i">%</text></svg><svg x="11832"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">100.6</text><text x="6.012" y="8.183" class="i">KiB</text><text x="10.02" y="8.183" class="i">/</text><text x="12.024" y="8.183" class="i">101.6</text><text x="18.036" y="8.183" class="i">KiB</text><text x="22.044" y="8.183" class="i">[============================================================>-]</text><text x="87.174" y="8.183" class="i">99</text><text x="90.18" y="8.183" class="i">%</text></svg><svg x="11934"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="i">100.7</text><text x="6.012" y="8.183" class="i">KiB</text><text x="10.02" y="8.183" class="i">/</text><text x="12.024" y="8.183" class="i">101.7</text><text x="18.036" y="8.183" class="i">KiB</text><text x="22.044" y="8.183" class="i">[============================================================>-]</text><text x="87.174" y="8.183" class="i">99</text><text x="90.18" y="8.183" class="i">%</text></svg><svg x="12036"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#8" y="6.513"/></svg><svg x="12138"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#8" y="6.513"/></svg><svg x="12240"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#8" y="6.513"/></svg><svg x="12342"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="10.83"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#8" y="6.513"/></svg><svg x="12444"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="13.001"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#8" y="6.513"/><use xlink:href="#9" y="10.855"/><use xlink:href="#2" y="13.026"/></svg><svg x="12546"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="13.001"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#8" y="6.513"/><use xlink:href="#9" y="10.855"/><use xlink:href="#2" y="13.026"/></svg><svg x="12648"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="13.001"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#8" y="6.513"/><use xlink:href="#9" y="10.855"/><use xlink:href="#2" y="13.026"/></svg><svg x="12750"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="13.001"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#8" y="6.513"/><use xlink:href="#9" y="10.855"/><use xlink:href="#2" y="13.026"/></svg><svg x="12852"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="13.001"/><use xlink:href="#3"/><use xlink:href="#6" y="2.171"/><use xlink:href="#8" y="4.342"/><use xlink:href="#9" y="8.684"/><use xlink:href="#2" y="10.855"/></svg></svg></g></g></svg></svg>
\ No newline at end of file diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/_svg/hIpTa3A5rQz65ssiVuRJu87X6.svg b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/_svg/hIpTa3A5rQz65ssiVuRJu87X6.svg new file mode 100644 index 0000000..163921c --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/_svg/hIpTa3A5rQz65ssiVuRJu87X6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1020" height="130.26"><rect width="1020" height="130.26" rx="0" ry="0" class="a"/><svg height="130.26" viewBox="0 0 102 13.026" width="1020" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><style>@keyframes m{0%{transform:translateX(0)}.7%{transform:translateX(-102px)}.71%{transform:translateX(-510px)}.72%{transform:translateX(-612px)}.79%{transform:translateX(-714px)}.84%{transform:translateX(-816px)}2.29%{transform:translateX(-918px)}2.55%{transform:translateX(-1020px)}2.91%{transform:translateX(-1122px)}3.85%{transform:translateX(-1224px)}4.22%{transform:translateX(-1326px)}4.37%{transform:translateX(-1428px)}5.29%{transform:translateX(-1632px)}5.91%{transform:translateX(-1836px)}5.92%{transform:translateX(-1938px)}5.94%{transform:translateX(-2142px)}10.72%{transform:translateX(-2244px)}11.08%{transform:translateX(-2346px)}11.44%{transform:translateX(-2448px)}11.79%{transform:translateX(-2550px)}12.15%{transform:translateX(-2652px)}12.52%{transform:translateX(-2754px)}12.87%{transform:translateX(-2856px)}13.22%{transform:translateX(-2958px)}13.58%{transform:translateX(-3060px)}13.94%{transform:translateX(-3162px)}14.29%{transform:translateX(-3264px)}14.65%{transform:translateX(-3366px)}15.01%{transform:translateX(-3468px)}15.36%{transform:translateX(-3570px)}15.72%{transform:translateX(-3672px)}16.08%{transform:translateX(-3774px)}16.44%{transform:translateX(-3876px)}16.8%{transform:translateX(-3978px)}17.15%{transform:translateX(-4080px)}17.51%{transform:translateX(-4182px)}17.87%{transform:translateX(-4284px)}18.23%{transform:translateX(-4386px)}18.59%{transform:translateX(-4488px)}18.94%{transform:translateX(-4590px)}19.3%{transform:translateX(-4692px)}19.66%{transform:translateX(-4794px)}20.01%{transform:translateX(-4896px)}20.38%{transform:translateX(-4998px)}20.73%{transform:translateX(-5100px)}21.09%{transform:translateX(-5202px)}21.45%{transform:translateX(-5304px)}21.8%{transform:translateX(-5406px)}22.16%{transform:translateX(-5508px)}22.52%{transform:translateX(-5610px)}22.87%{transform:translateX(-5712px)}23.23%{transform:translateX(-5814px)}23.59%{transform:translateX(-5916px)}23.95%{transform:translateX(-6018px)}24.31%{transform:translateX(-6120px)}24.66%{transform:translateX(-6222px)}25.02%{transform:translateX(-6324px)}25.38%{transform:translateX(-6426px)}25.74%{transform:translateX(-6528px)}26.09%{transform:translateX(-6630px)}26.45%{transform:translateX(-6732px)}26.81%{transform:translateX(-6834px)}27.17%{transform:translateX(-6936px)}27.52%{transform:translateX(-7038px)}27.88%{transform:translateX(-7140px)}28.24%{transform:translateX(-7242px)}28.59%{transform:translateX(-7344px)}28.95%{transform:translateX(-7446px)}29.31%{transform:translateX(-7548px)}29.67%{transform:translateX(-7650px)}30.02%{transform:translateX(-7752px)}30.39%{transform:translateX(-7854px)}30.74%{transform:translateX(-7956px)}31.1%{transform:translateX(-8058px)}31.46%{transform:translateX(-8160px)}31.81%{transform:translateX(-8262px)}32.17%{transform:translateX(-8364px)}32.52%{transform:translateX(-8466px)}32.88%{transform:translateX(-8568px)}33.25%{transform:translateX(-8670px)}33.6%{transform:translateX(-8772px)}33.96%{transform:translateX(-8874px)}34.31%{transform:translateX(-8976px)}34.68%{transform:translateX(-9078px)}35.03%{transform:translateX(-9180px)}35.39%{transform:translateX(-9282px)}35.75%{transform:translateX(-9384px)}36.11%{transform:translateX(-9486px)}36.46%{transform:translateX(-9588px)}36.81%{transform:translateX(-9690px)}37.18%{transform:translateX(-9792px)}37.53%{transform:translateX(-9894px)}37.89%{transform:translateX(-9996px)}38.25%{transform:translateX(-10098px)}38.6%{transform:translateX(-10200px)}38.96%{transform:translateX(-10302px)}39.32%{transform:translateX(-10404px)}39.68%{transform:translateX(-10506px)}40.03%{transform:translateX(-10608px)}40.39%{transform:translateX(-10710px)}40.75%{transform:translateX(-10812px)}41.1%{transform:translateX(-10914px)}41.46%{transform:translateX(-11016px)}41.82%{transform:translateX(-11118px)}42.18%{transform:translateX(-11220px)}42.53%{transform:translateX(-11322px)}42.9%{transform:translateX(-11424px)}43.25%{transform:translateX(-11526px)}43.61%{transform:translateX(-11628px)}43.97%{transform:translateX(-11730px)}44.33%{transform:translateX(-11832px)}44.69%{transform:translateX(-11934px)}45.04%{transform:translateX(-12036px)}45.4%{transform:translateX(-12138px)}45.76%{transform:translateX(-12240px)}46.11%{transform:translateX(-12342px)}46.47%{transform:translateX(-12444px)}46.82%{transform:translateX(-12546px)}47.19%{transform:translateX(-12648px)}47.54%{transform:translateX(-12750px)}47.9%{transform:translateX(-12852px)}48.25%{transform:translateX(-12954px)}48.62%{transform:translateX(-13056px)}48.98%{transform:translateX(-13158px)}49.33%{transform:translateX(-13260px)}49.69%{transform:translateX(-13362px)}50.05%{transform:translateX(-13464px)}50.4%{transform:translateX(-13566px)}50.76%{transform:translateX(-13668px)}51.11%{transform:translateX(-13770px)}51.48%{transform:translateX(-13872px)}51.83%{transform:translateX(-13974px)}52.19%{transform:translateX(-14076px)}52.54%{transform:translateX(-14178px)}52.91%{transform:translateX(-14280px)}53.26%{transform:translateX(-14382px)}53.62%{transform:translateX(-14484px)}53.97%{transform:translateX(-14586px)}54.33%{transform:translateX(-14688px)}54.69%{transform:translateX(-14790px)}55.05%{transform:translateX(-14892px)}55.4%{transform:translateX(-14994px)}55.76%{transform:translateX(-15096px)}56.12%{transform:translateX(-15198px)}56.48%{transform:translateX(-15300px)}56.84%{transform:translateX(-15402px)}57.19%{transform:translateX(-15504px)}57.55%{transform:translateX(-15606px)}57.91%{transform:translateX(-15708px)}58.27%{transform:translateX(-15810px)}58.63%{transform:translateX(-15912px)}58.98%{transform:translateX(-16014px)}59.34%{transform:translateX(-16116px)}59.7%{transform:translateX(-16218px)}60.05%{transform:translateX(-16320px)}60.41%{transform:translateX(-16422px)}60.77%{transform:translateX(-16524px)}61.12%{transform:translateX(-16626px)}61.49%{transform:translateX(-16728px)}61.84%{transform:translateX(-16830px)}62.2%{transform:translateX(-16932px)}62.56%{transform:translateX(-17034px)}62.91%{transform:translateX(-17136px)}63.27%{transform:translateX(-17238px)}63.63%{transform:translateX(-17340px)}63.99%{transform:translateX(-17442px)}64.34%{transform:translateX(-17544px)}64.7%{transform:translateX(-17646px)}65.06%{transform:translateX(-17748px)}65.42%{transform:translateX(-17850px)}65.78%{transform:translateX(-17952px)}66.13%{transform:translateX(-18054px)}66.49%{transform:translateX(-18156px)}66.85%{transform:translateX(-18258px)}67.2%{transform:translateX(-18360px)}67.56%{transform:translateX(-18462px)}67.92%{transform:translateX(-18564px)}68.27%{transform:translateX(-18666px)}68.63%{transform:translateX(-18768px)}68.99%{transform:translateX(-18870px)}69.35%{transform:translateX(-18972px)}69.7%{transform:translateX(-19074px)}70.06%{transform:translateX(-19176px)}70.42%{transform:translateX(-19278px)}70.78%{transform:translateX(-19380px)}71.14%{transform:translateX(-19482px)}71.49%{transform:translateX(-19584px)}71.85%{transform:translateX(-19686px)}72.21%{transform:translateX(-19788px)}72.57%{transform:translateX(-19890px)}72.93%{transform:translateX(-19992px)}73.28%{transform:translateX(-20094px)}73.64%{transform:translateX(-20196px)}74%{transform:translateX(-20298px)}74.35%{transform:translateX(-20400px)}74.71%{transform:translateX(-20502px)}75.07%{transform:translateX(-20604px)}75.43%{transform:translateX(-20706px)}75.78%{transform:translateX(-20808px)}76.14%{transform:translateX(-20910px)}76.5%{transform:translateX(-21012px)}76.86%{transform:translateX(-21114px)}77.21%{transform:translateX(-21216px)}77.57%{transform:translateX(-21318px)}77.93%{transform:translateX(-21420px)}78.29%{transform:translateX(-21522px)}78.64%{transform:translateX(-21624px)}79%{transform:translateX(-21726px)}79.35%{transform:translateX(-21828px)}79.72%{transform:translateX(-21930px)}80.08%{transform:translateX(-22032px)}80.43%{transform:translateX(-22134px)}80.79%{transform:translateX(-22236px)}81.14%{transform:translateX(-22338px)}81.5%{transform:translateX(-22440px)}81.86%{transform:translateX(-22542px)}82.22%{transform:translateX(-22644px)}82.57%{transform:translateX(-22746px)}82.93%{transform:translateX(-22848px)}83.29%{transform:translateX(-22950px)}83.65%{transform:translateX(-23052px)}84%{transform:translateX(-23154px)}84.36%{transform:translateX(-23256px)}84.71%{transform:translateX(-23358px)}85.08%{transform:translateX(-23460px)}85.44%{transform:translateX(-23562px)}85.79%{transform:translateX(-23664px)}86.15%{transform:translateX(-23766px)}86.51%{transform:translateX(-23868px)}86.86%{transform:translateX(-23970px)}87.23%{transform:translateX(-24072px)}87.57%{transform:translateX(-24174px)}87.94%{transform:translateX(-24276px)}88.3%{transform:translateX(-24378px)}88.65%{transform:translateX(-24480px)}89.01%{transform:translateX(-24582px)}89.37%{transform:translateX(-24684px)}89.72%{transform:translateX(-24786px)}90.08%{transform:translateX(-24888px)}90.44%{transform:translateX(-24990px)}90.8%{transform:translateX(-25092px)}91.15%{transform:translateX(-25194px)}91.51%{transform:translateX(-25296px)}91.86%{transform:translateX(-25398px)}92.22%{transform:translateX(-25500px)}92.59%{transform:translateX(-25602px)}92.94%{transform:translateX(-25704px)}93.29%{transform:translateX(-25806px)}93.66%{transform:translateX(-25908px)}94.01%{transform:translateX(-26010px)}94.37%{transform:translateX(-26112px)}94.72%{transform:translateX(-26214px)}97.1%{transform:translateX(-26316px)}97.11%{transform:translateX(-26418px)}97.21%{transform:translateX(-26622px)}97.22%{transform:translateX(-26826px)}to{transform:translateX(-26928px)}}.a{fill:#282d35}.c{fill:#71bef2}.d{fill:#d290e4}.e{fill:#6c6c6c}.f{fill:#a8cc8c}.g{fill:#afafaf}.h{fill:#b9c0cb}</style><g font-size="1.67" font-family="Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace"><defs><symbol id="1"><text y="1.67" class="c">~/go/src/github.com/vbauerster/mpb/examples/io/single</text></symbol><symbol id="2"><text y="1.67" class="d">❯</text></symbol><symbol id="3"><text y="1.67" class="c">~/go/src/github.com/vbauerster/mpb/examples/io/single</text><text x="54.108" y="1.67" class="e">master*</text></symbol><symbol id="4"><text y="1.67" class="d">❯</text><text x="2.004" y="1.67" class="f">go</text><text x="5.01" y="1.67" class="g">run</text><text x="9.018" y="1.67" class="g">-race</text><text x="15.03" y="1.67" class="g">main.go</text></symbol><symbol id="5"><text y="1.67" class="d">❯</text><text x="2.004" y="1.67" class="f">go</text><text x="5.01" y="1.67" class="h">run</text><path class="h" d="M8.016 0h1v2.171h-1z"/><text x="8.016" y="1.67" class="a"></text><text x="9.018" y="1.67" class="h">-race</text><text x="15.03" y="1.67" class="h">main.go</text></symbol><symbol id="6"><text y="1.67" class="d">❯</text><text x="2.004" y="1.67" class="f">go</text><text x="5.01" y="1.67" class="h">run</text><text x="9.018" y="1.67" class="h">-race</text><text x="15.03" y="1.67" fill="#b9c0cb" text-decoration="underline">main.go</text></symbol><symbol id="7"><text y="1.67" class="h">40.6</text><text x="5.01" y="1.67" class="h">MiB</text><text x="9.018" y="1.67" class="h">/</text><text x="11.022" y="1.67" class="h">40.6</text><text x="16.032" y="1.67" class="h">MiB</text><text x="20.04" y="1.67" class="h">[==========================================================|</text><text x="81.162" y="1.67" class="h">00:00</text><text x="87.174" y="1.67" class="h">]</text><text x="89.178" y="1.67" class="h">7.54</text><text x="94.188" y="1.67" class="h">MiB/s</text></symbol><symbol id="8"><text y="1.67" class="c">~/go/src/github.com/vbauerster/mpb/examples/io/single</text><text x="54.108" y="1.67" class="e">master*</text><text x="62.124" y="1.67" fill="#dbab79">46s</text></symbol><symbol id="a"><path fill="transparent" d="M0 0h102v7H0z"/></symbol><symbol id="b"><path fill="#6f7683" d="M0 0h1.102v2.171H0z"/></symbol></defs><path class="a" d="M0 0h102v13.026H0z"/><g style="animation-duration:50.351952s;animation-iteration-count:infinite;animation-name:m;animation-timing-function:steps(1,end)"><svg width="27030"><svg><use xlink:href="#a"/><use xlink:href="#b" x="-.004"/></svg><svg x="102"><use xlink:href="#a"/><use xlink:href="#b" x="-.004"/></svg><svg x="204"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="2.146"/></svg><svg x="306"><use xlink:href="#a"/><use xlink:href="#b" x=".996" y="4.317"/><use xlink:href="#1" y="2.171"/></svg><svg x="408"><use xlink:href="#a"/><use xlink:href="#b" x=".996" y="4.317"/><use xlink:href="#1" y="2.171"/></svg><svg x="510"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="4.317"/><use xlink:href="#1" y="2.171"/><use xlink:href="#2" y="4.342"/></svg><svg x="612"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="4.317"/><use xlink:href="#1" y="2.171"/><use xlink:href="#2" y="4.342"/></svg><svg x="714"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="4.317"/><text y="3.841" class="c">~/go/src/github.com/vbauerster/mpb/examples/io/single</text><text x="54.108" y="3.841" class="e">master</text><use xlink:href="#2" y="4.342"/></svg><svg x="816"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#2" y="4.342"/></svg><svg x="918"><use xlink:href="#a"/><use xlink:href="#b" x="2.996" y="4.317"/><use xlink:href="#3" y="2.171"/><text y="6.012" class="d">❯</text><text x="2.004" y="6.012" class="f">g</text><text x="3.006" y="6.012" class="g">it</text><text x="6.012" y="6.012" class="g">clean</text><text x="12.024" y="6.012" class="g">-fdx</text></svg><svg x="1020"><use xlink:href="#a"/><use xlink:href="#b" x="3.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/></svg><svg x="1122"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/></svg><svg x="1224"><use xlink:href="#a"/><use xlink:href="#b" x="5.996" y="4.317"/><use xlink:href="#3" y="2.171"/><text y="6.012" class="d">❯</text><text x="2.004" y="6.012" class="f">go</text><text x="5.01" y="6.012" class="h">r</text><text x="6.012" y="6.012" class="g">un</text><text x="9.018" y="6.012" class="g">-race</text><text x="15.03" y="6.012" class="g">main.go</text></svg><svg x="1326"><use xlink:href="#a"/><use xlink:href="#b" x="6.996" y="4.317"/><use xlink:href="#3" y="2.171"/><text y="6.012" class="d">❯</text><text x="2.004" y="6.012" class="f">go</text><text x="5.01" y="6.012" class="h">ru</text><text x="7.014" y="6.012" class="g">n</text><text x="9.018" y="6.012" class="g">-race</text><text x="15.03" y="6.012" class="g">main.go</text></svg><svg x="1428"><use xlink:href="#a"/><use xlink:href="#b" x="7.996" y="4.317"/><use xlink:href="#3" y="2.171"/><text y="6.012" class="d">❯</text><text x="2.004" y="6.012" class="f">go</text><text x="5.01" y="6.012" class="h">run</text><text x="9.018" y="6.012" class="g">-race</text><text x="15.03" y="6.012" class="g">main.go</text></svg><svg x="1530"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#5" y="4.342"/></svg><svg x="1632"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#5" y="4.342"/></svg><svg x="1734"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="1836"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="1938"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="2040"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="6.488"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="2142"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="6.488"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="2244"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">16.6</text><text x="5.01" y="8.183" class="h">KiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[----------------------------------------------------------|</text><text x="81.162" y="8.183" class="h">00:00</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">0</text><text x="91.182" y="8.183" class="h">b/s</text></svg><svg x="2346"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">66.5</text><text x="5.01" y="8.183" class="h">KiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[----------------------------------------------------------|</text><text x="81.162" y="8.183" class="h">00:00</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">0</text><text x="91.182" y="8.183" class="h">b/s</text></svg><svg x="2448"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">134.5</text><text x="6.012" y="8.183" class="h">KiB</text><text x="10.02" y="8.183" class="h">/</text><text x="12.024" y="8.183" class="h">40.6</text><text x="17.034" y="8.183" class="h">MiB</text><text x="21.042" y="8.183" class="h">[----------------------------------------------------------|</text><text x="82.164" y="8.183" class="h">09:01</text><text x="88.176" y="8.183" class="h">]</text><text x="90.18" y="8.183" class="h">6.18</text><text x="95.19" y="8.183" class="h">MiB/s</text></svg><svg x="2550"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">339.6</text><text x="6.012" y="8.183" class="h">KiB</text><text x="10.02" y="8.183" class="h">/</text><text x="12.024" y="8.183" class="h">40.6</text><text x="17.034" y="8.183" class="h">MiB</text><text x="21.042" y="8.183" class="h">[----------------------------------------------------------|</text><text x="82.164" y="8.183" class="h">08:18</text><text x="88.176" y="8.183" class="h">]</text><text x="90.18" y="8.183" class="h">6.41</text><text x="95.19" y="8.183" class="h">MiB/s</text></svg><svg x="2652"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">577.6</text><text x="6.012" y="8.183" class="h">KiB</text><text x="10.02" y="8.183" class="h">/</text><text x="12.024" y="8.183" class="h">40.6</text><text x="17.034" y="8.183" class="h">MiB</text><text x="21.042" y="8.183" class="h">[>---------------------------------------------------------|</text><text x="82.164" y="8.183" class="h">07:32</text><text x="88.176" y="8.183" class="h">]</text><text x="90.18" y="8.183" class="h">7.05</text><text x="95.19" y="8.183" class="h">MiB/s</text></svg><svg x="2754"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">866.6</text><text x="6.012" y="8.183" class="h">KiB</text><text x="10.02" y="8.183" class="h">/</text><text x="12.024" y="8.183" class="h">40.6</text><text x="17.034" y="8.183" class="h">MiB</text><text x="21.042" y="8.183" class="h">[>---------------------------------------------------------|</text><text x="82.164" y="8.183" class="h">06:43</text><text x="88.176" y="8.183" class="h">]</text><text x="90.18" y="8.183" class="h">7.36</text><text x="95.19" y="8.183" class="h">MiB/s</text></svg><svg x="2856"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">1.5</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[=>--------------------------------------------------------|</text><text x="80.16" y="8.183" class="h">05:12</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">8.12</text><text x="93.186" y="8.183" class="h">MiB/s</text></svg><svg x="2958"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">1.8</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[==>-------------------------------------------------------|</text><text x="80.16" y="8.183" class="h">04:28</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">8.48</text><text x="93.186" y="8.183" class="h">MiB/s</text></svg><svg x="3060"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">2.4</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[==>-------------------------------------------------------|</text><text x="80.16" y="8.183" class="h">03:29</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">16.62</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="3162"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">2.9</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[===>------------------------------------------------------|</text><text x="80.16" y="8.183" class="h">02:52</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">15.37</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="3264"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">3.5</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[====>-----------------------------------------------------|</text><text x="80.16" y="8.183" class="h">02:17</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">14.22</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="3366"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">3.9</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[=====>----------------------------------------------------|</text><text x="80.16" y="8.183" class="h">01:59</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">13.18</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="3468"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">4.3</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[=====>----------------------------------------------------|</text><text x="80.16" y="8.183" class="h">01:40</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">12.42</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="3570"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">4.9</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[======>---------------------------------------------------|</text><text x="80.16" y="8.183" class="h">01:19</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">18.55</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="3672"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">5.2</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[======>---------------------------------------------------|</text><text x="80.16" y="8.183" class="h">01:11</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">17.39</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="3774"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">5.5</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[=======>--------------------------------------------------|</text><text x="80.16" y="8.183" class="h">01:03</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">16.23</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="3876"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">5.6</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[=======>--------------------------------------------------|</text><text x="80.16" y="8.183" class="h">01:02</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">16.04</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="3978"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">6.2</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[========>-------------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:50</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">17.91</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="4080"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">6.5</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[========>-------------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:47</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">16.80</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="4182"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">6.7</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[=========>------------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:45</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">15.85</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="4284"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">7.0</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[=========>------------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:41</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">14.66</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="4386"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">7.3</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[=========>------------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:38</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">17.03</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="4488"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">7.5</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[==========>-----------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:39</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">16.26</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="4590"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">7.7</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[==========>-----------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:38</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">15.16</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="4692"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">8.0</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[==========>-----------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:36</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">14.16</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="4794"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">8.1</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[===========>----------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:35</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">13.56</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="4896"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">8.4</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[===========>----------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:36</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">13.08</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="4998"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">8.6</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[===========>----------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:34</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">12.51</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="5100"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">8.8</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[============>---------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:34</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">12.05</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="5202"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">9.0</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[============>---------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:35</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">11.56</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="5304"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">9.3</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[============>---------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:32</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">11.12</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="5406"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">9.5</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[=============>--------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:31</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">10.75</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="5508"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">9.7</text><text x="4.008" y="8.183" class="h">MiB</text><text x="8.016" y="8.183" class="h">/</text><text x="10.02" y="8.183" class="h">40.6</text><text x="15.03" y="8.183" class="h">MiB</text><text x="19.038" y="8.183" class="h">[=============>--------------------------------------------|</text><text x="80.16" y="8.183" class="h">00:30</text><text x="86.172" y="8.183" class="h">]</text><text x="88.176" y="8.183" class="h">10.23</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="5610"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">10.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=============>--------------------------------------------|</text><text x="81.162" y="8.183" class="h">00:29</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.89</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="5712"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">10.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==============>-------------------------------------------|</text><text x="81.162" y="8.183" class="h">00:30</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.54</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="5814"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">10.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==============>-------------------------------------------|</text><text x="81.162" y="8.183" class="h">00:28</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.34</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="5916"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">10.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==============>-------------------------------------------|</text><text x="81.162" y="8.183" class="h">00:27</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.04</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="6018"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">10.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===============>------------------------------------------|</text><text x="81.162" y="8.183" class="h">00:26</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.79</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="6120"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">11.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===============>------------------------------------------|</text><text x="81.162" y="8.183" class="h">00:26</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.75</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="6222"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">11.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===============>------------------------------------------|</text><text x="81.162" y="8.183" class="h">00:25</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">11.13</text><text x="95.19" y="8.183" class="h">MiB/s</text></svg><svg x="6324"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">11.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===============>------------------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">10.81</text><text x="95.19" y="8.183" class="h">MiB/s</text></svg><svg x="6426"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">11.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[================>-----------------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">10.45</text><text x="95.19" y="8.183" class="h">MiB/s</text></svg><svg x="6528"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">11.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[================>-----------------------------------------|</text><text x="81.162" y="8.183" class="h">00:25</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">10.00</text><text x="95.19" y="8.183" class="h">MiB/s</text></svg><svg x="6630"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">12.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[================>-----------------------------------------|</text><text x="81.162" y="8.183" class="h">00:25</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.63</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="6732"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">12.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=================>----------------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.26</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="6834"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">12.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=================>----------------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.14</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="6936"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">12.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=================>----------------------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.79</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="7038"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">12.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=================>----------------------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">10.07</text><text x="95.19" y="8.183" class="h">MiB/s</text></svg><svg x="7140"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">12.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=================>----------------------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.96</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="7242"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">13.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==================>---------------------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.80</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="7344"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">13.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==================>---------------------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.71</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="7446"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">13.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==================>---------------------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.61</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="7548"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">13.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==================>---------------------------------------|</text><text x="81.162" y="8.183" class="h">00:25</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.36</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="7650"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">13.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===================>--------------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.19</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="7752"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">13.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===================>--------------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.93</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="7854"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">14.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===================>--------------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.65</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="7956"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">14.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===================>--------------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.48</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="8058"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">14.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[====================>-------------------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.32</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="8160"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">14.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[====================>-------------------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.20</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="8262"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">14.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[====================>-------------------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.12</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="8364"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">14.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[====================>-------------------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.97</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="8466"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">15.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[====================>-------------------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.88</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="8568"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">15.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================>------------------------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.74</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="8670"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">15.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================>------------------------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.73</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="8772"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">15.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================>------------------------------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.07</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="8874"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">15.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================>------------------------------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.84</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="8976"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">15.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================>------------------------------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.72</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="9078"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">15.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[======================>-----------------------------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.45</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="9180"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">16.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[======================>-----------------------------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.27</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="9282"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">16.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[======================>-----------------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.05</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="9384"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">16.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[======================>-----------------------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.88</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="9486"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">16.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[======================>-----------------------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.69</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="9588"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">16.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=======================>----------------------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.60</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="9690"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">16.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=======================>----------------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.49</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="9792"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">16.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=======================>----------------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.41</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="9894"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">17.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=======================>----------------------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.43</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="9996"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">17.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[========================>---------------------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.38</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="10098"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">17.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[========================>---------------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.23</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="10200"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">17.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[========================>---------------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.15</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="10302"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">17.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[========================>---------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.99</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="10404"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">17.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=========================>--------------------------------|</text><text x="81.162" y="8.183" class="h">00:25</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.90</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="10506"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">18.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=========================>--------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.83</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="10608"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">18.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=========================>--------------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.15</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="10710"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">18.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=========================>--------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.99</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="10812"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">18.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=========================>--------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.88</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="10914"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">18.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==========================>-------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.62</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="11016"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">18.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==========================>-------------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.58</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="11118"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">18.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==========================>-------------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.47</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="11220"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">19.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==========================>-------------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.39</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="11322"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">19.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==========================>-------------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.33</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="11424"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">19.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===========================>------------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.48</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="11526"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">19.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===========================>------------------------------|</text><text x="81.162" y="8.183" class="h">00:25</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.27</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="11628"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">19.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===========================>------------------------------|</text><text x="81.162" y="8.183" class="h">00:25</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.13</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="11730"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">19.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===========================>------------------------------|</text><text x="81.162" y="8.183" class="h">00:25</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.89</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="11832"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">19.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===========================>------------------------------|</text><text x="81.162" y="8.183" class="h">00:25</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.67</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="11934"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">19.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===========================>------------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.52</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="12036"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">20.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[============================>-----------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.42</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="12138"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">20.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[============================>-----------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.25</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="12240"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">20.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[============================>-----------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.12</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="12342"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">20.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[============================>-----------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.94</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="12444"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">20.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[============================>-----------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.75</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="12546"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">20.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[============================>-----------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.59</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="12648"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">20.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=============================>----------------------------|</text><text x="81.162" y="8.183" class="h">00:27</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.57</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="12750"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">20.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=============================>----------------------------|</text><text x="81.162" y="8.183" class="h">00:27</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.45</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="12852"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">21.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=============================>----------------------------|</text><text x="81.162" y="8.183" class="h">00:28</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.40</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="12954"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">21.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=============================>----------------------------|</text><text x="81.162" y="8.183" class="h">00:30</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.36</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="13056"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">21.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=============================>----------------------------|</text><text x="81.162" y="8.183" class="h">00:29</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.28</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="13158"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">21.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=============================>----------------------------|</text><text x="81.162" y="8.183" class="h">00:28</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.22</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="13260"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">21.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==============================>---------------------------|</text><text x="81.162" y="8.183" class="h">00:27</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.19</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="13362"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">21.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==============================>---------------------------|</text><text x="81.162" y="8.183" class="h">00:29</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.10</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="13464"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">21.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==============================>---------------------------|</text><text x="81.162" y="8.183" class="h">00:28</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.09</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="13566"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">21.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==============================>---------------------------|</text><text x="81.162" y="8.183" class="h">00:27</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.04</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="13668"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">21.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==============================>---------------------------|</text><text x="81.162" y="8.183" class="h">00:27</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.88</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="13770"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">22.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===============================>--------------------------|</text><text x="81.162" y="8.183" class="h">00:27</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.83</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="13872"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">22.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===============================>--------------------------|</text><text x="81.162" y="8.183" class="h">00:26</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.78</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="13974"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">22.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===============================>--------------------------|</text><text x="81.162" y="8.183" class="h">00:25</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.80</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="14076"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">22.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===============================>--------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.76</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="14178"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">22.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===============================>--------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.72</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="14280"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">22.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===============================>--------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.70</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="14382"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">22.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[================================>-------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.60</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="14484"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">22.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[================================>-------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.58</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="14586"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">23.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[================================>-------------------------|</text><text x="81.162" y="8.183" class="h">00:25</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.35</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="14688"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">23.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[================================>-------------------------|</text><text x="81.162" y="8.183" class="h">00:25</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.33</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="14790"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">23.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[================================>-------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.33</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="14892"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">23.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[================================>-------------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.31</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="14994"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">23.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=================================>------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.28</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="15096"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">23.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=================================>------------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.20</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="15198"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">23.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=================================>------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.26</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="15300"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">23.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=================================>------------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.26</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="15402"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">23.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=================================>------------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.31</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="15504"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">24.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=================================>------------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.26</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="15606"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">24.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==================================>-----------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.25</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="15708"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">24.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==================================>-----------------------|</text><text x="81.162" y="8.183" class="h">00:25</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.20</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="15810"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">24.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==================================>-----------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.20</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="15912"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">24.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==================================>-----------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.14</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="16014"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">24.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==================================>-----------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.16</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="16116"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">24.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==================================>-----------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.13</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="16218"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">24.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===================================>----------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.14</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="16320"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">25.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===================================>----------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.17</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="16422"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">25.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===================================>----------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.16</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="16524"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">25.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===================================>----------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.05</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="16626"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">25.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===================================>----------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.14</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="16728"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">25.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===================================>----------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.06</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="16830"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">25.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[====================================>---------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.04</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="16932"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">25.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[====================================>---------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.02</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="17034"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">25.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[====================================>---------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.96</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="17136"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">26.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[====================================>---------------------|</text><text x="81.162" y="8.183" class="h">00:24</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.05</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="17238"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">26.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[====================================>---------------------|</text><text x="81.162" y="8.183" class="h">00:23</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.03</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="17340"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">26.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================================>--------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.18</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="17442"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">26.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================================>--------------------|</text><text x="81.162" y="8.183" class="h">00:22</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.10</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="17544"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">26.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================================>--------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.09</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="17646"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">26.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================================>--------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.09</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="17748"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">26.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================================>--------------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.07</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="17850"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">26.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================================>--------------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.02</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="17952"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">26.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================================>--------------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.92</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="18054"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">27.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[======================================>-------------------|</text><text x="81.162" y="8.183" class="h">00:19</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.89</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="18156"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">27.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[======================================>-------------------|</text><text x="81.162" y="8.183" class="h">00:19</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.99</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="18258"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">27.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[======================================>-------------------|</text><text x="81.162" y="8.183" class="h">00:18</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.98</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="18360"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">27.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[======================================>-------------------|</text><text x="81.162" y="8.183" class="h">00:18</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.99</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="18462"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">27.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[======================================>-------------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.98</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="18564"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">27.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[======================================>-------------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.94</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="18666"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">27.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=======================================>------------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.98</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="18768"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">27.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=======================================>------------------|</text><text x="81.162" y="8.183" class="h">00:19</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.88</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="18870"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">27.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=======================================>------------------|</text><text x="81.162" y="8.183" class="h">00:19</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.81</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="18972"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">28.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=======================================>------------------|</text><text x="81.162" y="8.183" class="h">00:18</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.71</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="19074"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">28.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=======================================>------------------|</text><text x="81.162" y="8.183" class="h">00:18</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.58</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="19176"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">28.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=======================================>------------------|</text><text x="81.162" y="8.183" class="h">00:18</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.44</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="19278"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">28.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=======================================>------------------|</text><text x="81.162" y="8.183" class="h">00:18</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.38</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="19380"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">28.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[========================================>-----------------|</text><text x="81.162" y="8.183" class="h">00:17</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.33</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="19482"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">28.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[========================================>-----------------|</text><text x="81.162" y="8.183" class="h">00:17</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.19</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="19584"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">28.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[========================================>-----------------|</text><text x="81.162" y="8.183" class="h">00:18</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.17</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="19686"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">28.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[========================================>-----------------|</text><text x="81.162" y="8.183" class="h">00:17</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.17</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="19788"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">28.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[========================================>-----------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.11</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="19890"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">28.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[========================================>-----------------|</text><text x="81.162" y="8.183" class="h">00:19</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.03</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="19992"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">28.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[========================================>-----------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.89</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="20094"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">29.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=========================================>----------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.79</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="20196"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">29.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=========================================>----------------|</text><text x="81.162" y="8.183" class="h">00:19</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.72</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="20298"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">29.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=========================================>----------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.60</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="20400"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">29.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=========================================>----------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.50</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="20502"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">29.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=========================================>----------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.48</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="20604"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">29.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=========================================>----------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.44</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="20706"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">29.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=========================================>----------------|</text><text x="81.162" y="8.183" class="h">00:19</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.37</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="20808"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">29.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==========================================>---------------|</text><text x="81.162" y="8.183" class="h">00:19</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.31</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="20910"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">29.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==========================================>---------------|</text><text x="81.162" y="8.183" class="h">00:21</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.31</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="21012"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">29.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==========================================>---------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.34</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="21114"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">30.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==========================================>---------------|</text><text x="81.162" y="8.183" class="h">00:20</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.32</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="21216"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">30.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==========================================>---------------|</text><text x="81.162" y="8.183" class="h">00:19</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.22</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="21318"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">30.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==========================================>---------------|</text><text x="81.162" y="8.183" class="h">00:19</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.18</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="21420"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">30.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==========================================>---------------|</text><text x="81.162" y="8.183" class="h">00:19</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.16</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="21522"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">30.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===========================================>--------------|</text><text x="81.162" y="8.183" class="h">00:19</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.21</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="21624"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">30.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===========================================>--------------|</text><text x="81.162" y="8.183" class="h">00:18</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.19</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="21726"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">30.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===========================================>--------------|</text><text x="81.162" y="8.183" class="h">00:17</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.18</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="21828"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">30.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===========================================>--------------|</text><text x="81.162" y="8.183" class="h">00:17</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.19</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="21930"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">30.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===========================================>--------------|</text><text x="81.162" y="8.183" class="h">00:17</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.99</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="22032"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">31.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===========================================>--------------|</text><text x="81.162" y="8.183" class="h">00:17</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.89</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="22134"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">31.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[============================================>-------------|</text><text x="81.162" y="8.183" class="h">00:16</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.92</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="22236"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">31.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[============================================>-------------|</text><text x="81.162" y="8.183" class="h">00:15</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.80</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="22338"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">31.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[============================================>-------------|</text><text x="81.162" y="8.183" class="h">00:15</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.85</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="22440"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">31.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[============================================>-------------|</text><text x="81.162" y="8.183" class="h">00:14</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.87</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="22542"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">31.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[============================================>-------------|</text><text x="81.162" y="8.183" class="h">00:13</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.93</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="22644"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">31.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=============================================>------------|</text><text x="81.162" y="8.183" class="h">00:13</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.95</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="22746"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">32.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=============================================>------------|</text><text x="81.162" y="8.183" class="h">00:12</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.98</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="22848"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">32.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=============================================>------------|</text><text x="81.162" y="8.183" class="h">00:11</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">5.99</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="22950"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">32.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=============================================>------------|</text><text x="81.162" y="8.183" class="h">00:11</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.04</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="23052"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">32.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=============================================>------------|</text><text x="81.162" y="8.183" class="h">00:10</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.08</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="23154"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">32.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==============================================>-----------|</text><text x="81.162" y="8.183" class="h">00:10</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.03</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="23256"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">32.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==============================================>-----------|</text><text x="81.162" y="8.183" class="h">00:09</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.05</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="23358"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">33.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==============================================>-----------|</text><text x="81.162" y="8.183" class="h">00:09</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.08</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="23460"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">33.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===============================================>----------|</text><text x="81.162" y="8.183" class="h">00:08</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.13</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="23562"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">33.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===============================================>----------|</text><text x="81.162" y="8.183" class="h">00:07</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.30</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="23664"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">33.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===============================================>----------|</text><text x="81.162" y="8.183" class="h">00:07</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.33</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="23766"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">34.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[================================================>---------|</text><text x="81.162" y="8.183" class="h">00:07</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.44</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="23868"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">34.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[================================================>---------|</text><text x="81.162" y="8.183" class="h">00:06</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.88</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="23970"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">34.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[================================================>---------|</text><text x="81.162" y="8.183" class="h">00:05</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.88</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="24072"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">34.8</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=================================================>--------|</text><text x="81.162" y="8.183" class="h">00:05</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">6.88</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="24174"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">35.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=================================================>--------|</text><text x="81.162" y="8.183" class="h">00:04</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">10.50</text><text x="95.19" y="8.183" class="h">MiB/s</text></svg><svg x="24276"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">35.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==================================================>-------|</text><text x="81.162" y="8.183" class="h">00:04</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">10.17</text><text x="95.19" y="8.183" class="h">MiB/s</text></svg><svg x="24378"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">35.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==================================================>-------|</text><text x="81.162" y="8.183" class="h">00:03</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.88</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="24480"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">35.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==================================================>-------|</text><text x="81.162" y="8.183" class="h">00:03</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.36</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="24582"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">36.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===================================================>------|</text><text x="81.162" y="8.183" class="h">00:03</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.27</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="24684"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">36.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===================================================>------|</text><text x="81.162" y="8.183" class="h">00:02</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">9.08</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="24786"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">36.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[===================================================>------|</text><text x="81.162" y="8.183" class="h">00:02</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.83</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="24888"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">37.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[====================================================>-----|</text><text x="81.162" y="8.183" class="h">00:02</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.64</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="24990"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">37.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[====================================================>-----|</text><text x="81.162" y="8.183" class="h">00:02</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.48</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="25092"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">37.5</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================================================>----|</text><text x="81.162" y="8.183" class="h">00:02</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.26</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="25194"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">37.9</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================================================>----|</text><text x="81.162" y="8.183" class="h">00:02</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.16</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="25296"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">38.1</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=====================================================>----|</text><text x="81.162" y="8.183" class="h">00:01</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.21</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="25398"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">38.4</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[======================================================>---|</text><text x="81.162" y="8.183" class="h">00:01</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.38</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="25500"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">38.7</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[======================================================>---|</text><text x="81.162" y="8.183" class="h">00:01</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.31</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="25602"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">39.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=======================================================>--|</text><text x="81.162" y="8.183" class="h">00:01</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.40</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="25704"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">39.3</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[=======================================================>--|</text><text x="81.162" y="8.183" class="h">00:01</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.21</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="25806"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">39.6</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[========================================================>-|</text><text x="81.162" y="8.183" class="h">00:00</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">8.14</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="25908"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">40.0</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[========================================================>-|</text><text x="81.162" y="8.183" class="h">00:00</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.97</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="26010"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">40.2</text><text x="5.01" y="8.183" class="h">MiB</text><text x="9.018" y="8.183" class="h">/</text><text x="11.022" y="8.183" class="h">40.6</text><text x="16.032" y="8.183" class="h">MiB</text><text x="20.04" y="8.183" class="h">[==========================================================|</text><text x="81.162" y="8.183" class="h">00:00</text><text x="87.174" y="8.183" class="h">]</text><text x="89.178" y="8.183" class="h">7.75</text><text x="94.188" y="8.183" class="h">MiB/s</text></svg><svg x="26112"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#7" y="6.513"/></svg><svg x="26214"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#7" y="6.513"/></svg><svg x="26316"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#7" y="6.513"/></svg><svg x="26418"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="10.83"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#7" y="6.513"/></svg><svg x="26520"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="13.001"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#7" y="6.513"/><use xlink:href="#8" y="10.855"/><use xlink:href="#2" y="13.026"/></svg><svg x="26622"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="13.001"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#7" y="6.513"/><use xlink:href="#8" y="10.855"/><use xlink:href="#2" y="13.026"/></svg><svg x="26724"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="13.001"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#7" y="6.513"/><use xlink:href="#8" y="10.855"/><use xlink:href="#2" y="13.026"/></svg><svg x="26826"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="13.001"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#7" y="6.513"/><use xlink:href="#8" y="10.855"/><use xlink:href="#2" y="13.026"/></svg><svg x="26928"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="13.001"/><use xlink:href="#3"/><use xlink:href="#6" y="2.171"/><use xlink:href="#7" y="4.342"/><use xlink:href="#8" y="8.684"/><use xlink:href="#2" y="10.855"/></svg></svg></g></g></svg></svg>
\ No newline at end of file diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/_svg/wHzf1M7sd7B3zVa2scBMnjqRf.svg b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/_svg/wHzf1M7sd7B3zVa2scBMnjqRf.svg new file mode 100644 index 0000000..9e3b871 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/_svg/wHzf1M7sd7B3zVa2scBMnjqRf.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1020" height="173.68"><rect width="1020" height="173.68" rx="0" ry="0" class="a"/><svg height="173.68" viewBox="0 0 102 17.368" width="1020" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><style>@keyframes m{0%{transform:translateX(0)}1.87%{transform:translateX(-102px)}1.89%{transform:translateX(-408px)}1.9%{transform:translateX(-510px)}1.92%{transform:translateX(-612px)}2.07%{transform:translateX(-714px)}2.16%{transform:translateX(-816px)}4.56%{transform:translateX(-918px)}5.18%{transform:translateX(-1020px)}5.77%{transform:translateX(-1122px)}6.6%{transform:translateX(-1224px)}7.36%{transform:translateX(-1326px)}7.71%{transform:translateX(-1428px)}9.58%{transform:translateX(-1632px)}10.82%{transform:translateX(-1836px)}10.84%{transform:translateX(-1938px)}10.88%{transform:translateX(-2040px)}10.89%{transform:translateX(-2142px)}14.85%{transform:translateX(-2244px)}15.4%{transform:translateX(-2346px)}15.95%{transform:translateX(-2448px)}16.51%{transform:translateX(-2550px)}17.06%{transform:translateX(-2652px)}17.61%{transform:translateX(-2754px)}18.16%{transform:translateX(-2856px)}18.72%{transform:translateX(-2958px)}19.28%{transform:translateX(-3060px)}19.82%{transform:translateX(-3162px)}20.39%{transform:translateX(-3264px)}20.93%{transform:translateX(-3366px)}21.47%{transform:translateX(-3468px)}22.04%{transform:translateX(-3570px)}22.57%{transform:translateX(-3672px)}23.15%{transform:translateX(-3774px)}23.7%{transform:translateX(-3876px)}24.23%{transform:translateX(-3978px)}24.8%{transform:translateX(-4080px)}25.34%{transform:translateX(-4182px)}25.9%{transform:translateX(-4284px)}26.46%{transform:translateX(-4386px)}27%{transform:translateX(-4488px)}27.56%{transform:translateX(-4590px)}28.12%{transform:translateX(-4692px)}28.66%{transform:translateX(-4794px)}29.22%{transform:translateX(-4896px)}29.76%{transform:translateX(-4998px)}30.33%{transform:translateX(-5100px)}30.88%{transform:translateX(-5202px)}31.42%{transform:translateX(-5304px)}31.98%{transform:translateX(-5406px)}32.53%{transform:translateX(-5508px)}33.08%{transform:translateX(-5610px)}33.65%{transform:translateX(-5712px)}34.18%{transform:translateX(-5814px)}34.75%{transform:translateX(-5916px)}35.29%{transform:translateX(-6018px)}35.85%{transform:translateX(-6120px)}36.42%{transform:translateX(-6222px)}36.96%{transform:translateX(-6324px)}37.51%{transform:translateX(-6426px)}38.05%{transform:translateX(-6528px)}38.61%{transform:translateX(-6630px)}39.17%{transform:translateX(-6732px)}39.71%{transform:translateX(-6834px)}40.28%{transform:translateX(-6936px)}40.82%{transform:translateX(-7038px)}41.39%{transform:translateX(-7140px)}41.95%{transform:translateX(-7242px)}42.48%{transform:translateX(-7344px)}43.03%{transform:translateX(-7446px)}43.58%{transform:translateX(-7548px)}44.15%{transform:translateX(-7650px)}44.69%{transform:translateX(-7752px)}45.26%{transform:translateX(-7854px)}45.81%{transform:translateX(-7956px)}46.34%{transform:translateX(-8058px)}46.92%{transform:translateX(-8160px)}47.46%{transform:translateX(-8262px)}48%{transform:translateX(-8364px)}48.57%{transform:translateX(-8466px)}49.11%{transform:translateX(-8568px)}49.67%{transform:translateX(-8670px)}50.21%{transform:translateX(-8772px)}50.77%{transform:translateX(-8874px)}51.32%{transform:translateX(-8976px)}51.87%{transform:translateX(-9078px)}52.44%{transform:translateX(-9180px)}52.98%{transform:translateX(-9282px)}53.54%{transform:translateX(-9384px)}54.1%{transform:translateX(-9486px)}54.64%{transform:translateX(-9588px)}55.21%{transform:translateX(-9690px)}55.75%{transform:translateX(-9792px)}56.32%{transform:translateX(-9894px)}56.86%{transform:translateX(-9996px)}57.4%{transform:translateX(-10098px)}57.98%{transform:translateX(-10200px)}58.52%{transform:translateX(-10302px)}59.08%{transform:translateX(-10404px)}59.63%{transform:translateX(-10506px)}60.19%{transform:translateX(-10608px)}60.72%{transform:translateX(-10710px)}61.28%{transform:translateX(-10812px)}61.83%{transform:translateX(-10914px)}62.39%{transform:translateX(-11016px)}62.93%{transform:translateX(-11118px)}63.49%{transform:translateX(-11220px)}64.04%{transform:translateX(-11322px)}64.6%{transform:translateX(-11424px)}65.16%{transform:translateX(-11526px)}65.69%{transform:translateX(-11628px)}66.26%{transform:translateX(-11730px)}66.8%{transform:translateX(-11832px)}67.37%{transform:translateX(-11934px)}67.92%{transform:translateX(-12036px)}68.45%{transform:translateX(-12138px)}69.02%{transform:translateX(-12240px)}69.56%{transform:translateX(-12342px)}70.14%{transform:translateX(-12444px)}70.69%{transform:translateX(-12546px)}71.22%{transform:translateX(-12648px)}71.79%{transform:translateX(-12750px)}72.33%{transform:translateX(-12852px)}72.9%{transform:translateX(-12954px)}73.45%{transform:translateX(-13056px)}73.98%{transform:translateX(-13158px)}74.56%{transform:translateX(-13260px)}75.09%{transform:translateX(-13362px)}75.65%{transform:translateX(-13464px)}76.21%{transform:translateX(-13566px)}76.75%{transform:translateX(-13668px)}77.32%{transform:translateX(-13770px)}77.85%{transform:translateX(-13872px)}78.41%{transform:translateX(-13974px)}78.98%{transform:translateX(-14076px)}79.51%{transform:translateX(-14178px)}80.08%{transform:translateX(-14280px)}80.63%{transform:translateX(-14382px)}81.18%{transform:translateX(-14484px)}81.74%{transform:translateX(-14586px)}82.29%{transform:translateX(-14688px)}82.85%{transform:translateX(-14790px)}83.39%{transform:translateX(-14892px)}83.96%{transform:translateX(-14994px)}84.5%{transform:translateX(-15096px)}85.04%{transform:translateX(-15198px)}85.61%{transform:translateX(-15300px)}86.15%{transform:translateX(-15402px)}86.72%{transform:translateX(-15504px)}87.27%{transform:translateX(-15606px)}87.81%{transform:translateX(-15708px)}88.37%{transform:translateX(-15810px)}88.92%{transform:translateX(-15912px)}89.49%{transform:translateX(-16014px)}90.04%{transform:translateX(-16116px)}90.57%{transform:translateX(-16218px)}91.14%{transform:translateX(-16320px)}96.34%{transform:translateX(-16524px)}96.56%{transform:translateX(-16728px)}96.57%{transform:translateX(-16830px)}96.59%{transform:translateX(-16932px)}to{transform:translateX(-17034px)}}.a{fill:#f8f8f8}.c{fill:#4f97d7}.d{fill:#a31db1}.e{fill:#6c6c6c}.f{fill:#67b11d}.g{fill:#afafaf}.h{fill:#444155}</style><g font-size="1.67" font-family="Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace"><defs><symbol id="1"><text y="1.67" class="c">~/go/src/github.com/vbauerster/mpb/examples/complex</text></symbol><symbol id="2"><text y="1.67" class="d">❯</text></symbol><symbol id="3"><text y="1.67" class="c">~/go/src/github.com/vbauerster/mpb/examples/complex</text><text x="52.104" y="1.67" class="e">master*</text></symbol><symbol id="4"><text y="1.67" class="d">❯</text><text x="2.004" y="1.67" class="f">go</text><text x="5.01" y="1.67" class="g">run</text><text x="9.018" y="1.67" class="g">-race</text><text x="15.03" y="1.67" class="g">main.go</text></symbol><symbol id="5"><text y="1.67" class="d">❯</text><text x="2.004" y="1.67" class="f">go</text><text x="5.01" y="1.67" class="h">run</text><path fill="#b9c0cb" d="M8.016 0h1v2.171h-1z"/><text x="8.016" y="1.67" class="a"></text><text x="9.018" y="1.67" class="h">-race</text><text x="15.03" y="1.67" class="h">main.go</text></symbol><symbol id="6"><text y="1.67" class="d">❯</text><text x="2.004" y="1.67" class="f">go</text><text x="5.01" y="1.67" class="h">run</text><text x="9.018" y="1.67" class="h">-race</text><text x="15.03" y="1.67" fill="#444155" text-decoration="underline">main.go</text></symbol><symbol id="7"><text y="1.67" class="h">Task#03:</text><text x="9.018" y="1.67" class="h">installing</text><text x="24.048" y="1.67" class="h">00:08</text><text x="30.06" y="1.67" class="h">[======>-------------------------------------------------------]</text><text x="96.192" y="1.67" class="h">11</text><text x="99.198" y="1.67" class="h">%</text></symbol><symbol id="8"><text y="1.67" class="h">Task#03:</text><text x="9.018" y="1.67" class="h">installing</text><text x="25.05" y="1.67" class="h">00:07</text><text x="31.062" y="1.67" class="h">[==============>-----------------------------------------------]</text><text x="97.194" y="1.67" class="h">24</text><text x="100.2" y="1.67" class="h">%</text></symbol><symbol id="9"><text y="1.67" class="h">Task#02:</text><text x="9.018" y="1.67" class="h">done!</text></symbol><symbol id="10"><text y="1.67" class="h">Task#03:</text><text x="9.018" y="1.67" class="h">done!</text></symbol><symbol id="11"><text y="1.67" class="h">Task#01:</text><text x="9.018" y="1.67" class="h">done!</text></symbol><symbol id="12"><text y="1.67" class="h">Task#00:</text><text x="9.018" y="1.67" class="h">done!</text></symbol><symbol id="13"><text y="1.67" class="c">~/go/src/github.com/vbauerster/mpb/examples/complex</text><text x="52.104" y="1.67" class="e">master*</text><text x="60.12" y="1.67" fill="#b1951d">19s</text></symbol><symbol id="a"><path fill="transparent" d="M0 0h102v9H0z"/></symbol><symbol id="b"><path class="h" d="M0 0h1.102v2.171H0z"/></symbol></defs><path class="a" d="M0 0h102v17.368H0z"/><g style="animation-duration:21.706843s;animation-iteration-count:infinite;animation-name:m;animation-timing-function:steps(1,end)"><svg width="17136"><svg><use xlink:href="#a"/><use xlink:href="#b" x="-.004"/></svg><svg x="102"><use xlink:href="#a"/><use xlink:href="#b" x="-.004"/></svg><svg x="204"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="2.146"/></svg><svg x="306"><use xlink:href="#a"/><use xlink:href="#b" x=".996" y="4.317"/><use xlink:href="#1" y="2.171"/></svg><svg x="408"><use xlink:href="#a"/><use xlink:href="#b" x=".996" y="4.317"/><use xlink:href="#1" y="2.171"/></svg><svg x="510"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="4.317"/><use xlink:href="#1" y="2.171"/><use xlink:href="#2" y="4.342"/></svg><svg x="612"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="4.317"/><use xlink:href="#1" y="2.171"/><use xlink:href="#2" y="4.342"/></svg><svg x="714"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="4.317"/><text y="3.841" class="c">~/go/src/github.com/vbauerster/mpb/examples/complex</text><text x="52.104" y="3.841" class="e">master</text><use xlink:href="#2" y="4.342"/></svg><svg x="816"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#2" y="4.342"/></svg><svg x="918"><use xlink:href="#a"/><use xlink:href="#b" x="2.996" y="4.317"/><use xlink:href="#3" y="2.171"/><text y="6.012" class="d">❯</text><text x="2.004" y="6.012" class="f">g</text><text x="3.006" y="6.012" class="g">o</text><text x="5.01" y="6.012" class="g">run</text><text x="9.018" y="6.012" class="g">-race</text><text x="15.03" y="6.012" class="g">main.go</text></svg><svg x="1020"><use xlink:href="#a"/><use xlink:href="#b" x="3.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/></svg><svg x="1122"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/></svg><svg x="1224"><use xlink:href="#a"/><use xlink:href="#b" x="5.996" y="4.317"/><use xlink:href="#3" y="2.171"/><text y="6.012" class="d">❯</text><text x="2.004" y="6.012" class="f">go</text><text x="5.01" y="6.012" class="h">r</text><text x="6.012" y="6.012" class="g">un</text><text x="9.018" y="6.012" class="g">-race</text><text x="15.03" y="6.012" class="g">main.go</text></svg><svg x="1326"><use xlink:href="#a"/><use xlink:href="#b" x="6.996" y="4.317"/><use xlink:href="#3" y="2.171"/><text y="6.012" class="d">❯</text><text x="2.004" y="6.012" class="f">go</text><text x="5.01" y="6.012" class="h">ru</text><text x="7.014" y="6.012" class="g">n</text><text x="9.018" y="6.012" class="g">-race</text><text x="15.03" y="6.012" class="g">main.go</text></svg><svg x="1428"><use xlink:href="#a"/><use xlink:href="#b" x="7.996" y="4.317"/><use xlink:href="#3" y="2.171"/><text y="6.012" class="d">❯</text><text x="2.004" y="6.012" class="f">go</text><text x="5.01" y="6.012" class="h">run</text><text x="9.018" y="6.012" class="g">-race</text><text x="15.03" y="6.012" class="g">main.go</text></svg><svg x="1530"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#5" y="4.342"/></svg><svg x="1632"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#5" y="4.342"/></svg><svg x="1734"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="1836"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="1938"><use xlink:href="#a"/><use xlink:href="#b" x="21.996" y="4.317"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="2040"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="6.488"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="2142"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="6.488"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/></svg><svg x="2244"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">4</text><text x="23.046" y="8.183" class="h">/</text><text x="25.05" y="8.183" class="h">268</text><text x="29.058" y="8.183" class="h">[>-------------------------------------------------------------]</text><text x="96.192" y="8.183" class="h">1</text><text x="98.196" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">2</text><text x="23.046" y="10.354" class="h">/</text><text x="25.05" y="10.354" class="h">274</text><text x="29.058" y="10.354" class="h">[--------------------------------------------------------------]</text><text x="96.192" y="10.354" class="h">1</text><text x="98.196" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">3</text><text x="23.046" y="12.525" class="h">/</text><text x="25.05" y="12.525" class="h">114</text><text x="29.058" y="12.525" class="h">[=>------------------------------------------------------------]</text><text x="96.192" y="12.525" class="h">3</text><text x="98.196" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">4</text><text x="23.046" y="14.696" class="h">/</text><text x="25.05" y="14.696" class="h">114</text><text x="29.058" y="14.696" class="h">[=>------------------------------------------------------------]</text><text x="96.192" y="14.696" class="h">4</text><text x="98.196" y="14.696" class="h">%</text></svg><svg x="2346"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">6</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[>-------------------------------------------------------------]</text><text x="97.194" y="8.183" class="h">2</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="22.044" y="10.354" class="h">8</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[=>------------------------------------------------------------]</text><text x="97.194" y="10.354" class="h">3</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="22.044" y="12.525" class="h">9</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[====>---------------------------------------------------------]</text><text x="97.194" y="12.525" class="h">8</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">12</text><text x="24.048" y="14.696" class="h">/</text><text x="26.052" y="14.696" class="h">114</text><text x="30.06" y="14.696" class="h">[======>-------------------------------------------------------]</text><text x="96.192" y="14.696" class="h">11</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="2448"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">9</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[=>------------------------------------------------------------]</text><text x="97.194" y="8.183" class="h">3</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">12</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[==>-----------------------------------------------------------]</text><text x="97.194" y="10.354" class="h">4</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">12</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[======>-------------------------------------------------------]</text><text x="96.192" y="12.525" class="h">11</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">24</text><text x="24.048" y="14.696" class="h">/</text><text x="26.052" y="14.696" class="h">114</text><text x="30.06" y="14.696" class="h">[============>-------------------------------------------------]</text><text x="96.192" y="14.696" class="h">21</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="2550"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">11</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[==>-----------------------------------------------------------]</text><text x="97.194" y="8.183" class="h">4</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">16</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[===>----------------------------------------------------------]</text><text x="97.194" y="10.354" class="h">6</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">18</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[=========>----------------------------------------------------]</text><text x="96.192" y="12.525" class="h">16</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">36</text><text x="24.048" y="14.696" class="h">/</text><text x="26.052" y="14.696" class="h">114</text><text x="30.06" y="14.696" class="h">[===================>------------------------------------------]</text><text x="96.192" y="14.696" class="h">32</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="2652"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">13</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[==>-----------------------------------------------------------]</text><text x="97.194" y="8.183" class="h">5</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">22</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[====>---------------------------------------------------------]</text><text x="97.194" y="10.354" class="h">8</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">27</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[==============>-----------------------------------------------]</text><text x="96.192" y="12.525" class="h">24</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">40</text><text x="24.048" y="14.696" class="h">/</text><text x="26.052" y="14.696" class="h">114</text><text x="30.06" y="14.696" class="h">[=====================>----------------------------------------]</text><text x="96.192" y="14.696" class="h">35</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="2754"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">15</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[==>-----------------------------------------------------------]</text><text x="97.194" y="8.183" class="h">6</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">24</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[====>---------------------------------------------------------]</text><text x="97.194" y="10.354" class="h">9</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">30</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[===============>----------------------------------------------]</text><text x="96.192" y="12.525" class="h">26</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">48</text><text x="24.048" y="14.696" class="h">/</text><text x="26.052" y="14.696" class="h">114</text><text x="30.06" y="14.696" class="h">[=========================>------------------------------------]</text><text x="96.192" y="14.696" class="h">42</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="2856"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">16</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[===>----------------------------------------------------------]</text><text x="97.194" y="8.183" class="h">6</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">30</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[======>-------------------------------------------------------]</text><text x="96.192" y="10.354" class="h">11</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">39</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[====================>-----------------------------------------]</text><text x="96.192" y="12.525" class="h">34</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">56</text><text x="24.048" y="14.696" class="h">/</text><text x="26.052" y="14.696" class="h">114</text><text x="30.06" y="14.696" class="h">[=============================>--------------------------------]</text><text x="96.192" y="14.696" class="h">49</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="2958"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">18</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[===>----------------------------------------------------------]</text><text x="97.194" y="8.183" class="h">7</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">34</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[=======>------------------------------------------------------]</text><text x="96.192" y="10.354" class="h">12</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">42</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[======================>---------------------------------------]</text><text x="96.192" y="12.525" class="h">37</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">64</text><text x="24.048" y="14.696" class="h">/</text><text x="26.052" y="14.696" class="h">114</text><text x="30.06" y="14.696" class="h">[==================================>---------------------------]</text><text x="96.192" y="14.696" class="h">56</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="3060"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">19</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[===>----------------------------------------------------------]</text><text x="97.194" y="8.183" class="h">7</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">40</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[========>-----------------------------------------------------]</text><text x="96.192" y="10.354" class="h">15</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">45</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[=======================>--------------------------------------]</text><text x="96.192" y="12.525" class="h">39</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">68</text><text x="24.048" y="14.696" class="h">/</text><text x="26.052" y="14.696" class="h">114</text><text x="30.06" y="14.696" class="h">[====================================>-------------------------]</text><text x="96.192" y="14.696" class="h">60</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="3162"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">21</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[====>---------------------------------------------------------]</text><text x="97.194" y="8.183" class="h">8</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">44</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[=========>----------------------------------------------------]</text><text x="96.192" y="10.354" class="h">16</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">54</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[============================>---------------------------------]</text><text x="96.192" y="12.525" class="h">47</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">76</text><text x="24.048" y="14.696" class="h">/</text><text x="26.052" y="14.696" class="h">114</text><text x="30.06" y="14.696" class="h">[========================================>---------------------]</text><text x="96.192" y="14.696" class="h">67</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="3264"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">25</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[=====>--------------------------------------------------------]</text><text x="97.194" y="8.183" class="h">9</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">52</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[===========>--------------------------------------------------]</text><text x="96.192" y="10.354" class="h">19</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">60</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[================================>-----------------------------]</text><text x="96.192" y="12.525" class="h">53</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">80</text><text x="24.048" y="14.696" class="h">/</text><text x="26.052" y="14.696" class="h">114</text><text x="30.06" y="14.696" class="h">[===========================================>------------------]</text><text x="96.192" y="14.696" class="h">70</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="3366"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">27</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[=====>--------------------------------------------------------]</text><text x="96.192" y="8.183" class="h">10</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">54</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[===========>--------------------------------------------------]</text><text x="96.192" y="10.354" class="h">20</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">63</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[=================================>----------------------------]</text><text x="96.192" y="12.525" class="h">55</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">88</text><text x="24.048" y="14.696" class="h">/</text><text x="26.052" y="14.696" class="h">114</text><text x="30.06" y="14.696" class="h">[===============================================>--------------]</text><text x="96.192" y="14.696" class="h">77</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="3468"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">29</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[======>-------------------------------------------------------]</text><text x="96.192" y="8.183" class="h">11</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">58</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[============>-------------------------------------------------]</text><text x="96.192" y="10.354" class="h">21</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">69</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[=====================================>------------------------]</text><text x="96.192" y="12.525" class="h">61</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">92</text><text x="24.048" y="14.696" class="h">/</text><text x="26.052" y="14.696" class="h">114</text><text x="30.06" y="14.696" class="h">[=================================================>------------]</text><text x="96.192" y="14.696" class="h">81</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="3570"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">30</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[======>-------------------------------------------------------]</text><text x="97.194" y="8.183" class="h">11</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="22.044" y="10.354" class="h">60</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=============>------------------------------------------------]</text><text x="97.194" y="10.354" class="h">22</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="22.044" y="12.525" class="h">75</text><text x="25.05" y="12.525" class="h">/</text><text x="27.054" y="12.525" class="h">114</text><text x="31.062" y="12.525" class="h">[========================================>---------------------]</text><text x="97.194" y="12.525" class="h">66</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">100</text><text x="25.05" y="14.696" class="h">/</text><text x="27.054" y="14.696" class="h">114</text><text x="31.062" y="14.696" class="h">[=====================================================>--------]</text><text x="97.194" y="14.696" class="h">88</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="3672"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">32</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[======>-------------------------------------------------------]</text><text x="97.194" y="8.183" class="h">12</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="22.044" y="10.354" class="h">66</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[==============>-----------------------------------------------]</text><text x="97.194" y="10.354" class="h">24</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="22.044" y="12.525" class="h">78</text><text x="25.05" y="12.525" class="h">/</text><text x="27.054" y="12.525" class="h">114</text><text x="31.062" y="12.525" class="h">[=========================================>--------------------]</text><text x="97.194" y="12.525" class="h">68</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">108</text><text x="25.05" y="14.696" class="h">/</text><text x="27.054" y="14.696" class="h">114</text><text x="31.062" y="14.696" class="h">[==========================================================>---]</text><text x="97.194" y="14.696" class="h">95</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="3774"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">34</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=======>------------------------------------------------------]</text><text x="97.194" y="8.183" class="h">13</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="22.044" y="10.354" class="h">70</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[===============>----------------------------------------------]</text><text x="97.194" y="10.354" class="h">26</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="22.044" y="12.525" class="h">84</text><text x="25.05" y="12.525" class="h">/</text><text x="27.054" y="12.525" class="h">114</text><text x="31.062" y="12.525" class="h">[=============================================>----------------]</text><text x="97.194" y="12.525" class="h">74</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">downloading</text><text x="21.042" y="14.696" class="h">114</text><text x="25.05" y="14.696" class="h">/</text><text x="27.054" y="14.696" class="h">114</text><text x="31.062" y="14.696" class="h">[==============================================================]</text><text x="96.192" y="14.696" class="h">100</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="3876"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">35</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[=======>------------------------------------------------------]</text><text x="96.192" y="8.183" class="h">13</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">74</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[================>---------------------------------------------]</text><text x="96.192" y="10.354" class="h">27</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">90</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[================================================>-------------]</text><text x="96.192" y="12.525" class="h">79</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="24.048" y="14.696" class="h">00:00</text><text x="30.06" y="14.696" class="h">[--------------------------------------------------------------]</text><text x="97.194" y="14.696" class="h">1</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="3978"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">37</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[========>-----------------------------------------------------]</text><text x="96.192" y="8.183" class="h">14</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">76</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[================>---------------------------------------------]</text><text x="96.192" y="10.354" class="h">28</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">96</text><text x="24.048" y="12.525" class="h">/</text><text x="26.052" y="12.525" class="h">114</text><text x="30.06" y="12.525" class="h">[===================================================>----------]</text><text x="96.192" y="12.525" class="h">84</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="24.048" y="14.696" class="h">00:00</text><text x="30.06" y="14.696" class="h">[=>------------------------------------------------------------]</text><text x="97.194" y="14.696" class="h">2</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="4080"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">40</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[========>-----------------------------------------------------]</text><text x="97.194" y="8.183" class="h">15</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="22.044" y="10.354" class="h">78</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=================>--------------------------------------------]</text><text x="97.194" y="10.354" class="h">28</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">102</text><text x="25.05" y="12.525" class="h">/</text><text x="27.054" y="12.525" class="h">114</text><text x="31.062" y="12.525" class="h">[======================================================>-------]</text><text x="97.194" y="12.525" class="h">89</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:00</text><text x="31.062" y="14.696" class="h">[=>------------------------------------------------------------]</text><text x="98.196" y="14.696" class="h">4</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="4182"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">42</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=========>----------------------------------------------------]</text><text x="97.194" y="8.183" class="h">16</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="22.044" y="10.354" class="h">82</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[==================>-------------------------------------------]</text><text x="97.194" y="10.354" class="h">30</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">108</text><text x="25.05" y="12.525" class="h">/</text><text x="27.054" y="12.525" class="h">114</text><text x="31.062" y="12.525" class="h">[==========================================================>---]</text><text x="97.194" y="12.525" class="h">95</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:00</text><text x="31.062" y="14.696" class="h">[==>-----------------------------------------------------------]</text><text x="98.196" y="14.696" class="h">4</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="4284"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">44</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=========>----------------------------------------------------]</text><text x="97.194" y="8.183" class="h">16</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="22.044" y="10.354" class="h">86</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[==================>-------------------------------------------]</text><text x="97.194" y="10.354" class="h">31</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">downloading</text><text x="21.042" y="12.525" class="h">114</text><text x="25.05" y="12.525" class="h">/</text><text x="27.054" y="12.525" class="h">114</text><text x="31.062" y="12.525" class="h">[==============================================================]</text><text x="96.192" y="12.525" class="h">100</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:00</text><text x="31.062" y="14.696" class="h">[==>-----------------------------------------------------------]</text><text x="98.196" y="14.696" class="h">6</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="4386"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">47</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[==========>---------------------------------------------------]</text><text x="96.192" y="8.183" class="h">18</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">88</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[===================>------------------------------------------]</text><text x="96.192" y="10.354" class="h">32</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="24.048" y="12.525" class="h">00:00</text><text x="30.06" y="12.525" class="h">[=>------------------------------------------------------------]</text><text x="97.194" y="12.525" class="h">3</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="24.048" y="14.696" class="h">00:09</text><text x="30.06" y="14.696" class="h">[====>---------------------------------------------------------]</text><text x="97.194" y="14.696" class="h">7</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="4488"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">50</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[===========>--------------------------------------------------]</text><text x="96.192" y="8.183" class="h">19</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">92</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[====================>-----------------------------------------]</text><text x="96.192" y="10.354" class="h">34</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="24.048" y="12.525" class="h">00:00</text><text x="30.06" y="12.525" class="h">[===>----------------------------------------------------------]</text><text x="97.194" y="12.525" class="h">6</text><text x="99.198" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="24.048" y="14.696" class="h">00:09</text><text x="30.06" y="14.696" class="h">[====>---------------------------------------------------------]</text><text x="97.194" y="14.696" class="h">9</text><text x="99.198" y="14.696" class="h">%</text></svg><svg x="4590"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">52</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[===========>--------------------------------------------------]</text><text x="96.192" y="8.183" class="h">19</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">96</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[=====================>----------------------------------------]</text><text x="96.192" y="10.354" class="h">35</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="24.048" y="12.525" class="h">00:00</text><text x="30.06" y="12.525" class="h">[=====>--------------------------------------------------------]</text><text x="97.194" y="12.525" class="h">9</text><text x="99.198" y="12.525" class="h">%</text><use xlink:href="#7" y="13.026"/></svg><svg x="4692"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">54</text><text x="24.048" y="8.183" class="h">/</text><text x="26.052" y="8.183" class="h">268</text><text x="30.06" y="8.183" class="h">[===========>--------------------------------------------------]</text><text x="96.192" y="8.183" class="h">20</text><text x="99.198" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">98</text><text x="24.048" y="10.354" class="h">/</text><text x="26.052" y="10.354" class="h">274</text><text x="30.06" y="10.354" class="h">[=====================>----------------------------------------]</text><text x="96.192" y="10.354" class="h">36</text><text x="99.198" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="24.048" y="12.525" class="h">00:03</text><text x="30.06" y="12.525" class="h">[========>-----------------------------------------------------]</text><text x="96.192" y="12.525" class="h">14</text><text x="99.198" y="12.525" class="h">%</text><use xlink:href="#7" y="13.026"/></svg><svg x="4794"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">56</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[============>-------------------------------------------------]</text><text x="97.194" y="8.183" class="h">21</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">102</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[======================>---------------------------------------]</text><text x="97.194" y="10.354" class="h">37</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:03</text><text x="31.062" y="12.525" class="h">[=========>----------------------------------------------------]</text><text x="97.194" y="12.525" class="h">17</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:08</text><text x="31.062" y="14.696" class="h">[=======>------------------------------------------------------]</text><text x="97.194" y="14.696" class="h">12</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="4896"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">57</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[============>-------------------------------------------------]</text><text x="97.194" y="8.183" class="h">21</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">106</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=======================>--------------------------------------]</text><text x="97.194" y="10.354" class="h">39</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:03</text><text x="31.062" y="12.525" class="h">[===========>--------------------------------------------------]</text><text x="97.194" y="12.525" class="h">19</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:08</text><text x="31.062" y="14.696" class="h">[=======>------------------------------------------------------]</text><text x="97.194" y="14.696" class="h">14</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="4998"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">59</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=============>------------------------------------------------]</text><text x="97.194" y="8.183" class="h">22</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">114</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=========================>------------------------------------]</text><text x="97.194" y="10.354" class="h">42</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:03</text><text x="31.062" y="12.525" class="h">[=============>------------------------------------------------]</text><text x="97.194" y="12.525" class="h">23</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:08</text><text x="31.062" y="14.696" class="h">[========>-----------------------------------------------------]</text><text x="97.194" y="14.696" class="h">14</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="5100"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">61</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=============>------------------------------------------------]</text><text x="97.194" y="8.183" class="h">23</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">120</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[==========================>-----------------------------------]</text><text x="97.194" y="10.354" class="h">44</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:03</text><text x="31.062" y="12.525" class="h">[===============>----------------------------------------------]</text><text x="97.194" y="12.525" class="h">25</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:08</text><text x="31.062" y="14.696" class="h">[=========>----------------------------------------------------]</text><text x="97.194" y="14.696" class="h">16</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="5202"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">63</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==============>-----------------------------------------------]</text><text x="97.194" y="8.183" class="h">24</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">126</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[============================>---------------------------------]</text><text x="97.194" y="10.354" class="h">46</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:02</text><text x="31.062" y="12.525" class="h">[=================>--------------------------------------------]</text><text x="97.194" y="12.525" class="h">29</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:08</text><text x="31.062" y="14.696" class="h">[=========>----------------------------------------------------]</text><text x="97.194" y="14.696" class="h">17</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="5304"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">67</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===============>----------------------------------------------]</text><text x="97.194" y="8.183" class="h">25</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">130</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[============================>---------------------------------]</text><text x="97.194" y="10.354" class="h">47</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:02</text><text x="31.062" y="12.525" class="h">[==================>-------------------------------------------]</text><text x="97.194" y="12.525" class="h">31</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:08</text><text x="31.062" y="14.696" class="h">[==========>---------------------------------------------------]</text><text x="97.194" y="14.696" class="h">17</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="5406"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">68</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===============>----------------------------------------------]</text><text x="97.194" y="8.183" class="h">25</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">132</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=============================>--------------------------------]</text><text x="97.194" y="10.354" class="h">48</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:02</text><text x="31.062" y="12.525" class="h">[=====================>----------------------------------------]</text><text x="97.194" y="12.525" class="h">36</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:08</text><text x="31.062" y="14.696" class="h">[===========>--------------------------------------------------]</text><text x="97.194" y="14.696" class="h">19</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="5508"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">69</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===============>----------------------------------------------]</text><text x="97.194" y="8.183" class="h">26</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">136</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[==============================>-------------------------------]</text><text x="97.194" y="10.354" class="h">50</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:02</text><text x="31.062" y="12.525" class="h">[======================>---------------------------------------]</text><text x="97.194" y="12.525" class="h">37</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:08</text><text x="31.062" y="14.696" class="h">[============>-------------------------------------------------]</text><text x="97.194" y="14.696" class="h">20</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="5610"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">71</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===============>----------------------------------------------]</text><text x="97.194" y="8.183" class="h">26</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">140</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[===============================>------------------------------]</text><text x="97.194" y="10.354" class="h">51</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:02</text><text x="31.062" y="12.525" class="h">[========================>-------------------------------------]</text><text x="97.194" y="12.525" class="h">41</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:07</text><text x="31.062" y="14.696" class="h">[============>-------------------------------------------------]</text><text x="97.194" y="14.696" class="h">22</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="5712"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">73</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[================>---------------------------------------------]</text><text x="97.194" y="8.183" class="h">27</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">144</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[================================>-----------------------------]</text><text x="97.194" y="10.354" class="h">53</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:02</text><text x="31.062" y="12.525" class="h">[=========================>------------------------------------]</text><text x="97.194" y="12.525" class="h">42</text><text x="100.2" y="12.525" class="h">%</text><use xlink:href="#8" y="13.026"/></svg><svg x="5814"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">75</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[================>---------------------------------------------]</text><text x="97.194" y="8.183" class="h">28</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">150</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=================================>----------------------------]</text><text x="97.194" y="10.354" class="h">55</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:02</text><text x="31.062" y="12.525" class="h">[===========================>----------------------------------]</text><text x="97.194" y="12.525" class="h">45</text><text x="100.2" y="12.525" class="h">%</text><use xlink:href="#8" y="13.026"/></svg><svg x="5916"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">78</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=================>--------------------------------------------]</text><text x="97.194" y="8.183" class="h">29</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">154</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[==================================>---------------------------]</text><text x="97.194" y="10.354" class="h">56</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:02</text><text x="31.062" y="12.525" class="h">[============================>---------------------------------]</text><text x="97.194" y="12.525" class="h">47</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:07</text><text x="31.062" y="14.696" class="h">[===============>----------------------------------------------]</text><text x="97.194" y="14.696" class="h">26</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="6018"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">80</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==================>-------------------------------------------]</text><text x="97.194" y="8.183" class="h">30</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">158</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[===================================>--------------------------]</text><text x="97.194" y="10.354" class="h">58</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:02</text><text x="31.062" y="12.525" class="h">[==============================>-------------------------------]</text><text x="97.194" y="12.525" class="h">50</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:07</text><text x="31.062" y="14.696" class="h">[================>---------------------------------------------]</text><text x="97.194" y="14.696" class="h">27</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="6120"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">82</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==================>-------------------------------------------]</text><text x="97.194" y="8.183" class="h">31</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">162</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[====================================>-------------------------]</text><text x="97.194" y="10.354" class="h">59</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:02</text><text x="31.062" y="12.525" class="h">[===============================>------------------------------]</text><text x="97.194" y="12.525" class="h">51</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:06</text><text x="31.062" y="14.696" class="h">[=================>--------------------------------------------]</text><text x="97.194" y="14.696" class="h">29</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="6222"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">87</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===================>------------------------------------------]</text><text x="97.194" y="8.183" class="h">32</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">164</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[====================================>-------------------------]</text><text x="97.194" y="10.354" class="h">60</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:01</text><text x="31.062" y="12.525" class="h">[==================================>---------------------------]</text><text x="97.194" y="12.525" class="h">56</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:06</text><text x="31.062" y="14.696" class="h">[==================>-------------------------------------------]</text><text x="97.194" y="14.696" class="h">31</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="6324"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">90</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[====================>-----------------------------------------]</text><text x="97.194" y="8.183" class="h">34</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">166</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=====================================>------------------------]</text><text x="97.194" y="10.354" class="h">61</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:01</text><text x="31.062" y="12.525" class="h">[====================================>-------------------------]</text><text x="97.194" y="12.525" class="h">60</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:06</text><text x="31.062" y="14.696" class="h">[===================>------------------------------------------]</text><text x="97.194" y="14.696" class="h">32</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="6426"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">92</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[====================>-----------------------------------------]</text><text x="97.194" y="8.183" class="h">34</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">172</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[======================================>-----------------------]</text><text x="97.194" y="10.354" class="h">63</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:01</text><text x="31.062" y="12.525" class="h">[======================================>-----------------------]</text><text x="97.194" y="12.525" class="h">62</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:05</text><text x="31.062" y="14.696" class="h">[====================>-----------------------------------------]</text><text x="97.194" y="14.696" class="h">34</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="6528"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">93</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=====================>----------------------------------------]</text><text x="97.194" y="8.183" class="h">35</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">176</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=======================================>----------------------]</text><text x="97.194" y="10.354" class="h">64</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:01</text><text x="31.062" y="12.525" class="h">[=======================================>----------------------]</text><text x="97.194" y="12.525" class="h">65</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:05</text><text x="31.062" y="14.696" class="h">[=====================>----------------------------------------]</text><text x="97.194" y="14.696" class="h">35</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="6630"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">96</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=====================>----------------------------------------]</text><text x="97.194" y="8.183" class="h">36</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">178</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=======================================>----------------------]</text><text x="97.194" y="10.354" class="h">65</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:01</text><text x="31.062" y="12.525" class="h">[==========================================>-------------------]</text><text x="97.194" y="12.525" class="h">69</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:05</text><text x="31.062" y="14.696" class="h">[=====================>----------------------------------------]</text><text x="97.194" y="14.696" class="h">36</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="6732"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="22.044" y="8.183" class="h">99</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[======================>---------------------------------------]</text><text x="97.194" y="8.183" class="h">37</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">182</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[========================================>---------------------]</text><text x="97.194" y="10.354" class="h">66</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:01</text><text x="31.062" y="12.525" class="h">[===========================================>------------------]</text><text x="97.194" y="12.525" class="h">71</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:05</text><text x="31.062" y="14.696" class="h">[======================>---------------------------------------]</text><text x="97.194" y="14.696" class="h">37</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="6834"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">102</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=======================>--------------------------------------]</text><text x="97.194" y="8.183" class="h">38</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">186</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=========================================>--------------------]</text><text x="97.194" y="10.354" class="h">68</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:00</text><text x="31.062" y="12.525" class="h">[==============================================>---------------]</text><text x="97.194" y="12.525" class="h">75</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:06</text><text x="31.062" y="14.696" class="h">[======================>---------------------------------------]</text><text x="97.194" y="14.696" class="h">37</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="6936"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">105</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=======================>--------------------------------------]</text><text x="97.194" y="8.183" class="h">39</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">188</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[==========================================>-------------------]</text><text x="97.194" y="10.354" class="h">69</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:00</text><text x="31.062" y="12.525" class="h">[===============================================>--------------]</text><text x="97.194" y="12.525" class="h">78</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:06</text><text x="31.062" y="14.696" class="h">[=======================>--------------------------------------]</text><text x="97.194" y="14.696" class="h">39</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="7038"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">107</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[========================>-------------------------------------]</text><text x="97.194" y="8.183" class="h">40</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">192</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[==========================================>-------------------]</text><text x="97.194" y="10.354" class="h">70</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:00</text><text x="31.062" y="12.525" class="h">[=================================================>------------]</text><text x="97.194" y="12.525" class="h">80</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:05</text><text x="31.062" y="14.696" class="h">[========================>-------------------------------------]</text><text x="97.194" y="14.696" class="h">40</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="7140"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">109</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[========================>-------------------------------------]</text><text x="97.194" y="8.183" class="h">41</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">194</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[===========================================>------------------]</text><text x="97.194" y="10.354" class="h">71</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:00</text><text x="31.062" y="12.525" class="h">[==================================================>-----------]</text><text x="97.194" y="12.525" class="h">82</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:05</text><text x="31.062" y="14.696" class="h">[========================>-------------------------------------]</text><text x="97.194" y="14.696" class="h">41</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="7242"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">112</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=========================>------------------------------------]</text><text x="97.194" y="8.183" class="h">42</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">198</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[============================================>-----------------]</text><text x="97.194" y="10.354" class="h">72</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:00</text><text x="31.062" y="12.525" class="h">[===================================================>----------]</text><text x="97.194" y="12.525" class="h">84</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:05</text><text x="31.062" y="14.696" class="h">[=========================>------------------------------------]</text><text x="97.194" y="14.696" class="h">42</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="7344"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">114</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=========================>------------------------------------]</text><text x="97.194" y="8.183" class="h">43</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">202</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=============================================>----------------]</text><text x="97.194" y="10.354" class="h">74</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:00</text><text x="31.062" y="12.525" class="h">[=====================================================>--------]</text><text x="97.194" y="12.525" class="h">88</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:05</text><text x="31.062" y="14.696" class="h">[==========================>-----------------------------------]</text><text x="97.194" y="14.696" class="h">44</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="7446"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">116</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==========================>-----------------------------------]</text><text x="97.194" y="8.183" class="h">43</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">206</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[==============================================>---------------]</text><text x="97.194" y="10.354" class="h">75</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:00</text><text x="31.062" y="12.525" class="h">[========================================================>-----]</text><text x="97.194" y="12.525" class="h">92</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:04</text><text x="31.062" y="14.696" class="h">[===========================>----------------------------------]</text><text x="97.194" y="14.696" class="h">46</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="7548"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">119</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===========================>----------------------------------]</text><text x="97.194" y="8.183" class="h">44</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">210</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[===============================================>--------------]</text><text x="97.194" y="10.354" class="h">77</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:00</text><text x="31.062" y="12.525" class="h">[=========================================================>----]</text><text x="97.194" y="12.525" class="h">94</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:04</text><text x="31.062" y="14.696" class="h">[=============================>--------------------------------]</text><text x="97.194" y="14.696" class="h">48</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="7650"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">122</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===========================>----------------------------------]</text><text x="97.194" y="8.183" class="h">46</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">212</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[===============================================>--------------]</text><text x="97.194" y="10.354" class="h">77</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:00</text><text x="31.062" y="12.525" class="h">[===========================================================>--]</text><text x="97.194" y="12.525" class="h">97</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:04</text><text x="31.062" y="14.696" class="h">[=============================>--------------------------------]</text><text x="97.194" y="14.696" class="h">49</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="7752"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">124</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[============================>---------------------------------]</text><text x="97.194" y="8.183" class="h">46</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">214</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[===============================================>--------------]</text><text x="97.194" y="10.354" class="h">78</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:00</text><text x="31.062" y="12.525" class="h">[==============================================================]</text><text x="97.194" y="12.525" class="h">99</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:04</text><text x="31.062" y="14.696" class="h">[==============================>-------------------------------]</text><text x="97.194" y="14.696" class="h">50</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="7854"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">126</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[============================>---------------------------------]</text><text x="97.194" y="8.183" class="h">47</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">218</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[================================================>-------------]</text><text x="97.194" y="10.354" class="h">80</text><text x="100.2" y="10.354" class="h">%</text><text y="12.525" class="h">Task#02:</text><text x="9.018" y="12.525" class="h">installing</text><text x="25.05" y="12.525" class="h">00:00</text><text x="31.062" y="12.525" class="h">[==============================================================]</text><text x="96.192" y="12.525" class="h">100</text><text x="100.2" y="12.525" class="h">%</text><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:04</text><text x="31.062" y="14.696" class="h">[===============================>------------------------------]</text><text x="97.194" y="14.696" class="h">52</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="7956"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">127</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[============================>---------------------------------]</text><text x="97.194" y="8.183" class="h">47</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">220</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=================================================>------------]</text><text x="97.194" y="10.354" class="h">80</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:04</text><text x="31.062" y="14.696" class="h">[================================>-----------------------------]</text><text x="97.194" y="14.696" class="h">53</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="8058"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">130</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=============================>--------------------------------]</text><text x="97.194" y="8.183" class="h">49</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">224</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[==================================================>-----------]</text><text x="97.194" y="10.354" class="h">82</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:03</text><text x="31.062" y="14.696" class="h">[=================================>----------------------------]</text><text x="97.194" y="14.696" class="h">55</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="8160"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">132</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==============================>-------------------------------]</text><text x="97.194" y="8.183" class="h">49</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">230</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[===================================================>----------]</text><text x="97.194" y="10.354" class="h">84</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:03</text><text x="31.062" y="14.696" class="h">[==================================>---------------------------]</text><text x="97.194" y="14.696" class="h">57</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="8262"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">134</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==============================>-------------------------------]</text><text x="97.194" y="8.183" class="h">50</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">234</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[====================================================>---------]</text><text x="97.194" y="10.354" class="h">85</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:03</text><text x="31.062" y="14.696" class="h">[====================================>-------------------------]</text><text x="97.194" y="14.696" class="h">59</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="8364"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">136</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==============================>-------------------------------]</text><text x="97.194" y="8.183" class="h">51</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">238</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=====================================================>--------]</text><text x="97.194" y="10.354" class="h">87</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:03</text><text x="31.062" y="14.696" class="h">[====================================>-------------------------]</text><text x="97.194" y="14.696" class="h">60</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="8466"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">139</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===============================>------------------------------]</text><text x="97.194" y="8.183" class="h">52</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">242</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[======================================================>-------]</text><text x="97.194" y="10.354" class="h">88</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:03</text><text x="31.062" y="14.696" class="h">[=====================================>------------------------]</text><text x="97.194" y="14.696" class="h">61</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="8568"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">141</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[================================>-----------------------------]</text><text x="97.194" y="8.183" class="h">53</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">246</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=======================================================>------]</text><text x="97.194" y="10.354" class="h">90</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:03</text><text x="31.062" y="14.696" class="h">[======================================>-----------------------]</text><text x="97.194" y="14.696" class="h">63</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="8670"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">143</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[================================>-----------------------------]</text><text x="97.194" y="8.183" class="h">53</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">254</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[========================================================>-----]</text><text x="97.194" y="10.354" class="h">93</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:02</text><text x="31.062" y="14.696" class="h">[=======================================>----------------------]</text><text x="97.194" y="14.696" class="h">65</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="8772"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">147</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=================================>----------------------------]</text><text x="97.194" y="8.183" class="h">55</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">258</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[=========================================================>----]</text><text x="97.194" y="10.354" class="h">94</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:02</text><text x="31.062" y="14.696" class="h">[========================================>---------------------]</text><text x="97.194" y="14.696" class="h">66</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="8874"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">149</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=================================>----------------------------]</text><text x="97.194" y="8.183" class="h">56</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">262</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[==========================================================>---]</text><text x="97.194" y="10.354" class="h">96</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:02</text><text x="31.062" y="14.696" class="h">[=========================================>--------------------]</text><text x="97.194" y="14.696" class="h">68</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="8976"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">150</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==================================>---------------------------]</text><text x="97.194" y="8.183" class="h">56</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">268</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[============================================================>-]</text><text x="97.194" y="10.354" class="h">98</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:02</text><text x="31.062" y="14.696" class="h">[==========================================>-------------------]</text><text x="97.194" y="14.696" class="h">69</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="9078"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">152</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==================================>---------------------------]</text><text x="97.194" y="8.183" class="h">57</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">272</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[==============================================================]</text><text x="97.194" y="10.354" class="h">99</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:02</text><text x="31.062" y="14.696" class="h">[===========================================>------------------]</text><text x="97.194" y="14.696" class="h">70</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="9180"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">156</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===================================>--------------------------]</text><text x="97.194" y="8.183" class="h">58</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">downloading</text><text x="21.042" y="10.354" class="h">274</text><text x="25.05" y="10.354" class="h">/</text><text x="27.054" y="10.354" class="h">274</text><text x="31.062" y="10.354" class="h">[==============================================================]</text><text x="96.192" y="10.354" class="h">100</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:02</text><text x="31.062" y="14.696" class="h">[===========================================>------------------]</text><text x="97.194" y="14.696" class="h">71</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="9282"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">160</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[====================================>-------------------------]</text><text x="97.194" y="8.183" class="h">60</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[==>-----------------------------------------------------------]</text><text x="98.196" y="10.354" class="h">5</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:02</text><text x="31.062" y="14.696" class="h">[============================================>-----------------]</text><text x="97.194" y="14.696" class="h">73</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="9384"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">162</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[====================================>-------------------------]</text><text x="97.194" y="8.183" class="h">60</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[====>---------------------------------------------------------]</text><text x="98.196" y="10.354" class="h">8</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:02</text><text x="31.062" y="14.696" class="h">[=============================================>----------------]</text><text x="97.194" y="14.696" class="h">74</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="9486"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">163</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=====================================>------------------------]</text><text x="97.194" y="8.183" class="h">61</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[=======>------------------------------------------------------]</text><text x="97.194" y="10.354" class="h">14</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:02</text><text x="31.062" y="14.696" class="h">[=============================================>----------------]</text><text x="97.194" y="14.696" class="h">75</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="9588"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">168</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[======================================>-----------------------]</text><text x="97.194" y="8.183" class="h">63</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[==========>---------------------------------------------------]</text><text x="97.194" y="10.354" class="h">17</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:02</text><text x="31.062" y="14.696" class="h">[==============================================>---------------]</text><text x="97.194" y="14.696" class="h">76</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="9690"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">170</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[======================================>-----------------------]</text><text x="97.194" y="8.183" class="h">63</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:02</text><text x="31.062" y="10.354" class="h">[============>-------------------------------------------------]</text><text x="97.194" y="10.354" class="h">20</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:02</text><text x="31.062" y="14.696" class="h">[===============================================>--------------]</text><text x="97.194" y="14.696" class="h">77</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="9792"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">173</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=======================================>----------------------]</text><text x="97.194" y="8.183" class="h">65</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:02</text><text x="31.062" y="10.354" class="h">[===============>----------------------------------------------]</text><text x="97.194" y="10.354" class="h">25</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:01</text><text x="31.062" y="14.696" class="h">[================================================>-------------]</text><text x="97.194" y="14.696" class="h">78</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="9894"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">176</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[========================================>---------------------]</text><text x="97.194" y="8.183" class="h">66</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:02</text><text x="31.062" y="10.354" class="h">[==================>-------------------------------------------]</text><text x="97.194" y="10.354" class="h">31</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:01</text><text x="31.062" y="14.696" class="h">[================================================>-------------]</text><text x="97.194" y="14.696" class="h">79</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="9996"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">178</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[========================================>---------------------]</text><text x="97.194" y="8.183" class="h">66</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:01</text><text x="31.062" y="10.354" class="h">[=====================>----------------------------------------]</text><text x="97.194" y="10.354" class="h">36</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:01</text><text x="31.062" y="14.696" class="h">[=================================================>------------]</text><text x="97.194" y="14.696" class="h">81</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="10098"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">180</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=========================================>--------------------]</text><text x="97.194" y="8.183" class="h">67</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:01</text><text x="31.062" y="10.354" class="h">[======================>---------------------------------------]</text><text x="97.194" y="10.354" class="h">37</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:01</text><text x="31.062" y="14.696" class="h">[==================================================>-----------]</text><text x="97.194" y="14.696" class="h">83</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="10200"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">182</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=========================================>--------------------]</text><text x="97.194" y="8.183" class="h">68</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:01</text><text x="31.062" y="10.354" class="h">[========================>-------------------------------------]</text><text x="97.194" y="10.354" class="h">41</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:01</text><text x="31.062" y="14.696" class="h">[===================================================>----------]</text><text x="97.194" y="14.696" class="h">83</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="10302"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">185</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==========================================>-------------------]</text><text x="97.194" y="8.183" class="h">69</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:01</text><text x="31.062" y="10.354" class="h">[=========================>------------------------------------]</text><text x="97.194" y="10.354" class="h">42</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:01</text><text x="31.062" y="14.696" class="h">[===================================================>----------]</text><text x="97.194" y="14.696" class="h">84</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="10404"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">188</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==========================================>-------------------]</text><text x="97.194" y="8.183" class="h">70</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:01</text><text x="31.062" y="10.354" class="h">[===========================>----------------------------------]</text><text x="97.194" y="10.354" class="h">46</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:01</text><text x="31.062" y="14.696" class="h">[====================================================>---------]</text><text x="97.194" y="14.696" class="h">85</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="10506"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">190</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===========================================>------------------]</text><text x="97.194" y="8.183" class="h">71</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:01</text><text x="31.062" y="10.354" class="h">[=============================>--------------------------------]</text><text x="97.194" y="10.354" class="h">49</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:01</text><text x="31.062" y="14.696" class="h">[=====================================================>--------]</text><text x="97.194" y="14.696" class="h">87</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="10608"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">192</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===========================================>------------------]</text><text x="97.194" y="8.183" class="h">72</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:01</text><text x="31.062" y="10.354" class="h">[================================>-----------------------------]</text><text x="97.194" y="10.354" class="h">53</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:01</text><text x="31.062" y="14.696" class="h">[======================================================>-------]</text><text x="97.194" y="14.696" class="h">88</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="10710"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">194</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[============================================>-----------------]</text><text x="97.194" y="8.183" class="h">72</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:01</text><text x="31.062" y="10.354" class="h">[=================================>----------------------------]</text><text x="97.194" y="10.354" class="h">54</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:00</text><text x="31.062" y="14.696" class="h">[======================================================>-------]</text><text x="97.194" y="14.696" class="h">89</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="10812"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">197</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=============================================>----------------]</text><text x="97.194" y="8.183" class="h">74</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:01</text><text x="31.062" y="10.354" class="h">[===================================>--------------------------]</text><text x="97.194" y="10.354" class="h">58</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:00</text><text x="31.062" y="14.696" class="h">[=======================================================>------]</text><text x="97.194" y="14.696" class="h">91</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="10914"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">198</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=============================================>----------------]</text><text x="97.194" y="8.183" class="h">74</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:01</text><text x="31.062" y="10.354" class="h">[=====================================>------------------------]</text><text x="97.194" y="10.354" class="h">61</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:00</text><text x="31.062" y="14.696" class="h">[========================================================>-----]</text><text x="97.194" y="14.696" class="h">93</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="11016"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">202</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==============================================>---------------]</text><text x="97.194" y="8.183" class="h">75</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:01</text><text x="31.062" y="10.354" class="h">[======================================>-----------------------]</text><text x="97.194" y="10.354" class="h">63</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:00</text><text x="31.062" y="14.696" class="h">[=========================================================>----]</text><text x="97.194" y="14.696" class="h">93</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="11118"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">204</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==============================================>---------------]</text><text x="97.194" y="8.183" class="h">76</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:01</text><text x="31.062" y="10.354" class="h">[========================================>---------------------]</text><text x="97.194" y="10.354" class="h">66</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:00</text><text x="31.062" y="14.696" class="h">[==========================================================>---]</text><text x="97.194" y="14.696" class="h">94</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="11220"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">206</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===============================================>--------------]</text><text x="97.194" y="8.183" class="h">77</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:01</text><text x="31.062" y="10.354" class="h">[==========================================>-------------------]</text><text x="97.194" y="10.354" class="h">69</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:00</text><text x="31.062" y="14.696" class="h">[===========================================================>--]</text><text x="97.194" y="14.696" class="h">97</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="11322"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">209</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===============================================>--------------]</text><text x="97.194" y="8.183" class="h">78</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[============================================>-----------------]</text><text x="97.194" y="10.354" class="h">73</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:00</text><text x="31.062" y="14.696" class="h">[===========================================================>--]</text><text x="97.194" y="14.696" class="h">98</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="11424"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">212</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[================================================>-------------]</text><text x="97.194" y="8.183" class="h">79</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[==============================================>---------------]</text><text x="97.194" y="10.354" class="h">76</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:00</text><text x="31.062" y="14.696" class="h">[============================================================>-]</text><text x="97.194" y="14.696" class="h">99</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="11526"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">213</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[================================================>-------------]</text><text x="97.194" y="8.183" class="h">79</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[================================================>-------------]</text><text x="97.194" y="10.354" class="h">80</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><text y="14.696" class="h">Task#03:</text><text x="9.018" y="14.696" class="h">installing</text><text x="25.05" y="14.696" class="h">00:00</text><text x="31.062" y="14.696" class="h">[==============================================================]</text><text x="96.192" y="14.696" class="h">100</text><text x="100.2" y="14.696" class="h">%</text></svg><svg x="11628"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">215</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=================================================>------------]</text><text x="97.194" y="8.183" class="h">80</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[=================================================>------------]</text><text x="97.194" y="10.354" class="h">81</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="11730"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">217</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=================================================>------------]</text><text x="97.194" y="8.183" class="h">81</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[=====================================================>--------]</text><text x="97.194" y="10.354" class="h">86</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="11832"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">219</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==================================================>-----------]</text><text x="97.194" y="8.183" class="h">82</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[======================================================>-------]</text><text x="97.194" y="10.354" class="h">88</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="11934"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">220</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==================================================>-----------]</text><text x="97.194" y="8.183" class="h">82</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[========================================================>-----]</text><text x="97.194" y="10.354" class="h">92</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="12036"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">221</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==================================================>-----------]</text><text x="97.194" y="8.183" class="h">82</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[=========================================================>----]</text><text x="97.194" y="10.354" class="h">93</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="12138"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">225</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===================================================>----------]</text><text x="97.194" y="8.183" class="h">84</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[===========================================================>--]</text><text x="97.194" y="10.354" class="h">97</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="12240"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">227</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[====================================================>---------]</text><text x="97.194" y="8.183" class="h">85</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[============================================================>-]</text><text x="97.194" y="10.354" class="h">98</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="12342"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">229</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[====================================================>---------]</text><text x="97.194" y="8.183" class="h">85</text><text x="100.2" y="8.183" class="h">%</text><text y="10.354" class="h">Task#01:</text><text x="9.018" y="10.354" class="h">installing</text><text x="25.05" y="10.354" class="h">00:00</text><text x="31.062" y="10.354" class="h">[==============================================================]</text><text x="96.192" y="10.354" class="h">100</text><text x="100.2" y="10.354" class="h">%</text><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="12444"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">230</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[====================================================>---------]</text><text x="97.194" y="8.183" class="h">86</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="12546"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">232</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=====================================================>--------]</text><text x="97.194" y="8.183" class="h">87</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="12648"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">233</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=====================================================>--------]</text><text x="97.194" y="8.183" class="h">87</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="12750"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">235</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=====================================================>--------]</text><text x="97.194" y="8.183" class="h">88</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="12852"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">236</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[======================================================>-------]</text><text x="97.194" y="8.183" class="h">88</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="12954"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">237</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[======================================================>-------]</text><text x="97.194" y="8.183" class="h">88</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="13056"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">240</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=======================================================>------]</text><text x="97.194" y="8.183" class="h">90</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="13158"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">241</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=======================================================>------]</text><text x="97.194" y="8.183" class="h">90</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="13260"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">244</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=======================================================>------]</text><text x="97.194" y="8.183" class="h">91</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="13362"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">246</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[========================================================>-----]</text><text x="97.194" y="8.183" class="h">92</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="13464"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">249</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=========================================================>----]</text><text x="97.194" y="8.183" class="h">93</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="13566"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">251</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[=========================================================>----]</text><text x="97.194" y="8.183" class="h">94</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="13668"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">253</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==========================================================>---]</text><text x="97.194" y="8.183" class="h">94</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="13770"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">256</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==========================================================>---]</text><text x="97.194" y="8.183" class="h">96</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="13872"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">257</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==========================================================>---]</text><text x="97.194" y="8.183" class="h">96</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="13974"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">259</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===========================================================>--]</text><text x="97.194" y="8.183" class="h">97</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="14076"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">261</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[===========================================================>--]</text><text x="97.194" y="8.183" class="h">97</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="14178"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">262</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[============================================================>-]</text><text x="97.194" y="8.183" class="h">98</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="14280"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">263</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[============================================================>-]</text><text x="97.194" y="8.183" class="h">98</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="14382"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">266</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==============================================================]</text><text x="97.194" y="8.183" class="h">99</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="14484"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">downloading</text><text x="21.042" y="8.183" class="h">268</text><text x="25.05" y="8.183" class="h">/</text><text x="27.054" y="8.183" class="h">268</text><text x="31.062" y="8.183" class="h">[==============================================================]</text><text x="96.192" y="8.183" class="h">100</text><text x="100.2" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="14586"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[=>------------------------------------------------------------]</text><text x="93.186" y="8.183" class="h">3</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="14688"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[======>-------------------------------------------------------]</text><text x="92.184" y="8.183" class="h">12</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="14790"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[========>-----------------------------------------------------]</text><text x="92.184" y="8.183" class="h">14</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="14892"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[============>-------------------------------------------------]</text><text x="92.184" y="8.183" class="h">20</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="14994"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[=================>--------------------------------------------]</text><text x="92.184" y="8.183" class="h">29</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="15096"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:01</text><text x="26.052" y="8.183" class="h">[===================>------------------------------------------]</text><text x="92.184" y="8.183" class="h">32</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="15198"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:01</text><text x="26.052" y="8.183" class="h">[==========================>-----------------------------------]</text><text x="92.184" y="8.183" class="h">43</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="15300"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:01</text><text x="26.052" y="8.183" class="h">[==============================>-------------------------------]</text><text x="92.184" y="8.183" class="h">49</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="15402"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[=================================>----------------------------]</text><text x="92.184" y="8.183" class="h">55</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="15504"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[=====================================>------------------------]</text><text x="92.184" y="8.183" class="h">61</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="15606"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[========================================>---------------------]</text><text x="92.184" y="8.183" class="h">67</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="15708"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[============================================>-----------------]</text><text x="92.184" y="8.183" class="h">72</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="15810"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[=================================================>------------]</text><text x="92.184" y="8.183" class="h">81</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="15912"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[=====================================================>--------]</text><text x="92.184" y="8.183" class="h">87</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="16014"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[=========================================================>----]</text><text x="92.184" y="8.183" class="h">93</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="16116"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[============================================================>-]</text><text x="92.184" y="8.183" class="h">99</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="16218"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><text y="8.183" class="h">Task#00:</text><text x="9.018" y="8.183" class="h">installing</text><text x="20.04" y="8.183" class="h">00:00</text><text x="26.052" y="8.183" class="h">[==============================================================]</text><text x="91.182" y="8.183" class="h">100</text><text x="95.19" y="8.183" class="h">%</text><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="16320"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#12" y="6.513"/><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="16422"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#12" y="6.513"/><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="16524"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="17.343"/><use xlink:href="#3" y="2.171"/><use xlink:href="#6" y="4.342"/><use xlink:href="#12" y="6.513"/><use xlink:href="#11" y="8.684"/><use xlink:href="#9" y="10.855"/><use xlink:href="#10" y="13.026"/></svg><svg x="16626"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="17.343"/><use xlink:href="#3"/><use xlink:href="#6" y="2.171"/><use xlink:href="#12" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#9" y="8.684"/><use xlink:href="#10" y="10.855"/><use xlink:href="#13" y="15.197"/><use xlink:href="#2" y="17.368"/></svg><svg x="16728"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="17.343"/><use xlink:href="#3"/><use xlink:href="#6" y="2.171"/><use xlink:href="#12" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#9" y="8.684"/><use xlink:href="#10" y="10.855"/><use xlink:href="#13" y="15.197"/><use xlink:href="#2" y="17.368"/></svg><svg x="16830"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="17.343"/><use xlink:href="#3"/><use xlink:href="#6" y="2.171"/><use xlink:href="#12" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#9" y="8.684"/><use xlink:href="#10" y="10.855"/><use xlink:href="#13" y="15.197"/><use xlink:href="#2" y="17.368"/></svg><svg x="16932"><use xlink:href="#a"/><use xlink:href="#b" x="1.996" y="17.343"/><use xlink:href="#3"/><use xlink:href="#6" y="2.171"/><use xlink:href="#12" y="4.342"/><use xlink:href="#11" y="6.513"/><use xlink:href="#9" y="8.684"/><use xlink:href="#10" y="10.855"/><use xlink:href="#13" y="15.197"/><use xlink:href="#2" y="17.368"/></svg><svg x="17034"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="17.343"/><use xlink:href="#6"/><use xlink:href="#12" y="2.171"/><use xlink:href="#11" y="4.342"/><use xlink:href="#9" y="6.513"/><use xlink:href="#10" y="8.684"/><use xlink:href="#13" y="13.026"/><use xlink:href="#2" y="15.197"/></svg></svg></g></g></svg></svg>
\ No newline at end of file diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar.go new file mode 100644 index 0000000..f18ef96 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar.go @@ -0,0 +1,492 @@ +package mpb + +import ( + "bytes" + "context" + "fmt" + "io" + "log" + "runtime/debug" + "strings" + "time" + + "github.com/acarl005/stripansi" + "github.com/mattn/go-runewidth" + "github.com/vbauerster/mpb/v6/decor" +) + +// Bar represents a progress bar. +type Bar struct { + priority int // used by heap + index int // used by heap + + extendedLines int + toShutdown bool + toDrop bool + noPop bool + hasEwmaDecorators bool + operateState chan func(*bState) + frameCh chan io.Reader + syncTableCh chan [][]chan int + completed chan bool + + // cancel is called either by user or on complete event + cancel func() + // done is closed after cacheState is assigned + done chan struct{} + // cacheState is populated, right after close(shutdown) + cacheState *bState + + container *Progress + dlogger *log.Logger + recoveredPanic interface{} +} + +type extenderFunc func(in io.Reader, reqWidth int, st decor.Statistics) (out io.Reader, lines int) + +// bState is actual bar state. It gets passed to *Bar.serve(...) monitor +// goroutine. +type bState struct { + id int + priority int + reqWidth int + total int64 + current int64 + refill int64 + lastN int64 + iterated bool + trimSpace bool + completed bool + completeFlushed bool + triggerComplete bool + dropOnComplete bool + noPop bool + aDecorators []decor.Decorator + pDecorators []decor.Decorator + averageDecorators []decor.AverageDecorator + ewmaDecorators []decor.EwmaDecorator + shutdownListeners []decor.ShutdownListener + bufP, bufB, bufA *bytes.Buffer + filler BarFiller + middleware func(BarFiller) BarFiller + extender extenderFunc + + // runningBar is a key for *pState.parkedBars + runningBar *Bar + + debugOut io.Writer +} + +func newBar(container *Progress, bs *bState) *Bar { + logPrefix := fmt.Sprintf("%sbar#%02d ", container.dlogger.Prefix(), bs.id) + ctx, cancel := context.WithCancel(container.ctx) + + bar := &Bar{ + container: container, + priority: bs.priority, + toDrop: bs.dropOnComplete, + noPop: bs.noPop, + operateState: make(chan func(*bState)), + frameCh: make(chan io.Reader, 1), + syncTableCh: make(chan [][]chan int, 1), + completed: make(chan bool, 1), + done: make(chan struct{}), + cancel: cancel, + dlogger: log.New(bs.debugOut, logPrefix, log.Lshortfile), + } + + go bar.serve(ctx, bs) + return bar +} + +// ProxyReader wraps r with metrics required for progress tracking. +// Panics if r is nil. +func (b *Bar) ProxyReader(r io.Reader) io.ReadCloser { + if r == nil { + panic("expected non nil io.Reader") + } + return newProxyReader(r, b) +} + +// ID returs id of the bar. +func (b *Bar) ID() int { + result := make(chan int) + select { + case b.operateState <- func(s *bState) { result <- s.id }: + return <-result + case <-b.done: + return b.cacheState.id + } +} + +// Current returns bar's current number, in other words sum of all increments. +func (b *Bar) Current() int64 { + result := make(chan int64) + select { + case b.operateState <- func(s *bState) { result <- s.current }: + return <-result + case <-b.done: + return b.cacheState.current + } +} + +// SetRefill sets refill flag with specified amount. +// The underlying BarFiller will change its visual representation, to +// indicate refill event. Refill event may be referred to some retry +// operation for example. +func (b *Bar) SetRefill(amount int64) { + select { + case b.operateState <- func(s *bState) { + s.refill = amount + }: + case <-b.done: + } +} + +// TraverseDecorators traverses all available decorators and calls cb func on each. +func (b *Bar) TraverseDecorators(cb func(decor.Decorator)) { + select { + case b.operateState <- func(s *bState) { + for _, decorators := range [...][]decor.Decorator{ + s.pDecorators, + s.aDecorators, + } { + for _, d := range decorators { + cb(extractBaseDecorator(d)) + } + } + }: + case <-b.done: + } +} + +// SetTotal sets total dynamically. +// If total is less than or equal to zero it takes progress' current value. +func (b *Bar) SetTotal(total int64, triggerComplete bool) { + select { + case b.operateState <- func(s *bState) { + s.triggerComplete = triggerComplete + if total <= 0 { + s.total = s.current + } else { + s.total = total + } + if s.triggerComplete && !s.completed { + s.current = s.total + s.completed = true + go b.refreshTillShutdown() + } + }: + case <-b.done: + } +} + +// SetCurrent sets progress' current to an arbitrary value. +// Setting a negative value will cause a panic. +func (b *Bar) SetCurrent(current int64) { + select { + case b.operateState <- func(s *bState) { + s.iterated = true + s.lastN = current - s.current + s.current = current + if s.triggerComplete && s.current >= s.total { + s.current = s.total + s.completed = true + go b.refreshTillShutdown() + } + }: + case <-b.done: + } +} + +// Increment is a shorthand for b.IncrInt64(1). +func (b *Bar) Increment() { + b.IncrInt64(1) +} + +// IncrBy is a shorthand for b.IncrInt64(int64(n)). +func (b *Bar) IncrBy(n int) { + b.IncrInt64(int64(n)) +} + +// IncrInt64 increments progress by amount of n. +func (b *Bar) IncrInt64(n int64) { + select { + case b.operateState <- func(s *bState) { + s.iterated = true + s.lastN = n + s.current += n + if s.triggerComplete && s.current >= s.total { + s.current = s.total + s.completed = true + go b.refreshTillShutdown() + } + }: + case <-b.done: + } +} + +// DecoratorEwmaUpdate updates all EWMA based decorators. Should be +// called on each iteration, because EWMA's unit of measure is an +// iteration's duration. Panics if called before *Bar.Incr... family +// methods. +func (b *Bar) DecoratorEwmaUpdate(dur time.Duration) { + select { + case b.operateState <- func(s *bState) { + ewmaIterationUpdate(false, s, dur) + }: + case <-b.done: + ewmaIterationUpdate(true, b.cacheState, dur) + } +} + +// DecoratorAverageAdjust adjusts all average based decorators. Call +// if you need to adjust start time of all average based decorators +// or after progress resume. +func (b *Bar) DecoratorAverageAdjust(start time.Time) { + select { + case b.operateState <- func(s *bState) { + for _, d := range s.averageDecorators { + d.AverageAdjust(start) + } + }: + case <-b.done: + } +} + +// SetPriority changes bar's order among multiple bars. Zero is highest +// priority, i.e. bar will be on top. If you don't need to set priority +// dynamically, better use BarPriority option. +func (b *Bar) SetPriority(priority int) { + select { + case <-b.done: + default: + b.container.setBarPriority(b, priority) + } +} + +// Abort interrupts bar's running goroutine. Call this, if you'd like +// to stop/remove bar before completion event. It has no effect after +// completion event. If drop is true bar will be removed as well. +func (b *Bar) Abort(drop bool) { + select { + case <-b.done: + default: + if drop { + b.container.dropBar(b) + } + b.cancel() + } +} + +// Completed reports whether the bar is in completed state. +func (b *Bar) Completed() bool { + select { + case b.operateState <- func(s *bState) { b.completed <- s.completed }: + return <-b.completed + case <-b.done: + return true + } +} + +func (b *Bar) serve(ctx context.Context, s *bState) { + defer b.container.bwg.Done() + for { + select { + case op := <-b.operateState: + op(s) + case <-ctx.Done(): + b.cacheState = s + close(b.done) + // Notifying decorators about shutdown event + for _, sl := range s.shutdownListeners { + sl.Shutdown() + } + return + } + } +} + +func (b *Bar) render(tw int) { + select { + case b.operateState <- func(s *bState) { + stat := newStatistics(tw, s) + defer func() { + // recovering if user defined decorator panics for example + if p := recover(); p != nil { + if b.recoveredPanic == nil { + s.extender = makePanicExtender(p) + b.toShutdown = !b.toShutdown + b.recoveredPanic = p + } + frame, lines := s.extender(nil, s.reqWidth, stat) + b.extendedLines = lines + b.frameCh <- frame + b.dlogger.Println(p) + } + s.completeFlushed = s.completed + }() + frame, lines := s.extender(s.draw(stat), s.reqWidth, stat) + b.extendedLines = lines + b.toShutdown = s.completed && !s.completeFlushed + b.frameCh <- frame + }: + case <-b.done: + s := b.cacheState + stat := newStatistics(tw, s) + var r io.Reader + if b.recoveredPanic == nil { + r = s.draw(stat) + } + frame, lines := s.extender(r, s.reqWidth, stat) + b.extendedLines = lines + b.frameCh <- frame + } +} + +func (b *Bar) subscribeDecorators() { + var averageDecorators []decor.AverageDecorator + var ewmaDecorators []decor.EwmaDecorator + var shutdownListeners []decor.ShutdownListener + b.TraverseDecorators(func(d decor.Decorator) { + if d, ok := d.(decor.AverageDecorator); ok { + averageDecorators = append(averageDecorators, d) + } + if d, ok := d.(decor.EwmaDecorator); ok { + ewmaDecorators = append(ewmaDecorators, d) + } + if d, ok := d.(decor.ShutdownListener); ok { + shutdownListeners = append(shutdownListeners, d) + } + }) + select { + case b.operateState <- func(s *bState) { + s.averageDecorators = averageDecorators + s.ewmaDecorators = ewmaDecorators + s.shutdownListeners = shutdownListeners + }: + b.hasEwmaDecorators = len(ewmaDecorators) != 0 + case <-b.done: + } +} + +func (b *Bar) refreshTillShutdown() { + for { + select { + case b.container.refreshCh <- time.Now(): + case <-b.done: + return + } + } +} + +func (b *Bar) wSyncTable() [][]chan int { + select { + case b.operateState <- func(s *bState) { b.syncTableCh <- s.wSyncTable() }: + return <-b.syncTableCh + case <-b.done: + return b.cacheState.wSyncTable() + } +} + +func (s *bState) draw(stat decor.Statistics) io.Reader { + if !s.trimSpace { + stat.AvailableWidth -= 2 + s.bufB.WriteByte(' ') + defer s.bufB.WriteByte(' ') + } + + nlr := strings.NewReader("\n") + tw := stat.AvailableWidth + for _, d := range s.pDecorators { + str := d.Decor(stat) + stat.AvailableWidth -= runewidth.StringWidth(stripansi.Strip(str)) + s.bufP.WriteString(str) + } + if stat.AvailableWidth <= 0 { + trunc := strings.NewReader(runewidth.Truncate(stripansi.Strip(s.bufP.String()), tw, "…")) + s.bufP.Reset() + return io.MultiReader(trunc, s.bufB, nlr) + } + + tw = stat.AvailableWidth + for _, d := range s.aDecorators { + str := d.Decor(stat) + stat.AvailableWidth -= runewidth.StringWidth(stripansi.Strip(str)) + s.bufA.WriteString(str) + } + if stat.AvailableWidth <= 0 { + trunc := strings.NewReader(runewidth.Truncate(stripansi.Strip(s.bufA.String()), tw, "…")) + s.bufA.Reset() + return io.MultiReader(s.bufP, s.bufB, trunc, nlr) + } + + s.filler.Fill(s.bufB, s.reqWidth, stat) + + return io.MultiReader(s.bufP, s.bufB, s.bufA, nlr) +} + +func (s *bState) wSyncTable() [][]chan int { + columns := make([]chan int, 0, len(s.pDecorators)+len(s.aDecorators)) + var pCount int + for _, d := range s.pDecorators { + if ch, ok := d.Sync(); ok { + columns = append(columns, ch) + pCount++ + } + } + var aCount int + for _, d := range s.aDecorators { + if ch, ok := d.Sync(); ok { + columns = append(columns, ch) + aCount++ + } + } + table := make([][]chan int, 2) + table[0] = columns[0:pCount] + table[1] = columns[pCount : pCount+aCount : pCount+aCount] + return table +} + +func newStatistics(tw int, s *bState) decor.Statistics { + return decor.Statistics{ + ID: s.id, + AvailableWidth: tw, + Total: s.total, + Current: s.current, + Refill: s.refill, + Completed: s.completeFlushed, + } +} + +func extractBaseDecorator(d decor.Decorator) decor.Decorator { + if d, ok := d.(decor.Wrapper); ok { + return extractBaseDecorator(d.Base()) + } + return d +} + +func ewmaIterationUpdate(done bool, s *bState, dur time.Duration) { + if !done && !s.iterated { + panic("increment required before ewma iteration update") + } else { + s.iterated = false + } + for _, d := range s.ewmaDecorators { + d.EwmaUpdate(s.lastN, dur) + } +} + +func makePanicExtender(p interface{}) extenderFunc { + pstr := fmt.Sprint(p) + stack := debug.Stack() + stackLines := bytes.Count(stack, []byte("\n")) + return func(_ io.Reader, _ int, st decor.Statistics) (io.Reader, int) { + mr := io.MultiReader( + strings.NewReader(runewidth.Truncate(pstr, st.AvailableWidth, "…")), + strings.NewReader(fmt.Sprintf("\n%#v\n", st)), + bytes.NewReader(stack), + ) + return mr, stackLines + 1 + } +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_filler.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_filler.go new file mode 100644 index 0000000..c8cedaa --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_filler.go @@ -0,0 +1,31 @@ +package mpb + +import ( + "io" + + "github.com/vbauerster/mpb/v6/decor" +) + +// BarFiller interface. +// Bar (without decorators) renders itself by calling BarFiller's Fill method. +// +// reqWidth is requested width, set by `func WithWidth(int) ContainerOption`. +// If not set, it defaults to terminal width. +// +// Default implementations can be obtained via: +// +// func NewBarFiller(style string) BarFiller +// func NewBarFillerRev(style string) BarFiller +// func NewBarFillerPick(style string, rev bool) BarFiller +// func NewSpinnerFiller(style []string, alignment SpinnerAlignment) BarFiller +// +type BarFiller interface { + Fill(w io.Writer, reqWidth int, stat decor.Statistics) +} + +// BarFillerFunc is function type adapter to convert function into BarFiller. +type BarFillerFunc func(w io.Writer, reqWidth int, stat decor.Statistics) + +func (f BarFillerFunc) Fill(w io.Writer, reqWidth int, stat decor.Statistics) { + f(w, reqWidth, stat) +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_filler_bar.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_filler_bar.go new file mode 100644 index 0000000..1c339e9 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_filler_bar.go @@ -0,0 +1,191 @@ +package mpb + +import ( + "bytes" + "io" + "unicode/utf8" + + "github.com/mattn/go-runewidth" + "github.com/rivo/uniseg" + "github.com/vbauerster/mpb/v6/decor" + "github.com/vbauerster/mpb/v6/internal" +) + +const ( + rLeft = iota + rFill + rTip + rSpace + rRight + rRevTip + rRefill +) + +// BarDefaultStyle is a style for rendering a progress bar. +// It consist of 7 ordered runes: +// +// '1st rune' stands for left boundary rune +// +// '2nd rune' stands for fill rune +// +// '3rd rune' stands for tip rune +// +// '4th rune' stands for space rune +// +// '5th rune' stands for right boundary rune +// +// '6th rune' stands for reverse tip rune +// +// '7th rune' stands for refill rune +// +const BarDefaultStyle string = "[=>-]<+" + +type barFiller struct { + format [][]byte + rwidth []int + tip []byte + refill int64 + reverse bool + flush func(io.Writer, *space, [][]byte) +} + +type space struct { + space []byte + rwidth int + count int +} + +// NewBarFiller returns a BarFiller implementation which renders a +// progress bar in regular direction. If style is empty string, +// BarDefaultStyle is applied. To be used with `*Progress.Add(...) +// *Bar` method. +func NewBarFiller(style string) BarFiller { + return newBarFiller(style, false) +} + +// NewBarFillerRev returns a BarFiller implementation which renders a +// progress bar in reverse direction. If style is empty string, +// BarDefaultStyle is applied. To be used with `*Progress.Add(...) +// *Bar` method. +func NewBarFillerRev(style string) BarFiller { + return newBarFiller(style, true) +} + +// NewBarFillerPick pick between regular and reverse BarFiller implementation +// based on rev param. To be used with `*Progress.Add(...) *Bar` method. +func NewBarFillerPick(style string, rev bool) BarFiller { + return newBarFiller(style, rev) +} + +func newBarFiller(style string, rev bool) BarFiller { + bf := &barFiller{ + format: make([][]byte, len(BarDefaultStyle)), + rwidth: make([]int, len(BarDefaultStyle)), + reverse: rev, + } + bf.parse(BarDefaultStyle) + if style != "" && style != BarDefaultStyle { + bf.parse(style) + } + return bf +} + +func (s *barFiller) parse(style string) { + if !utf8.ValidString(style) { + panic("invalid bar style") + } + srcFormat := make([][]byte, len(BarDefaultStyle)) + srcRwidth := make([]int, len(BarDefaultStyle)) + i := 0 + for gr := uniseg.NewGraphemes(style); i < len(BarDefaultStyle) && gr.Next(); i++ { + srcFormat[i] = gr.Bytes() + srcRwidth[i] = runewidth.StringWidth(gr.Str()) + } + copy(s.format, srcFormat[:i]) + copy(s.rwidth, srcRwidth[:i]) + if s.reverse { + s.tip = s.format[rRevTip] + s.flush = reverseFlush + } else { + s.tip = s.format[rTip] + s.flush = regularFlush + } +} + +func (s *barFiller) Fill(w io.Writer, reqWidth int, stat decor.Statistics) { + width := internal.CheckRequestedWidth(reqWidth, stat.AvailableWidth) + brackets := s.rwidth[rLeft] + s.rwidth[rRight] + if width < brackets { + return + } + // don't count brackets as progress + width -= brackets + + w.Write(s.format[rLeft]) + defer w.Write(s.format[rRight]) + + cwidth := int(internal.PercentageRound(stat.Total, stat.Current, width)) + space := &space{ + space: s.format[rSpace], + rwidth: s.rwidth[rSpace], + count: width - cwidth, + } + + index, refill := 0, 0 + bb := make([][]byte, cwidth) + + if cwidth > 0 && cwidth != width { + bb[index] = s.tip + cwidth -= s.rwidth[rTip] + index++ + } + + if stat.Refill > 0 { + refill = int(internal.PercentageRound(stat.Total, int64(stat.Refill), width)) + if refill > cwidth { + refill = cwidth + } + cwidth -= refill + } + + for cwidth > 0 { + bb[index] = s.format[rFill] + cwidth -= s.rwidth[rFill] + index++ + } + + for refill > 0 { + bb[index] = s.format[rRefill] + refill -= s.rwidth[rRefill] + index++ + } + + if cwidth+refill < 0 || space.rwidth > 1 { + buf := new(bytes.Buffer) + s.flush(buf, space, bb[:index]) + io.WriteString(w, runewidth.Truncate(buf.String(), width, "…")) + return + } + + s.flush(w, space, bb) +} + +func regularFlush(w io.Writer, space *space, bb [][]byte) { + for i := len(bb) - 1; i >= 0; i-- { + w.Write(bb[i]) + } + for space.count > 0 { + w.Write(space.space) + space.count -= space.rwidth + } +} + +func reverseFlush(w io.Writer, space *space, bb [][]byte) { + for space.count > 0 { + w.Write(space.space) + space.count -= space.rwidth + } + for i := 0; i < len(bb); i++ { + w.Write(bb[i]) + } +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_filler_spinner.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_filler_spinner.go new file mode 100644 index 0000000..0817b19 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_filler_spinner.go @@ -0,0 +1,65 @@ +package mpb + +import ( + "io" + "strings" + + "github.com/mattn/go-runewidth" + "github.com/vbauerster/mpb/v6/decor" + "github.com/vbauerster/mpb/v6/internal" +) + +// SpinnerAlignment enum. +type SpinnerAlignment int + +// SpinnerAlignment kinds. +const ( + SpinnerOnLeft SpinnerAlignment = iota + SpinnerOnMiddle + SpinnerOnRight +) + +// SpinnerDefaultStyle is a style for rendering a spinner. +var SpinnerDefaultStyle = []string{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"} + +type spinnerFiller struct { + frames []string + count uint + alignment SpinnerAlignment +} + +// NewSpinnerFiller returns a BarFiller implementation which renders +// a spinner. If style is nil or zero length, SpinnerDefaultStyle is +// applied. To be used with `*Progress.Add(...) *Bar` method. +func NewSpinnerFiller(style []string, alignment SpinnerAlignment) BarFiller { + if len(style) == 0 { + style = SpinnerDefaultStyle + } + filler := &spinnerFiller{ + frames: style, + alignment: alignment, + } + return filler +} + +func (s *spinnerFiller) Fill(w io.Writer, reqWidth int, stat decor.Statistics) { + width := internal.CheckRequestedWidth(reqWidth, stat.AvailableWidth) + + frame := s.frames[s.count%uint(len(s.frames))] + frameWidth := runewidth.StringWidth(frame) + + if width < frameWidth { + return + } + + switch rest := width - frameWidth; s.alignment { + case SpinnerOnLeft: + io.WriteString(w, frame+strings.Repeat(" ", rest)) + case SpinnerOnMiddle: + str := strings.Repeat(" ", rest/2) + frame + strings.Repeat(" ", rest/2+rest%2) + io.WriteString(w, str) + case SpinnerOnRight: + io.WriteString(w, strings.Repeat(" ", rest)+frame) + } + s.count++ +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_option.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_option.go new file mode 100644 index 0000000..e359c11 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_option.go @@ -0,0 +1,153 @@ +package mpb + +import ( + "bytes" + "io" + + "github.com/vbauerster/mpb/v6/decor" + "github.com/vbauerster/mpb/v6/internal" +) + +// BarOption is a func option to alter default behavior of a bar. +type BarOption func(*bState) + +func (s *bState) addDecorators(dest *[]decor.Decorator, decorators ...decor.Decorator) { + type mergeWrapper interface { + MergeUnwrap() []decor.Decorator + } + for _, decorator := range decorators { + if mw, ok := decorator.(mergeWrapper); ok { + *dest = append(*dest, mw.MergeUnwrap()...) + } + *dest = append(*dest, decorator) + } +} + +// AppendDecorators let you inject decorators to the bar's right side. +func AppendDecorators(decorators ...decor.Decorator) BarOption { + return func(s *bState) { + s.addDecorators(&s.aDecorators, decorators...) + } +} + +// PrependDecorators let you inject decorators to the bar's left side. +func PrependDecorators(decorators ...decor.Decorator) BarOption { + return func(s *bState) { + s.addDecorators(&s.pDecorators, decorators...) + } +} + +// BarID sets bar id. +func BarID(id int) BarOption { + return func(s *bState) { + s.id = id + } +} + +// BarWidth sets bar width independent of the container. +func BarWidth(width int) BarOption { + return func(s *bState) { + s.reqWidth = width + } +} + +// BarQueueAfter queues this (being constructed) bar to relplace +// runningBar after it has been completed. +func BarQueueAfter(runningBar *Bar) BarOption { + if runningBar == nil { + return nil + } + return func(s *bState) { + s.runningBar = runningBar + } +} + +// BarRemoveOnComplete removes both bar's filler and its decorators +// on complete event. +func BarRemoveOnComplete() BarOption { + return func(s *bState) { + s.dropOnComplete = true + } +} + +// BarFillerClearOnComplete clears bar's filler on complete event. +// It's shortcut for BarFillerOnComplete(""). +func BarFillerClearOnComplete() BarOption { + return BarFillerOnComplete("") +} + +// BarFillerOnComplete replaces bar's filler with message, on complete event. +func BarFillerOnComplete(message string) BarOption { + return BarFillerMiddleware(func(base BarFiller) BarFiller { + return BarFillerFunc(func(w io.Writer, reqWidth int, st decor.Statistics) { + if st.Completed { + io.WriteString(w, message) + } else { + base.Fill(w, reqWidth, st) + } + }) + }) +} + +// BarFillerMiddleware provides a way to augment the underlying BarFiller. +func BarFillerMiddleware(middle func(BarFiller) BarFiller) BarOption { + return func(s *bState) { + s.middleware = middle + } +} + +// BarPriority sets bar's priority. Zero is highest priority, i.e. bar +// will be on top. If `BarReplaceOnComplete` option is supplied, this +// option is ignored. +func BarPriority(priority int) BarOption { + return func(s *bState) { + s.priority = priority + } +} + +// BarExtender provides a way to extend bar to the next new line. +func BarExtender(filler BarFiller) BarOption { + if filler == nil { + return nil + } + return func(s *bState) { + s.extender = makeExtenderFunc(filler) + } +} + +func makeExtenderFunc(filler BarFiller) extenderFunc { + buf := new(bytes.Buffer) + return func(r io.Reader, reqWidth int, st decor.Statistics) (io.Reader, int) { + filler.Fill(buf, reqWidth, st) + return io.MultiReader(r, buf), bytes.Count(buf.Bytes(), []byte("\n")) + } +} + +// BarFillerTrim removes leading and trailing space around the underlying BarFiller. +func BarFillerTrim() BarOption { + return func(s *bState) { + s.trimSpace = true + } +} + +// BarNoPop disables bar pop out of container. Effective when +// PopCompletedMode of container is enabled. +func BarNoPop() BarOption { + return func(s *bState) { + s.noPop = true + } +} + +// BarOptional will invoke provided option only when pick is true. +func BarOptional(option BarOption, pick bool) BarOption { + return BarOptOn(option, internal.Predicate(pick)) +} + +// BarOptOn will invoke provided option only when higher order predicate +// evaluates to true. +func BarOptOn(option BarOption, predicate func() bool) BarOption { + if predicate() { + return option + } + return nil +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_test.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_test.go new file mode 100644 index 0000000..1f0067c --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/bar_test.go @@ -0,0 +1,257 @@ +package mpb_test + +import ( + "bytes" + "fmt" + "io/ioutil" + "strings" + "sync/atomic" + "testing" + "time" + "unicode/utf8" + + "github.com/vbauerster/mpb/v6" + "github.com/vbauerster/mpb/v6/decor" +) + +func TestBarCompleted(t *testing.T) { + p := mpb.New(mpb.WithWidth(80), mpb.WithOutput(ioutil.Discard)) + total := 80 + bar := p.AddBar(int64(total)) + + var count int + for !bar.Completed() { + time.Sleep(10 * time.Millisecond) + bar.Increment() + count++ + } + + p.Wait() + if count != total { + t.Errorf("got count: %d, expected %d\n", count, total) + } +} + +func TestBarID(t *testing.T) { + p := mpb.New(mpb.WithWidth(80), mpb.WithOutput(ioutil.Discard)) + total := 100 + wantID := 11 + bar := p.AddBar(int64(total), mpb.BarID(wantID)) + + go func() { + for i := 0; i < total; i++ { + time.Sleep(50 * time.Millisecond) + bar.Increment() + } + }() + + gotID := bar.ID() + if gotID != wantID { + t.Errorf("Expected bar id: %d, got %d\n", wantID, gotID) + } + + bar.Abort(true) + p.Wait() +} + +func TestBarSetRefill(t *testing.T) { + var buf bytes.Buffer + + p := mpb.New(mpb.WithOutput(&buf), mpb.WithWidth(100)) + + total := 100 + till := 30 + refillRune, _ := utf8.DecodeLastRuneInString(mpb.BarDefaultStyle) + + bar := p.AddBar(int64(total), mpb.BarFillerTrim()) + + bar.SetRefill(int64(till)) + bar.IncrBy(till) + + for i := 0; i < total-till; i++ { + bar.Increment() + time.Sleep(10 * time.Millisecond) + } + + p.Wait() + + wantBar := fmt.Sprintf("[%s%s]", + strings.Repeat(string(refillRune), till-1), + strings.Repeat("=", total-till-1), + ) + + got := string(getLastLine(buf.Bytes())) + + if !strings.Contains(got, wantBar) { + t.Errorf("Want bar: %q, got bar: %q\n", wantBar, got) + } +} + +func TestBarHas100PercentWithOnCompleteDecorator(t *testing.T) { + var buf bytes.Buffer + + p := mpb.New(mpb.WithWidth(80), mpb.WithOutput(&buf)) + + total := 50 + + bar := p.AddBar(int64(total), + mpb.AppendDecorators( + decor.OnComplete( + decor.Percentage(), "done", + ), + ), + ) + + for i := 0; i < total; i++ { + bar.Increment() + time.Sleep(10 * time.Millisecond) + } + + p.Wait() + + hundred := "100 %" + if !bytes.Contains(buf.Bytes(), []byte(hundred)) { + t.Errorf("Bar's buffer does not contain: %q\n", hundred) + } +} + +func TestBarHas100PercentWithBarRemoveOnComplete(t *testing.T) { + var buf bytes.Buffer + + p := mpb.New(mpb.WithWidth(80), mpb.WithOutput(&buf)) + + total := 50 + + bar := p.AddBar(int64(total), + mpb.BarRemoveOnComplete(), + mpb.AppendDecorators(decor.Percentage()), + ) + + for i := 0; i < total; i++ { + bar.Increment() + time.Sleep(10 * time.Millisecond) + } + + p.Wait() + + hundred := "100 %" + if !bytes.Contains(buf.Bytes(), []byte(hundred)) { + t.Errorf("Bar's buffer does not contain: %q\n", hundred) + } +} + +func TestBarStyle(t *testing.T) { + var buf bytes.Buffer + customFormat := "╢▌▌░╟" + total := 80 + p := mpb.New(mpb.WithWidth(total), mpb.WithOutput(&buf)) + bar := p.Add(int64(total), mpb.NewBarFiller(customFormat), mpb.BarFillerTrim()) + + for i := 0; i < total; i++ { + bar.Increment() + time.Sleep(10 * time.Millisecond) + } + + p.Wait() + + runes := []rune(customFormat) + wantBar := fmt.Sprintf("%s%s%s", + string(runes[0]), + strings.Repeat(string(runes[1]), total-2), + string(runes[len(runes)-1]), + ) + got := string(getLastLine(buf.Bytes())) + + if !strings.Contains(got, wantBar) { + t.Errorf("Want bar: %q:%d, got bar: %q:%d\n", wantBar, utf8.RuneCountInString(wantBar), got, utf8.RuneCountInString(got)) + } +} + +func TestBarPanicBeforeComplete(t *testing.T) { + var buf bytes.Buffer + p := mpb.New( + mpb.WithWidth(80), + mpb.WithDebugOutput(&buf), + mpb.WithOutput(ioutil.Discard), + ) + + total := 100 + panicMsg := "Upps!!!" + var pCount uint32 + bar := p.AddBar(int64(total), + mpb.PrependDecorators(panicDecorator(panicMsg, + func(st decor.Statistics) bool { + if st.Current >= 42 { + atomic.AddUint32(&pCount, 1) + return true + } + return false + }, + )), + ) + + for i := 0; i < total; i++ { + time.Sleep(10 * time.Millisecond) + bar.Increment() + } + + p.Wait() + + if pCount != 1 { + t.Errorf("Decor called after panic %d times\n", pCount-1) + } + + barStr := buf.String() + if !strings.Contains(barStr, panicMsg) { + t.Errorf("%q doesn't contain %q\n", barStr, panicMsg) + } +} + +func TestBarPanicAfterComplete(t *testing.T) { + var buf bytes.Buffer + p := mpb.New( + mpb.WithWidth(80), + mpb.WithDebugOutput(&buf), + mpb.WithOutput(ioutil.Discard), + ) + + total := 100 + panicMsg := "Upps!!!" + var pCount uint32 + bar := p.AddBar(int64(total), + mpb.PrependDecorators(panicDecorator(panicMsg, + func(st decor.Statistics) bool { + if st.Completed { + atomic.AddUint32(&pCount, 1) + return true + } + return false + }, + )), + ) + + for i := 0; i < total; i++ { + time.Sleep(10 * time.Millisecond) + bar.Increment() + } + + p.Wait() + + if pCount > 2 { + t.Error("Decor called after panic more than 2 times\n") + } + + barStr := buf.String() + if !strings.Contains(barStr, panicMsg) { + t.Errorf("%q doesn't contain %q\n", barStr, panicMsg) + } +} + +func panicDecorator(panicMsg string, cond func(decor.Statistics) bool) decor.Decorator { + return decor.Any(func(st decor.Statistics) string { + if cond(st) { + panic(panicMsg) + } + return "" + }) +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/barbench_test.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/barbench_test.go new file mode 100644 index 0000000..76beece --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/barbench_test.go @@ -0,0 +1,43 @@ +package mpb + +import ( + "io/ioutil" + "testing" + + "github.com/vbauerster/mpb/v6/decor" +) + +func BenchmarkIncrSingleBar(b *testing.B) { + p := New(WithOutput(ioutil.Discard), WithWidth(80)) + bar := p.AddBar(int64(b.N)) + for i := 0; i < b.N; i++ { + bar.Increment() + } +} + +func BenchmarkIncrSingleBarWhileIsNotCompleted(b *testing.B) { + p := New(WithOutput(ioutil.Discard), WithWidth(80)) + bar := p.AddBar(int64(b.N)) + for !bar.Completed() { + bar.Increment() + } +} + +func BenchmarkIncrSingleBarWithNameDecorator(b *testing.B) { + p := New(WithOutput(ioutil.Discard), WithWidth(80)) + bar := p.AddBar(int64(b.N), PrependDecorators(decor.Name("test"))) + for i := 0; i < b.N; i++ { + bar.Increment() + } +} + +func BenchmarkIncrSingleBarWithNameAndEwmaETADecorator(b *testing.B) { + p := New(WithOutput(ioutil.Discard), WithWidth(80)) + bar := p.AddBar(int64(b.N), + PrependDecorators(decor.Name("test")), + AppendDecorators(decor.EwmaETA(decor.ET_STYLE_GO, 60)), + ) + for i := 0; i < b.N; i++ { + bar.Increment() + } +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/container_option.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/container_option.go new file mode 100644 index 0000000..b92c757 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/container_option.go @@ -0,0 +1,112 @@ +package mpb + +import ( + "io" + "io/ioutil" + "sync" + "time" + + "github.com/vbauerster/mpb/v6/internal" +) + +// ContainerOption is a func option to alter default behavior of a bar +// container. Container term refers to a Progress struct which can +// hold one or more Bars. +type ContainerOption func(*pState) + +// WithWaitGroup provides means to have a single joint point. If +// *sync.WaitGroup is provided, you can safely call just p.Wait() +// without calling Wait() on provided *sync.WaitGroup. Makes sense +// when there are more than one bar to render. +func WithWaitGroup(wg *sync.WaitGroup) ContainerOption { + return func(s *pState) { + s.uwg = wg + } +} + +// WithWidth sets container width. If not set it defaults to terminal +// width. A bar added to the container will inherit its width, unless +// overridden by `func BarWidth(int) BarOption`. +func WithWidth(width int) ContainerOption { + return func(s *pState) { + s.reqWidth = width + } +} + +// WithRefreshRate overrides default 120ms refresh rate. +func WithRefreshRate(d time.Duration) ContainerOption { + return func(s *pState) { + s.rr = d + } +} + +// WithManualRefresh disables internal auto refresh time.Ticker. +// Refresh will occur upon receive value from provided ch. +func WithManualRefresh(ch <-chan interface{}) ContainerOption { + return func(s *pState) { + s.externalRefresh = ch + } +} + +// WithRenderDelay delays rendering. By default rendering starts as +// soon as bar is added, with this option it's possible to delay +// rendering process by keeping provided chan unclosed. In other words +// rendering will start as soon as provided chan is closed. +func WithRenderDelay(ch <-chan struct{}) ContainerOption { + return func(s *pState) { + s.renderDelay = ch + } +} + +// WithShutdownNotifier provided chanel will be closed, after all bars +// have been rendered. +func WithShutdownNotifier(ch chan struct{}) ContainerOption { + return func(s *pState) { + s.shutdownNotifier = ch + } +} + +// WithOutput overrides default os.Stdout output. Setting it to nil +// will effectively disable auto refresh rate and discard any output, +// useful if you want to disable progress bars with little overhead. +func WithOutput(w io.Writer) ContainerOption { + return func(s *pState) { + if w == nil { + s.output = ioutil.Discard + s.outputDiscarded = true + return + } + s.output = w + } +} + +// WithDebugOutput sets debug output. +func WithDebugOutput(w io.Writer) ContainerOption { + if w == nil { + return nil + } + return func(s *pState) { + s.debugOut = w + } +} + +// PopCompletedMode will pop and stop rendering completed bars. +func PopCompletedMode() ContainerOption { + return func(s *pState) { + s.popCompleted = true + } +} + +// ContainerOptional will invoke provided option only when pick is true. +func ContainerOptional(option ContainerOption, pick bool) ContainerOption { + return ContainerOptOn(option, internal.Predicate(pick)) +} + +// ContainerOptOn will invoke provided option only when higher order +// predicate evaluates to true. +func ContainerOptOn(option ContainerOption, predicate func() bool) ContainerOption { + if predicate() { + return option + } + return nil +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/cuuAndEd_construction_bench_test.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/cuuAndEd_construction_bench_test.go new file mode 100644 index 0000000..af80be9 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/cuuAndEd_construction_bench_test.go @@ -0,0 +1,39 @@ +package cwriter + +import ( + "bytes" + "fmt" + "io/ioutil" + "strconv" + "testing" +) + +func BenchmarkWithFprintf(b *testing.B) { + cuuAndEd := "\x1b[%dA\x1b[J" + for i := 0; i < b.N; i++ { + fmt.Fprintf(ioutil.Discard, cuuAndEd, 4) + } +} + +func BenchmarkWithJoin(b *testing.B) { + bCuuAndEd := [][]byte{[]byte("\x1b["), []byte("A\x1b[J")} + for i := 0; i < b.N; i++ { + ioutil.Discard.Write(bytes.Join(bCuuAndEd, []byte(strconv.Itoa(4)))) + } +} + +func BenchmarkWithAppend(b *testing.B) { + escOpen := []byte("\x1b[") + cuuAndEd := []byte("A\x1b[J") + for i := 0; i < b.N; i++ { + ioutil.Discard.Write(append(strconv.AppendInt(escOpen, 4, 10), cuuAndEd...)) + } +} + +func BenchmarkWithCopy(b *testing.B) { + w := New(ioutil.Discard) + w.lineCount = 4 + for i := 0; i < b.N; i++ { + w.ansiCuuAndEd() + } +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/doc.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/doc.go new file mode 100644 index 0000000..93c8f82 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/doc.go @@ -0,0 +1,2 @@ +// Package cwriter is a console writer abstraction for the underlying OS. +package cwriter diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/util_bsd.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/util_bsd.go new file mode 100644 index 0000000..4e3564e --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/util_bsd.go @@ -0,0 +1,7 @@ +// +build darwin dragonfly freebsd netbsd openbsd + +package cwriter + +import "golang.org/x/sys/unix" + +const ioctlReadTermios = unix.TIOCGETA diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/util_linux.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/util_linux.go new file mode 100644 index 0000000..253f12d --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/util_linux.go @@ -0,0 +1,7 @@ +// +build aix linux + +package cwriter + +import "golang.org/x/sys/unix" + +const ioctlReadTermios = unix.TCGETS diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/util_solaris.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/util_solaris.go new file mode 100644 index 0000000..4b29ff5 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/util_solaris.go @@ -0,0 +1,7 @@ +// +build solaris + +package cwriter + +import "golang.org/x/sys/unix" + +const ioctlReadTermios = unix.TCGETA diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/writer.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/writer.go new file mode 100644 index 0000000..1ade547 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/writer.go @@ -0,0 +1,84 @@ +package cwriter + +import ( + "bytes" + "errors" + "io" + "os" + "strconv" +) + +// ErrNotTTY not a TeleTYpewriter error. +var ErrNotTTY = errors.New("not a terminal") + +// http://ascii-table.com/ansi-escape-sequences.php +const ( + escOpen = "\x1b[" + cuuAndEd = "A\x1b[J" +) + +// Writer is a buffered the writer that updates the terminal. The +// contents of writer will be flushed when Flush is called. +type Writer struct { + out io.Writer + buf bytes.Buffer + lineCount int + fd int + isTerminal bool +} + +// New returns a new Writer with defaults. +func New(out io.Writer) *Writer { + w := &Writer{out: out} + if f, ok := out.(*os.File); ok { + w.fd = int(f.Fd()) + w.isTerminal = IsTerminal(w.fd) + } + return w +} + +// Flush flushes the underlying buffer. +func (w *Writer) Flush(lineCount int) (err error) { + // some terminals interpret 'cursor up 0' as 'cursor up 1' + if w.lineCount > 0 { + err = w.clearLines() + if err != nil { + return + } + } + w.lineCount = lineCount + _, err = w.buf.WriteTo(w.out) + return +} + +// Write appends the contents of p to the underlying buffer. +func (w *Writer) Write(p []byte) (n int, err error) { + return w.buf.Write(p) +} + +// WriteString writes string to the underlying buffer. +func (w *Writer) WriteString(s string) (n int, err error) { + return w.buf.WriteString(s) +} + +// ReadFrom reads from the provided io.Reader and writes to the +// underlying buffer. +func (w *Writer) ReadFrom(r io.Reader) (n int64, err error) { + return w.buf.ReadFrom(r) +} + +// GetWidth returns width of underlying terminal. +func (w *Writer) GetWidth() (int, error) { + if !w.isTerminal { + return -1, ErrNotTTY + } + tw, _, err := GetSize(w.fd) + return tw, err +} + +func (w *Writer) ansiCuuAndEd() (err error) { + buf := make([]byte, 8) + buf = strconv.AppendInt(buf[:copy(buf, escOpen)], int64(w.lineCount), 10) + _, err = w.out.Write(append(buf, cuuAndEd...)) + return +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/writer_posix.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/writer_posix.go new file mode 100644 index 0000000..f54a5d0 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/writer_posix.go @@ -0,0 +1,26 @@ +// +build !windows + +package cwriter + +import ( + "golang.org/x/sys/unix" +) + +func (w *Writer) clearLines() error { + return w.ansiCuuAndEd() +} + +// GetSize returns the dimensions of the given terminal. +func GetSize(fd int) (width, height int, err error) { + ws, err := unix.IoctlGetWinsize(fd, unix.TIOCGWINSZ) + if err != nil { + return -1, -1, err + } + return int(ws.Col), int(ws.Row), nil +} + +// IsTerminal returns whether the given file descriptor is a terminal. +func IsTerminal(fd int) bool { + _, err := unix.IoctlGetTermios(fd, ioctlReadTermios) + return err == nil +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/writer_windows.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/writer_windows.go new file mode 100644 index 0000000..1a69c81 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/cwriter/writer_windows.go @@ -0,0 +1,73 @@ +// +build windows + +package cwriter + +import ( + "unsafe" + + "golang.org/x/sys/windows" +) + +var kernel32 = windows.NewLazySystemDLL("kernel32.dll") + +var ( + procSetConsoleCursorPosition = kernel32.NewProc("SetConsoleCursorPosition") + procFillConsoleOutputCharacter = kernel32.NewProc("FillConsoleOutputCharacterW") +) + +func (w *Writer) clearLines() error { + if !w.isTerminal { + // hope it's cygwin or similar + return w.ansiCuuAndEd() + } + + var info windows.ConsoleScreenBufferInfo + if err := windows.GetConsoleScreenBufferInfo(windows.Handle(w.fd), &info); err != nil { + return err + } + + info.CursorPosition.Y -= int16(w.lineCount) + if info.CursorPosition.Y < 0 { + info.CursorPosition.Y = 0 + } + _, _, _ = procSetConsoleCursorPosition.Call( + uintptr(w.fd), + uintptr(uint32(uint16(info.CursorPosition.Y))<<16|uint32(uint16(info.CursorPosition.X))), + ) + + // clear the lines + cursor := &windows.Coord{ + X: info.Window.Left, + Y: info.CursorPosition.Y, + } + count := uint32(info.Size.X) * uint32(w.lineCount) + _, _, _ = procFillConsoleOutputCharacter.Call( + uintptr(w.fd), + uintptr(' '), + uintptr(count), + *(*uintptr)(unsafe.Pointer(cursor)), + uintptr(unsafe.Pointer(new(uint32))), + ) + return nil +} + +// GetSize returns the visible dimensions of the given terminal. +// +// These dimensions don't include any scrollback buffer height. +func GetSize(fd int) (width, height int, err error) { + var info windows.ConsoleScreenBufferInfo + if err := windows.GetConsoleScreenBufferInfo(windows.Handle(fd), &info); err != nil { + return 0, 0, err + } + // terminal.GetSize from crypto/ssh adds "+ 1" to both width and height: + // https://go.googlesource.com/crypto/+/refs/heads/release-branch.go1.14/ssh/terminal/util_windows.go#75 + // but looks like this is a root cause of issue #66, so removing both "+ 1" have fixed it. + return int(info.Window.Right - info.Window.Left), int(info.Window.Bottom - info.Window.Top), nil +} + +// IsTerminal returns whether the given file descriptor is a terminal. +func IsTerminal(fd int) bool { + var st uint32 + err := windows.GetConsoleMode(windows.Handle(fd), &st) + return err == nil +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/any.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/any.go new file mode 100644 index 0000000..39518f5 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/any.go @@ -0,0 +1,21 @@ +package decor + +// Any decorator displays text, that can be changed during decorator's +// lifetime via provided DecorFunc. +// +// `fn` DecorFunc callback +// +// `wcc` optional WC config +// +func Any(fn DecorFunc, wcc ...WC) Decorator { + return &any{initWC(wcc...), fn} +} + +type any struct { + WC + fn DecorFunc +} + +func (d *any) Decor(s Statistics) string { + return d.FormatMsg(d.fn(s)) +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/counters.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/counters.go new file mode 100644 index 0000000..4a5343d --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/counters.go @@ -0,0 +1,243 @@ +package decor + +import ( + "fmt" + "strings" +) + +const ( + _ = iota + UnitKiB + UnitKB +) + +// CountersNoUnit is a wrapper around Counters with no unit param. +func CountersNoUnit(pairFmt string, wcc ...WC) Decorator { + return Counters(0, pairFmt, wcc...) +} + +// CountersKibiByte is a wrapper around Counters with predefined unit +// UnitKiB (bytes/1024). +func CountersKibiByte(pairFmt string, wcc ...WC) Decorator { + return Counters(UnitKiB, pairFmt, wcc...) +} + +// CountersKiloByte is a wrapper around Counters with predefined unit +// UnitKB (bytes/1000). +func CountersKiloByte(pairFmt string, wcc ...WC) Decorator { + return Counters(UnitKB, pairFmt, wcc...) +} + +// Counters decorator with dynamic unit measure adjustment. +// +// `unit` one of [0|UnitKiB|UnitKB] zero for no unit +// +// `pairFmt` printf compatible verbs for current and total pair +// +// `wcc` optional WC config +// +// pairFmt example if unit=UnitKB: +// +// pairFmt="%.1f / %.1f" output: "1.0MB / 12.0MB" +// pairFmt="% .1f / % .1f" output: "1.0 MB / 12.0 MB" +// pairFmt="%d / %d" output: "1MB / 12MB" +// pairFmt="% d / % d" output: "1 MB / 12 MB" +// +func Counters(unit int, pairFmt string, wcc ...WC) Decorator { + producer := func(unit int, pairFmt string) DecorFunc { + if pairFmt == "" { + pairFmt = "%d / %d" + } else if strings.Count(pairFmt, "%") != 2 { + panic("expected pairFmt with exactly 2 verbs") + } + switch unit { + case UnitKiB: + return func(s Statistics) string { + return fmt.Sprintf(pairFmt, SizeB1024(s.Current), SizeB1024(s.Total)) + } + case UnitKB: + return func(s Statistics) string { + return fmt.Sprintf(pairFmt, SizeB1000(s.Current), SizeB1000(s.Total)) + } + default: + return func(s Statistics) string { + return fmt.Sprintf(pairFmt, s.Current, s.Total) + } + } + } + return Any(producer(unit, pairFmt), wcc...) +} + +// TotalNoUnit is a wrapper around Total with no unit param. +func TotalNoUnit(format string, wcc ...WC) Decorator { + return Total(0, format, wcc...) +} + +// TotalKibiByte is a wrapper around Total with predefined unit +// UnitKiB (bytes/1024). +func TotalKibiByte(format string, wcc ...WC) Decorator { + return Total(UnitKiB, format, wcc...) +} + +// TotalKiloByte is a wrapper around Total with predefined unit +// UnitKB (bytes/1000). +func TotalKiloByte(format string, wcc ...WC) Decorator { + return Total(UnitKB, format, wcc...) +} + +// Total decorator with dynamic unit measure adjustment. +// +// `unit` one of [0|UnitKiB|UnitKB] zero for no unit +// +// `format` printf compatible verb for Total +// +// `wcc` optional WC config +// +// format example if unit=UnitKiB: +// +// format="%.1f" output: "12.0MiB" +// format="% .1f" output: "12.0 MiB" +// format="%d" output: "12MiB" +// format="% d" output: "12 MiB" +// +func Total(unit int, format string, wcc ...WC) Decorator { + producer := func(unit int, format string) DecorFunc { + if format == "" { + format = "%d" + } else if strings.Count(format, "%") != 1 { + panic("expected format with exactly 1 verb") + } + + switch unit { + case UnitKiB: + return func(s Statistics) string { + return fmt.Sprintf(format, SizeB1024(s.Total)) + } + case UnitKB: + return func(s Statistics) string { + return fmt.Sprintf(format, SizeB1000(s.Total)) + } + default: + return func(s Statistics) string { + return fmt.Sprintf(format, s.Total) + } + } + } + return Any(producer(unit, format), wcc...) +} + +// CurrentNoUnit is a wrapper around Current with no unit param. +func CurrentNoUnit(format string, wcc ...WC) Decorator { + return Current(0, format, wcc...) +} + +// CurrentKibiByte is a wrapper around Current with predefined unit +// UnitKiB (bytes/1024). +func CurrentKibiByte(format string, wcc ...WC) Decorator { + return Current(UnitKiB, format, wcc...) +} + +// CurrentKiloByte is a wrapper around Current with predefined unit +// UnitKB (bytes/1000). +func CurrentKiloByte(format string, wcc ...WC) Decorator { + return Current(UnitKB, format, wcc...) +} + +// Current decorator with dynamic unit measure adjustment. +// +// `unit` one of [0|UnitKiB|UnitKB] zero for no unit +// +// `format` printf compatible verb for Current +// +// `wcc` optional WC config +// +// format example if unit=UnitKiB: +// +// format="%.1f" output: "12.0MiB" +// format="% .1f" output: "12.0 MiB" +// format="%d" output: "12MiB" +// format="% d" output: "12 MiB" +// +func Current(unit int, format string, wcc ...WC) Decorator { + producer := func(unit int, format string) DecorFunc { + if format == "" { + format = "%d" + } else if strings.Count(format, "%") != 1 { + panic("expected format with exactly 1 verb") + } + + switch unit { + case UnitKiB: + return func(s Statistics) string { + return fmt.Sprintf(format, SizeB1024(s.Current)) + } + case UnitKB: + return func(s Statistics) string { + return fmt.Sprintf(format, SizeB1000(s.Current)) + } + default: + return func(s Statistics) string { + return fmt.Sprintf(format, s.Current) + } + } + } + return Any(producer(unit, format), wcc...) +} + +// InvertedCurrentNoUnit is a wrapper around InvertedCurrent with no unit param. +func InvertedCurrentNoUnit(format string, wcc ...WC) Decorator { + return InvertedCurrent(0, format, wcc...) +} + +// InvertedCurrentKibiByte is a wrapper around InvertedCurrent with predefined unit +// UnitKiB (bytes/1024). +func InvertedCurrentKibiByte(format string, wcc ...WC) Decorator { + return InvertedCurrent(UnitKiB, format, wcc...) +} + +// InvertedCurrentKiloByte is a wrapper around InvertedCurrent with predefined unit +// UnitKB (bytes/1000). +func InvertedCurrentKiloByte(format string, wcc ...WC) Decorator { + return InvertedCurrent(UnitKB, format, wcc...) +} + +// InvertedCurrent decorator with dynamic unit measure adjustment. +// +// `unit` one of [0|UnitKiB|UnitKB] zero for no unit +// +// `format` printf compatible verb for InvertedCurrent +// +// `wcc` optional WC config +// +// format example if unit=UnitKiB: +// +// format="%.1f" output: "12.0MiB" +// format="% .1f" output: "12.0 MiB" +// format="%d" output: "12MiB" +// format="% d" output: "12 MiB" +// +func InvertedCurrent(unit int, format string, wcc ...WC) Decorator { + producer := func(unit int, format string) DecorFunc { + if format == "" { + format = "%d" + } else if strings.Count(format, "%") != 1 { + panic("expected format with exactly 1 verb") + } + + switch unit { + case UnitKiB: + return func(s Statistics) string { + return fmt.Sprintf(format, SizeB1024(s.Total-s.Current)) + } + case UnitKB: + return func(s Statistics) string { + return fmt.Sprintf(format, SizeB1000(s.Total-s.Current)) + } + default: + return func(s Statistics) string { + return fmt.Sprintf(format, s.Total-s.Current) + } + } + } + return Any(producer(unit, format), wcc...) +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/decorator.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/decorator.go new file mode 100644 index 0000000..e81fae3 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/decorator.go @@ -0,0 +1,191 @@ +package decor + +import ( + "fmt" + "time" + + "github.com/acarl005/stripansi" + "github.com/mattn/go-runewidth" +) + +const ( + // DidentRight bit specifies identation direction. + // |foo |b | With DidentRight + // | foo| b| Without DidentRight + DidentRight = 1 << iota + + // DextraSpace bit adds extra space, makes sense with DSyncWidth only. + // When DidentRight bit set, the space will be added to the right, + // otherwise to the left. + DextraSpace + + // DSyncWidth bit enables same column width synchronization. + // Effective with multiple bars only. + DSyncWidth + + // DSyncWidthR is shortcut for DSyncWidth|DidentRight + DSyncWidthR = DSyncWidth | DidentRight + + // DSyncSpace is shortcut for DSyncWidth|DextraSpace + DSyncSpace = DSyncWidth | DextraSpace + + // DSyncSpaceR is shortcut for DSyncWidth|DextraSpace|DidentRight + DSyncSpaceR = DSyncWidth | DextraSpace | DidentRight +) + +// TimeStyle enum. +type TimeStyle int + +// TimeStyle kinds. +const ( + ET_STYLE_GO TimeStyle = iota + ET_STYLE_HHMMSS + ET_STYLE_HHMM + ET_STYLE_MMSS +) + +// Statistics consists of progress related statistics, that Decorator +// may need. +type Statistics struct { + ID int + AvailableWidth int + Total int64 + Current int64 + Refill int64 + Completed bool +} + +// Decorator interface. +// Most of the time there is no need to implement this interface +// manually, as decor package already provides a wide range of decorators +// which implement this interface. If however built-in decorators don't +// meet your needs, you're free to implement your own one by implementing +// this particular interface. The easy way to go is to convert a +// `DecorFunc` into a `Decorator` interface by using provided +// `func Any(DecorFunc, ...WC) Decorator`. +type Decorator interface { + Configurator + Synchronizer + Decor(Statistics) string +} + +// DecorFunc func type. +// To be used with `func Any`(DecorFunc, ...WC) Decorator`. +type DecorFunc func(Statistics) string + +// Synchronizer interface. +// All decorators implement this interface implicitly. Its Sync +// method exposes width sync channel, if DSyncWidth bit is set. +type Synchronizer interface { + Sync() (chan int, bool) +} + +// Configurator interface. +type Configurator interface { + GetConf() WC + SetConf(WC) +} + +// Wrapper interface. +// If you're implementing custom Decorator by wrapping a built-in one, +// it is necessary to implement this interface to retain functionality +// of built-in Decorator. +type Wrapper interface { + Base() Decorator +} + +// EwmaDecorator interface. +// EWMA based decorators should implement this one. +type EwmaDecorator interface { + EwmaUpdate(int64, time.Duration) +} + +// AverageDecorator interface. +// Average decorators should implement this interface to provide start +// time adjustment facility, for resume-able tasks. +type AverageDecorator interface { + AverageAdjust(time.Time) +} + +// ShutdownListener interface. +// If decorator needs to be notified once upon bar shutdown event, so +// this is the right interface to implement. +type ShutdownListener interface { + Shutdown() +} + +// Global convenience instances of WC with sync width bit set. +// To be used with multiple bars only, i.e. not effective for single bar usage. +var ( + WCSyncWidth = WC{C: DSyncWidth} + WCSyncWidthR = WC{C: DSyncWidthR} + WCSyncSpace = WC{C: DSyncSpace} + WCSyncSpaceR = WC{C: DSyncSpaceR} +) + +// WC is a struct with two public fields W and C, both of int type. +// W represents width and C represents bit set of width related config. +// A decorator should embed WC, to enable width synchronization. +type WC struct { + W int + C int + fill func(s string, w int) string + wsync chan int +} + +// FormatMsg formats final message according to WC.W and WC.C. +// Should be called by any Decorator implementation. +func (wc *WC) FormatMsg(msg string) string { + pureWidth := runewidth.StringWidth(msg) + stripWidth := runewidth.StringWidth(stripansi.Strip(msg)) + maxCell := wc.W + if (wc.C & DSyncWidth) != 0 { + cellCount := stripWidth + if (wc.C & DextraSpace) != 0 { + cellCount++ + } + wc.wsync <- cellCount + maxCell = <-wc.wsync + } + return wc.fill(msg, maxCell+(pureWidth-stripWidth)) +} + +// Init initializes width related config. +func (wc *WC) Init() WC { + wc.fill = runewidth.FillLeft + if (wc.C & DidentRight) != 0 { + wc.fill = runewidth.FillRight + } + if (wc.C & DSyncWidth) != 0 { + // it's deliberate choice to override wsync on each Init() call, + // this way globals like WCSyncSpace can be reused + wc.wsync = make(chan int) + } + return *wc +} + +// Sync is implementation of Synchronizer interface. +func (wc *WC) Sync() (chan int, bool) { + if (wc.C&DSyncWidth) != 0 && wc.wsync == nil { + panic(fmt.Sprintf("%T is not initialized", wc)) + } + return wc.wsync, (wc.C & DSyncWidth) != 0 +} + +// GetConf is implementation of Configurator interface. +func (wc *WC) GetConf() WC { + return *wc +} + +// SetConf is implementation of Configurator interface. +func (wc *WC) SetConf(conf WC) { + *wc = conf.Init() +} + +func initWC(wcc ...WC) WC { + var wc WC + for _, nwc := range wcc { + wc = nwc + } + return wc.Init() +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/doc.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/doc.go new file mode 100644 index 0000000..bfbb82e --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/doc.go @@ -0,0 +1,20 @@ +// Package decor provides common decorators for "github.com/vbauerster/mpb/v6" module. +/* + Some decorators returned by this package might have a closure state. It is ok to use + decorators concurrently, unless you share the same decorator among multiple + *mpb.Bar instances. To avoid data races, create new decorator per *mpb.Bar instance. + + Don't: + + p := mpb.New() + name := decor.Name("bar") + p.AddBar(100, mpb.AppendDecorators(name)) + p.AddBar(100, mpb.AppendDecorators(name)) + + Do: + + p := mpb.New() + p.AddBar(100, mpb.AppendDecorators(decor.Name("bar1"))) + p.AddBar(100, mpb.AppendDecorators(decor.Name("bar2"))) +*/ +package decor diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/elapsed.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/elapsed.go new file mode 100644 index 0000000..e389f15 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/elapsed.go @@ -0,0 +1,35 @@ +package decor + +import ( + "time" +) + +// Elapsed decorator. It's wrapper of NewElapsed. +// +// `style` one of [ET_STYLE_GO|ET_STYLE_HHMMSS|ET_STYLE_HHMM|ET_STYLE_MMSS] +// +// `wcc` optional WC config +// +func Elapsed(style TimeStyle, wcc ...WC) Decorator { + return NewElapsed(style, time.Now(), wcc...) +} + +// NewElapsed returns elapsed time decorator. +// +// `style` one of [ET_STYLE_GO|ET_STYLE_HHMMSS|ET_STYLE_HHMM|ET_STYLE_MMSS] +// +// `startTime` start time +// +// `wcc` optional WC config +// +func NewElapsed(style TimeStyle, startTime time.Time, wcc ...WC) Decorator { + var msg string + producer := chooseTimeProducer(style) + fn := func(s Statistics) string { + if !s.Completed { + msg = producer(time.Since(startTime)) + } + return msg + } + return Any(fn, wcc...) +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/eta.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/eta.go new file mode 100644 index 0000000..d03caa7 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/eta.go @@ -0,0 +1,203 @@ +package decor + +import ( + "fmt" + "math" + "time" + + "github.com/VividCortex/ewma" +) + +// TimeNormalizer interface. Implementors could be passed into +// MovingAverageETA, in order to affect i.e. normalize its output. +type TimeNormalizer interface { + Normalize(time.Duration) time.Duration +} + +// TimeNormalizerFunc is function type adapter to convert function +// into TimeNormalizer. +type TimeNormalizerFunc func(time.Duration) time.Duration + +func (f TimeNormalizerFunc) Normalize(src time.Duration) time.Duration { + return f(src) +} + +// EwmaETA exponential-weighted-moving-average based ETA decorator. +// For this decorator to work correctly you have to measure each +// iteration's duration and pass it to the +// *Bar.DecoratorEwmaUpdate(time.Duration) method after each increment. +func EwmaETA(style TimeStyle, age float64, wcc ...WC) Decorator { + var average ewma.MovingAverage + if age == 0 { + average = ewma.NewMovingAverage() + } else { + average = ewma.NewMovingAverage(age) + } + return MovingAverageETA(style, NewThreadSafeMovingAverage(average), nil, wcc...) +} + +// MovingAverageETA decorator relies on MovingAverage implementation to calculate its average. +// +// `style` one of [ET_STYLE_GO|ET_STYLE_HHMMSS|ET_STYLE_HHMM|ET_STYLE_MMSS] +// +// `average` implementation of MovingAverage interface +// +// `normalizer` available implementations are [FixedIntervalTimeNormalizer|MaxTolerateTimeNormalizer] +// +// `wcc` optional WC config +// +func MovingAverageETA(style TimeStyle, average ewma.MovingAverage, normalizer TimeNormalizer, wcc ...WC) Decorator { + d := &movingAverageETA{ + WC: initWC(wcc...), + average: average, + normalizer: normalizer, + producer: chooseTimeProducer(style), + } + return d +} + +type movingAverageETA struct { + WC + average ewma.MovingAverage + normalizer TimeNormalizer + producer func(time.Duration) string +} + +func (d *movingAverageETA) Decor(s Statistics) string { + v := math.Round(d.average.Value()) + remaining := time.Duration((s.Total - s.Current) * int64(v)) + if d.normalizer != nil { + remaining = d.normalizer.Normalize(remaining) + } + return d.FormatMsg(d.producer(remaining)) +} + +func (d *movingAverageETA) EwmaUpdate(n int64, dur time.Duration) { + durPerItem := float64(dur) / float64(n) + if math.IsInf(durPerItem, 0) || math.IsNaN(durPerItem) { + return + } + d.average.Add(durPerItem) +} + +// AverageETA decorator. It's wrapper of NewAverageETA. +// +// `style` one of [ET_STYLE_GO|ET_STYLE_HHMMSS|ET_STYLE_HHMM|ET_STYLE_MMSS] +// +// `wcc` optional WC config +// +func AverageETA(style TimeStyle, wcc ...WC) Decorator { + return NewAverageETA(style, time.Now(), nil, wcc...) +} + +// NewAverageETA decorator with user provided start time. +// +// `style` one of [ET_STYLE_GO|ET_STYLE_HHMMSS|ET_STYLE_HHMM|ET_STYLE_MMSS] +// +// `startTime` start time +// +// `normalizer` available implementations are [FixedIntervalTimeNormalizer|MaxTolerateTimeNormalizer] +// +// `wcc` optional WC config +// +func NewAverageETA(style TimeStyle, startTime time.Time, normalizer TimeNormalizer, wcc ...WC) Decorator { + d := &averageETA{ + WC: initWC(wcc...), + startTime: startTime, + normalizer: normalizer, + producer: chooseTimeProducer(style), + } + return d +} + +type averageETA struct { + WC + startTime time.Time + normalizer TimeNormalizer + producer func(time.Duration) string +} + +func (d *averageETA) Decor(s Statistics) string { + var remaining time.Duration + if s.Current != 0 { + durPerItem := float64(time.Since(d.startTime)) / float64(s.Current) + durPerItem = math.Round(durPerItem) + remaining = time.Duration((s.Total - s.Current) * int64(durPerItem)) + if d.normalizer != nil { + remaining = d.normalizer.Normalize(remaining) + } + } + return d.FormatMsg(d.producer(remaining)) +} + +func (d *averageETA) AverageAdjust(startTime time.Time) { + d.startTime = startTime +} + +// MaxTolerateTimeNormalizer returns implementation of TimeNormalizer. +func MaxTolerateTimeNormalizer(maxTolerate time.Duration) TimeNormalizer { + var normalized time.Duration + var lastCall time.Time + return TimeNormalizerFunc(func(remaining time.Duration) time.Duration { + if diff := normalized - remaining; diff <= 0 || diff > maxTolerate || remaining < time.Minute { + normalized = remaining + lastCall = time.Now() + return remaining + } + normalized -= time.Since(lastCall) + lastCall = time.Now() + return normalized + }) +} + +// FixedIntervalTimeNormalizer returns implementation of TimeNormalizer. +func FixedIntervalTimeNormalizer(updInterval int) TimeNormalizer { + var normalized time.Duration + var lastCall time.Time + var count int + return TimeNormalizerFunc(func(remaining time.Duration) time.Duration { + if count == 0 || remaining < time.Minute { + count = updInterval + normalized = remaining + lastCall = time.Now() + return remaining + } + count-- + normalized -= time.Since(lastCall) + lastCall = time.Now() + return normalized + }) +} + +func chooseTimeProducer(style TimeStyle) func(time.Duration) string { + switch style { + case ET_STYLE_HHMMSS: + return func(remaining time.Duration) string { + hours := int64(remaining/time.Hour) % 60 + minutes := int64(remaining/time.Minute) % 60 + seconds := int64(remaining/time.Second) % 60 + return fmt.Sprintf("%02d:%02d:%02d", hours, minutes, seconds) + } + case ET_STYLE_HHMM: + return func(remaining time.Duration) string { + hours := int64(remaining/time.Hour) % 60 + minutes := int64(remaining/time.Minute) % 60 + return fmt.Sprintf("%02d:%02d", hours, minutes) + } + case ET_STYLE_MMSS: + return func(remaining time.Duration) string { + hours := int64(remaining/time.Hour) % 60 + minutes := int64(remaining/time.Minute) % 60 + seconds := int64(remaining/time.Second) % 60 + if hours > 0 { + return fmt.Sprintf("%02d:%02d:%02d", hours, minutes, seconds) + } + return fmt.Sprintf("%02d:%02d", minutes, seconds) + } + default: + return func(remaining time.Duration) string { + // strip off nanoseconds + return ((remaining / time.Second) * time.Second).String() + } + } +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/merge.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/merge.go new file mode 100644 index 0000000..e41406a --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/merge.go @@ -0,0 +1,107 @@ +package decor + +import ( + "strings" + + "github.com/acarl005/stripansi" + "github.com/mattn/go-runewidth" +) + +// Merge wraps its decorator argument with intention to sync width +// with several decorators of another bar. Visual example: +// +// +----+--------+---------+--------+ +// | B1 | MERGE(D, P1, Pn) | +// +----+--------+---------+--------+ +// | B2 | D0 | D1 | Dn | +// +----+--------+---------+--------+ +// +func Merge(decorator Decorator, placeholders ...WC) Decorator { + if _, ok := decorator.Sync(); !ok || len(placeholders) == 0 { + return decorator + } + md := &mergeDecorator{ + Decorator: decorator, + wc: decorator.GetConf(), + placeHolders: make([]*placeHolderDecorator, len(placeholders)), + } + decorator.SetConf(WC{}) + for i, wc := range placeholders { + if (wc.C & DSyncWidth) == 0 { + return decorator + } + md.placeHolders[i] = &placeHolderDecorator{wc.Init()} + } + return md +} + +type mergeDecorator struct { + Decorator + wc WC + placeHolders []*placeHolderDecorator +} + +func (d *mergeDecorator) GetConf() WC { + return d.wc +} + +func (d *mergeDecorator) SetConf(conf WC) { + d.wc = conf.Init() +} + +func (d *mergeDecorator) MergeUnwrap() []Decorator { + decorators := make([]Decorator, len(d.placeHolders)) + for i, ph := range d.placeHolders { + decorators[i] = ph + } + return decorators +} + +func (d *mergeDecorator) Sync() (chan int, bool) { + return d.wc.Sync() +} + +func (d *mergeDecorator) Base() Decorator { + return d.Decorator +} + +func (d *mergeDecorator) Decor(s Statistics) string { + msg := d.Decorator.Decor(s) + pureWidth := runewidth.StringWidth(msg) + stripWidth := runewidth.StringWidth(stripansi.Strip(msg)) + cellCount := stripWidth + if (d.wc.C & DextraSpace) != 0 { + cellCount++ + } + + total := runewidth.StringWidth(d.placeHolders[0].FormatMsg("")) + pw := (cellCount - total) / len(d.placeHolders) + rem := (cellCount - total) % len(d.placeHolders) + + var diff int + for i := 1; i < len(d.placeHolders); i++ { + ph := d.placeHolders[i] + width := pw - diff + if (ph.WC.C & DextraSpace) != 0 { + width-- + if width < 0 { + width = 0 + } + } + max := runewidth.StringWidth(ph.FormatMsg(strings.Repeat(" ", width))) + total += max + diff = max - pw + } + + d.wc.wsync <- pw + rem + max := <-d.wc.wsync + return d.wc.fill(msg, max+total+(pureWidth-stripWidth)) +} + +type placeHolderDecorator struct { + WC +} + +func (d *placeHolderDecorator) Decor(Statistics) string { + return "" +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/moving_average.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/moving_average.go new file mode 100644 index 0000000..50ac9c3 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/moving_average.go @@ -0,0 +1,68 @@ +package decor + +import ( + "sort" + "sync" + + "github.com/VividCortex/ewma" +) + +type threadSafeMovingAverage struct { + ewma.MovingAverage + mu sync.Mutex +} + +func (s *threadSafeMovingAverage) Add(value float64) { + s.mu.Lock() + s.MovingAverage.Add(value) + s.mu.Unlock() +} + +func (s *threadSafeMovingAverage) Value() float64 { + s.mu.Lock() + defer s.mu.Unlock() + return s.MovingAverage.Value() +} + +func (s *threadSafeMovingAverage) Set(value float64) { + s.mu.Lock() + s.MovingAverage.Set(value) + s.mu.Unlock() +} + +// NewThreadSafeMovingAverage converts provided ewma.MovingAverage +// into thread safe ewma.MovingAverage. +func NewThreadSafeMovingAverage(average ewma.MovingAverage) ewma.MovingAverage { + if tsma, ok := average.(*threadSafeMovingAverage); ok { + return tsma + } + return &threadSafeMovingAverage{MovingAverage: average} +} + +type medianWindow [3]float64 + +func (s *medianWindow) Len() int { return len(s) } +func (s *medianWindow) Swap(i, j int) { s[i], s[j] = s[j], s[i] } +func (s *medianWindow) Less(i, j int) bool { return s[i] < s[j] } + +func (s *medianWindow) Add(value float64) { + s[0], s[1] = s[1], s[2] + s[2] = value +} + +func (s *medianWindow) Value() float64 { + tmp := *s + sort.Sort(&tmp) + return tmp[1] +} + +func (s *medianWindow) Set(value float64) { + for i := 0; i < len(s); i++ { + s[i] = value + } +} + +// NewMedian is fixed last 3 samples median MovingAverage. +func NewMedian() ewma.MovingAverage { + return NewThreadSafeMovingAverage(new(medianWindow)) +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/name.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/name.go new file mode 100644 index 0000000..3af3112 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/name.go @@ -0,0 +1,12 @@ +package decor + +// Name decorator displays text that is set once and can't be changed +// during decorator's lifetime. +// +// `str` string to display +// +// `wcc` optional WC config +// +func Name(str string, wcc ...WC) Decorator { + return Any(func(Statistics) string { return str }, wcc...) +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/on_complete.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/on_complete.go new file mode 100644 index 0000000..f46b19a --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/on_complete.go @@ -0,0 +1,37 @@ +package decor + +// OnComplete returns decorator, which wraps provided decorator, with +// sole purpose to display provided message on complete event. +// +// `decorator` Decorator to wrap +// +// `message` message to display on complete event +// +func OnComplete(decorator Decorator, message string) Decorator { + d := &onCompleteWrapper{ + Decorator: decorator, + msg: message, + } + if md, ok := decorator.(*mergeDecorator); ok { + d.Decorator, md.Decorator = md.Decorator, d + return md + } + return d +} + +type onCompleteWrapper struct { + Decorator + msg string +} + +func (d *onCompleteWrapper) Decor(s Statistics) string { + if s.Completed { + wc := d.GetConf() + return wc.FormatMsg(d.msg) + } + return d.Decorator.Decor(s) +} + +func (d *onCompleteWrapper) Base() Decorator { + return d.Decorator +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/percentage.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/percentage.go new file mode 100644 index 0000000..f4922bb --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/percentage.go @@ -0,0 +1,58 @@ +package decor + +import ( + "fmt" + "io" + "strconv" + + "github.com/vbauerster/mpb/v6/internal" +) + +type percentageType float64 + +func (s percentageType) Format(st fmt.State, verb rune) { + var prec int + switch verb { + case 'd': + case 's': + prec = -1 + default: + if p, ok := st.Precision(); ok { + prec = p + } else { + prec = 6 + } + } + + io.WriteString(st, strconv.FormatFloat(float64(s), 'f', prec, 64)) + + if st.Flag(' ') { + io.WriteString(st, " ") + } + io.WriteString(st, "%") +} + +// Percentage returns percentage decorator. It's a wrapper of NewPercentage. +func Percentage(wcc ...WC) Decorator { + return NewPercentage("% d", wcc...) +} + +// NewPercentage percentage decorator with custom format string. +// +// format examples: +// +// format="%.1f" output: "1.0%" +// format="% .1f" output: "1.0 %" +// format="%d" output: "1%" +// format="% d" output: "1 %" +// +func NewPercentage(format string, wcc ...WC) Decorator { + if format == "" { + format = "% d" + } + f := func(s Statistics) string { + p := internal.Percentage(s.Total, s.Current, 100) + return fmt.Sprintf(format, percentageType(p)) + } + return Any(f, wcc...) +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/size_type.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/size_type.go new file mode 100644 index 0000000..e4b9740 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/size_type.go @@ -0,0 +1,109 @@ +package decor + +import ( + "fmt" + "io" + "math" + "strconv" +) + +//go:generate stringer -type=SizeB1024 -trimprefix=_i +//go:generate stringer -type=SizeB1000 -trimprefix=_ + +const ( + _ib SizeB1024 = iota + 1 + _iKiB SizeB1024 = 1 << (iota * 10) + _iMiB + _iGiB + _iTiB +) + +// SizeB1024 named type, which implements fmt.Formatter interface. It +// adjusts its value according to byte size multiple by 1024 and appends +// appropriate size marker (KiB, MiB, GiB, TiB). +type SizeB1024 int64 + +func (self SizeB1024) Format(st fmt.State, verb rune) { + var prec int + switch verb { + case 'd': + case 's': + prec = -1 + default: + if p, ok := st.Precision(); ok { + prec = p + } else { + prec = 6 + } + } + + var unit SizeB1024 + switch { + case self < _iKiB: + unit = _ib + case self < _iMiB: + unit = _iKiB + case self < _iGiB: + unit = _iMiB + case self < _iTiB: + unit = _iGiB + case self <= math.MaxInt64: + unit = _iTiB + } + + io.WriteString(st, strconv.FormatFloat(float64(self)/float64(unit), 'f', prec, 64)) + + if st.Flag(' ') { + io.WriteString(st, " ") + } + io.WriteString(st, unit.String()) +} + +const ( + _b SizeB1000 = 1 + _KB SizeB1000 = _b * 1000 + _MB SizeB1000 = _KB * 1000 + _GB SizeB1000 = _MB * 1000 + _TB SizeB1000 = _GB * 1000 +) + +// SizeB1000 named type, which implements fmt.Formatter interface. It +// adjusts its value according to byte size multiple by 1000 and appends +// appropriate size marker (KB, MB, GB, TB). +type SizeB1000 int64 + +func (self SizeB1000) Format(st fmt.State, verb rune) { + var prec int + switch verb { + case 'd': + case 's': + prec = -1 + default: + if p, ok := st.Precision(); ok { + prec = p + } else { + prec = 6 + } + } + + var unit SizeB1000 + switch { + case self < _KB: + unit = _b + case self < _MB: + unit = _KB + case self < _GB: + unit = _MB + case self < _TB: + unit = _GB + case self <= math.MaxInt64: + unit = _TB + } + + io.WriteString(st, strconv.FormatFloat(float64(self)/float64(unit), 'f', prec, 64)) + + if st.Flag(' ') { + io.WriteString(st, " ") + } + io.WriteString(st, unit.String()) +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/size_type_test.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/size_type_test.go new file mode 100644 index 0000000..8601e25 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/size_type_test.go @@ -0,0 +1,102 @@ +package decor + +import ( + "fmt" + "testing" +) + +func TestB1024(t *testing.T) { + cases := map[string]struct { + value int64 + verb string + expected string + }{ + "verb %f": {12345678, "%f", "11.773756MiB"}, + "verb %.0f": {12345678, "%.0f", "12MiB"}, + "verb %.1f": {12345678, "%.1f", "11.8MiB"}, + "verb %.2f": {12345678, "%.2f", "11.77MiB"}, + "verb %.3f": {12345678, "%.3f", "11.774MiB"}, + + "verb % f": {12345678, "% f", "11.773756 MiB"}, + "verb % .0f": {12345678, "% .0f", "12 MiB"}, + "verb % .1f": {12345678, "% .1f", "11.8 MiB"}, + "verb % .2f": {12345678, "% .2f", "11.77 MiB"}, + "verb % .3f": {12345678, "% .3f", "11.774 MiB"}, + + "1000 %f": {1000, "%f", "1000.000000b"}, + "1000 %d": {1000, "%d", "1000b"}, + "1000 %s": {1000, "%s", "1000b"}, + "1024 %f": {1024, "%f", "1.000000KiB"}, + "1024 %d": {1024, "%d", "1KiB"}, + "1024 %.1f": {1024, "%.1f", "1.0KiB"}, + "1024 %s": {1024, "%s", "1KiB"}, + "3*MiB+140KiB %f": {3*int64(_iMiB) + 140*int64(_iKiB), "%f", "3.136719MiB"}, + "3*MiB+140KiB %d": {3*int64(_iMiB) + 140*int64(_iKiB), "%d", "3MiB"}, + "3*MiB+140KiB %.1f": {3*int64(_iMiB) + 140*int64(_iKiB), "%.1f", "3.1MiB"}, + "3*MiB+140KiB %s": {3*int64(_iMiB) + 140*int64(_iKiB), "%s", "3.13671875MiB"}, + "2*GiB %f": {2 * int64(_iGiB), "%f", "2.000000GiB"}, + "2*GiB %d": {2 * int64(_iGiB), "%d", "2GiB"}, + "2*GiB %.1f": {2 * int64(_iGiB), "%.1f", "2.0GiB"}, + "2*GiB %s": {2 * int64(_iGiB), "%s", "2GiB"}, + "4*TiB %f": {4 * int64(_iTiB), "%f", "4.000000TiB"}, + "4*TiB %d": {4 * int64(_iTiB), "%d", "4TiB"}, + "4*TiB %.1f": {4 * int64(_iTiB), "%.1f", "4.0TiB"}, + "4*TiB %s": {4 * int64(_iTiB), "%s", "4TiB"}, + } + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + got := fmt.Sprintf(tc.verb, SizeB1024(tc.value)) + if got != tc.expected { + t.Fatalf("expected: %q, got: %q\n", tc.expected, got) + } + }) + } +} + +func TestB1000(t *testing.T) { + cases := map[string]struct { + value int64 + verb string + expected string + }{ + "verb %f": {12345678, "%f", "12.345678MB"}, + "verb %.0f": {12345678, "%.0f", "12MB"}, + "verb %.1f": {12345678, "%.1f", "12.3MB"}, + "verb %.2f": {12345678, "%.2f", "12.35MB"}, + "verb %.3f": {12345678, "%.3f", "12.346MB"}, + + "verb % f": {12345678, "% f", "12.345678 MB"}, + "verb % .0f": {12345678, "% .0f", "12 MB"}, + "verb % .1f": {12345678, "% .1f", "12.3 MB"}, + "verb % .2f": {12345678, "% .2f", "12.35 MB"}, + "verb % .3f": {12345678, "% .3f", "12.346 MB"}, + + "1000 %f": {1000, "%f", "1.000000KB"}, + "1000 %d": {1000, "%d", "1KB"}, + "1000 %s": {1000, "%s", "1KB"}, + "1024 %f": {1024, "%f", "1.024000KB"}, + "1024 %d": {1024, "%d", "1KB"}, + "1024 %.1f": {1024, "%.1f", "1.0KB"}, + "1024 %s": {1024, "%s", "1.024KB"}, + "3*MB+140*KB %f": {3*int64(_MB) + 140*int64(_KB), "%f", "3.140000MB"}, + "3*MB+140*KB %d": {3*int64(_MB) + 140*int64(_KB), "%d", "3MB"}, + "3*MB+140*KB %.1f": {3*int64(_MB) + 140*int64(_KB), "%.1f", "3.1MB"}, + "3*MB+140*KB %s": {3*int64(_MB) + 140*int64(_KB), "%s", "3.14MB"}, + "2*GB %f": {2 * int64(_GB), "%f", "2.000000GB"}, + "2*GB %d": {2 * int64(_GB), "%d", "2GB"}, + "2*GB %.1f": {2 * int64(_GB), "%.1f", "2.0GB"}, + "2*GB %s": {2 * int64(_GB), "%s", "2GB"}, + "4*TB %f": {4 * int64(_TB), "%f", "4.000000TB"}, + "4*TB %d": {4 * int64(_TB), "%d", "4TB"}, + "4*TB %.1f": {4 * int64(_TB), "%.1f", "4.0TB"}, + "4*TB %s": {4 * int64(_TB), "%s", "4TB"}, + } + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + got := fmt.Sprintf(tc.verb, SizeB1000(tc.value)) + if got != tc.expected { + t.Fatalf("expected: %q, got: %q\n", tc.expected, got) + } + }) + } +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/sizeb1000_string.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/sizeb1000_string.go new file mode 100644 index 0000000..3f32ef7 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/sizeb1000_string.go @@ -0,0 +1,41 @@ +// Code generated by "stringer -type=SizeB1000 -trimprefix=_"; DO NOT EDIT. + +package decor + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[_b-1] + _ = x[_KB-1000] + _ = x[_MB-1000000] + _ = x[_GB-1000000000] + _ = x[_TB-1000000000000] +} + +const ( + _SizeB1000_name_0 = "b" + _SizeB1000_name_1 = "KB" + _SizeB1000_name_2 = "MB" + _SizeB1000_name_3 = "GB" + _SizeB1000_name_4 = "TB" +) + +func (i SizeB1000) String() string { + switch { + case i == 1: + return _SizeB1000_name_0 + case i == 1000: + return _SizeB1000_name_1 + case i == 1000000: + return _SizeB1000_name_2 + case i == 1000000000: + return _SizeB1000_name_3 + case i == 1000000000000: + return _SizeB1000_name_4 + default: + return "SizeB1000(" + strconv.FormatInt(int64(i), 10) + ")" + } +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/sizeb1024_string.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/sizeb1024_string.go new file mode 100644 index 0000000..9fca66c --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/sizeb1024_string.go @@ -0,0 +1,41 @@ +// Code generated by "stringer -type=SizeB1024 -trimprefix=_i"; DO NOT EDIT. + +package decor + +import "strconv" + +func _() { + // An "invalid array index" compiler error signifies that the constant values have changed. + // Re-run the stringer command to generate them again. + var x [1]struct{} + _ = x[_ib-1] + _ = x[_iKiB-1024] + _ = x[_iMiB-1048576] + _ = x[_iGiB-1073741824] + _ = x[_iTiB-1099511627776] +} + +const ( + _SizeB1024_name_0 = "b" + _SizeB1024_name_1 = "KiB" + _SizeB1024_name_2 = "MiB" + _SizeB1024_name_3 = "GiB" + _SizeB1024_name_4 = "TiB" +) + +func (i SizeB1024) String() string { + switch { + case i == 1: + return _SizeB1024_name_0 + case i == 1024: + return _SizeB1024_name_1 + case i == 1048576: + return _SizeB1024_name_2 + case i == 1073741824: + return _SizeB1024_name_3 + case i == 1099511627776: + return _SizeB1024_name_4 + default: + return "SizeB1024(" + strconv.FormatInt(int64(i), 10) + ")" + } +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/speed.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/speed.go new file mode 100644 index 0000000..634edab --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/speed.go @@ -0,0 +1,171 @@ +package decor + +import ( + "fmt" + "io" + "math" + "time" + + "github.com/VividCortex/ewma" +) + +// FmtAsSpeed adds "/s" to the end of the input formatter. To be +// used with SizeB1000 or SizeB1024 types, for example: +// +// fmt.Printf("%.1f", FmtAsSpeed(SizeB1024(2048))) +// +func FmtAsSpeed(input fmt.Formatter) fmt.Formatter { + return &speedFormatter{input} +} + +type speedFormatter struct { + fmt.Formatter +} + +func (self *speedFormatter) Format(st fmt.State, verb rune) { + self.Formatter.Format(st, verb) + io.WriteString(st, "/s") +} + +// EwmaSpeed exponential-weighted-moving-average based speed decorator. +// For this decorator to work correctly you have to measure each +// iteration's duration and pass it to the +// *Bar.DecoratorEwmaUpdate(time.Duration) method after each increment. +func EwmaSpeed(unit int, format string, age float64, wcc ...WC) Decorator { + var average ewma.MovingAverage + if age == 0 { + average = ewma.NewMovingAverage() + } else { + average = ewma.NewMovingAverage(age) + } + return MovingAverageSpeed(unit, format, NewThreadSafeMovingAverage(average), wcc...) +} + +// MovingAverageSpeed decorator relies on MovingAverage implementation +// to calculate its average. +// +// `unit` one of [0|UnitKiB|UnitKB] zero for no unit +// +// `format` printf compatible verb for value, like "%f" or "%d" +// +// `average` MovingAverage implementation +// +// `wcc` optional WC config +// +// format examples: +// +// unit=UnitKiB, format="%.1f" output: "1.0MiB/s" +// unit=UnitKiB, format="% .1f" output: "1.0 MiB/s" +// unit=UnitKB, format="%.1f" output: "1.0MB/s" +// unit=UnitKB, format="% .1f" output: "1.0 MB/s" +// +func MovingAverageSpeed(unit int, format string, average ewma.MovingAverage, wcc ...WC) Decorator { + if format == "" { + format = "%.0f" + } + d := &movingAverageSpeed{ + WC: initWC(wcc...), + average: average, + producer: chooseSpeedProducer(unit, format), + } + return d +} + +type movingAverageSpeed struct { + WC + producer func(float64) string + average ewma.MovingAverage + msg string +} + +func (d *movingAverageSpeed) Decor(s Statistics) string { + if !s.Completed { + var speed float64 + if v := d.average.Value(); v > 0 { + speed = 1 / v + } + d.msg = d.producer(speed * 1e9) + } + return d.FormatMsg(d.msg) +} + +func (d *movingAverageSpeed) EwmaUpdate(n int64, dur time.Duration) { + durPerByte := float64(dur) / float64(n) + if math.IsInf(durPerByte, 0) || math.IsNaN(durPerByte) { + return + } + d.average.Add(durPerByte) +} + +// AverageSpeed decorator with dynamic unit measure adjustment. It's +// a wrapper of NewAverageSpeed. +func AverageSpeed(unit int, format string, wcc ...WC) Decorator { + return NewAverageSpeed(unit, format, time.Now(), wcc...) +} + +// NewAverageSpeed decorator with dynamic unit measure adjustment and +// user provided start time. +// +// `unit` one of [0|UnitKiB|UnitKB] zero for no unit +// +// `format` printf compatible verb for value, like "%f" or "%d" +// +// `startTime` start time +// +// `wcc` optional WC config +// +// format examples: +// +// unit=UnitKiB, format="%.1f" output: "1.0MiB/s" +// unit=UnitKiB, format="% .1f" output: "1.0 MiB/s" +// unit=UnitKB, format="%.1f" output: "1.0MB/s" +// unit=UnitKB, format="% .1f" output: "1.0 MB/s" +// +func NewAverageSpeed(unit int, format string, startTime time.Time, wcc ...WC) Decorator { + if format == "" { + format = "%.0f" + } + d := &averageSpeed{ + WC: initWC(wcc...), + startTime: startTime, + producer: chooseSpeedProducer(unit, format), + } + return d +} + +type averageSpeed struct { + WC + startTime time.Time + producer func(float64) string + msg string +} + +func (d *averageSpeed) Decor(s Statistics) string { + if !s.Completed { + speed := float64(s.Current) / float64(time.Since(d.startTime)) + d.msg = d.producer(speed * 1e9) + } + + return d.FormatMsg(d.msg) +} + +func (d *averageSpeed) AverageAdjust(startTime time.Time) { + d.startTime = startTime +} + +func chooseSpeedProducer(unit int, format string) func(float64) string { + switch unit { + case UnitKiB: + return func(speed float64) string { + return fmt.Sprintf(format, FmtAsSpeed(SizeB1024(math.Round(speed)))) + } + case UnitKB: + return func(speed float64) string { + return fmt.Sprintf(format, FmtAsSpeed(SizeB1000(math.Round(speed)))) + } + default: + return func(speed float64) string { + return fmt.Sprintf(format, speed) + } + } +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/speed_test.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/speed_test.go new file mode 100644 index 0000000..7f7d09d --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/speed_test.go @@ -0,0 +1,262 @@ +package decor + +import ( + "testing" + "time" +) + +func TestSpeedKiBDecor(t *testing.T) { + cases := []struct { + name string + fmt string + unit int + current int64 + elapsed time.Duration + expected string + }{ + { + name: "empty fmt", + unit: UnitKiB, + fmt: "", + current: 0, + elapsed: time.Second, + expected: "0b/s", + }, + { + name: "UnitKiB:%d:0b", + unit: UnitKiB, + fmt: "%d", + current: 0, + elapsed: time.Second, + expected: "0b/s", + }, + { + name: "UnitKiB:% .2f:0b", + unit: UnitKiB, + fmt: "% .2f", + current: 0, + elapsed: time.Second, + expected: "0.00 b/s", + }, + { + name: "UnitKiB:%d:1b", + unit: UnitKiB, + fmt: "%d", + current: 1, + elapsed: time.Second, + expected: "1b/s", + }, + { + name: "UnitKiB:% .2f:1b", + unit: UnitKiB, + fmt: "% .2f", + current: 1, + elapsed: time.Second, + expected: "1.00 b/s", + }, + { + name: "UnitKiB:%d:KiB", + unit: UnitKiB, + fmt: "%d", + current: 2 * int64(_iKiB), + elapsed: 1 * time.Second, + expected: "2KiB/s", + }, + { + name: "UnitKiB:% .f:KiB", + unit: UnitKiB, + fmt: "% .2f", + current: 2 * int64(_iKiB), + elapsed: 1 * time.Second, + expected: "2.00 KiB/s", + }, + { + name: "UnitKiB:%d:MiB", + unit: UnitKiB, + fmt: "%d", + current: 2 * int64(_iMiB), + elapsed: 1 * time.Second, + expected: "2MiB/s", + }, + { + name: "UnitKiB:% .2f:MiB", + unit: UnitKiB, + fmt: "% .2f", + current: 2 * int64(_iMiB), + elapsed: 1 * time.Second, + expected: "2.00 MiB/s", + }, + { + name: "UnitKiB:%d:GiB", + unit: UnitKiB, + fmt: "%d", + current: 2 * int64(_iGiB), + elapsed: 1 * time.Second, + expected: "2GiB/s", + }, + { + name: "UnitKiB:% .2f:GiB", + unit: UnitKiB, + fmt: "% .2f", + current: 2 * int64(_iGiB), + elapsed: 1 * time.Second, + expected: "2.00 GiB/s", + }, + { + name: "UnitKiB:%d:TiB", + unit: UnitKiB, + fmt: "%d", + current: 2 * int64(_iTiB), + elapsed: 1 * time.Second, + expected: "2TiB/s", + }, + { + name: "UnitKiB:% .2f:TiB", + unit: UnitKiB, + fmt: "% .2f", + current: 2 * int64(_iTiB), + elapsed: 1 * time.Second, + expected: "2.00 TiB/s", + }, + } + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + decor := NewAverageSpeed(tc.unit, tc.fmt, time.Now().Add(-tc.elapsed)) + stat := Statistics{ + Current: tc.current, + } + res := decor.Decor(stat) + if res != tc.expected { + t.Fatalf("expected: %q, got: %q\n", tc.expected, res) + } + }) + } +} + +func TestSpeedKBDecor(t *testing.T) { + cases := []struct { + name string + fmt string + unit int + current int64 + elapsed time.Duration + expected string + }{ + { + name: "empty fmt", + unit: UnitKB, + fmt: "", + current: 0, + elapsed: time.Second, + expected: "0b/s", + }, + { + name: "UnitKB:%d:0b", + unit: UnitKB, + fmt: "%d", + current: 0, + elapsed: time.Second, + expected: "0b/s", + }, + { + name: "UnitKB:% .2f:0b", + unit: UnitKB, + fmt: "% .2f", + current: 0, + elapsed: time.Second, + expected: "0.00 b/s", + }, + { + name: "UnitKB:%d:1b", + unit: UnitKB, + fmt: "%d", + current: 1, + elapsed: time.Second, + expected: "1b/s", + }, + { + name: "UnitKB:% .2f:1b", + unit: UnitKB, + fmt: "% .2f", + current: 1, + elapsed: time.Second, + expected: "1.00 b/s", + }, + { + name: "UnitKB:%d:KB", + unit: UnitKB, + fmt: "%d", + current: 2 * int64(_KB), + elapsed: 1 * time.Second, + expected: "2KB/s", + }, + { + name: "UnitKB:% .f:KB", + unit: UnitKB, + fmt: "% .2f", + current: 2 * int64(_KB), + elapsed: 1 * time.Second, + expected: "2.00 KB/s", + }, + { + name: "UnitKB:%d:MB", + unit: UnitKB, + fmt: "%d", + current: 2 * int64(_MB), + elapsed: 1 * time.Second, + expected: "2MB/s", + }, + { + name: "UnitKB:% .2f:MB", + unit: UnitKB, + fmt: "% .2f", + current: 2 * int64(_MB), + elapsed: 1 * time.Second, + expected: "2.00 MB/s", + }, + { + name: "UnitKB:%d:GB", + unit: UnitKB, + fmt: "%d", + current: 2 * int64(_GB), + elapsed: 1 * time.Second, + expected: "2GB/s", + }, + { + name: "UnitKB:% .2f:GB", + unit: UnitKB, + fmt: "% .2f", + current: 2 * int64(_GB), + elapsed: 1 * time.Second, + expected: "2.00 GB/s", + }, + { + name: "UnitKB:%d:TB", + unit: UnitKB, + fmt: "%d", + current: 2 * int64(_TB), + elapsed: 1 * time.Second, + expected: "2TB/s", + }, + { + name: "UnitKB:% .2f:TB", + unit: UnitKB, + fmt: "% .2f", + current: 2 * int64(_TB), + elapsed: 1 * time.Second, + expected: "2.00 TB/s", + }, + } + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + decor := NewAverageSpeed(tc.unit, tc.fmt, time.Now().Add(-tc.elapsed)) + stat := Statistics{ + Current: tc.current, + } + res := decor.Decor(stat) + if res != tc.expected { + t.Fatalf("expected: %q, got: %q\n", tc.expected, res) + } + }) + } +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/spinner.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/spinner.go new file mode 100644 index 0000000..6871639 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decor/spinner.go @@ -0,0 +1,21 @@ +package decor + +var defaultSpinnerStyle = []string{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"} + +// Spinner returns spinner decorator. +// +// `frames` spinner frames, if nil or len==0, default is used +// +// `wcc` optional WC config +func Spinner(frames []string, wcc ...WC) Decorator { + if len(frames) == 0 { + frames = defaultSpinnerStyle + } + var count uint + f := func(s Statistics) string { + frame := frames[count%uint(len(frames))] + count++ + return frame + } + return Any(f, wcc...) +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decorators_test.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decorators_test.go new file mode 100644 index 0000000..99c49ce --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/decorators_test.go @@ -0,0 +1,221 @@ +package mpb_test + +import ( + "sync" + "testing" + + "github.com/vbauerster/mpb/v6" + "github.com/vbauerster/mpb/v6/decor" +) + +func TestNameDecorator(t *testing.T) { + tests := []struct { + decorator decor.Decorator + want string + }{ + { + decorator: decor.Name("Test"), + want: "Test", + }, + { + decorator: decor.Name("Test", decor.WC{W: len("Test")}), + want: "Test", + }, + { + decorator: decor.Name("Test", decor.WC{W: 10}), + want: " Test", + }, + { + decorator: decor.Name("Test", decor.WC{W: 10, C: decor.DidentRight}), + want: "Test ", + }, + } + + for _, test := range tests { + got := test.decorator.Decor(decor.Statistics{}) + if got != test.want { + t.Errorf("Want: %q, Got: %q\n", test.want, got) + } + } +} + +type step struct { + stat decor.Statistics + decorator decor.Decorator + want string +} + +func TestPercentageDwidthSync(t *testing.T) { + + testCases := [][]step{ + { + { + decor.Statistics{Total: 100, Current: 8}, + decor.Percentage(decor.WCSyncWidth), + "8 %", + }, + { + decor.Statistics{Total: 100, Current: 9}, + decor.Percentage(decor.WCSyncWidth), + "9 %", + }, + }, + { + { + decor.Statistics{Total: 100, Current: 9}, + decor.Percentage(decor.WCSyncWidth), + " 9 %", + }, + { + decor.Statistics{Total: 100, Current: 10}, + decor.Percentage(decor.WCSyncWidth), + "10 %", + }, + }, + { + { + decor.Statistics{Total: 100, Current: 9}, + decor.Percentage(decor.WCSyncWidth), + " 9 %", + }, + { + decor.Statistics{Total: 100, Current: 100}, + decor.Percentage(decor.WCSyncWidth), + "100 %", + }, + }, + } + + testDecoratorConcurrently(t, testCases) +} + +func TestPercentageDwidthSyncDidentRight(t *testing.T) { + + testCases := [][]step{ + { + { + decor.Statistics{Total: 100, Current: 8}, + decor.Percentage(decor.WCSyncWidthR), + "8 %", + }, + { + decor.Statistics{Total: 100, Current: 9}, + decor.Percentage(decor.WCSyncWidthR), + "9 %", + }, + }, + { + { + decor.Statistics{Total: 100, Current: 9}, + decor.Percentage(decor.WCSyncWidthR), + "9 % ", + }, + { + decor.Statistics{Total: 100, Current: 10}, + decor.Percentage(decor.WCSyncWidthR), + "10 %", + }, + }, + { + { + decor.Statistics{Total: 100, Current: 9}, + decor.Percentage(decor.WCSyncWidthR), + "9 % ", + }, + { + decor.Statistics{Total: 100, Current: 100}, + decor.Percentage(decor.WCSyncWidthR), + "100 %", + }, + }, + } + + testDecoratorConcurrently(t, testCases) +} + +func TestPercentageDSyncSpace(t *testing.T) { + + testCases := [][]step{ + { + { + decor.Statistics{Total: 100, Current: 8}, + decor.Percentage(decor.WCSyncSpace), + " 8 %", + }, + { + decor.Statistics{Total: 100, Current: 9}, + decor.Percentage(decor.WCSyncSpace), + " 9 %", + }, + }, + { + { + decor.Statistics{Total: 100, Current: 9}, + decor.Percentage(decor.WCSyncSpace), + " 9 %", + }, + { + decor.Statistics{Total: 100, Current: 10}, + decor.Percentage(decor.WCSyncSpace), + " 10 %", + }, + }, + { + { + decor.Statistics{Total: 100, Current: 9}, + decor.Percentage(decor.WCSyncSpace), + " 9 %", + }, + { + decor.Statistics{Total: 100, Current: 100}, + decor.Percentage(decor.WCSyncSpace), + " 100 %", + }, + }, + } + + testDecoratorConcurrently(t, testCases) +} + +func testDecoratorConcurrently(t *testing.T, testCases [][]step) { + if len(testCases) == 0 { + t.Fail() + } + + for _, columnCase := range testCases { + mpb.SyncWidth(toSyncMatrix(columnCase)) + numBars := len(columnCase) + gott := make([]chan string, numBars) + wg := new(sync.WaitGroup) + wg.Add(numBars) + for i, step := range columnCase { + step := step + ch := make(chan string, 1) + go func() { + defer wg.Done() + ch <- step.decorator.Decor(step.stat) + }() + gott[i] = ch + } + wg.Wait() + + for i, ch := range gott { + got := <-ch + want := columnCase[i].want + if got != want { + t.Errorf("Want: %q, Got: %q\n", want, got) + } + } + + } +} + +func toSyncMatrix(ss []step) map[int][]chan int { + var column []chan int + for _, s := range ss { + if ch, ok := s.decorator.Sync(); ok { + column = append(column, ch) + } + } + return map[int][]chan int{0: column} +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/doc.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/doc.go new file mode 100644 index 0000000..5ada717 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/doc.go @@ -0,0 +1,2 @@ +// Package mpb is a library for rendering progress bars in terminal applications. +package mpb diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/draw_test.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/draw_test.go new file mode 100644 index 0000000..2553ca6 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/draw_test.go @@ -0,0 +1,378 @@ +package mpb + +import ( + "bytes" + "testing" + "unicode/utf8" +) + +func TestDraw(t *testing.T) { + // key is termWidth + testSuite := map[int][]struct { + name string + style string + total int64 + current int64 + refill int64 + barWidth int + trim bool + reverse bool + want string + }{ + 0: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: "… ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "", + }, + }, + 1: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: "… ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "", + }, + }, + 2: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[]", + }, + }, + 3: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[-]", + }, + }, + 4: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " [] ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[>-]", + }, + }, + 5: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " [-] ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[>--]", + }, + }, + 6: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " [>-] ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[>---]", + }, + }, + 7: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " [>--] ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[=>---]", + }, + }, + 8: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " [>---] ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[=>----]", + }, + }, + 80: { + { + name: "t,c{60,20}", + total: 60, + current: 20, + want: " [========================>---------------------------------------------------] ", + }, + { + name: "t,c{60,20}trim", + total: 60, + current: 20, + trim: true, + want: "[=========================>----------------------------------------------------]", + }, + { + name: "t,c,bw{60,20,60}", + total: 60, + current: 20, + barWidth: 60, + want: " [==================>---------------------------------------] ", + }, + { + name: "t,c,bw{60,20,60}trim", + total: 60, + current: 20, + barWidth: 60, + trim: true, + want: "[==================>---------------------------------------]", + }, + }, + 100: { + { + name: "t,c{100,0}", + total: 100, + current: 0, + want: " [------------------------------------------------------------------------------------------------] ", + }, + { + name: "t,c{100,0}trim", + total: 100, + current: 0, + trim: true, + want: "[--------------------------------------------------------------------------------------------------]", + }, + { + name: "t,c{100,1}", + total: 100, + current: 1, + want: " [>-----------------------------------------------------------------------------------------------] ", + }, + { + name: "t,c{100,1}trim", + total: 100, + current: 1, + trim: true, + want: "[>-------------------------------------------------------------------------------------------------]", + }, + { + name: "t,c{100,99}", + total: 100, + current: 99, + want: " [==============================================================================================>-] ", + }, + { + name: "t,c{100,99}trim", + total: 100, + current: 99, + trim: true, + want: "[================================================================================================>-]", + }, + { + name: "t,c{100,100}", + total: 100, + current: 100, + want: " [================================================================================================] ", + }, + { + name: "t,c{100,100}trim", + total: 100, + current: 100, + trim: true, + want: "[==================================================================================================]", + }, + { + name: "t,c,r{100,100,100}trim", + total: 100, + current: 100, + refill: 100, + trim: true, + want: "[++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++]", + }, + { + name: "t,c{100,33}", + total: 100, + current: 33, + want: " [===============================>----------------------------------------------------------------] ", + }, + { + name: "t,c{100,33}trim", + total: 100, + current: 33, + trim: true, + want: "[===============================>------------------------------------------------------------------]", + }, + { + name: "t,c{100,33}trim,rev", + total: 100, + current: 33, + trim: true, + reverse: true, + want: "[------------------------------------------------------------------<===============================]", + }, + { + name: "t,c,r{100,33,33}", + total: 100, + current: 33, + refill: 33, + want: " [+++++++++++++++++++++++++++++++>----------------------------------------------------------------] ", + }, + { + name: "t,c,r{100,33,33}trim", + total: 100, + current: 33, + refill: 33, + trim: true, + want: "[+++++++++++++++++++++++++++++++>------------------------------------------------------------------]", + }, + { + name: "t,c,r{100,33,33}trim,rev", + total: 100, + current: 33, + refill: 33, + trim: true, + reverse: true, + want: "[------------------------------------------------------------------<+++++++++++++++++++++++++++++++]", + }, + { + name: "t,c,r{100,40,33}", + total: 100, + current: 40, + refill: 33, + want: " [++++++++++++++++++++++++++++++++=====>----------------------------------------------------------] ", + }, + { + name: "t,c,r{100,40,33}trim", + total: 100, + current: 40, + refill: 33, + trim: true, + want: "[++++++++++++++++++++++++++++++++======>-----------------------------------------------------------]", + }, + { + name: "t,c,r{100,40,33},rev", + total: 100, + current: 40, + refill: 33, + reverse: true, + want: " [----------------------------------------------------------<=====++++++++++++++++++++++++++++++++] ", + }, + { + name: "t,c,r{100,40,33}trim,rev", + total: 100, + current: 40, + refill: 33, + trim: true, + reverse: true, + want: "[-----------------------------------------------------------<======++++++++++++++++++++++++++++++++]", + }, + { + name: "[=の-] t,c{100,1}", + style: "[=の-]", + total: 100, + current: 1, + want: " [の---------------------------------------------------------------------------------------------…] ", + }, + }, + 197: { + { + name: "t,c,r{97486999,2805950,2805483}trim", + total: 97486999, + current: 2805950, + refill: 2805483, + barWidth: 60, + trim: true, + want: "[+>--------------------------------------------------------]", + }, + }, + } + + var tmpBuf bytes.Buffer + for tw, cases := range testSuite { + for _, tc := range cases { + s := newTestState(tc.style, tc.reverse) + s.reqWidth = tc.barWidth + s.total = tc.total + s.current = tc.current + s.trimSpace = tc.trim + s.refill = tc.refill + tmpBuf.Reset() + tmpBuf.ReadFrom(s.draw(newStatistics(tw, s))) + by := tmpBuf.Bytes() + + got := string(by[:len(by)-1]) + if !utf8.ValidString(got) { + t.Fail() + } + if got != tc.want { + t.Errorf("termWidth:%d %q want: %q %d, got: %q %d\n", tw, tc.name, tc.want, utf8.RuneCountInString(tc.want), got, utf8.RuneCountInString(got)) + } + } + } +} + +func newTestState(style string, rev bool) *bState { + s := &bState{ + filler: NewBarFillerPick(style, rev), + bufP: new(bytes.Buffer), + bufB: new(bytes.Buffer), + bufA: new(bytes.Buffer), + } + return s +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/example_test.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/example_test.go new file mode 100644 index 0000000..6f25c1b --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/example_test.go @@ -0,0 +1,84 @@ +package mpb_test + +import ( + crand "crypto/rand" + "io" + "io/ioutil" + "math/rand" + "time" + + "github.com/vbauerster/mpb/v6" + "github.com/vbauerster/mpb/v6/decor" +) + +func Example() { + // initialize progress container, with custom width + p := mpb.New(mpb.WithWidth(64)) + + total := 100 + name := "Single Bar:" + // adding a single bar, which will inherit container's width + bar := p.Add(int64(total), + // progress bar filler with customized style + mpb.NewBarFiller("╢▌▌░╟"), + mpb.PrependDecorators( + // display our name with one space on the right + decor.Name(name, decor.WC{W: len(name) + 1, C: decor.DidentRight}), + // replace ETA decorator with "done" message, OnComplete event + decor.OnComplete( + // ETA decorator with ewma age of 60, and width reservation of 4 + decor.EwmaETA(decor.ET_STYLE_GO, 60, decor.WC{W: 4}), "done", + ), + ), + mpb.AppendDecorators(decor.Percentage()), + ) + // simulating some work + max := 100 * time.Millisecond + for i := 0; i < total; i++ { + // start variable is solely for EWMA calculation + // EWMA's unit of measure is an iteration's duration + start := time.Now() + time.Sleep(time.Duration(rand.Intn(10)+1) * max / 10) + bar.Increment() + // we need to call DecoratorEwmaUpdate to fulfill ewma decorator's contract + bar.DecoratorEwmaUpdate(time.Since(start)) + } + // wait for our bar to complete and flush + p.Wait() +} + +func ExampleBar_Completed() { + p := mpb.New() + bar := p.AddBar(100) + + max := 100 * time.Millisecond + for !bar.Completed() { + time.Sleep(time.Duration(rand.Intn(10)+1) * max / 10) + bar.Increment() + } + + p.Wait() +} + +func ExampleBar_ProxyReader() { + // import crand "crypto/rand" + + var total int64 = 1024 * 1024 * 500 + reader := io.LimitReader(crand.Reader, total) + + p := mpb.New() + bar := p.AddBar(total, + mpb.AppendDecorators( + decor.CountersKibiByte("% .2f / % .2f"), + ), + ) + + // create proxy reader + proxyReader := bar.ProxyReader(reader) + defer proxyReader.Close() + + // and copy from reader, ignoring errors + io.Copy(ioutil.Discard, proxyReader) + + p.Wait() +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/export_test.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/export_test.go new file mode 100644 index 0000000..fba0eaf --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/export_test.go @@ -0,0 +1,5 @@ +package mpb + +// make syncWidth func public in test +var SyncWidth = syncWidth +var MaxWidthDistributor = &maxWidthDistributor diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/go.mod b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/go.mod new file mode 100644 index 0000000..d9dad96 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/go.mod @@ -0,0 +1,11 @@ +module github.com/vbauerster/mpb/v6 + +require ( + github.com/VividCortex/ewma v1.2.0 + github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d + github.com/mattn/go-runewidth v0.0.12 + github.com/rivo/uniseg v0.2.0 + golang.org/x/sys v0.0.0-20210514084401-e8d321eab015 +) + +go 1.14 diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/go.sum b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/go.sum new file mode 100644 index 0000000..08ee82f --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/go.sum @@ -0,0 +1,11 @@ +github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= +github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= +github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8= +github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo= +github.com/mattn/go-runewidth v0.0.12 h1:Y41i/hVW3Pgwr8gV+J23B9YEY0zxjptBuCWEaxmAOow= +github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= +github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015 h1:hZR0X1kPW+nwyJ9xRxqZk1vx5RUObAPBdKVvXPDUH/E= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/internal/percentage.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/internal/percentage.go new file mode 100644 index 0000000..a8ef8be --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/internal/percentage.go @@ -0,0 +1,19 @@ +package internal + +import "math" + +// Percentage is a helper function, to calculate percentage. +func Percentage(total, current int64, width int) float64 { + if total <= 0 { + return 0 + } + if current >= total { + return float64(width) + } + return float64(int64(width)*current) / float64(total) +} + +// PercentageRound same as Percentage but with math.Round. +func PercentageRound(total, current int64, width int) float64 { + return math.Round(Percentage(total, current, width)) +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/internal/percentage_test.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/internal/percentage_test.go new file mode 100644 index 0000000..6d5410d --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/internal/percentage_test.go @@ -0,0 +1,71 @@ +package internal + +import "testing" + +func TestPercentage(t *testing.T) { + // key is barWidth + testSuite := map[int][]struct { + name string + total int64 + current int64 + expected int64 + }{ + 100: { + {"t,c,e{-1,-1,0}", -1, -1, 0}, + {"t,c,e{0,-1,0}", 0, -1, 0}, + {"t,c,e{0,0,0}", 0, 0, 0}, + {"t,c,e{0,1,0}", 0, 1, 0}, + {"t,c,e{100,0,0}", 100, 0, 0}, + {"t,c,e{100,10,10}", 100, 10, 10}, + {"t,c,e{100,15,15}", 100, 15, 15}, + {"t,c,e{100,50,50}", 100, 50, 50}, + {"t,c,e{100,99,99}", 100, 99, 99}, + {"t,c,e{100,100,100}", 100, 100, 100}, + {"t,c,e{100,101,101}", 100, 101, 100}, + {"t,c,e{120,0,0}", 120, 0, 0}, + {"t,c,e{120,10,8}", 120, 10, 8}, + {"t,c,e{120,15,13}", 120, 15, 13}, + {"t,c,e{120,50,42}", 120, 50, 42}, + {"t,c,e{120,60,50}", 120, 60, 50}, + {"t,c,e{120,99,83}", 120, 99, 83}, + {"t,c,e{120,101,84}", 120, 101, 84}, + {"t,c,e{120,118,98}", 120, 118, 98}, + {"t,c,e{120,119,99}", 120, 119, 99}, + {"t,c,e{120,120,100}", 120, 120, 100}, + {"t,c,e{120,121,101}", 120, 121, 100}, + }, + 80: { + {"t,c,e{-1,-1,0}", -1, -1, 0}, + {"t,c,e{0,-1,0}", 0, -1, 0}, + {"t,c,e{0,0,0}", 0, 0, 0}, + {"t,c,e{0,1,0}", 0, 1, 0}, + {"t,c,e{100,0,0}", 100, 0, 0}, + {"t,c,e{100,10,8}", 100, 10, 8}, + {"t,c,e{100,15,12}", 100, 15, 12}, + {"t,c,e{100,50,40}", 100, 50, 40}, + {"t,c,e{100,99,79}", 100, 99, 79}, + {"t,c,e{100,100,80}", 100, 100, 80}, + {"t,c,e{100,101,81}", 100, 101, 80}, + {"t,c,e{120,0,0}", 120, 0, 0}, + {"t,c,e{120,10,7}", 120, 10, 7}, + {"t,c,e{120,15,10}", 120, 15, 10}, + {"t,c,e{120,50,33}", 120, 50, 33}, + {"t,c,e{120,60,40}", 120, 60, 40}, + {"t,c,e{120,99,66}", 120, 99, 66}, + {"t,c,e{120,101,67}", 120, 101, 67}, + {"t,c,e{120,118,79}", 120, 118, 79}, + {"t,c,e{120,119,79}", 120, 119, 79}, + {"t,c,e{120,120,80}", 120, 120, 80}, + {"t,c,e{120,121,81}", 120, 121, 80}, + }, + } + + for width, cases := range testSuite { + for _, tc := range cases { + got := int64(PercentageRound(tc.total, tc.current, width)) + if got != tc.expected { + t.Errorf("width %d; %s: Expected: %d, got: %d\n", width, tc.name, tc.expected, got) + } + } + } +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/internal/predicate.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/internal/predicate.go new file mode 100644 index 0000000..1e4dd24 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/internal/predicate.go @@ -0,0 +1,6 @@ +package internal + +// Predicate helper for internal use. +func Predicate(pick bool) func() bool { + return func() bool { return pick } +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/internal/width.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/internal/width.go new file mode 100644 index 0000000..216320f --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/internal/width.go @@ -0,0 +1,10 @@ +package internal + +// CheckRequestedWidth checks that requested width doesn't overflow +// available width +func CheckRequestedWidth(requested, available int) int { + if requested <= 0 || requested >= available { + return available + } + return requested +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/priority_queue.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/priority_queue.go new file mode 100644 index 0000000..29d9bd5 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/priority_queue.go @@ -0,0 +1,32 @@ +package mpb + +// A priorityQueue implements heap.Interface +type priorityQueue []*Bar + +func (pq priorityQueue) Len() int { return len(pq) } + +func (pq priorityQueue) Less(i, j int) bool { + return pq[i].priority < pq[j].priority +} + +func (pq priorityQueue) Swap(i, j int) { + pq[i], pq[j] = pq[j], pq[i] + pq[i].index = i + pq[j].index = j +} + +func (pq *priorityQueue) Push(x interface{}) { + s := *pq + bar := x.(*Bar) + bar.index = len(s) + s = append(s, bar) + *pq = s +} + +func (pq *priorityQueue) Pop() interface{} { + s := *pq + *pq = s[0 : len(s)-1] + bar := s[len(s)-1] + bar.index = -1 // for safety + return bar +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/progress.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/progress.go new file mode 100644 index 0000000..5a3f962 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/progress.go @@ -0,0 +1,412 @@ +package mpb + +import ( + "bytes" + "container/heap" + "context" + "fmt" + "io" + "io/ioutil" + "log" + "math" + "os" + "sync" + "time" + + "github.com/vbauerster/mpb/v6/cwriter" + "github.com/vbauerster/mpb/v6/decor" +) + +const ( + // default RefreshRate + prr = 120 * time.Millisecond +) + +// Progress represents a container that renders one or more progress +// bars. +type Progress struct { + ctx context.Context + uwg *sync.WaitGroup + cwg *sync.WaitGroup + bwg *sync.WaitGroup + operateState chan func(*pState) + done chan struct{} + refreshCh chan time.Time + once sync.Once + dlogger *log.Logger +} + +// pState holds bars in its priorityQueue. It gets passed to +// *Progress.serve(...) monitor goroutine. +type pState struct { + bHeap priorityQueue + heapUpdated bool + pMatrix map[int][]chan int + aMatrix map[int][]chan int + barShutdownQueue []*Bar + + // following are provided/overrided by user + idCount int + reqWidth int + popCompleted bool + outputDiscarded bool + rr time.Duration + uwg *sync.WaitGroup + externalRefresh <-chan interface{} + renderDelay <-chan struct{} + shutdownNotifier chan struct{} + parkedBars map[*Bar]*Bar + output io.Writer + debugOut io.Writer +} + +// New creates new Progress container instance. It's not possible to +// reuse instance after *Progress.Wait() method has been called. +func New(options ...ContainerOption) *Progress { + return NewWithContext(context.Background(), options...) +} + +// NewWithContext creates new Progress container instance with provided +// context. It's not possible to reuse instance after *Progress.Wait() +// method has been called. +func NewWithContext(ctx context.Context, options ...ContainerOption) *Progress { + s := &pState{ + bHeap: priorityQueue{}, + rr: prr, + parkedBars: make(map[*Bar]*Bar), + output: os.Stdout, + debugOut: ioutil.Discard, + } + + for _, opt := range options { + if opt != nil { + opt(s) + } + } + + p := &Progress{ + ctx: ctx, + uwg: s.uwg, + cwg: new(sync.WaitGroup), + bwg: new(sync.WaitGroup), + operateState: make(chan func(*pState)), + done: make(chan struct{}), + dlogger: log.New(s.debugOut, "[mpb] ", log.Lshortfile), + } + + p.cwg.Add(1) + go p.serve(s, cwriter.New(s.output)) + return p +} + +// AddBar creates a bar with default bar filler. Different filler can +// be choosen and applied via `*Progress.Add(...) *Bar` method. +func (p *Progress) AddBar(total int64, options ...BarOption) *Bar { + return p.Add(total, NewBarFiller(BarDefaultStyle), options...) +} + +// AddSpinner creates a bar with default spinner filler. Different +// filler can be choosen and applied via `*Progress.Add(...) *Bar` +// method. +func (p *Progress) AddSpinner(total int64, alignment SpinnerAlignment, options ...BarOption) *Bar { + return p.Add(total, NewSpinnerFiller(SpinnerDefaultStyle, alignment), options...) +} + +// Add creates a bar which renders itself by provided filler. +// If `total <= 0` trigger complete event is disabled until reset with *bar.SetTotal(int64, bool). +// Panics if *Progress instance is done, i.e. called after *Progress.Wait(). +func (p *Progress) Add(total int64, filler BarFiller, options ...BarOption) *Bar { + if filler == nil { + filler = BarFillerFunc(func(io.Writer, int, decor.Statistics) {}) + } + p.bwg.Add(1) + result := make(chan *Bar) + select { + case p.operateState <- func(ps *pState) { + bs := ps.makeBarState(total, filler, options...) + bar := newBar(p, bs) + if bs.runningBar != nil { + bs.runningBar.noPop = true + ps.parkedBars[bs.runningBar] = bar + } else { + heap.Push(&ps.bHeap, bar) + ps.heapUpdated = true + } + ps.idCount++ + result <- bar + }: + bar := <-result + bar.subscribeDecorators() + return bar + case <-p.done: + p.bwg.Done() + panic(fmt.Sprintf("%T instance can't be reused after it's done!", p)) + } +} + +func (p *Progress) dropBar(b *Bar) { + select { + case p.operateState <- func(s *pState) { + if b.index < 0 { + return + } + heap.Remove(&s.bHeap, b.index) + s.heapUpdated = true + }: + case <-p.done: + } +} + +func (p *Progress) setBarPriority(b *Bar, priority int) { + select { + case p.operateState <- func(s *pState) { + if b.index < 0 { + return + } + b.priority = priority + heap.Fix(&s.bHeap, b.index) + }: + case <-p.done: + } +} + +// UpdateBarPriority same as *Bar.SetPriority(int). +func (p *Progress) UpdateBarPriority(b *Bar, priority int) { + p.setBarPriority(b, priority) +} + +// BarCount returns bars count. +func (p *Progress) BarCount() int { + result := make(chan int, 1) + select { + case p.operateState <- func(s *pState) { result <- s.bHeap.Len() }: + return <-result + case <-p.done: + return 0 + } +} + +// Wait waits for all bars to complete and finally shutdowns container. +// After this method has been called, there is no way to reuse *Progress +// instance. +func (p *Progress) Wait() { + if p.uwg != nil { + // wait for user wg + p.uwg.Wait() + } + + // wait for bars to quit, if any + p.bwg.Wait() + + p.once.Do(p.shutdown) + + // wait for container to quit + p.cwg.Wait() +} + +func (p *Progress) shutdown() { + close(p.done) +} + +func (p *Progress) serve(s *pState, cw *cwriter.Writer) { + defer p.cwg.Done() + + p.refreshCh = s.newTicker(p.done) + + for { + select { + case op := <-p.operateState: + op(s) + case <-p.refreshCh: + if err := s.render(cw); err != nil { + p.dlogger.Println(err) + } + case <-s.shutdownNotifier: + if s.heapUpdated { + if err := s.render(cw); err != nil { + p.dlogger.Println(err) + } + } + return + } + } +} + +func (s *pState) newTicker(done <-chan struct{}) chan time.Time { + ch := make(chan time.Time) + if s.shutdownNotifier == nil { + s.shutdownNotifier = make(chan struct{}) + } + go func() { + if s.renderDelay != nil { + <-s.renderDelay + } + var internalRefresh <-chan time.Time + if !s.outputDiscarded { + if s.externalRefresh == nil { + ticker := time.NewTicker(s.rr) + defer ticker.Stop() + internalRefresh = ticker.C + } + } else { + s.externalRefresh = nil + } + for { + select { + case t := <-internalRefresh: + ch <- t + case x := <-s.externalRefresh: + if t, ok := x.(time.Time); ok { + ch <- t + } else { + ch <- time.Now() + } + case <-done: + close(s.shutdownNotifier) + return + } + } + }() + return ch +} + +func (s *pState) render(cw *cwriter.Writer) error { + if s.heapUpdated { + s.updateSyncMatrix() + s.heapUpdated = false + } + syncWidth(s.pMatrix) + syncWidth(s.aMatrix) + + tw, err := cw.GetWidth() + if err != nil { + tw = s.reqWidth + } + for i := 0; i < s.bHeap.Len(); i++ { + bar := s.bHeap[i] + go bar.render(tw) + } + + return s.flush(cw) +} + +func (s *pState) flush(cw *cwriter.Writer) error { + var lineCount int + bm := make(map[*Bar]struct{}, s.bHeap.Len()) + for s.bHeap.Len() > 0 { + b := heap.Pop(&s.bHeap).(*Bar) + cw.ReadFrom(<-b.frameCh) + if b.toShutdown { + if b.recoveredPanic != nil { + s.barShutdownQueue = append(s.barShutdownQueue, b) + b.toShutdown = false + } else { + // shutdown at next flush + // this ensures no bar ends up with less than 100% rendered + defer func() { + s.barShutdownQueue = append(s.barShutdownQueue, b) + }() + } + } + lineCount += b.extendedLines + 1 + bm[b] = struct{}{} + } + + for _, b := range s.barShutdownQueue { + if parkedBar := s.parkedBars[b]; parkedBar != nil { + parkedBar.priority = b.priority + heap.Push(&s.bHeap, parkedBar) + delete(s.parkedBars, b) + b.toDrop = true + } + if s.popCompleted && !b.noPop { + lineCount -= b.extendedLines + 1 + b.toDrop = true + } + if b.toDrop { + delete(bm, b) + s.heapUpdated = true + } + b.cancel() + } + s.barShutdownQueue = s.barShutdownQueue[0:0] + + for b := range bm { + heap.Push(&s.bHeap, b) + } + + return cw.Flush(lineCount) +} + +func (s *pState) updateSyncMatrix() { + s.pMatrix = make(map[int][]chan int) + s.aMatrix = make(map[int][]chan int) + for i := 0; i < s.bHeap.Len(); i++ { + bar := s.bHeap[i] + table := bar.wSyncTable() + pRow, aRow := table[0], table[1] + + for i, ch := range pRow { + s.pMatrix[i] = append(s.pMatrix[i], ch) + } + + for i, ch := range aRow { + s.aMatrix[i] = append(s.aMatrix[i], ch) + } + } +} + +func (s *pState) makeBarState(total int64, filler BarFiller, options ...BarOption) *bState { + bs := &bState{ + id: s.idCount, + priority: s.idCount, + reqWidth: s.reqWidth, + total: total, + filler: filler, + extender: func(r io.Reader, _ int, _ decor.Statistics) (io.Reader, int) { return r, 0 }, + debugOut: s.debugOut, + } + + if total > 0 { + bs.triggerComplete = true + } + + for _, opt := range options { + if opt != nil { + opt(bs) + } + } + + if bs.middleware != nil { + bs.filler = bs.middleware(filler) + bs.middleware = nil + } + + if s.popCompleted && !bs.noPop { + bs.priority = -(math.MaxInt32 - s.idCount) + } + + bs.bufP = bytes.NewBuffer(make([]byte, 0, 128)) + bs.bufB = bytes.NewBuffer(make([]byte, 0, 256)) + bs.bufA = bytes.NewBuffer(make([]byte, 0, 128)) + + return bs +} + +func syncWidth(matrix map[int][]chan int) { + for _, column := range matrix { + go maxWidthDistributor(column) + } +} + +var maxWidthDistributor = func(column []chan int) { + var maxWidth int + for _, ch := range column { + if w := <-ch; w > maxWidth { + maxWidth = w + } + } + for _, ch := range column { + ch <- maxWidth + } +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/progress_test.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/progress_test.go new file mode 100644 index 0000000..aa7a27d --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/progress_test.go @@ -0,0 +1,185 @@ +package mpb_test + +import ( + "bytes" + "context" + "io/ioutil" + "math/rand" + "sync" + "testing" + "time" + + "github.com/vbauerster/mpb/v6" + "github.com/vbauerster/mpb/v6/decor" +) + +func init() { + rand.Seed(time.Now().UnixNano()) +} + +func TestBarCount(t *testing.T) { + p := mpb.New(mpb.WithOutput(ioutil.Discard)) + + var wg sync.WaitGroup + wg.Add(1) + b := p.AddBar(100) + go func() { + rng := rand.New(rand.NewSource(time.Now().UnixNano())) + for i := 0; i < 100; i++ { + if i == 33 { + wg.Done() + } + b.Increment() + time.Sleep((time.Duration(rng.Intn(10)+1) * (10 * time.Millisecond)) / 2) + } + }() + + wg.Wait() + count := p.BarCount() + if count != 1 { + t.Errorf("BarCount want: %q, got: %q\n", 1, count) + } + + b.Abort(true) + p.Wait() +} + +func TestBarAbort(t *testing.T) { + p := mpb.New(mpb.WithOutput(ioutil.Discard)) + + var wg sync.WaitGroup + wg.Add(1) + bars := make([]*mpb.Bar, 3) + for i := 0; i < 3; i++ { + b := p.AddBar(100) + rng := rand.New(rand.NewSource(time.Now().UnixNano())) + go func(n int) { + for i := 0; !b.Completed(); i++ { + if n == 0 && i >= 33 { + b.Abort(true) + wg.Done() + } + b.Increment() + time.Sleep((time.Duration(rng.Intn(10)+1) * (10 * time.Millisecond)) / 2) + } + }(i) + bars[i] = b + } + + wg.Wait() + count := p.BarCount() + if count != 2 { + t.Errorf("BarCount want: %q, got: %q\n", 2, count) + } + bars[1].Abort(true) + bars[2].Abort(true) + p.Wait() +} + +func TestWithContext(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + shutdown := make(chan struct{}) + p := mpb.NewWithContext(ctx, + mpb.WithOutput(ioutil.Discard), + mpb.WithRefreshRate(50*time.Millisecond), + mpb.WithShutdownNotifier(shutdown), + ) + + total := 10000 + numBars := 3 + bars := make([]*mpb.Bar, 0, numBars) + for i := 0; i < numBars; i++ { + bar := p.AddBar(int64(total)) + bars = append(bars, bar) + go func() { + for !bar.Completed() { + bar.Increment() + time.Sleep(randomDuration(100 * time.Millisecond)) + } + }() + } + + time.Sleep(50 * time.Millisecond) + cancel() + + p.Wait() + select { + case <-shutdown: + case <-time.After(100 * time.Millisecond): + t.Error("Progress didn't stop") + } +} + +// MaxWidthDistributor shouldn't stuck in the middle while removing or aborting a bar +func TestMaxWidthDistributor(t *testing.T) { + + makeWrapper := func(f func([]chan int), start, end chan struct{}) func([]chan int) { + return func(column []chan int) { + start <- struct{}{} + f(column) + <-end + } + } + + ready := make(chan struct{}) + start := make(chan struct{}) + end := make(chan struct{}) + *mpb.MaxWidthDistributor = makeWrapper(*mpb.MaxWidthDistributor, start, end) + + total := 80 + numBars := 3 + p := mpb.New(mpb.WithOutput(ioutil.Discard)) + for i := 0; i < numBars; i++ { + bar := p.AddBar(int64(total), + mpb.BarOptional(mpb.BarRemoveOnComplete(), i == 0), + mpb.PrependDecorators( + decor.EwmaETA(decor.ET_STYLE_GO, 60, decor.WCSyncSpace), + ), + ) + go func() { + <-ready + rng := rand.New(rand.NewSource(time.Now().UnixNano())) + for i := 0; i < total; i++ { + start := time.Now() + if bar.ID() >= numBars-1 && i >= 42 { + bar.Abort(true) + } + time.Sleep((time.Duration(rng.Intn(10)+1) * (10 * time.Millisecond)) / 2) + bar.Increment() + bar.DecoratorEwmaUpdate(time.Since(start)) + } + }() + } + + go func() { + <-ready + p.Wait() + close(start) + }() + + res := t.Run("maxWidthDistributor", func(t *testing.T) { + close(ready) + for v := range start { + timer := time.NewTimer(100 * time.Millisecond) + select { + case end <- v: + timer.Stop() + case <-timer.C: + t.FailNow() + } + } + }) + + if !res { + t.Error("maxWidthDistributor stuck in the middle") + } +} + +func getLastLine(bb []byte) []byte { + split := bytes.Split(bb, []byte("\n")) + return split[len(split)-2] +} + +func randomDuration(max time.Duration) time.Duration { + return time.Duration(rand.Intn(10)+1) * max / 10 +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/proxyreader.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/proxyreader.go new file mode 100644 index 0000000..316f438 --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/proxyreader.go @@ -0,0 +1,90 @@ +package mpb + +import ( + "io" + "io/ioutil" + "time" +) + +type proxyReader struct { + io.ReadCloser + bar *Bar +} + +func (x *proxyReader) Read(p []byte) (int, error) { + n, err := x.ReadCloser.Read(p) + x.bar.IncrBy(n) + if err == io.EOF { + go x.bar.SetTotal(0, true) + } + return n, err +} + +type proxyWriterTo struct { + io.ReadCloser // *proxyReader + wt io.WriterTo + bar *Bar +} + +func (x *proxyWriterTo) WriteTo(w io.Writer) (int64, error) { + n, err := x.wt.WriteTo(w) + x.bar.IncrInt64(n) + if err == io.EOF { + go x.bar.SetTotal(0, true) + } + return n, err +} + +type ewmaProxyReader struct { + io.ReadCloser // *proxyReader + bar *Bar + iT time.Time +} + +func (x *ewmaProxyReader) Read(p []byte) (int, error) { + n, err := x.ReadCloser.Read(p) + if n > 0 { + x.bar.DecoratorEwmaUpdate(time.Since(x.iT)) + x.iT = time.Now() + } + return n, err +} + +type ewmaProxyWriterTo struct { + io.ReadCloser // *ewmaProxyReader + wt io.WriterTo // *proxyWriterTo + bar *Bar + iT time.Time +} + +func (x *ewmaProxyWriterTo) WriteTo(w io.Writer) (int64, error) { + n, err := x.wt.WriteTo(w) + if n > 0 { + x.bar.DecoratorEwmaUpdate(time.Since(x.iT)) + x.iT = time.Now() + } + return n, err +} + +func newProxyReader(r io.Reader, bar *Bar) io.ReadCloser { + rc := toReadCloser(r) + rc = &proxyReader{rc, bar} + + if wt, isWriterTo := r.(io.WriterTo); bar.hasEwmaDecorators { + now := time.Now() + rc = &ewmaProxyReader{rc, bar, now} + if isWriterTo { + rc = &ewmaProxyWriterTo{rc, wt, bar, now} + } + } else if isWriterTo { + rc = &proxyWriterTo{rc, wt, bar} + } + return rc +} + +func toReadCloser(r io.Reader) io.ReadCloser { + if rc, ok := r.(io.ReadCloser); ok { + return rc + } + return ioutil.NopCloser(r) +} diff --git a/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/proxyreader_test.go b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/proxyreader_test.go new file mode 100644 index 0000000..71e036b --- /dev/null +++ b/dependencies/pkg/mod/github.com/vbauerster/mpb/v6@v6.0.4/proxyreader_test.go @@ -0,0 +1,90 @@ +package mpb_test + +import ( + "bytes" + "io" + "io/ioutil" + "strings" + "testing" + + "github.com/vbauerster/mpb/v6" +) + +const content = `Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim + veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit + esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat + cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id + est laborum.` + +type testReader struct { + io.Reader + called bool +} + +func (r *testReader) Read(p []byte) (n int, err error) { + r.called = true + return r.Reader.Read(p) +} + +func TestProxyReader(t *testing.T) { + p := mpb.New(mpb.WithOutput(ioutil.Discard)) + + tReader := &testReader{strings.NewReader(content), false} + + bar := p.AddBar(int64(len(content)), mpb.BarFillerTrim()) + + var buf bytes.Buffer + _, err := io.Copy(&buf, bar.ProxyReader(tReader)) + if err != nil { + t.Errorf("Error copying from reader: %+v\n", err) + } + + p.Wait() + + if !tReader.called { + t.Error("Read not called") + } + + if got := buf.String(); got != content { + t.Errorf("Expected content: %s, got: %s\n", content, got) + } +} + +type testWriterTo struct { + io.Reader + wt io.WriterTo + called bool +} + +func (wt *testWriterTo) WriteTo(w io.Writer) (n int64, err error) { + wt.called = true + return wt.wt.WriteTo(w) +} + +func TestProxyWriterTo(t *testing.T) { + p := mpb.New(mpb.WithOutput(ioutil.Discard)) + + var reader io.Reader = strings.NewReader(content) + wt := reader.(io.WriterTo) + tReader := &testWriterTo{reader, wt, false} + + bar := p.AddBar(int64(len(content)), mpb.BarFillerTrim()) + + var buf bytes.Buffer + _, err := io.Copy(&buf, bar.ProxyReader(tReader)) + if err != nil { + t.Errorf("Error copying from reader: %+v\n", err) + } + + p.Wait() + + if !tReader.called { + t.Error("WriteTo not called") + } + + if got := buf.String(); got != content { + t.Errorf("Expected content: %s, got: %s\n", content, got) + } +} |