Repository: livepeer/go-livepeer
Pull request #2260 (2022-02-14 11:41:15)

common: Cleanup, remove unused table 'winningTickets'
**What does this pull request do? Explain your changes. (required)**
<!-- A clear and concise description of what this pull request does. -->

Delete unused table 'winningTicket'.

**Specific updates (required)**
<!--- List out all significant updates your code introduces -->
- 
- 
- 

**How did you test each of these updates (required)**
<!-- A detailed description of how you tested your code changes. Include details of your testing environment, and the tests you ran to see how your change affects other areas of the code, etc. -->


**Does this pull request close any open issues?**
<!-- Fixes # -->


**Checklist:**
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [x] Read the [contribution guide](./doc/contributing.md)
- [x] `make` runs successfully
- [x] All tests in `./test.sh` pass
- [ ] README and other documentation updated
- [ ] [Pending changelog](./CHANGELOG_PENDING.md) updated



Patch:
diff --git a/.github/workflows/linux-tensorflow.yml b/.github/workflows/linux-tensorflow.yml
index 62ac7c57..d9ad635c 100644
--- a/.github/workflows/linux-tensorflow.yml
+++ b/.github/workflows/linux-tensorflow.yml
@@ -17,7 +17,7 @@ jobs:
     - name: Setup Go
       uses: actions/setup-go@v2
       with:
-        go-version: '1.15.5' 
+        go-version: '1.17.6'
     - name: Cache go modules
       id: cache-go-mod
       uses: actions/cache@v2.1.5
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
index d7e4146c..9dc05ae4 100644
--- a/.github/workflows/linux.yml
+++ b/.github/workflows/linux.yml
@@ -17,7 +17,7 @@ jobs:
     - name: Setup Go
       uses: actions/setup-go@v2
       with:
-        go-version: '1.15.5' 
+        go-version: '1.17.6'
     - name: Cache go modules
       id: cache-go-mod
       uses: actions/cache@v2.1.5
@@ -75,7 +75,14 @@ jobs:
       - name: Setup Go
         uses: actions/setup-go@v2
         with:
-          go-version: '1.15.5'
+          go-version: '1.17.6'
+      - name: Install protobuf
+        run: |
+          go install github.com/golang/protobuf/protoc-gen-go@v1.3.5
+      - name: Install dependencies
+        run: |
+          sudo apt-get update
+          sudo apt-get install -y protobuf-compiler
       - name: Cache go modules
         id: cache-go-mod
         uses: actions/cache@v2.1.5
@@ -92,6 +99,16 @@ jobs:
           key: ${{ runner.os }}-ffmpeg-${{ hashFiles('**/install_ffmpeg.sh') }}
           restore-keys: |
             ${{ runner.os }}-ffmpeg
+      - name: go fmt
+        run: |
+          go fmt ./...
+          git diff --exit-code
+      - name: Compile proto files
+        run: |
+          protoc --version
+          touch net/lp_rpc.proto net/redeemer.proto
+          make net/lp_rpc.pb.go net/redeemer.pb.go
+          git diff --exit-code
       - name: Lint
         run: |
           export PKG_CONFIG_PATH=~/compiled/lib/pkgconfig
diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml
index 65304c5b..f18de810 100644
--- a/.github/workflows/mac.yml
+++ b/.github/workflows/mac.yml
@@ -6,8 +6,15 @@ on:
       - master
 jobs:
   build:
-    runs-on: macOS-latest
+    strategy:
+      matrix:
+        arch:
+          - amd64
+          - arm64
+    runs-on: macos-latest
     steps:
+    - name: Set build environment
+      run: echo "GOARCH=${{ matrix.arch }}" >> $GITHUB_ENV
     - name: Checkout
       uses: actions/checkout@v2
       with:
@@ -17,23 +24,23 @@ jobs:
     - name: Setup Go
       uses: actions/setup-go@v2
       with:
-        go-version: '1.15.5'
+        go-version: '1.17.6'
     - name: Cache go modules
       id: cache-go-mod
       uses: actions/cache@v2.1.5
       with:
         path: ~/go/pkg/mod
-        key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
+        key: ${{ runner.os }}-${{ matrix.arch }}-go-${{ hashFiles('**/go.sum') }}
         restore-keys: |
-          ${{ runner.os }}-go-
+          ${{ runner.os }}-${{ matrix.arch }}-go-
     - name: Cache ffmpeg
       id: cache-ffmpeg
       uses: actions/cache@v2.1.5
       with:
         path: ~/compiled
-        key: ${{ runner.os }}-ffmpeg-${{ hashFiles('**/install_ffmpeg.sh') }}
+        key: ${{ runner.os }}-${{ matrix.arch }}-ffmpeg-${{ hashFiles('**/install_ffmpeg.sh') }}
         restore-keys: |
-          ${{ runner.os }}-ffmpeg
+          ${{ runner.os }}-${{ matrix.arch }}-ffmpeg
     - name: Install dependencies
       run: brew install coreutils
     - name: Install go modules
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c2ccb247..4069d8d3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,39 @@
 # Changelog
 
+## v0.5.29
+
+*February 21 2022*
+
+This release is a fast follow release for v0.5.28 with a few bug fixes including a fix for a nil pointer error when parsing block header logs that could cause the node to crash and a fix for displaying the global LPT supply and participation rate in `livepeer_cli`. 
+
+This release also includes a darwin arm64 build and darwin/linux binaries compiled using Go 1.17.6.
+
+### Breaking Changes 🚨🚨
+
+- The `segment_transcoded_appeared_total` and `transcode_latency_seconds` metrics are removed because they were tracked per transcoding profile and the node already tracks the overall version of the metrics
+- The `upload_time_seconds` and `discovery_errors_toatl` metrics are tracked per orchestrators instead of per stream
+
+### Features ⚒
+
+#### General
+
+- [#2274](https://github.com/livepeer/go-livepeer/pull/2274) Reduce the number of metrics datapoints (@darkdragon)
+
+#### Transcoder
+
+- [#2259](https://github.com/livepeer/go-livepeer/pull/2259) Improve startup capability test to check for Nvidia encoder session limit and to fail fast if a default capability is not supported (@cyberj0g)
+
+### Bug Fixes 🐞
+
+#### General
+
+- [#2267](https://github.com/livepeer/go-livepeer/pull/2267) Fix nil pointer in the block header logs (@leszko)
+- [#2276](https://github.com/livepeer/go-livepeer/pull/2276) Use global total supply instead of L2 supply to calculate participation rate on Arbitrum networks (@leszko)
+
+#### Orchestrator
+
+- [#2266](https://github.com/livepeer/go-livepeer/pull/2266) Fix default reward cut and fee cut in `livepeer_cli` (@leszko)
+
 ## v0.5.28
 
 *February 11th 2022*
diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md
index 38d5e2ab..64a63edd 100644
--- a/CHANGELOG_PENDING.md
+++ b/CHANGELOG_PENDING.md
@@ -21,5 +21,6 @@
 #### Broadcaster
 
 #### Orchestrator
+- \#2284 Fix issue with not redeeming tickets by Redeemer (@leszko)
 
 #### Transcoder
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 34c99680..d6d12ca4 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -59,6 +59,12 @@ to improve this codebase for everyone.
 > this additional cognitive load, you may not want to begin here for you first
 > contribution.
 
+#### Commits
+
+- We generally prefer to logically group changes into individual commits as much as possible and like to follow these [guidelines](https://github.com/lightningnetwork/lnd/blob/master/docs/code_contribution_guidelines.md#ideal-git-commit-structure) for commit structure
+- We like to use [fixup commits and auto-squashing when rebasing](https://thoughtbot.com/blog/autosquashing-git-commits) during the PR review process to a) make it easy to review incremental changes and b) make it easy to logically group changes into individual commits
+- We like to use descriptive commit messages following these [guidelines](https://github.com/lightningnetwork/lnd/blob/master/docs/code_contribution_guidelines.md#model-git-commit-messages). Additionally, we like to prefix commit titles with the package/functionality that the commit updates (i.e. `eth: ...`) as described [here](https://github.com/lightningnetwork/lnd/blob/master/docs/code_contribution_guidelines.md#ideal-git-commit-structure)
+
 ## FAQ
 
 ### How much do I need to know about peer-to-peer/livestreaming/go/etc to be an effective contributor?
@@ -87,7 +93,11 @@ it'd be good to have some proficiency with go.
   - Make sure your PR is up-to-date with `master` (rebase please 🙏)
   - Wait for a maintainer to review your PR
   - Push additional commits to your PR branch to fix any issues noted in review.
+    - Avoid force pushing to the branch which will clobber commit history and makes it more difficult for reviewing incremental changes in the PR
+    - Instead use [fixup commits](#commits) that can be squashed prior to merging
   - Wait for a maintainer to merge your PR
+    - For a small changesets, the Github "squash and merge" option can be an acceptable
+    - For larger changesets, the Github "rebase and merge" option is preferable and a maintainer may request you do a local rebase first to cleanup the branch commit history before merging
 
 
 ### Changelog
diff --git a/Makefile b/Makefile
index bdc26bb4..29988c7f 100644
--- a/Makefile
+++ b/Makefile
@@ -17,28 +17,33 @@ core/test_segment.go:
 version=$(shell cat VERSION)
 
 ldflags := -X github.com/livepeer/go-livepeer/core.LivepeerVersion=$(shell ./print_version.sh)
+cgo_cflags :=
 cgo_ldflags :=
 
 uname_s := $(shell uname -s)
 ifeq ($(uname_s),Darwin)
 		cgo_ldflags += -framework CoreFoundation -framework Security
+	ifeq ($(GOARCH),arm64)
+		cgo_cflags += --target=arm64-apple-macos11
+		cgo_ldflags += --target=arm64-apple-macos11
+	endif
 endif
 
 .PHONY: livepeer
 livepeer:
-	GO111MODULE=on CGO_LDFLAGS="$(cgo_ldflags)" go build -tags $(BUILD_TAGS) -ldflags="$(ldflags)" cmd/livepeer/*.go
+	GO111MODULE=on CGO_ENABLED=1 CGO_CFLAGS="$(cgo_cflags)" CGO_LDFLAGS="$(cgo_ldflags)" go build -tags $(BUILD_TAGS) -ldflags="$(ldflags)" cmd/livepeer/*.go
 
 .PHONY: livepeer_cli
 livepeer_cli:
-	GO111MODULE=on CGO_LDFLAGS="$(cgo_ldflags)" go build -tags $(BUILD_TAGS) -ldflags="$(ldflags)" cmd/livepeer_cli/*.go
+	GO111MODULE=on CGO_ENABLED=1 CGO_CFLAGS="$(cgo_cflags)" CGO_LDFLAGS="$(cgo_ldflags)" go build -tags $(BUILD_TAGS) -ldflags="$(ldflags)" cmd/livepeer_cli/*.go
 
 .PHONY: livepeer_bench
 livepeer_bench:
-	GO111MODULE=on CGO_LDFLAGS="$(cgo_ldflags)" go build -ldflags="$(ldflags)" cmd/livepeer_bench/*.go
+	GO111MODULE=on CGO_ENABLED=1 CGO_CFLAGS="$(cgo_cflags)" CGO_LDFLAGS="$(cgo_ldflags)" go build -ldflags="$(ldflags)" cmd/livepeer_bench/*.go
 
 .PHONY: livepeer_router
 livepeer_router:
-	GO111MODULE=on CGO_LDFLAGS="$(cgo_ldflags)" go build -ldflags="$(ldflags)" cmd/livepeer_router/*.go
+	GO111MODULE=on CGO_ENABLED=1 CGO_CFLAGS="$(cgo_cflags)" CGO_LDFLAGS="$(cgo_ldflags)" go build -ldflags="$(ldflags)" cmd/livepeer_router/*.go
 
 .PHONY: localdocker
 localdocker:
diff --git a/VERSION b/VERSION
index d5530677..aa0ea79c 100644
--- a/VERSION
+++ b/VERSION
@@ -1,1 +1,1 @@
-0.5.28
+0.5.29
\ No newline at end of file
diff --git a/build/const.go b/build/const.go
index b1f51420..0b9d0a53 100644
--- a/build/const.go
+++ b/build/const.go
@@ -1,3 +1,4 @@
+//go:build !windows
 // +build !windows
 
 package build
diff --git a/build/const_windows.go b/build/const_windows.go
index 6ab02b3d..4f063e4a 100644
--- a/build/const_windows.go
+++ b/build/const_windows.go
@@ -1,3 +1,4 @@
+//go:build windows
 // +build windows
 
 package build
diff --git a/cmd/livepeer/livepeer.go b/cmd/livepeer/livepeer.go
index 75d1d816..71091207 100644
--- a/cmd/livepeer/livepeer.go
+++ b/cmd/livepeer/livepeer.go
@@ -94,7 +94,7 @@ func main() {
 	cliAddr := flag.String("cliAddr", "127.0.0.1:"+CliPort, "Address to bind for  CLI commands")
 	httpAddr := flag.String("httpAddr", "", "Address to bind for HTTP commands")
 	serviceAddr := flag.String("serviceAddr", "", "Orchestrator only. Overrides the on-chain serviceURI that broadcasters can use to contact this node; may be an IP or hostname.")
-	orchAddr := flag.String("orchAddr", "", "Orchestrator to connect to as a standalone transcoder")
+	orchAddr := flag.String("orchAddr", "", "Comma-separated list of orchestrators to connect to")
 	verifierURL := flag.String("verifierUrl", "", "URL of the verifier to use")
 
 	verifierPath := flag.String("verifierPath", "", "Path to verifier shared volume")
@@ -432,26 +432,6 @@ func main() {
 			return
 		}
 
-		// TODO: Remove after LIP-73 block (Arbitrum L2 contracts are unpaused)
-		arbitrumOneChainId := big.NewInt(42161)
-		lip73Block := big.NewInt(14207040)
-		if arbitrumOneChainId.Cmp(chainID) == 0 {
-			ethClient, err := blockwatch.NewRPCClient(*ethUrl, ethRPCTimeout)
-			if err != nil {
-				glog.Errorf("Failed to connect to Ethereum client: %v", err)
-				return
-			}
-			head, err := ethClient.HeaderByNumber(nil)
-			if err != nil {
-				glog.Errorf("Failed to get the latest block: %v", err)
-				return
-			}
-			if head.L1BlockNumber.Cmp(lip73Block) <= 0 {
-				glog.Errorf("LIP-73 has not been activated yet")
-				return
-			}
-		}
-
 		if !build.ChainSupported(chainID.Int64()) {
 			glog.Errorf("node does not support chainID = %v right now", chainID)
 			return
@@ -635,10 +615,7 @@ func main() {
 				return
 			}
 
-			orchSetupCtx, cancel := context.WithCancel(ctx)
-			defer cancel()
-
-			if err := setupOrchestrator(orchSetupCtx, n, recipientAddr); err != nil {
+			if err := setupOrchestrator(n, recipientAddr); err != nil {
 				glog.Errorf("Error setting up orchestrator: %v", err)
 				return
 			}
@@ -721,6 +698,11 @@ func main() {
 		}
 
 		if n.NodeType == core.RedeemerNode {
+			if err := setupOrchestrator(n, recipientAddr); err != nil {
+				glog.Errorf("Error setting up orchestrator: %v", err)
+				return
+			}
+
 			r, err := server.NewRedeemer(
 				recipientAddr,
 				n.Eth,
@@ -1173,7 +1155,7 @@ func getServiceURI(n *core.LivepeerNode, serviceAddr string) (*url.URL, error) {
 	return ethUri, nil
 }
 
-func setupOrchestrator(ctx context.Context, n *core.LivepeerNode, ethOrchAddr ethcommon.Address) error {
+func setupOrchestrator(n *core.LivepeerNode, ethOrchAddr ethcommon.Address) error {
 	// add orchestrator to DB
 	orch, err := n.Eth.GetTranscoder(ethOrchAddr)
 	if err != nil {
diff --git a/cmd/livepeer_cli/wizard_transcoder.go b/cmd/livepeer_cli/wizard_transcoder.go
index e07a551b..12c7b121 100644
--- a/cmd/livepeer_cli/wizard_transcoder.go
+++ b/cmd/livepeer_cli/wizard_transcoder.go
@@ -53,10 +53,10 @@ func (w *wizard) promptOrchestratorConfig() (float64, float64, int, int, string)
 	}
 
 	fmt.Printf("Enter block reward cut percentage (current=%v default=%v) - ", blockRewardCut, defaultRewardCut)
-	blockRewardCut = w.readDefaultFloat(blockRewardCut)
+	blockRewardCut = w.readDefaultFloat(defaultRewardCut)
 
 	fmt.Printf("Enter fee cut percentage (current=%v default=%v) - ", feeCut, defaultFeeCut)
-	feeCut = w.readDefaultFloat(feeCut)
+	feeCut = w.readDefaultFloat(defaultFeeCut)
 
 	fmt.Println("Enter a transcoding base price in wei per pixels")
 	fmt.Println("eg. 1 wei / 10 pixels = 0,1 wei per pixel")
diff --git a/common/db.go b/common/db.go
index 2ab014ad..49b91e5f 100644
--- a/common/db.go
+++ b/common/db.go
@@ -104,20 +104,6 @@ var schema = `
 	-- Index to only retrieve unbonding locks that have not been used
 	CREATE INDEX IF NOT EXISTS idx_unbondinglocks_usedblock ON unbondingLocks(usedBlock);
 
-	CREATE TABLE IF NOT EXISTS winningTickets (
-		createdAt STRING DEFAULT CURRENT_TIMESTAMP,
-		sender STRING,
-		recipient STRING,
-		faceValue BLOB,
-		winProb BLOB,
-		senderNonce INTEGER,
-		recipientRand BLOB,
-		recipientRandHash STRING,
-		sig BLOB,
-		sessionID STRING
-	);
-	CREATE INDEX IF NOT EXISTS idx_winningtickets_sessionid ON winningTickets(sessionID);
-
 	CREATE TABLE IF NOT EXISTS ticketQueue (
 		createdAt DATETIME DEFAULT CURRENT_TIMESTAMP,
 		sender STRING,
@@ -570,14 +556,17 @@ func (db *DB) OrchCount(filter *DBOrchFilter) (int, error) {
 func (db *DB) IsOrchActive(addr ethcommon.Address, round *big.Int) (bool, error) {
 	orchs, err := db.SelectOrchs(
 		&DBOrchFilter{
-			CurrentRound: round,
-			Addresses:    []ethcommon.Address{addr},
+			Addresses: []ethcommon.Address{addr},
 		},
 	)
 	if err != nil {
 		return false, err
 	}
-	return len(orchs) > 0, nil
+	if len(orchs) == 0 {
+		return false, errors.New("Orchestrator not found")
+	}
+	isActive := orchs[0].ActivationRound <= round.Int64() && round.Int64() < orchs[0].DeactivationRound
+	return isActive, nil
 }
 
 func (db *DB) InsertUnbondingLock(id *big.Int, delegator ethcommon.Address, amount, withdrawRound *big.Int) error {
diff --git a/core/capabilities.go b/core/capabilities.go
index 9c3c87b4..a746e82b 100644
--- a/core/capabilities.go
+++ b/core/capabilities.go
@@ -48,28 +48,53 @@ const (
 	Capability_VP9_Encode
 )
 
+var CapabilityNameLookup = map[Capability]string{
+	Capability_Invalid:                    "Invalid",
+	Capability_Unused:                     "Unused",
+	Capability_H264:                       "H.264",
+	Capability_MPEGTS:                     "MPEGTS",
+	Capability_MP4:                        "MP4",
+	Capability_FractionalFramerates:       "Fractional framerates",
+	Capability_StorageDirect:              "Storage direct",
+	Capability_StorageS3:                  "Storage S3",
+	Capability_StorageGCS:                 "Storage GCS",
+	Capability_ProfileH264Baseline:        "H264 Baseline profile",
+	Capability_ProfileH264Main:            "H264 Main profile",
+	Capability_ProfileH264High:            "H264 High profile",
+	Capability_ProfileH264ConstrainedHigh: "H264 Constained High profile",
+	Capability_GOP:                        "GOP",
+	Capability_AuthToken:                  "Auth token",
+	Capability_SceneClassification:        "Scene slassification",
+	Capability_MPEG7VideoSignature:        "MPEG7 signature",
+	Capability_HEVC_Decode:                "HEVC decode",
+	Capability_HEVC_Encode:                "HEVC encode",
+	Capability_VP8_Decode:                 "VP8 decode",
+	Capability_VP9_Decode:                 "VP9 decode",
+	Capability_VP8_Encode:                 "VP8 encode",
+	Capability_VP9_Encode:                 "VP9 encode",
+}
 
 var CapabilityTestLookup = map[Capability]CapabilityTest{
 	// 145x145 is the lowest resolution supported by NVENC on Windows
 	Capability_H264: {
 		inVideoData: testSegment_H264,
-		outProfile: ffmpeg.VideoProfile{Resolution: "145x145", Bitrate: "1000k", Format: ffmpeg.FormatMPEGTS},
+		outProfile:  ffmpeg.VideoProfile{Resolution: "145x145", Bitrate: "1000k", Format: ffmpeg.FormatMPEGTS},
 	},
 	Capability_HEVC_Decode: {
 		inVideoData: testSegment_HEVC,
-		outProfile: ffmpeg.VideoProfile{Resolution: "145x145", Bitrate: "1000k", Format: ffmpeg.FormatMPEGTS},
+		outProfile:  ffmpeg.VideoProfile{Resolution: "145x145", Bitrate: "1000k", Format: ffmpeg.FormatMPEGTS},
 	},
 	Capability_HEVC_Encode: {
 		inVideoData: testSegment_H264,
-		outProfile: ffmpeg.VideoProfile{Resolution: "145x145", Bitrate: "1000k", Format: ffmpeg.FormatMPEGTS, Encoder: ffmpeg.H265},
+		outProfile:  ffmpeg.VideoProfile{Resolution: "145x145", Bitrate: "1000k", Format: ffmpeg.FormatMPEGTS, Encoder: ffmpeg.H265},
 	},
 	Capability_VP8_Decode: {
 		inVideoData: testSegment_VP8,
-		outProfile: ffmpeg.VideoProfile{Resolution: "145x145", Bitrate: "1000k", Format: ffmpeg.FormatMPEGTS},
+		outProfile:  ffmpeg.VideoProfile{Resolution: "145x145", Bitrate: "1000k", Format: ffmpeg.FormatMPEGTS},
 	},
 	Capability_VP9_Decode: {
 		inVideoData: testSegment_VP9,
-		outProfile: ffmpeg.VideoProfile{Resolution: "145x145", Bitrate: "1000k", Format: ffmpeg.FormatMPEGTS},
+		outProfile:  ffmpeg.VideoProfile{Resolution: "145x145", Bitrate: "1000k", Format: ffmpeg.FormatMPEGTS},
 	},
 }
 
@@ -77,6 +102,7 @@ var capFormatConv = errors.New("capability: unknown format")
 var capStorageConv = errors.New("capability: unknown storage")
 var capProfileConv = errors.New("capability: unknown profile")
 var capCodecConv = errors.New("capability: unknown codec")
+var capUnknown = errors.New("capability: unknown")
 
 func DefaultCapabilities() []Capability {
 	// Add to this list as new features are added.
@@ -279,6 +305,23 @@ func NewCapabilities(caps []Capability, m []Capability) *Capabilities {
 	return c
 }
 
+func CapabilityToName(capability Capability) (string, error) {
+	capName, found := CapabilityNameLookup[capability]
+	if !found {
+		return "", capUnknown
+	}
+	return capName, nil
+}
+
+func InArray(capability Capability, caps []Capability) bool {
+	for _, c := range caps {
+		if capability == c {
+			return true
+		}
+	}
+	return false
+}
+
 func inputCodecToCapability(codec ffmpeg.VideoCodec) (Capability, error) {
 	switch codec {
 	case ffmpeg.H264:
diff --git a/core/transcoder.go b/core/transcoder.go
index b381b5fb..9842837d 100644
--- a/core/transcoder.go
+++ b/core/transcoder.go
@@ -119,9 +119,18 @@ func (nv *NvidiaTranscoder) Transcode(ctx context.Context, md *SegTranscodingMet
 func TestTranscoderCapabilities(devices []string) (caps []Capability, fatalError error) {
 	// default capabilities
 	allCaps := append(DefaultCapabilities(), OptionalCapabilities()...)
+	fname := filepath.Join(WorkDir, "testseg.tempfile")
+	defer os.Remove(fname)
+	nvTest3Rend := true
 	// iterate all capabilities and test ones which has test data
 	for _, c := range allCaps {
 		capTest, hasTest := CapabilityTestLookup[c]
+		capName, _ := CapabilityToName(c)
+		isRequired := InArray(c, DefaultCapabilities())
+		capKindStr := "Optional capability"
+		if isRequired {
+			capKindStr = "Required capability"
+		}
 		if hasTest {
 			b := bytes.NewReader(capTest.inVideoData)
 			z, err := gzip.NewReader(b)
@@ -134,13 +143,11 @@ func TestTranscoderCapabilities(devices []string) (caps []Capability, fatalError
 				glog.Errorf("Error reading test segment for capability %d: %s", c, err)
 				continue
 			}
-			fname := filepath.Join(WorkDir, "testseg.tempfile")
 			err = ioutil.WriteFile(fname, mp4testSeg, 0644)
 			if err != nil {
 				glog.Errorf("Error writing test segment for capability %d: %s", c, err)
 				continue
 			}
-			defer os.Remove(fname)
 			// check that capability is supported on all devices
 			for _, device := range devices {
 				t1 := NewNvidiaTranscoder(device)
@@ -149,29 +156,36 @@ func TestTranscoderCapabilities(devices []string) (caps []Capability, fatalError
 				td, err := t1.Transcode(context.Background(), md)
 				t1.Stop()
 				if err != nil {
-					// likely means capability is not supported
+					glog.Infof("%s %q is not supported on device %s, see other error messages for details", capKindStr, capName, device)
+					// likely means capability is not supported, don't check on other devices
 					goto test_fail
 				}
 				if len(td.Segments) == 0 || td.Pixels == 0 {
 					// abnormal behavior
-					glog.Errorf("Empty result segment when testing for capability %d", c)
+					glog.Errorf("Empty result segment when testing for %s %q", strings.ToLower(capKindStr), capName)
 					goto test_fail
 				}
+				// no error creating 4 renditions - disable 3 renditions test, as restriction is on driver level, not device
+				nvTest3Rend = false
 			}
 		}
 		caps = append(caps, c)
-		test_fail:
-	}
-	for _, defCap := range DefaultCapabilities() {
-		found := false
-		for _, supportedCap := range caps {
-			if defCap == supportedCap {
-				found = true
-				break
+		continue
+	test_fail:
+		if nvTest3Rend {
+			// if 4 renditions didn't succeed, try 3 renditions on first device to check if it could be session limit
+			t1 := NewNvidiaTranscoder(devices[0])
+			md := &SegTranscodingMetadata{Fname: fname, Profiles: []ffmpeg.VideoProfile{capTest.outProfile, capTest.outProfile, capTest.outProfile}}
+			td, err := t1.Transcode(context.Background(), md)
+			t1.Stop()
+			if err == nil && len(td.Segments) > 0 && td.Pixels > 0 {
+				glog.Error("Maximum number of simultaneous NVENC video encoding sessions is restricted by driver")
 			}
+			// do it only once
+			nvTest3Rend = false
 		}
-		if !found {
-			return caps, fmt.Errorf("Default capability %d is not supported", defCap)
+		if isRequired {
+			return nil, fmt.Errorf("%s %q is not supported on hardware", capKindStr, capName)
 		}
 	}
 	return caps, nil
diff --git a/docker/Dockerfile.build-linux b/docker/Dockerfile.build-linux
index bd83de64..063e4786 100644
--- a/docker/Dockerfile.build-linux
+++ b/docker/Dockerfile.build-linux
@@ -7,7 +7,7 @@ ENV LIBRARY_PATH /usr/local/cuda/lib64
 
 RUN apt-get update \
   && apt-get install -y software-properties-common curl apt-transport-https \
-  && curl https://dl.google.com/go/go1.15.5.linux-amd64.tar.gz | tar -C /usr/local -xz \
+  && curl https://dl.google.com/go/go1.17.6.linux-amd64.tar.gz | tar -C /usr/local -xz \
   && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \
   && add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs)  stable" \
   && apt-key adv --keyserver keyserver.ubuntu.com --recv 15CF4D18AF4F7421 \
diff --git a/eth/blockwatch/block_watcher.go b/eth/blockwatch/block_watcher.go
index 084676ec..c097b580 100644
--- a/eth/blockwatch/block_watcher.go
+++ b/eth/blockwatch/block_watcher.go
@@ -637,7 +637,12 @@ func (w *Watcher) enrichWithL1BlockNumber(header *MiniHeader) (*MiniHeader, erro
 	if header == nil || header.L1BlockNumber != nil {
 		return header, nil
 	}
-	return w.client.HeaderByHash(header.Hash)
+	fetchedBlock, err := w.client.HeaderByHash(header.Hash)
+	if err != nil {
+		return header, err
+	}
+	header.L1BlockNumber = fetchedBlock.L1BlockNumber
+	return header, nil
 }
 
 func isUnknownBlockErr(err error) bool {
diff --git a/eth/client.go b/eth/client.go
index 03464994..1e9ed240 100644
--- a/eth/client.go
+++ b/eth/client.go
@@ -107,6 +107,7 @@ type LivepeerEthClient interface {
 	Inflation() (*big.Int, error)
 	InflationChange() (*big.Int, error)
 	TargetBondingRate() (*big.Int, error)
+	GetGlobalTotalSupply() (*big.Int, error)
 	Paused() (bool, error)
 
 	// Governance
@@ -471,6 +472,10 @@ func (c *client) TargetBondingRate() (*big.Int, error) {
 	return c.minterSess.TargetBondingRate()
 }
 
+func (c *client) GetGlobalTotalSupply() (*big.Int, error) {
+	return c.minterSess.GetGlobalTotalSupply()
+}
+
 func (c *client) CurrentMintableTokens() (*big.Int, error) {
 	return c.minterSess.CurrentMintableTokens()
 }
diff --git a/eth/roundinitializer.go b/eth/roundinitializer.go
index 48da2dc0..d3f2cbee 100644
--- a/eth/roundinitializer.go
+++ b/eth/roundinitializer.go
@@ -34,7 +34,7 @@ type RoundInitializer struct {
 	quit   chan struct{}
 
 	nextRoundStartL1Block *big.Int
-	mu                  sync.Mutex
+	mu                    sync.Mutex
 }
 
 // NewRoundInitializer creates a RoundInitializer instance
diff --git a/eth/stubclient.go b/eth/stubclient.go
index af7d11a6..65f9c57e 100644
--- a/eth/stubclient.go
+++ b/eth/stubclient.go
@@ -384,6 +384,7 @@ func (c *StubClient) UnbondingPeriod() (uint64, error)            { return 0, ni
 func (c *StubClient) Inflation() (*big.Int, error)                { return big.NewInt(0), nil }
 func (c *StubClient) InflationChange() (*big.Int, error)          { return big.NewInt(0), nil }
 func (c *StubClient) TargetBondingRate() (*big.Int, error)        { return big.NewInt(0), nil }
+func (c *StubClient) GetGlobalTotalSupply() (*big.Int, error)     { return big.NewInt(0), nil }
 
 // Helpers
 
diff --git a/install_ffmpeg.sh b/install_ffmpeg.sh
index 08afb7b9..498c7618 100755
--- a/install_ffmpeg.sh
+++ b/install_ffmpeg.sh
@@ -5,11 +5,22 @@ set -ex
 ROOT="${1:-$HOME}"
 ARCH="$(uname -m)"
 NPROC=${NPROC:-$(nproc)}
+EXTRA_CFLAGS=""
+EXTRA_LDFLAGS=""
+EXTRA_FFMPEG_FLAGS=""
 
 if [[ $ARCH == "arm64" ]] && [[ $(uname) == "Darwin" ]]; then
   # Detect Apple Silicon
   IS_M1=1
 fi
+if [[ $ARCH == "x86_64" ]] && [[ $(uname) == "Darwin" ]] && [[ "${GOARCH:-}" == "arm64" ]]; then
+  echo "cross-compiling darwin-arm64"
+  EXTRA_CFLAGS="$EXTRA_CFLAGS --target=arm64-apple-macos11"
+  EXTRA_LDFLAGS="$EXTRA_LDFLAGS --target=arm64-apple-macos11"
+  HOST_OS="--host=aarch64-darwin"
+  EXTRA_FFMPEG_FLAGS="$EXTRA_FFMPEG_FLAGS --arch=aarch64 --enable-cross-compile"
+  IS_M1=1
+fi
 echo "Arch $ARCH ${IS_M1:+(Apple Silicon)}"
 
 # Windows (MSYS2) needs a few tweaks
@@ -71,7 +82,7 @@ if [ ! -e "$ROOT/x264" ]; then
     # older git master, does not compile on Apple Silicon
     git checkout 545de2ffec6ae9a80738de1b2c8cf820249a2530
   fi
-  ./configure --prefix="$ROOT/compiled" --enable-pic --enable-static ${HOST_OS:-} --disable-cli
+  ./configure --prefix="$ROOT/compiled" --enable-pic --enable-static ${HOST_OS:-} --disable-cli --extra-cflags="$EXTRA_CFLAGS" --extra-asflags="$EXTRA_CFLAGS"
   make -j$NPROC
   make -j$NPROC install-lib-static
 fi
@@ -98,19 +109,18 @@ if [[ $(uname) == "Linux" && $BUILD_TAGS == *"debug-video"* ]]; then
   fi
 fi
 
-EXTRA_FFMPEG_FLAGS=""
 DISABLE_FFMPEG_COMPONENTS=""
-EXTRA_LDFLAGS=""
+EXTRA_FFMPEG_LDFLAGS="$EXTRA_LDFLAGS"
 # all flags which should be present for production build, but should be replaced/removed for debug build
 DEV_FFMPEG_FLAGS="--disable-programs"
 
 if [ $(uname) == "Darwin" ]; then
-  EXTRA_LDFLAGS="-framework CoreFoundation -framework Security"
+  EXTRA_FFMPEG_LDFLAGS="$EXTRA_FFMPEG_LDFLAGS -framework CoreFoundation -framework Security"
 else
   # If we have clang, we can compile with CUDA support!
   if which clang > /dev/null; then
     echo "clang detected, building with GPU support"
-    EXTRA_FFMPEG_FLAGS="--enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvenc --enable-decoder=h264_cuvid,hevc_cuvid,vp8_cuvid,vp9_cuvid --enable-filter=scale_cuda,signature_cuda,hwupload_cuda --enable-encoder=h264_nvenc,hevc_nvenc"
+    EXTRA_FFMPEG_FLAGS="$EXTRA_FFMPEG_FLAGS --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvenc --enable-decoder=h264_cuvid,hevc_cuvid,vp8_cuvid,vp9_cuvid --enable-filter=scale_cuda,signature_cuda,hwupload_cuda --enable-encoder=h264_nvenc,hevc_nvenc"
     if [[ $BUILD_TAGS == *"experimental"* ]]; then
         if [ ! -e "/usr/local/lib/libtensorflow_framework.so" ]; then
           LIBTENSORFLOW_VERSION=2.6.3 \
@@ -149,8 +159,8 @@ if [ ! -e "$ROOT/ffmpeg/libavcodec/libavcodec.a" ]; then
     --enable-filter=aresample,asetnsamples,fps,scale,hwdownload,select,livepeer_dnn,signature \
     --enable-encoder=aac,opus,libx264 \
     --enable-decoder=aac,opus,h264 \
-    --extra-cflags="-I${ROOT}/compiled/include" \
-    --extra-ldflags="-L${ROOT}/compiled/lib ${EXTRA_LDFLAGS}" \
+    --extra-cflags="-I${ROOT}/compiled/include ${EXTRA_CFLAGS}" \
+    --extra-ldflags="-L${ROOT}/compiled/lib ${EXTRA_FFMPEG_LDFLAGS}" \
     --prefix="$ROOT/compiled" \
     $EXTRA_FFMPEG_FLAGS \
     $DEV_FFMPEG_FLAGS
diff --git a/monitor/census.go b/monitor/census.go
index 86d9fff8..6b4dcd34 100644
--- a/monitor/census.go
+++ b/monitor/census.go
@@ -590,7 +590,7 @@ func InitCensus(nodeType NodeType, version string) {
 			Name:        "upload_time_seconds",
 			Measure:     census.mUploadTime,
 			Description: "UploadTime, seconds",
-			TagKeys:     append([]tag.Key{census.kOrchestratorURI}, baseTagsWithManifestID...),
+			TagKeys:     append([]tag.Key{census.kOrchestratorURI}, baseTags...),
 			Aggregation: view.Distribution(0, .10, .20, .50, .100, .150, .200, .500, .1000, .5000, 10.000),
 		},
 		{
@@ -632,7 +632,7 @@ func InitCensus(nodeType NodeType, version string) {
 			Name:        "discovery_errors_total",
 			Measure:     census.mDiscoveryError,
 			Description: "Number of discover errors",
-			TagKeys:     append([]tag.Key{census.kErrorCode, census.kOrchestratorURI}, baseTagsWithManifestID...),
+			TagKeys:     append([]tag.Key{census.kErrorCode, census.kOrchestratorURI}, baseTags...),
 			Aggregation: view.Count(),
 		},
 		{
@@ -899,15 +899,20 @@ func manifestIDTagAndIP(ctx context.Context, others ...tag.Mutator) []tag.Mutato
 func LogDiscoveryError(ctx context.Context, uri, code string) {
 	if strings.Contains(code, "OrchestratorCapped") {
 		code = "OrchestratorCapped"
+	} else if strings.Contains(code, "HTTP status code 404") {
+		code = "HTTP 404"
+	} else if strings.Contains(code, "DeadlineExceeded") || strings.Contains(code, "deadline") {
+		code = "DeadlineExceeded"
 	} else if strings.Contains(code, "Canceled") {
 		code = "Canceled"
 	}
-	if err := stats.RecordWithTags(census.ctx,
-		manifestIDTag(ctx,
-			tag.Insert(census.kErrorCode, code),
-			tag.Insert(census.kOrchestratorURI, uri)),
-		census.mDiscoveryError.M(1)); err != nil {
-		clog.Errorf(ctx, "Error recording metrics err=%q", err)
+	if code != "Canceled" {
+		if err := stats.RecordWithTags(census.ctx,
+			[]tag.Mutator{tag.Insert(census.kErrorCode, code),
+				tag.Insert(census.kOrchestratorURI, uri)},
+			census.mDiscoveryError.M(1)); err != nil {
+			clog.Errorf(ctx, "Error recording metrics err=%q", err)
+		}
 	}
 }
 
@@ -1179,7 +1184,11 @@ func SegmentUploaded(ctx context.Context, nonce, seqNo uint64, uploadDur time.Du
 	if err := stats.RecordWithTags(census.ctx,
 		manifestIDTag(ctx,
 			tag.Insert(census.kOrchestratorURI, uri)),
-		census.mSegmentUploaded.M(1),
+		census.mSegmentUploaded.M(1)); err != nil {
+		clog.Errorf(ctx, "Error recording metrics err=%q", err)
+	}
+	if err := stats.RecordWithTags(census.ctx,
+		[]tag.Mutator{tag.Insert(census.kOrchestratorURI, uri)},
 		census.mUploadTime.M(uploadDur.Seconds())); err != nil {
 		clog.Errorf(ctx, "Error recording metrics err=%q", err)
 	}
@@ -1409,40 +1418,6 @@ func RecordingSegmentSaved(dur time.Duration, err error) {
 	}
 }
 
-func TranscodedSegmentAppeared(ctx context.Context, nonce, seqNo uint64, profile string, recordingEnabled bool) {
-	clog.V(logLevel).Infof(ctx, "Logging LogTranscodedSegmentAppeared... profile=%s", profile)
-	census.segmentTranscodedAppeared(ctx, nonce, seqNo, profile, recordingEnabled)
-}
-
-func (cen *censusMetricsCounter) segmentTranscodedAppeared(ctx context.Context, nonce, seqNo uint64, profile string, recordingEnabled bool) {
-	cen.lock.Lock()
-	defer cen.lock.Unlock()
-	rctx, err := tag.New(cen.ctx, tag.Insert(cen.kProfile, profile))
-	if err != nil {
-		glog.Error("Error creating context", err)
-		return
-	}
-
-	// cen.transcodedSegments[nonce] = cen.transcodedSegments[nonce] + 1
-	if st, ok := cen.emergeTimes[nonce][seqNo]; ok {
-		latency := time.Since(st)
-		clog.V(logLevel).Infof(ctx, "Recording latency for segment profile=%s latency=%s", profile, latency)
-		if err := stats.RecordWithTags(rctx,
-			manifestIDTag(ctx), cen.mTranscodeLatency.M(latency.Seconds())); err != nil {
-			clog.Errorf(ctx, "Error recording metrics err=%q", err)
-		}
-	}
-
-	segType := segTypeRegular
-	if recordingEnabled {
-		segType = segTypeRec
-	}
-	if err := stats.RecordWithTags(rctx,
-		manifestIDTag(ctx, tag.Insert(cen.kSegmentType, segType)), cen.mSegmentTranscodedAppeared.M(1)); err != nil {
-		clog.Errorf(ctx, "Error recording metrics err=%q", err)
-	}
-}
-
 func StreamCreateFailed(nonce uint64, reason string) {
 	glog.Errorf("Logging StreamCreateFailed... nonce=%d reason='%s'", nonce, reason)
 	stats.Record(census.ctx, census.mStreamCreateFailed.M(1))
diff --git a/net/lp_rpc.pb.go b/net/lp_rpc.pb.go
index 8b3d4152..dc23c0d2 100644
--- a/net/lp_rpc.pb.go
+++ b/net/lp_rpc.pb.go
@@ -1019,7 +1019,7 @@ type VideoProfile struct {
 	// GOP interval
 	Gop int32 `protobuf:"varint,24,opt,name=gop,proto3" json:"gop,omitempty"`
 	// Encoder (video codec)
-	Encoder              VideoProfile_VideoCodec `protobuf:"varint,25,opt,name=Encoder,proto3,enum=net.VideoProfile_VideoCodec" json:"Encoder,omitempty"`
+	Encoder              VideoProfile_VideoCodec `protobuf:"varint,25,opt,name=encoder,proto3,enum=net.VideoProfile_VideoCodec" json:"encoder,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}                `json:"-"`
 	XXX_unrecognized     []byte                  `json:"-"`
 	XXX_sizecache        int32                   `json:"-"`
@@ -1958,58 +1958,58 @@ var fileDescriptor_034e29c79f9ba827 = []byte{
 	0xb4, 0xb7, 0xf0, 0xcd, 0x3b, 0xdf, 0x22, 0x9f, 0x5a, 0x39, 0xad, 0x75, 0x94, 0xc8, 0x43, 0x1e,
 	0x79, 0xeb, 0x78, 0x8c, 0xa5, 0xc8, 0x2e, 0xd4, 0xac, 0x0b, 0xbc, 0x87, 0x78, 0xd4, 0xc6, 0xe2,
 	0x51, 0x99, 0x1b, 0x32, 0x49, 0x6d, 0xd0, 0x38, 0x4e, 0x3c, 0x0f, 0xcd, 0xd4, 0x4b, 0xf2, 0x02,
-	0x6a, 0xdd, 0xc8, 0x34, 0x8e, 0x0d, 0x3c, 0xe6, 0xd1, 0xe2, 0x31, 0x48, 0x1c, 0xc4, 0x21, 0x0f,
-	0x68, 0x26, 0xec, 0x7f, 0x02, 0x55, 0x63, 0xa8, 0xee, 0xfc, 0xaf, 0xfb, 0xdd, 0xa3, 0xb3, 0x81,
-	0x7b, 0x8f, 0xd4, 0xa0, 0xfc, 0xba, 0xff, 0xb5, 0xeb, 0xf8, 0x7f, 0x82, 0x5a, 0xe6, 0xe0, 0x55,
-	0x58, 0xee, 0x9e, 0x1c, 0x9c, 0x1e, 0x76, 0xe9, 0xf0, 0xb0, 0xfb, 0xed, 0xde, 0x9b, 0x57, 0x7a,
-	0x6c, 0x58, 0x81, 0xf6, 0x71, 0xe7, 0xc5, 0xd7, 0xc3, 0xfd, 0xbd, 0x41, 0xf7, 0x55, 0xef, 0xa4,
-	0xeb, 0x3a, 0xa4, 0x0d, 0x0d, 0x84, 0x5e, 0xef, 0xf5, 0x4e, 0xdc, 0x52, 0x4e, 0x1e, 0xf7, 0x8e,
-	0x8e, 0xdd, 0x32, 0xd9, 0x80, 0x07, 0x48, 0x1e, 0x9c, 0x9e, 0x0c, 0xce, 0xe8, 0x5e, 0xef, 0xa4,
-	0x7b, 0x68, 0x58, 0x15, 0xbf, 0x03, 0x30, 0xb3, 0x90, 0xd4, 0xa1, 0xa2, 0x05, 0xdd, 0x7b, 0x76,
-	0xf5, 0xdc, 0x75, 0xb4, 0x59, 0x6f, 0xfb, 0xdf, 0xb8, 0x25, 0xb3, 0x78, 0xe9, 0x96, 0xfd, 0x77,
-	0xf0, 0xe0, 0x2c, 0x6b, 0x90, 0xe1, 0x80, 0x8f, 0xaf, 0x78, 0xa4, 0xb0, 0x0a, 0xb9, 0x50, 0x9e,
-	0xa6, 0x13, 0xdb, 0x44, 0xf5, 0x12, 0x47, 0x13, 0x6c, 0xf1, 0xb6, 0xf4, 0x58, 0x8a, 0xec, 0xc0,
-	0xea, 0xad, 0x4c, 0x1c, 0xea, 0x9d, 0x66, 0x7e, 0x59, 0x49, 0xe6, 0x32, 0xf1, 0x4d, 0x3a, 0xf1,
-	0xff, 0xeb, 0xc0, 0xc3, 0x3b, 0x4a, 0x25, 0x6a, 0x7d, 0x0d, 0x4d, 0xd3, 0x05, 0x92, 0x34, 0x3e,
-	0x97, 0x38, 0x27, 0x34, 0x3b, 0x5f, 0x7c, 0xa8, 0xba, 0xea, 0x2d, 0x3b, 0x08, 0xf5, 0xb5, 0x78,
-	0x37, 0x52, 0xe9, 0x0d, 0x35, 0x6d, 0x04, 0x81, 0xcd, 0xdf, 0xc2, 0xf2, 0x2d, 0x76, 0x36, 0x72,
-	0x99, 0x16, 0x81, 0x23, 0x57, 0x3e, 0x9a, 0xea, 0xcf, 0x72, 0xec, 0x68, 0xfa, 0x9b, 0xd2, 0x37,
-	0x8e, 0x7f, 0x01, 0x60, 0x12, 0x09, 0x6d, 0xfb, 0xfd, 0x8f, 0xb6, 0x80, 0x47, 0x3f, 0x66, 0xe4,
-	0x4f, 0xd6, 0xff, 0xbf, 0x3b, 0xd0, 0xce, 0xef, 0x01, 0xb5, 0xbd, 0x80, 0xba, 0x34, 0xd7, 0x91,
-	0xb9, 0x61, 0xd3, 0x8c, 0x29, 0x77, 0xdd, 0x16, 0xcd, 0x65, 0x17, 0x27, 0x64, 0xf2, 0x15, 0x80,
-	0xc9, 0x7e, 0x11, 0x47, 0xd2, 0x2b, 0xe3, 0x59, 0xcb, 0x85, 0x2a, 0x81, 0x07, 0x14, 0x44, 0xfc,
-	0x7f, 0x3a, 0xb0, 0x9c, 0xab, 0xa1, 0x5c, 0x4e, 0x27, 0x2a, 0x6b, 0x3a, 0xce, 0xac, 0xe9, 0xac,
-	0xc3, 0x12, 0x4f, 0xd3, 0x38, 0x35, 0xbd, 0xfa, 0xf8, 0x1e, 0x35, 0x24, 0xd9, 0x86, 0x4a, 0xc8,
-	0x14, 0xb3, 0x63, 0x12, 0x99, 0x37, 0xda, 0x3a, 0x03, 0x25, 0xc8, 0xe7, 0x50, 0x29, 0x8c, 0xdc,
-	0x0f, 0x4c, 0x49, 0xbe, 0x35, 0xd3, 0x51, 0x14, 0xd9, 0xaf, 0x43, 0x35, 0x45, 0x43, 0xfc, 0xbf,
-	0xc0, 0x32, 0xe5, 0x63, 0x21, 0x15, 0xcf, 0x9f, 0x0b, 0xeb, 0x50, 0x95, 0x3c, 0x48, 0x79, 0x36,
-	0x5b, 0x5b, 0x4a, 0x37, 0x35, 0xdd, 0x91, 0x02, 0xa1, 0x6e, 0x6c, 0xc8, 0xe6, 0xf4, 0x42, 0x53,
-	0x2b, 0x7f, 0x54, 0x53, 0xf3, 0xff, 0xe6, 0x40, 0xfb, 0x24, 0x56, 0x62, 0x74, 0x63, 0xbd, 0x7f,
-	0x47, 0x9e, 0xfc, 0x0a, 0x6a, 0xd2, 0xb4, 0x72, 0x7b, 0x6a, 0xcb, 0x84, 0x86, 0xc1, 0x68, 0xc6,
-	0xd4, 0x66, 0x2b, 0x26, 0x2f, 0x7b, 0x21, 0x3a, 0xa0, 0x4c, 0x2d, 0x35, 0xd7, 0xb9, 0x57, 0xe6,
-	0x3b, 0xf7, 0x77, 0x95, 0x7a, 0xc9, 0x2d, 0x7f, 0x57, 0xa9, 0x3f, 0x76, 0x7d, 0xff, 0x5f, 0x25,
-	0x68, 0x15, 0x87, 0x56, 0x3d, 0x62, 0xa7, 0x3c, 0x10, 0x89, 0xe0, 0x91, 0xb2, 0x73, 0xc3, 0x0c,
-	0xd0, 0x03, 0xd6, 0x88, 0x05, 0x7c, 0x38, 0x8b, 0xf5, 0x16, 0x6d, 0x68, 0xe4, 0xad, 0x06, 0xf4,
-	0x68, 0xf6, 0x5e, 0x44, 0x98, 0x77, 0x76, 0x8e, 0xa8, 0xbd, 0x17, 0x7a, 0x7e, 0x39, 0xd7, 0x09,
-	0x9e, 0x1f, 0x33, 0x4c, 0x59, 0x14, 0x9a, 0x76, 0x6b, 0xa6, 0x8a, 0x95, 0x9c, 0x45, 0x59, 0x14,
-	0x62, 0xb7, 0x25, 0x50, 0x91, 0x9c, 0x87, 0x76, 0xbe, 0xc0, 0xb5, 0x6e, 0xef, 0xb3, 0xc1, 0x70,
-	0x78, 0x3e, 0x89, 0x83, 0x4b, 0x1c, 0x34, 0x5a, 0x74, 0x79, 0x86, 0xef, 0x6b, 0x98, 0x1c, 0xc3,
-	0x4a, 0x41, 0xd4, 0x4e, 0xea, 0x66, 0xe8, 0xf8, 0x45, 0x61, 0x52, 0xef, 0xe6, 0x32, 0x76, 0x66,
-	0x2f, 0x28, 0x30, 0x88, 0xdf, 0x03, 0x62, 0x64, 0x07, 0x3c, 0x0a, 0x79, 0x6a, 0xdd, 0xf4, 0x18,
-	0x5a, 0x12, 0xe9, 0x61, 0x14, 0x47, 0x41, 0x36, 0x2d, 0x36, 0x0d, 0x76, 0xa2, 0xa1, 0x3b, 0x9e,
-	0x99, 0xdf, 0xc3, 0xfa, 0xdd, 0x6a, 0xc9, 0x53, 0xb8, 0x1f, 0xa4, 0xdc, 0x18, 0x9b, 0xc6, 0xd3,
-	0x28, 0xb4, 0x49, 0xd2, 0xce, 0x50, 0xaa, 0x41, 0xf2, 0x12, 0x36, 0xe6, 0xc5, 0x8c, 0x13, 0x8c,
-	0x2b, 0x8d, 0xa2, 0xf5, 0xb9, 0x1d, 0xe8, 0x0c, 0xed, 0x4f, 0xff, 0x3f, 0x25, 0xa8, 0xf5, 0xd9,
-	0x0d, 0x86, 0xdb, 0xc2, 0x13, 0xc6, 0xf9, 0xb8, 0x27, 0x0c, 0xe6, 0x88, 0xfe, 0x40, 0xab, 0xcb,
-	0x52, 0x77, 0x3b, 0xbb, 0xfc, 0x33, 0x9c, 0x4d, 0x7a, 0xb0, 0x66, 0x2d, 0xb3, 0xde, 0xb5, 0x87,
-	0x55, 0xb0, 0xe0, 0x3c, 0x2c, 0x1c, 0x56, 0xbc, 0x0d, 0x4a, 0xd4, 0xe2, 0x0d, 0x3d, 0x87, 0xfb,
-	0xfc, 0x3a, 0xe1, 0x81, 0xe2, 0xe1, 0x10, 0x9f, 0x55, 0xf6, 0xa1, 0x74, 0xfb, 0xcd, 0xd5, 0xce,
-	0xa4, 0x10, 0xea, 0x5c, 0x43, 0xab, 0x58, 0x3e, 0xc8, 0x3e, 0x2c, 0x1f, 0x71, 0x35, 0x07, 0x79,
-	0x0b, 0x45, 0xc6, 0x16, 0x91, 0xcd, 0xbb, 0xcb, 0x0f, 0x79, 0x02, 0x95, 0xbe, 0x7e, 0xa0, 0x9a,
-	0x1f, 0x02, 0xd9, 0xef, 0x8c, 0xcd, 0x79, 0xb2, 0x73, 0x02, 0x70, 0x36, 0x7b, 0x66, 0xfe, 0x0e,
-	0x48, 0x56, 0xa2, 0x0a, 0xa8, 0x19, 0xcc, 0x6e, 0xd5, 0xae, 0x4d, 0x53, 0x1f, 0xe7, 0x4a, 0xca,
-	0x33, 0xe7, 0xbc, 0x8a, 0x7f, 0x51, 0x76, 0x7f, 0x08, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x05, 0xdd,
-	0x3a, 0x59, 0x11, 0x00, 0x00,
+	0x6a, 0x3c, 0x32, 0x8d, 0x63, 0x03, 0x8f, 0x79, 0xb4, 0x78, 0x0c, 0x12, 0x07, 0x71, 0xc8, 0x03,
+	0x9a, 0x09, 0xfb, 0x9f, 0x40, 0xd5, 0x18, 0xaa, 0x3b, 0xff, 0xeb, 0x7e, 0xf7, 0xe8, 0x6c, 0xe0,
+	0xde, 0x23, 0x35, 0x28, 0xbf, 0xee, 0x7f, 0xed, 0x3a, 0xfe, 0x9f, 0xa0, 0x96, 0x39, 0x78, 0x15,
+	0x96, 0xbb, 0x27, 0x07, 0xa7, 0x87, 0x5d, 0x3a, 0x3c, 0xec, 0x7e, 0xbb, 0xf7, 0xe6, 0x95, 0x1e,
+	0x1b, 0x56, 0xa0, 0x7d, 0xdc, 0x79, 0xf1, 0xf5, 0x70, 0x7f, 0x6f, 0xd0, 0x7d, 0xd5, 0x3b, 0xe9,
+	0xba, 0x0e, 0x69, 0x43, 0x03, 0xa1, 0xd7, 0x7b, 0xbd, 0x13, 0xb7, 0x94, 0x93, 0xc7, 0xbd, 0xa3,
+	0x63, 0xb7, 0x4c, 0x36, 0xe0, 0x01, 0x92, 0x07, 0xa7, 0x27, 0x83, 0x33, 0xba, 0xd7, 0x3b, 0xe9,
+	0x1e, 0x1a, 0x56, 0xc5, 0xef, 0x00, 0xcc, 0x2c, 0x24, 0x75, 0xa8, 0x68, 0x41, 0xf7, 0x9e, 0x5d,
+	0x3d, 0x77, 0x1d, 0x6d, 0xd6, 0xdb, 0xfe, 0x37, 0x6e, 0xc9, 0x2c, 0x5e, 0xba, 0x65, 0xff, 0x1d,
+	0x3c, 0x38, 0xcb, 0x1a, 0x64, 0x38, 0xe0, 0xe3, 0x2b, 0x1e, 0x29, 0xac, 0x42, 0x2e, 0x94, 0xa7,
+	0xe9, 0xc4, 0x36, 0x51, 0xbd, 0xc4, 0xd1, 0x04, 0x5b, 0xbc, 0x2d, 0x3d, 0x96, 0x22, 0x3b, 0xb0,
+	0x7a, 0x2b, 0x13, 0x87, 0x7a, 0xa7, 0x99, 0x5f, 0x56, 0x92, 0xb9, 0x4c, 0x7c, 0x93, 0x4e, 0xfc,
+	0xff, 0x3a, 0xf0, 0xf0, 0x8e, 0x52, 0x89, 0x5a, 0x5f, 0x43, 0xd3, 0x74, 0x81, 0x24, 0x8d, 0xcf,
+	0x25, 0xce, 0x09, 0xcd, 0xce, 0x17, 0x1f, 0xaa, 0xae, 0x7a, 0xcb, 0x0e, 0x42, 0x7d, 0x2d, 0xde,
+	0x8d, 0x54, 0x7a, 0x43, 0x4d, 0x1b, 0x41, 0x60, 0xf3, 0xb7, 0xb0, 0x7c, 0x8b, 0x9d, 0x8d, 0x5c,
+	0xa6, 0x45, 0xe0, 0xc8, 0x95, 0x8f, 0xa6, 0xfa, 0xb3, 0x1c, 0x3b, 0x9a, 0xfe, 0xa6, 0xf4, 0x8d,
+	0xe3, 0x5f, 0x00, 0x98, 0x44, 0x42, 0xdb, 0x7e, 0xff, 0xa3, 0x2d, 0xe0, 0xd1, 0x8f, 0x19, 0xf9,
+	0x93, 0xf5, 0xff, 0xef, 0x0e, 0xb4, 0xf3, 0x7b, 0x40, 0x6d, 0x2f, 0xa0, 0x2e, 0xcd, 0x75, 0x64,
+	0x6e, 0xd8, 0x34, 0x63, 0xca, 0x5d, 0xb7, 0x45, 0x73, 0xd9, 0xc5, 0x09, 0x99, 0x7c, 0x05, 0x60,
+	0xb2, 0x5f, 0xc4, 0x91, 0xf4, 0xca, 0x78, 0xd6, 0x72, 0xa1, 0x4a, 0xe0, 0x01, 0x05, 0x11, 0xff,
+	0x9f, 0x0e, 0x2c, 0xe7, 0x6a, 0x28, 0x97, 0xd3, 0x89, 0xca, 0x9a, 0x8e, 0x33, 0x6b, 0x3a, 0xeb,
+	0xb0, 0xc4, 0xd3, 0x34, 0x4e, 0x4d, 0xaf, 0x3e, 0xbe, 0x47, 0x0d, 0x49, 0xb6, 0xa1, 0x12, 0x32,
+	0xc5, 0xec, 0x98, 0x44, 0xe6, 0x8d, 0xb6, 0xce, 0x40, 0x09, 0xf2, 0x39, 0x54, 0x0a, 0x23, 0xf7,
+	0x03, 0x53, 0x92, 0x6f, 0xcd, 0x74, 0x14, 0x45, 0xf6, 0xeb, 0x50, 0x4d, 0xd1, 0x10, 0xff, 0x2f,
+	0xb0, 0x4c, 0xf9, 0x58, 0x48, 0xc5, 0xf3, 0xe7, 0xc2, 0x3a, 0x54, 0x25, 0x0f, 0x52, 0x9e, 0xcd,
+	0xd6, 0x96, 0xd2, 0x4d, 0x4d, 0x77, 0xa4, 0x40, 0xa8, 0x1b, 0x1b, 0xb2, 0x39, 0xbd, 0xd0, 0xd4,
+	0xca, 0x1f, 0xd5, 0xd4, 0xfc, 0xbf, 0x39, 0xd0, 0x3e, 0x89, 0x95, 0x18, 0xdd, 0x58, 0xef, 0xdf,
+	0x91, 0x27, 0xbf, 0x82, 0x9a, 0x34, 0xad, 0xdc, 0x9e, 0xda, 0x32, 0xa1, 0x61, 0x30, 0x9a, 0x31,
+	0xb5, 0xd9, 0x8a, 0xc9, 0xcb, 0x5e, 0x88, 0x0e, 0x28, 0x53, 0x4b, 0xcd, 0x75, 0xee, 0x95, 0xf9,
+	0xce, 0xfd, 0x5d, 0xa5, 0x5e, 0x72, 0xcb, 0xdf, 0x55, 0xea, 0x8f, 0x5d, 0xdf, 0xff, 0x57, 0x09,
+	0x5a, 0xc5, 0xa1, 0x55, 0x8f, 0xd8, 0x29, 0x0f, 0x44, 0x22, 0x78, 0xa4, 0xec, 0xdc, 0x30, 0x03,
+	0xf4, 0x80, 0x35, 0x62, 0x01, 0x1f, 0xce, 0x62, 0xbd, 0x45, 0x1b, 0x1a, 0x79, 0xab, 0x01, 0x3d,
+	0x9a, 0xbd, 0x17, 0x11, 0xe6, 0x9d, 0x9d, 0x23, 0x6a, 0xef, 0x85, 0x9e, 0x5f, 0xce, 0x75, 0x82,
+	0xe7, 0xc7, 0x0c, 0x53, 0x16, 0x85, 0xa6, 0xdd, 0x9a, 0xa9, 0x62, 0x25, 0x67, 0x51, 0x16, 0x85,
+	0xd8, 0x6d, 0x09, 0x54, 0x24, 0xe7, 0xa1, 0x9d, 0x2f, 0x70, 0xad, 0xdb, 0xfb, 0x6c, 0x30, 0x1c,
+	0x9e, 0x4f, 0xe2, 0xe0, 0x12, 0x07, 0x8d, 0x16, 0x5d, 0x9e, 0xe1, 0xfb, 0x1a, 0x26, 0xc7, 0xb0,
+	0x52, 0x10, 0xb5, 0x93, 0xba, 0x19, 0x3a, 0x7e, 0x51, 0x98, 0xd4, 0xbb, 0xb9, 0x8c, 0x9d, 0xd9,
+	0x0b, 0x0a, 0x0c, 0xe2, 0xf7, 0x80, 0x18, 0xd9, 0x01, 0x8f, 0x42, 0x9e, 0x5a, 0x37, 0x3d, 0x86,
+	0x96, 0x44, 0x7a, 0x18, 0xc5, 0x51, 0x90, 0x4d, 0x8b, 0x4d, 0x83, 0x9d, 0x68, 0xe8, 0x8e, 0x67,
+	0xe6, 0xf7, 0xb0, 0x7e, 0xb7, 0x5a, 0xf2, 0x14, 0xee, 0x07, 0x29, 0x37, 0xc6, 0xa6, 0xf1, 0x34,
+	0x0a, 0x6d, 0x92, 0xb4, 0x33, 0x94, 0x6a, 0x90, 0xbc, 0x84, 0x8d, 0x79, 0x31, 0xe3, 0x04, 0xe3,
+	0x4a, 0xa3, 0x68, 0x7d, 0x6e, 0x07, 0x3a, 0x43, 0xfb, 0xd3, 0xff, 0x4f, 0x09, 0x6a, 0x7d, 0x76,
+	0x83, 0xe1, 0xb6, 0xf0, 0x84, 0x71, 0x3e, 0xee, 0x09, 0x83, 0x39, 0xa2, 0x3f, 0xd0, 0xea, 0xb2,
+	0xd4, 0xdd, 0xce, 0x2e, 0xff, 0x0c, 0x67, 0x93, 0x1e, 0xac, 0x59, 0xcb, 0xac, 0x77, 0xed, 0x61,
+	0x15, 0x2c, 0x38, 0x0f, 0x0b, 0x87, 0x15, 0x6f, 0x83, 0x12, 0xb5, 0x78, 0x43, 0xcf, 0xe1, 0x3e,
+	0xbf, 0x4e, 0x78, 0xa0, 0x78, 0x38, 0xc4, 0x67, 0x95, 0x7d, 0x28, 0xdd, 0x7e, 0x73, 0xb5, 0x33,
+	0x29, 0x84, 0x3a, 0xd7, 0xd0, 0x2a, 0x96, 0x0f, 0xb2, 0x0f, 0xcb, 0x47, 0x5c, 0xcd, 0x41, 0xde,
+	0x42, 0x91, 0xb1, 0x45, 0x64, 0xf3, 0xee, 0xf2, 0x43, 0x9e, 0x40, 0xa5, 0xaf, 0x1f, 0xa8, 0xe6,
+	0x87, 0x40, 0xf6, 0x3b, 0x63, 0x73, 0x9e, 0xec, 0x9c, 0x00, 0x9c, 0xcd, 0x9e, 0x99, 0xbf, 0x03,
+	0x92, 0x95, 0xa8, 0x02, 0x6a, 0x06, 0xb3, 0x5b, 0xb5, 0x6b, 0xd3, 0xd4, 0xc7, 0xb9, 0x92, 0xf2,
+	0xcc, 0x39, 0xaf, 0xe2, 0x5f, 0x94, 0xdd, 0x1f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x3a, 0x91, 0x7b,
+	0x09, 0x59, 0x11, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/net/lp_rpc.proto b/net/lp_rpc.proto
index b045ff08..acfd9388 100644
--- a/net/lp_rpc.proto
+++ b/net/lp_rpc.proto
@@ -267,7 +267,7 @@ message VideoProfile {
   }
 
   // Encoder (video codec)
-  VideoCodec Encoder = 25;
+  VideoCodec encoder = 25;
 }
 
 // Individual transcoded segment data.
diff --git a/net/redeemer.pb.go b/net/redeemer.pb.go
index 00dc358a..d30e6f2b 100644
--- a/net/redeemer.pb.go
+++ b/net/redeemer.pb.go
@@ -211,7 +211,9 @@ func init() {
 	proto.RegisterType((*MaxFloatUpdate)(nil), "net.MaxFloatUpdate")
 }
 
-func init() { proto.RegisterFile("net/redeemer.proto", fileDescriptor_41a074e4ea0232f2) }
+func init() {
+	proto.RegisterFile("net/redeemer.proto", fileDescriptor_41a074e4ea0232f2)
+}
 
 var fileDescriptor_41a074e4ea0232f2 = []byte{
 	// 323 bytes of a gzipped FileDescriptorProto
@@ -240,11 +242,11 @@ var fileDescriptor_41a074e4ea0232f2 = []byte{
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ context.Context
-var _ grpc.ClientConn
+var _ grpc.ClientConnInterface
 
 // This is a compile-time assertion to ensure that this generated file
 // is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion4
+const _ = grpc.SupportPackageIsVersion6
 
 // TicketRedeemerClient is the client API for TicketRedeemer service.
 //
@@ -256,10 +258,10 @@ type TicketRedeemerClient interface {
 }
 
 type ticketRedeemerClient struct {
-	cc *grpc.ClientConn
+	cc grpc.ClientConnInterface
 }
 
-func NewTicketRedeemerClient(cc *grpc.ClientConn) TicketRedeemerClient {
+func NewTicketRedeemerClient(cc grpc.ClientConnInterface) TicketRedeemerClient {
 	return &ticketRedeemerClient{cc}
 }
 
diff --git a/server/broadcast.go b/server/broadcast.go
index 61e1ce45..23415578 100644
--- a/server/broadcast.go
+++ b/server/broadcast.go
@@ -1153,10 +1153,6 @@ func downloadResults(ctx context.Context, cxn *rtmpConnection, seg *stream.HLSSe
 		segURLs[i] = url
 		segData[i] = data
 		segLock.Unlock()
-
-		if monitor.Enabled {
-			monitor.TranscodedSegmentAppeared(ctx, nonce, seg.SeqNo, profile.Name, bros != nil)
-		}
 	}
 
 	dlStart := time.Now()
diff --git a/server/handlers.go b/server/handlers.go
index 9616b33c..972f2052 100644
--- a/server/handlers.go
+++ b/server/handlers.go
@@ -374,12 +374,12 @@ func withdrawFeesHandler(client eth.LivepeerEthClient, getChainId func() (int64,
 	return mustHaveClient(client, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 		// for L1 contracts backwards-compatibility
 		var tx *ethtypes.Transaction
-		chainId, err := getChainId()
+		isL1Network, err := isL1Network(getChainId)
 		if err != nil {
 			respondWith500(w, err.Error())
 			return
 		}
-		if chainId == MainnetChainId || chainId == RinkebyChainId {
+		if isL1Network {
 			// L1 contracts
 			tx, err = client.L1WithdrawFees()
 			if err != nil {
@@ -437,3 +437,12 @@ func setMinGasPriceHandler(client eth.LivepeerEthClient) http.Handler {
 	}),
 	)
 }
+
+func isL1Network(getChainId func() (int64, error)) (bool, error) {
+	chainId, err := getChainId()
+	if err != nil {
+		return false, err
+	}
+	isL1Network := chainId == MainnetChainId || chainId == RinkebyChainId
+	return isL1Network, err
+}
diff --git a/server/webserver.go b/server/webserver.go
index d53c1061..4d4d53fa 100644
--- a/server/webserver.go
+++ b/server/webserver.go
@@ -895,7 +895,17 @@ func (s *LivepeerServer) cliWebServerHandlers(bindAddr string) *http.ServeMux {
 				return
 			}
 
-			totalSupply, err := lp.TotalSupply()
+			isL1Network, err := isL1Network(getChainId)
+			if err != nil {
+				glog.Error(err)
+				return
+			}
+			var totalSupply *big.Int
+			if isL1Network {
+				totalSupply, err = lp.TotalSupply()
+			} else {
+				totalSupply, err = lp.GetGlobalTotalSupply()
+			}
 			if err != nil {
 				glog.Error(err)
 				return
diff --git a/upload_build.sh b/upload_build.sh
index c9ab0707..057cdfed 100755
--- a/upload_build.sh
+++ b/upload_build.sh
@@ -6,17 +6,31 @@ set -e
 set -o nounset
 
 if [[ $(uname) == *"MSYS"* ]]; then
-  ARCH="windows"
+  PLATFORM="windows"
   EXT=".exe"
 else
-  ARCH=$(uname | tr '[:upper:]' '[:lower:]')
+  PLATFORM=$(uname | tr '[:upper:]' '[:lower:]')
   EXT=""
   if [[ -n "${RELEASE_TAG:-}" ]]; then
-      ARCH="$ARCH-$RELEASE_TAG"
+      PLATFORM="$PLATFORM-$RELEASE_TAG"
   fi
 fi
+ARCH="$(uname -m)"
+if [[ "${GOARCH:-}" != "" ]]; then
+  ARCH="$GOARCH"
+fi
+if [[ "$ARCH" == "x86_64" ]]; then
+  ARCH="amd64"
+fi
+if [[ "$ARCH" == "aarch64" ]]; then
+  ARCH="arm64"
+fi
+if [[ "$ARCH" != "amd64" ]] && [[ "$ARCH" != "arm64" ]]; then
+  echo "Unknown/unsupported architecture: $ARCH"
+  exit 1
+fi
 
-BASE="livepeer-$ARCH-amd64"
+BASE="livepeer-$PLATFORM-$ARCH"
 BRANCH="${TRAVIS_BRANCH:-unknown}"
 if [[ "${GHA_REF:-}" != "" ]]; then
   BRANCH="$(echo $GHA_REF | sed 's/refs\/heads\///')"
@@ -52,7 +66,7 @@ cp $BENCH $BASE
 cp $ROUTER $BASE
 
 # do a basic upload so we know if stuff's working prior to doing everything else
-if [[ $ARCH == "windows" ]]; then
+if [[ $PLATFORM == "windows" ]]; then
   FILE=$BASE.zip
   zip -r ./$FILE ./$BASE
 else
@@ -62,9 +76,6 @@ fi
 
 FILE_SHA256=`shasum -a 256 ${FILE}`
 
-# Quick self-check to see if the thing can execute at all
-(cd $BASE && $NODE -version)
-
 if [[ "${GCLOUD_KEY:-}" == "" ]]; then
   echo "GCLOUD_KEY not found, not uploading to Google Cloud."
   exit 0
@@ -94,5 +105,5 @@ curl -X PUT -T "${FILE}" \
 
 echo "upload done"
 
-curl --fail -s -H "Content-Type: application/json" -X POST -d "{\"content\": \"Build succeeded ✅\nBranch: $BRANCH\nPlatform: $ARCH-amd64\nLast commit: $(git log -1 --pretty=format:'%s by %an')\nhttps://build.livepeer.live/$VERSION_AND_NETWORK/${FILE}\nSHA256:\n${FILE_SHA256}\"}" $DISCORD_URL 
+curl --fail -s -H "Content-Type: application/json" -X POST -d "{\"content\": \"Build succeeded ✅\nBranch: $BRANCH\nPlatform: $PLATFORM-$ARCH\nLast commit: $(git log -1 --pretty=format:'%s by %an')\nhttps://build.livepeer.live/$VERSION_AND_NETWORK/${FILE}\nSHA256:\n${FILE_SHA256}\"}" $DISCORD_URL
 echo "done"


Test patch:
diff --git a/cmd/livepeer/livepeer_test.go b/cmd/livepeer/livepeer_test.go
index 6c61c732..264362a4 100644
--- a/cmd/livepeer/livepeer_test.go
+++ b/cmd/livepeer/livepeer_test.go
@@ -1,7 +1,6 @@
 package main
 
 import (
-	"context"
 	"errors"
 	"math/big"
 	"testing"
@@ -40,7 +39,7 @@ func TestSetupOrchestrator(t *testing.T) {
 	n, err := core.NewLivepeerNode(stubEthClient, "", dbh)
 	require.Nil(err)
 
-	err = setupOrchestrator(context.Background(), n, orch)
+	err = setupOrchestrator(n, orch)
 	assert.Nil(err)
 
 	orchs, err := dbh.SelectOrchs(&common.DBOrchFilter{
@@ -53,7 +52,7 @@ func TestSetupOrchestrator(t *testing.T) {
 
 	// test eth.GetTranscoder error
 	stubEthClient.Err = errors.New("GetTranscoder error")
-	err = setupOrchestrator(context.Background(), n, orch)
+	err = setupOrchestrator(n, orch)
 	assert.EqualError(err, "GetTranscoder error")
 }
 
diff --git a/common/db_test.go b/common/db_test.go
index b179ab40..107e9395 100644
--- a/common/db_test.go
+++ b/common/db_test.go
@@ -572,12 +572,17 @@ func TestIsOrchActive(t *testing.T) {
 	defer dbraw.Close()
 
 	addr := pm.RandAddress().String()
+
+	// not found
+	isActive, err := dbh.IsOrchActive(ethcommon.HexToAddress(addr), big.NewInt(4))
+	assert.EqualError(err, "Orchestrator not found")
+
 	activationRound := 5
 	orch := NewDBOrch(addr, "https://127.0.0.1:8936", 1, int64(activationRound), int64(activationRound+2), 0)
 	dbh.UpdateOrch(orch)
 
 	// inactive in round 4
-	isActive, err := dbh.IsOrchActive(ethcommon.HexToAddress(addr), big.NewInt(4))
+	isActive, err = dbh.IsOrchActive(ethcommon.HexToAddress(addr), big.NewInt(4))
 	assert.NoError(err)
 	assert.False(isActive)
 
diff --git a/core/test_segment.go b/core/test_segment.go
index 6c2585c2..4a16705f 100644
--- a/core/test_segment.go
+++ b/core/test_segment.go
@@ -1,290 +1,291 @@
 package core
+
 // Auto generated by core/test_segment.sh DO NOT EDIT
 var testSegment_H264 = []byte{
-  0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xd5, 0x55,
-  0xcd, 0x6f, 0x1b, 0x45, 0x14, 0x7f, 0x4b, 0x6b, 0x42, 0x42, 0x41, 0x71,
-  0x11, 0x55, 0x11, 0x48, 0x4c, 0x80, 0x03, 0xaa, 0x6c, 0x67, 0x77, 0xfd,
-  0x91, 0x60, 0x69, 0x20, 0x71, 0xa9, 0x1c, 0x21, 0x55, 0xca, 0xa9, 0xd7,
-  0x65, 0x76, 0x76, 0xec, 0x5d, 0xb2, 0x1f, 0x93, 0xd9, 0x09, 0xb1, 0x5b,
-  0xa8, 0x1c, 0x41, 0x25, 0x38, 0x55, 0x5c, 0x5a, 0x89, 0x43, 0x51, 0x6f,
-  0x08, 0x81, 0x54, 0xb8, 0x70, 0x2a, 0x6d, 0x11, 0xbd, 0xc0, 0xa5, 0xc7,
-  0x06, 0x71, 0x20, 0x42, 0x42, 0x42, 0xad, 0xda, 0x1c, 0x50, 0x4f, 0xb4,
-  0xee, 0x1b, 0xb7, 0x90, 0xfc, 0x05, 0xc8, 0xd9, 0xc3, 0xdb, 0xdf, 0xbc,
-  0xaf, 0xf9, 0xcd, 0xd3, 0x9b, 0x37, 0xed, 0x85, 0xe2, 0x34, 0xb4, 0xb6,
-  0x0f, 0x83, 0x75, 0x0d, 0x60, 0x68, 0x0d, 0xc1, 0xfa, 0x67, 0x30, 0xb1,
-  0x54, 0xb0, 0xac, 0x19, 0x6b, 0xe6, 0xc7, 0xa9, 0xad, 0x9f, 0x87, 0x63,
-  0xfc, 0xb5, 0x17, 0x60, 0x1a, 0xe0, 0xd2, 0x33, 0x23, 0xee, 0x60, 0x6d,
-  0xc3, 0x91, 0x6f, 0xf7, 0x7f, 0x37, 0xdc, 0x1b, 0x5f, 0x7b, 0x19, 0xb9,
-  0x3f, 0x71, 0xe9, 0xe0, 0x88, 0xfb, 0x16, 0x6c, 0xc3, 0x8b, 0x46, 0x3c,
-  0x7f, 0xf9, 0xf8, 0x89, 0x3d, 0xc0, 0x7d, 0x11, 0xec, 0x89, 0x65, 0x80,
-  0x53, 0x07, 0x4e, 0x9b, 0xba, 0xff, 0x0e, 0x30, 0xb8, 0x3a, 0xe5, 0xc0,
-  0xe4, 0xf4, 0xc5, 0x22, 0x4c, 0xdc, 0x64, 0x46, 0x37, 0xb9, 0x6d, 0x64,
-  0x37, 0x80, 0xa7, 0xbf, 0xde, 0x6c, 0xbd, 0x7d, 0x7b, 0xff, 0x02, 0xc0,
-  0x3e, 0x40, 0x71, 0xe0, 0xa3, 0xeb, 0x53, 0x62, 0x60, 0x6c, 0xe1, 0xad,
-  0x3f, 0x7e, 0x79, 0xe5, 0x2a, 0x82, 0x27, 0x0b, 0xc3, 0xe1, 0x57, 0xbf,
-  0x1d, 0xfb, 0xeb, 0xf2, 0x9f, 0x9b, 0x4b, 0xdf, 0x9f, 0x2b, 0xdd, 0x24,
-  0x9b, 0xaf, 0xde, 0xb9, 0xdb, 0x73, 0x1b, 0x35, 0x52, 0x26, 0x3c, 0x53,
-  0x82, 0x38, 0x08, 0x55, 0xd5, 0x9e, 0xab, 0x93, 0x46, 0x83, 0xd5, 0x7d,
-  0xee, 0xa0, 0x61, 0xa9, 0x82, 0x0e, 0xb3, 0xc7, 0x97, 0x8f, 0xb5, 0xcb,
-  0x35, 0xb2, 0x78, 0xe2, 0x28, 0x7a, 0x06, 0x82, 0xa3, 0xe1, 0x68, 0x26,
-  0xfb, 0xb1, 0xe8, 0x68, 0xe2, 0xda, 0x76, 0xb5, 0xec, 0xda, 0xae, 0xf1,
-  0x0e, 0xb5, 0x96, 0xcd, 0xd9, 0xd9, 0xf5, 0xf5, 0xf5, 0x4a, 0xdb, 0x82,
-  0xe2, 0xfb, 0x51, 0x20, 0xb2, 0x98, 0xa5, 0x95, 0x4c, 0x75, 0x67, 0xcd,
-  0x4e, 0x95, 0x50, 0x27, 0x31, 0xfa, 0x65, 0x52, 0x47, 0x59, 0x9a, 0x37,
-  0x09, 0x67, 0x3e, 0xe3, 0xd4, 0x21, 0x4a, 0x74, 0x68, 0x95, 0x04, 0xc2,
-  0x8f, 0x33, 0xbe, 0x42, 0x9d, 0xa6, 0xdd, 0xb4, 0x09, 0x4b, 0x59, 0xdc,
-  0xcf, 0x05, 0xb5, 0x7b, 0xd5, 0xa6, 0xdd, 0x73, 0x9c, 0x2a, 0x49, 0x04,
-  0x0d, 0x45, 0x8f, 0xe4, 0x6b, 0x3e, 0xa2, 0x39, 0x22, 0xf3, 0x3e, 0x86,
-  0xa2, 0xf4, 0x54, 0x40, 0x9d, 0x8a, 0x8d, 0x41, 0x28, 0x48, 0x12, 0xf5,
-  0x44, 0xe0, 0x99, 0x8c, 0x0e, 0x46, 0x78, 0x8a, 0xa5, 0x5d, 0x41, 0x9d,
-  0x06, 0xe1, 0xa1, 0xca, 0x12, 0xe6, 0x61, 0xa8, 0x43, 0xb4, 0x12, 0x71,
-  0x1c, 0xe5, 0x88, 0xe6, 0x7b, 0xf3, 0x01, 0xd7, 0x08, 0xf8, 0x6a, 0x42,
-  0x6d, 0xa4, 0xc0, 0x82, 0x93, 0xc8, 0xfd, 0x60, 0x96, 0x0a, 0xea, 0x3a,
-  0x25, 0xc7, 0x21, 0x1d, 0x96, 0x6b, 0x4f, 0xe6, 0x2b, 0x91, 0x34, 0x5e,
-  0x8f, 0x92, 0xac, 0x4a, 0x2f, 0xeb, 0x74, 0x72, 0xa1, 0x69, 0xd9, 0x25,
-  0x3a, 0x54, 0x18, 0x95, 0xd3, 0x1a, 0x89, 0xb3, 0x6c, 0x85, 0x85, 0xb8,
-  0xf0, 0xfe, 0xd5, 0x39, 0x24, 0x8f, 0x23, 0x2e, 0x76, 0x14, 0x36, 0x49,
-  0xd5, 0x68, 0x1f, 0x1e, 0x25, 0x4c, 0x1b, 0x2e, 0x51, 0xaa, 0x85, 0x8a,
-  0x19, 0x3a, 0xa1, 0xde, 0x8f, 0xd7, 0x14, 0xeb, 0x7b, 0x3c, 0x4b, 0x24,
-  0xd3, 0xb8, 0xe6, 0x58, 0x26, 0xad, 0x58, 0x94, 0x62, 0x0a, 0x74, 0x54,
-  0xcc, 0xf8, 0x74, 0x14, 0x4b, 0x44, 0x8e, 0x05, 0xf3, 0x3d, 0xd9, 0x47,
-  0x1c, 0x05, 0xd4, 0x45, 0xcc, 0x02, 0x26, 0x35, 0x72, 0x7f, 0x0e, 0x93,
-  0xfa, 0x9e, 0x1f, 0x31, 0xb3, 0x5b, 0x10, 0x29, 0x31, 0x3a, 0xdf, 0xba,
-  0x88, 0xba, 0xa1, 0xf6, 0x11, 0x65, 0x52, 0xa4, 0x5e, 0x37, 0x93, 0x68,
-  0x7d, 0xa4, 0x94, 0x18, 0xbe, 0x22, 0xfa, 0x98, 0x9f, 0xba, 0x75, 0xfb,
-  0x31, 0xf4, 0x92, 0x28, 0xc5, 0x25, 0xc9, 0xb9, 0x48, 0x05, 0x5f, 0xd3,
-  0xb4, 0x66, 0x93, 0x11, 0x03, 0x53, 0x5a, 0x25, 0xf2, 0x10, 0xc3, 0x15,
-  0xf7, 0xfe, 0x3b, 0xb2, 0xb1, 0x2b, 0x4e, 0xb9, 0xea, 0x90, 0xc4, 0xc7,
-  0xfa, 0x9a, 0xa3, 0xe1, 0x82, 0xba, 0xd5, 0x8a, 0x4d, 0x56, 0xcd, 0x81,
-  0xa8, 0x5d, 0x69, 0x20, 0x94, 0x26, 0xf1, 0xe8, 0xcf, 0x7a, 0xb4, 0xf1,
-  0x06, 0x82, 0x5c, 0x0b, 0x89, 0xd5, 0x8b, 0x90, 0x7b, 0x2d, 0x85, 0xff,
-  0xf5, 0x8a, 0x49, 0xec, 0x0f, 0xec, 0x45, 0x6c, 0x1f, 0xa4, 0xcf, 0x56,
-  0xb1, 0xf5, 0x4c, 0x23, 0x01, 0xde, 0x1c, 0x4b, 0x7c, 0xf2, 0x31, 0x54,
-  0x87, 0x0f, 0xee, 0xdd, 0xfe, 0xa1, 0x50, 0xbf, 0xff, 0xc5, 0x8d, 0xf3,
-  0xc5, 0xd2, 0xf5, 0x5f, 0xdf, 0x91, 0x6f, 0x1e, 0xf9, 0x72, 0xdf, 0x87,
-  0x87, 0x6e, 0xc8, 0x77, 0x3f, 0x78, 0xeb, 0x4c, 0xa1, 0x7c, 0x91, 0xc1,
-  0x04, 0x79, 0xe1, 0xa9, 0x97, 0xdb, 0xdf, 0xe0, 0x5d, 0xad, 0x9f, 0x85,
-  0xf1, 0x9a, 0x1f, 0xbb, 0x67, 0xc6, 0xc6, 0x0c, 0xce, 0x8c, 0xbf, 0x37,
-  0x76, 0x66, 0xc6, 0xe2, 0xe7, 0xaf, 0xc5, 0xad, 0x2b, 0x0f, 0xe6, 0x17,
-  0x9e, 0x7d, 0x1d, 0xb9, 0x37, 0x3e, 0xc3, 0x09, 0xff, 0xe9, 0x4b, 0xa7,
-  0x61, 0x3c, 0xd9, 0x2f, 0x6d, 0x15, 0xcd, 0xd8, 0xdb, 0xc5, 0xfe, 0x42,
-  0xab, 0x77, 0x66, 0x08, 0x67, 0x37, 0xf0, 0x6d, 0x2a, 0xee, 0xe1, 0xb7,
-  0xa9, 0xb8, 0x87, 0xdf, 0xa6, 0xb9, 0x73, 0x30, 0x96, 0xd4, 0x1e, 0x37,
-  0xce, 0xa0, 0x30, 0x03, 0x93, 0xa5, 0x6b, 0x3b, 0x3d, 0x63, 0x5d, 0x60,
-  0xba, 0x75, 0x05, 0x7e, 0x1a, 0x20, 0xf7, 0x79, 0xd3, 0xef, 0xe7, 0x4b,
-  0xe3, 0xda, 0xef, 0xc2, 0x2a, 0x9a, 0xa6, 0xdf, 0xcd, 0x9d, 0xbf, 0x67,
-  0xb8, 0x6f, 0x3c, 0x04, 0xe8, 0xb7, 0x5d, 0xf8, 0x48, 0x0a, 0x00, 0x00}
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xd5, 0x55,
+	0xcd, 0x6f, 0x1b, 0x45, 0x14, 0x7f, 0x4b, 0x6b, 0x42, 0x42, 0x41, 0x71,
+	0x11, 0x55, 0x11, 0x48, 0x4c, 0x80, 0x03, 0xaa, 0x6c, 0x67, 0x77, 0xfd,
+	0x91, 0x60, 0x69, 0x20, 0x71, 0xa9, 0x1c, 0x21, 0x55, 0xca, 0xa9, 0xd7,
+	0x65, 0x76, 0x76, 0xec, 0x5d, 0xb2, 0x1f, 0x93, 0xd9, 0x09, 0xb1, 0x5b,
+	0xa8, 0x1c, 0x41, 0x25, 0x38, 0x55, 0x5c, 0x5a, 0x89, 0x43, 0x51, 0x6f,
+	0x08, 0x81, 0x54, 0xb8, 0x70, 0x2a, 0x6d, 0x11, 0xbd, 0xc0, 0xa5, 0xc7,
+	0x06, 0x71, 0x20, 0x42, 0x42, 0x42, 0xad, 0xda, 0x1c, 0x50, 0x4f, 0xb4,
+	0xee, 0x1b, 0xb7, 0x90, 0xfc, 0x05, 0xc8, 0xd9, 0xc3, 0xdb, 0xdf, 0xbc,
+	0xaf, 0xf9, 0xcd, 0xd3, 0x9b, 0x37, 0xed, 0x85, 0xe2, 0x34, 0xb4, 0xb6,
+	0x0f, 0x83, 0x75, 0x0d, 0x60, 0x68, 0x0d, 0xc1, 0xfa, 0x67, 0x30, 0xb1,
+	0x54, 0xb0, 0xac, 0x19, 0x6b, 0xe6, 0xc7, 0xa9, 0xad, 0x9f, 0x87, 0x63,
+	0xfc, 0xb5, 0x17, 0x60, 0x1a, 0xe0, 0xd2, 0x33, 0x23, 0xee, 0x60, 0x6d,
+	0xc3, 0x91, 0x6f, 0xf7, 0x7f, 0x37, 0xdc, 0x1b, 0x5f, 0x7b, 0x19, 0xb9,
+	0x3f, 0x71, 0xe9, 0xe0, 0x88, 0xfb, 0x16, 0x6c, 0xc3, 0x8b, 0x46, 0x3c,
+	0x7f, 0xf9, 0xf8, 0x89, 0x3d, 0xc0, 0x7d, 0x11, 0xec, 0x89, 0x65, 0x80,
+	0x53, 0x07, 0x4e, 0x9b, 0xba, 0xff, 0x0e, 0x30, 0xb8, 0x3a, 0xe5, 0xc0,
+	0xe4, 0xf4, 0xc5, 0x22, 0x4c, 0xdc, 0x64, 0x46, 0x37, 0xb9, 0x6d, 0x64,
+	0x37, 0x80, 0xa7, 0xbf, 0xde, 0x6c, 0xbd, 0x7d, 0x7b, 0xff, 0x02, 0xc0,
+	0x3e, 0x40, 0x71, 0xe0, 0xa3, 0xeb, 0x53, 0x62, 0x60, 0x6c, 0xe1, 0xad,
+	0x3f, 0x7e, 0x79, 0xe5, 0x2a, 0x82, 0x27, 0x0b, 0xc3, 0xe1, 0x57, 0xbf,
+	0x1d, 0xfb, 0xeb, 0xf2, 0x9f, 0x9b, 0x4b, 0xdf, 0x9f, 0x2b, 0xdd, 0x24,
+	0x9b, 0xaf, 0xde, 0xb9, 0xdb, 0x73, 0x1b, 0x35, 0x52, 0x26, 0x3c, 0x53,
+	0x82, 0x38, 0x08, 0x55, 0xd5, 0x9e, 0xab, 0x93, 0x46, 0x83, 0xd5, 0x7d,
+	0xee, 0xa0, 0x61, 0xa9, 0x82, 0x0e, 0xb3, 0xc7, 0x97, 0x8f, 0xb5, 0xcb,
+	0x35, 0xb2, 0x78, 0xe2, 0x28, 0x7a, 0x06, 0x82, 0xa3, 0xe1, 0x68, 0x26,
+	0xfb, 0xb1, 0xe8, 0x68, 0xe2, 0xda, 0x76, 0xb5, 0xec, 0xda, 0xae, 0xf1,
+	0x0e, 0xb5, 0x96, 0xcd, 0xd9, 0xd9, 0xf5, 0xf5, 0xf5, 0x4a, 0xdb, 0x82,
+	0xe2, 0xfb, 0x51, 0x20, 0xb2, 0x98, 0xa5, 0x95, 0x4c, 0x75, 0x67, 0xcd,
+	0x4e, 0x95, 0x50, 0x27, 0x31, 0xfa, 0x65, 0x52, 0x47, 0x59, 0x9a, 0x37,
+	0x09, 0x67, 0x3e, 0xe3, 0xd4, 0x21, 0x4a, 0x74, 0x68, 0x95, 0x04, 0xc2,
+	0x8f, 0x33, 0xbe, 0x42, 0x9d, 0xa6, 0xdd, 0xb4, 0x09, 0x4b, 0x59, 0xdc,
+	0xcf, 0x05, 0xb5, 0x7b, 0xd5, 0xa6, 0xdd, 0x73, 0x9c, 0x2a, 0x49, 0x04,
+	0x0d, 0x45, 0x8f, 0xe4, 0x6b, 0x3e, 0xa2, 0x39, 0x22, 0xf3, 0x3e, 0x86,
+	0xa2, 0xf4, 0x54, 0x40, 0x9d, 0x8a, 0x8d, 0x41, 0x28, 0x48, 0x12, 0xf5,
+	0x44, 0xe0, 0x99, 0x8c, 0x0e, 0x46, 0x78, 0x8a, 0xa5, 0x5d, 0x41, 0x9d,
+	0x06, 0xe1, 0xa1, 0xca, 0x12, 0xe6, 0x61, 0xa8, 0x43, 0xb4, 0x12, 0x71,
+	0x1c, 0xe5, 0x88, 0xe6, 0x7b, 0xf3, 0x01, 0xd7, 0x08, 0xf8, 0x6a, 0x42,
+	0x6d, 0xa4, 0xc0, 0x82, 0x93, 0xc8, 0xfd, 0x60, 0x96, 0x0a, 0xea, 0x3a,
+	0x25, 0xc7, 0x21, 0x1d, 0x96, 0x6b, 0x4f, 0xe6, 0x2b, 0x91, 0x34, 0x5e,
+	0x8f, 0x92, 0xac, 0x4a, 0x2f, 0xeb, 0x74, 0x72, 0xa1, 0x69, 0xd9, 0x25,
+	0x3a, 0x54, 0x18, 0x95, 0xd3, 0x1a, 0x89, 0xb3, 0x6c, 0x85, 0x85, 0xb8,
+	0xf0, 0xfe, 0xd5, 0x39, 0x24, 0x8f, 0x23, 0x2e, 0x76, 0x14, 0x36, 0x49,
+	0xd5, 0x68, 0x1f, 0x1e, 0x25, 0x4c, 0x1b, 0x2e, 0x51, 0xaa, 0x85, 0x8a,
+	0x19, 0x3a, 0xa1, 0xde, 0x8f, 0xd7, 0x14, 0xeb, 0x7b, 0x3c, 0x4b, 0x24,
+	0xd3, 0xb8, 0xe6, 0x58, 0x26, 0xad, 0x58, 0x94, 0x62, 0x0a, 0x74, 0x54,
+	0xcc, 0xf8, 0x74, 0x14, 0x4b, 0x44, 0x8e, 0x05, 0xf3, 0x3d, 0xd9, 0x47,
+	0x1c, 0x05, 0xd4, 0x45, 0xcc, 0x02, 0x26, 0x35, 0x72, 0x7f, 0x0e, 0x93,
+	0xfa, 0x9e, 0x1f, 0x31, 0xb3, 0x5b, 0x10, 0x29, 0x31, 0x3a, 0xdf, 0xba,
+	0x88, 0xba, 0xa1, 0xf6, 0x11, 0x65, 0x52, 0xa4, 0x5e, 0x37, 0x93, 0x68,
+	0x7d, 0xa4, 0x94, 0x18, 0xbe, 0x22, 0xfa, 0x98, 0x9f, 0xba, 0x75, 0xfb,
+	0x31, 0xf4, 0x92, 0x28, 0xc5, 0x25, 0xc9, 0xb9, 0x48, 0x05, 0x5f, 0xd3,
+	0xb4, 0x66, 0x93, 0x11, 0x03, 0x53, 0x5a, 0x25, 0xf2, 0x10, 0xc3, 0x15,
+	0xf7, 0xfe, 0x3b, 0xb2, 0xb1, 0x2b, 0x4e, 0xb9, 0xea, 0x90, 0xc4, 0xc7,
+	0xfa, 0x9a, 0xa3, 0xe1, 0x82, 0xba, 0xd5, 0x8a, 0x4d, 0x56, 0xcd, 0x81,
+	0xa8, 0x5d, 0x69, 0x20, 0x94, 0x26, 0xf1, 0xe8, 0xcf, 0x7a, 0xb4, 0xf1,
+	0x06, 0x82, 0x5c, 0x0b, 0x89, 0xd5, 0x8b, 0x90, 0x7b, 0x2d, 0x85, 0xff,
+	0xf5, 0x8a, 0x49, 0xec, 0x0f, 0xec, 0x45, 0x6c, 0x1f, 0xa4, 0xcf, 0x56,
+	0xb1, 0xf5, 0x4c, 0x23, 0x01, 0xde, 0x1c, 0x4b, 0x7c, 0xf2, 0x31, 0x54,
+	0x87, 0x0f, 0xee, 0xdd, 0xfe, 0xa1, 0x50, 0xbf, 0xff, 0xc5, 0x8d, 0xf3,
+	0xc5, 0xd2, 0xf5, 0x5f, 0xdf, 0x91, 0x6f, 0x1e, 0xf9, 0x72, 0xdf, 0x87,
+	0x87, 0x6e, 0xc8, 0x77, 0x3f, 0x78, 0xeb, 0x4c, 0xa1, 0x7c, 0x91, 0xc1,
+	0x04, 0x79, 0xe1, 0xa9, 0x97, 0xdb, 0xdf, 0xe0, 0x5d, 0xad, 0x9f, 0x85,
+	0xf1, 0x9a, 0x1f, 0xbb, 0x67, 0xc6, 0xc6, 0x0c, 0xce, 0x8c, 0xbf, 0x37,
+	0x76, 0x66, 0xc6, 0xe2, 0xe7, 0xaf, 0xc5, 0xad, 0x2b, 0x0f, 0xe6, 0x17,
+	0x9e, 0x7d, 0x1d, 0xb9, 0x37, 0x3e, 0xc3, 0x09, 0xff, 0xe9, 0x4b, 0xa7,
+	0x61, 0x3c, 0xd9, 0x2f, 0x6d, 0x15, 0xcd, 0xd8, 0xdb, 0xc5, 0xfe, 0x42,
+	0xab, 0x77, 0x66, 0x08, 0x67, 0x37, 0xf0, 0x6d, 0x2a, 0xee, 0xe1, 0xb7,
+	0xa9, 0xb8, 0x87, 0xdf, 0xa6, 0xb9, 0x73, 0x30, 0x96, 0xd4, 0x1e, 0x37,
+	0xce, 0xa0, 0x30, 0x03, 0x93, 0xa5, 0x6b, 0x3b, 0x3d, 0x63, 0x5d, 0x60,
+	0xba, 0x75, 0x05, 0x7e, 0x1a, 0x20, 0xf7, 0x79, 0xd3, 0xef, 0xe7, 0x4b,
+	0xe3, 0xda, 0xef, 0xc2, 0x2a, 0x9a, 0xa6, 0xdf, 0xcd, 0x9d, 0xbf, 0x67,
+	0xb8, 0x6f, 0x3c, 0x04, 0xe8, 0xb7, 0x5d, 0xf8, 0x48, 0x0a, 0x00, 0x00}
 var testSegment_HEVC = []byte{
-  0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xd5, 0x57,
-  0xcf, 0x8f, 0x1c, 0x47, 0x15, 0xee, 0x8e, 0xe3, 0x98, 0x8d, 0x8c, 0xe4,
-  0x75, 0x1c, 0x92, 0x40, 0x40, 0x65, 0xe1, 0x48, 0x0e, 0x6c, 0xcd, 0xf6,
-  0xcc, 0xec, 0x6e, 0xd6, 0x96, 0x1a, 0x4c, 0x36, 0x78, 0x6d, 0x29, 0x89,
-  0xac, 0xf0, 0x43, 0x02, 0xcb, 0x12, 0x35, 0xdd, 0x35, 0xd3, 0x25, 0x77,
-  0x77, 0xf5, 0x56, 0xd5, 0xcc, 0xec, 0x18, 0xb4, 0x6c, 0x4e, 0x10, 0x45,
-  0x91, 0x22, 0x42, 0x04, 0x27, 0xc4, 0x8f, 0x5c, 0x38, 0x20, 0x27, 0x56,
-  0xc2, 0x01, 0x90, 0x88, 0x91, 0x90, 0x50, 0xb8, 0xe4, 0x18, 0x29, 0x12,
-  0x8a, 0x6f, 0x88, 0x93, 0x11, 0x20, 0x84, 0x94, 0xb0, 0xf9, 0x5e, 0x75,
-  0xcf, 0x64, 0xec, 0x7f, 0x20, 0xeb, 0xd1, 0x6e, 0x77, 0xd5, 0x7b, 0x5d,
-  0xaf, 0xbf, 0xf7, 0xde, 0xf7, 0x5e, 0x55, 0x6f, 0x9e, 0x59, 0x3c, 0x12,
-  0x3c, 0x7e, 0xf3, 0x91, 0x20, 0xbc, 0x1e, 0x04, 0x7b, 0xe1, 0x5e, 0x10,
-  0xbe, 0xbf, 0x7b, 0xec, 0xdc, 0xd1, 0xf0, 0x9e, 0xb3, 0x67, 0x8b, 0x4a,
-  0x0e, 0x16, 0xbe, 0x26, 0xcd, 0x48, 0x25, 0x32, 0x6a, 0x8f, 0xbf, 0xb7,
-  0xf1, 0xd6, 0xde, 0xfe, 0xfa, 0x6d, 0x9e, 0x09, 0x8e, 0x04, 0xc1, 0xab,
-  0x9f, 0xf4, 0xd8, 0x83, 0xf0, 0x66, 0xf0, 0x85, 0xd7, 0xee, 0xbe, 0xb6,
-  0x77, 0x67, 0xfc, 0x36, 0x2f, 0x00, 0xfb, 0x5d, 0xaf, 0x3e, 0xe8, 0xb1,
-  0xdf, 0x08, 0x6e, 0x06, 0x27, 0x70, 0xb9, 0xe7, 0xe0, 0xdd, 0xe7, 0xbe,
-  0xfa, 0xcd, 0x8d, 0xbf, 0xfe, 0x2c, 0x78, 0x66, 0x5f, 0x63, 0xff, 0x4a,
-  0x10, 0x1d, 0xba, 0x10, 0x04, 0xdf, 0x3d, 0xbc, 0x43, 0x71, 0x7f, 0x2f,
-  0x08, 0x76, 0xdf, 0xbc, 0xb7, 0x1d, 0x2c, 0x1c, 0xf9, 0xc5, 0x62, 0x70,
-  0xe8, 0x1d, 0x41, 0xb2, 0xb3, 0xe1, 0x05, 0xba, 0x9d, 0x09, 0x0f, 0x87,
-  0x7b, 0x7b, 0xe1, 0x77, 0x82, 0xe0, 0x40, 0xf0, 0x22, 0x5d, 0xf0, 0xf7,
-  0xb9, 0x97, 0x7f, 0xba, 0x40, 0xba, 0xc7, 0xc3, 0xf0, 0x36, 0xc5, 0xcf,
-  0x8f, 0xb2, 0x13, 0xdf, 0x92, 0xfd, 0x1f, 0x3d, 0x79, 0x35, 0xcc, 0x3e,
-  0x41, 0x12, 0x7f, 0xf9, 0xcb, 0x19, 0x7a, 0xfa, 0x89, 0xf0, 0xba, 0x79,
-  0xbd, 0x87, 0x61, 0xf8, 0x74, 0x78, 0x70, 0x0a, 0xe4, 0x9f, 0x4b, 0xbf,
-  0xfc, 0xdb, 0xc2, 0x1b, 0x0f, 0x6c, 0xbe, 0xfb, 0xfb, 0x6f, 0xbc, 0xf2,
-  0xff, 0xef, 0xff, 0xe9, 0xfd, 0xa7, 0xb7, 0x3b, 0x6b, 0xab, 0xec, 0x64,
-  0x6f, 0xa8, 0xf2, 0x94, 0x75, 0xa2, 0xee, 0xa3, 0x8c, 0xb3, 0x6e, 0x6b,
-  0xf5, 0x8b, 0x9d, 0x88, 0xb7, 0x1f, 0x5b, 0xef, 0x9e, 0x4a, 0x92, 0x68,
-  0x33, 0x0c, 0x16, 0xd3, 0xd3, 0x17, 0x9f, 0x54, 0xe5, 0x70, 0xfb, 0xd2,
-  0xc5, 0xcd, 0x8d, 0x0d, 0xd6, 0x8e, 0x5a, 0xdd, 0x56, 0x74, 0xe9, 0xe2,
-  0xda, 0x0a, 0xeb, 0x29, 0x77, 0x89, 0xad, 0xe3, 0x8a, 0x75, 0xe7, 0x5a,
-  0xb0, 0xb5, 0x4c, 0xe9, 0x60, 0x89, 0x4e, 0x65, 0x02, 0xd1, 0x86, 0xae,
-  0x26, 0x46, 0x0d, 0x32, 0x07, 0xdb, 0xed, 0x2e, 0xc7, 0x65, 0x9d, 0x9d,
-  0x4c, 0x1e, 0x65, 0x4f, 0x0d, 0x73, 0xa7, 0x12, 0x6d, 0xe4, 0x58, 0x18,
-  0xb9, 0xc4, 0xce, 0x97, 0xf4, 0x70, 0xe6, 0x5c, 0x75, 0x7a, 0x79, 0x99,
-  0x10, 0xb5, 0xb4, 0x19, 0x40, 0xa2, 0x2b, 0xa7, 0x74, 0x69, 0x4f, 0xb3,
-  0xa4, 0x1a, 0xaa, 0x34, 0x6e, 0xe3, 0x17, 0x75, 0x4f, 0xb1, 0xbe, 0x11,
-  0x85, 0xe4, 0x2e, 0x33, 0x52, 0xa4, 0x36, 0xee, 0xb0, 0x71, 0x55, 0xb1,
-  0x52, 0xf3, 0xaa, 0xc0, 0x5b, 0xeb, 0x41, 0x7d, 0xb3, 0x25, 0xb0, 0x1f,
-  0x35, 0x34, 0xb6, 0x56, 0x15, 0x2c, 0xd7, 0x03, 0x9e, 0xcb, 0x91, 0xcc,
-  0xb1, 0x06, 0x90, 0x53, 0x59, 0xb9, 0x2c, 0x5e, 0x67, 0xaa, 0xac, 0x86,
-  0x8e, 0x27, 0xb6, 0x8a, 0xdb, 0xac, 0x5f, 0xc1, 0xe0, 0xea, 0x72, 0xbb,
-  0x11, 0x1a, 0x69, 0xe3, 0xf6, 0xca, 0xca, 0x36, 0xfe, 0x21, 0x71, 0xd2,
-  0xe4, 0x22, 0x91, 0x71, 0xc4, 0x9c, 0x76, 0x22, 0xe7, 0x1e, 0x87, 0xc5,
-  0xd4, 0x1b, 0xe5, 0x2a, 0x4d, 0x30, 0xce, 0xe0, 0x2e, 0x77, 0x4a, 0x1a,
-  0x58, 0x1b, 0x66, 0x29, 0xef, 0xa5, 0x10, 0x1a, 0xd9, 0x8f, 0xbb, 0x84,
-  0x43, 0xe4, 0xb9, 0x1e, 0xf3, 0x52, 0x97, 0x3c, 0xd1, 0x65, 0x5f, 0x9b,
-  0x42, 0x94, 0x89, 0x84, 0xba, 0x92, 0xc2, 0xf1, 0x0c, 0xfe, 0x48, 0x63,
-  0x99, 0x28, 0x4b, 0xb9, 0xdd, 0x03, 0xf6, 0xfb, 0xfc, 0x92, 0x61, 0x4a,
-  0x37, 0xa9, 0x7b, 0xf5, 0xcd, 0xd2, 0x2d, 0x33, 0x29, 0x00, 0xf5, 0x35,
-  0xcb, 0x84, 0xcd, 0xf0, 0x02, 0x88, 0x9c, 0x2c, 0x2a, 0x6d, 0x00, 0x2b,
-  0x17, 0x13, 0xb2, 0xa2, 0x2b, 0x59, 0xf2, 0x81, 0xae, 0x58, 0xa1, 0x4a,
-  0x7e, 0x59, 0x4e, 0x80, 0x1f, 0xae, 0xb1, 0xd9, 0x28, 0x62, 0x50, 0xf2,
-  0x5c, 0xeb, 0xcb, 0x82, 0x5e, 0x0c, 0x23, 0xbd, 0xc6, 0x21, 0xa4, 0x95,
-  0x8b, 0x54, 0x54, 0x8e, 0xe2, 0xc4, 0x91, 0x41, 0x51, 0xa8, 0xb4, 0xd1,
-  0xf2, 0x9e, 0x12, 0xe4, 0xb2, 0x49, 0xe6, 0x96, 0x76, 0x10, 0x82, 0xe9,
-  0x84, 0xdb, 0x5c, 0x25, 0xc0, 0x7e, 0xcc, 0x47, 0xc6, 0x26, 0xb2, 0x94,
-  0xc9, 0xd0, 0xc5, 0x2b, 0x1e, 0x63, 0xa6, 0xac, 0xe3, 0x53, 0x19, 0x33,
-  0x22, 0xcd, 0x6b, 0xec, 0xb6, 0xc2, 0x22, 0x9f, 0x34, 0x60, 0x33, 0x02,
-  0x71, 0xef, 0x23, 0xf4, 0x19, 0x4b, 0xdc, 0x30, 0x06, 0xcb, 0xc8, 0x83,
-  0x64, 0xc8, 0xad, 0xba, 0x22, 0x91, 0x2f, 0x3c, 0x65, 0x64, 0xe2, 0x7c,
-  0x6c, 0x0a, 0xb8, 0x27, 0xb6, 0xb9, 0x6b, 0x94, 0xdd, 0x0e, 0xc3, 0xd0,
-  0x67, 0x8a, 0xd7, 0xe9, 0x6d, 0x37, 0x02, 0x18, 0x9d, 0x0a, 0x72, 0x55,
-  0x28, 0x87, 0x25, 0xe4, 0x45, 0xaa, 0xb7, 0x1a, 0x4a, 0x44, 0x2c, 0x9d,
-  0x94, 0x70, 0x94, 0xb0, 0xdf, 0xcf, 0x0d, 0xe2, 0xd1, 0x8a, 0xa2, 0x29,
-  0x75, 0x30, 0x67, 0x56, 0x0d, 0xca, 0x4c, 0xd5, 0x0c, 0x73, 0xf6, 0xb2,
-  0x02, 0xe7, 0x4c, 0x6d, 0x99, 0x7c, 0x30, 0xf5, 0x5b, 0x6b, 0x77, 0x90,
-  0x5b, 0x0b, 0xb9, 0x2a, 0x65, 0x5a, 0x3f, 0xc1, 0x30, 0xd5, 0xe5, 0xa0,
-  0x01, 0x62, 0x0b, 0xad, 0x5d, 0xa6, 0xca, 0x81, 0xc7, 0x5e, 0x48, 0x33,
-  0x00, 0xf2, 0x06, 0x16, 0x3c, 0x07, 0xe5, 0xc8, 0x48, 0x3d, 0x27, 0x4e,
-  0x5b, 0x56, 0x48, 0xc8, 0xec, 0xb0, 0x87, 0x7b, 0x07, 0x13, 0x23, 0x4a,
-  0x2c, 0x59, 0x7d, 0x8c, 0xcd, 0x72, 0x5e, 0x8c, 0x7c, 0x09, 0x00, 0xfb,
-  0xa7, 0xea, 0x34, 0xa5, 0x43, 0x2f, 0xc8, 0x50, 0x0a, 0x63, 0x49, 0x15,
-  0xe8, 0xa7, 0xf5, 0xd0, 0x13, 0x49, 0x94, 0x22, 0x9f, 0x5c, 0x91, 0xdc,
-  0x22, 0x93, 0x95, 0x4a, 0x2c, 0x4b, 0x65, 0x2f, 0xd7, 0xc9, 0xe5, 0x38,
-  0x3a, 0x8d, 0xb4, 0x09, 0xed, 0x5d, 0x17, 0xda, 0x73, 0xb5, 0x51, 0x21,
-  0x5c, 0xc0, 0x69, 0x65, 0x8e, 0xe8, 0xab, 0x91, 0x24, 0x35, 0xb8, 0x22,
-  0x85, 0xc9, 0x27, 0xdc, 0x07, 0xc4, 0xd4, 0x61, 0xd1, 0xbc, 0x2f, 0x90,
-  0xe7, 0xda, 0xf3, 0x69, 0xb4, 0xbc, 0xcc, 0x07, 0x67, 0x08, 0xe6, 0x58,
-  0x9b, 0x4b, 0x6b, 0xc1, 0xae, 0xd9, 0x43, 0x16, 0xd8, 0x1f, 0x00, 0x0d,
-  0x9c, 0x49, 0x1b, 0x63, 0x29, 0x08, 0x2c, 0x72, 0x37, 0x41, 0x4c, 0x2b,
-  0x3b, 0xa1, 0x94, 0x74, 0x28, 0x25, 0xf5, 0x58, 0x6f, 0xcd, 0x12, 0x84,
-  0x05, 0x88, 0x1a, 0x82, 0xed, 0xa3, 0x36, 0x35, 0x9d, 0xf4, 0xb6, 0x2a,
-  0xdd, 0xef, 0x13, 0x09, 0x13, 0x33, 0x1b, 0x9a, 0x24, 0x4e, 0x4c, 0x1f,
-  0x92, 0x7e, 0xdc, 0x59, 0x6f, 0x45, 0x6c, 0x2b, 0xd1, 0x45, 0x05, 0x4b,
-  0x6b, 0x18, 0x56, 0xd6, 0xc9, 0x0a, 0x0e, 0x59, 0x27, 0x9c, 0xe5, 0x63,
-  0xa3, 0x1c, 0x95, 0x7a, 0x3d, 0x33, 0x75, 0x85, 0xa8, 0xca, 0x08, 0xb4,
-  0xa4, 0xb8, 0xdd, 0x02, 0x9f, 0xab, 0xde, 0x74, 0xd2, 0x05, 0xf6, 0x07,
-  0x23, 0x26, 0xb6, 0x7c, 0xba, 0x90, 0x22, 0x8c, 0x90, 0x71, 0x59, 0x0e,
-  0x88, 0x70, 0x04, 0x13, 0x74, 0x37, 0x52, 0xb2, 0x2b, 0xba, 0x94, 0x60,
-  0xc7, 0x10, 0x05, 0x58, 0x73, 0xcb, 0x19, 0x95, 0xa0, 0xf7, 0xf4, 0x0c,
-  0xdb, 0x1a, 0xcc, 0x28, 0x4c, 0x3e, 0x25, 0x7c, 0x40, 0x04, 0x02, 0x2a,
-  0x70, 0x24, 0x5e, 0x3b, 0x45, 0x03, 0x55, 0xce, 0xd1, 0x8b, 0x8f, 0x7a,
-  0x23, 0xe4, 0x89, 0xda, 0x8c, 0x1e, 0xa1, 0xde, 0x13, 0x41, 0xda, 0x11,
-  0x08, 0xaa, 0x7d, 0x5f, 0x71, 0xf1, 0x2a, 0xab, 0x79, 0x82, 0xb7, 0xeb,
-  0x5c, 0x9b, 0xca, 0xa8, 0x02, 0xd0, 0x10, 0xee, 0xd2, 0xf6, 0xc1, 0xd4,
-  0x4e, 0x2d, 0x2e, 0x80, 0xfd, 0x21, 0x01, 0x1c, 0xdb, 0x24, 0xc9, 0x8c,
-  0x2e, 0x04, 0x72, 0x4d, 0xe5, 0xa0, 0x50, 0x95, 0x62, 0xc2, 0xc7, 0xaa,
-  0x4c, 0xf5, 0x98, 0xac, 0xe4, 0xa8, 0x92, 0xa5, 0xc8, 0x57, 0x63, 0x3e,
-  0x2c, 0x88, 0xf6, 0xc4, 0x5f, 0x3f, 0xec, 0xac, 0xae, 0x52, 0x7b, 0xed,
-  0x70, 0x92, 0x54, 0x1a, 0xcd, 0xc1, 0xf6, 0x50, 0xaa, 0xa3, 0xa1, 0x42,
-  0x2f, 0xc4, 0x02, 0xa2, 0x3e, 0xba, 0x15, 0xcd, 0xd1, 0xba, 0xea, 0x09,
-  0x35, 0x0a, 0xd9, 0x90, 0x1d, 0x9d, 0x9e, 0x6f, 0x55, 0xbc, 0xaa, 0xec,
-  0x74, 0x86, 0x94, 0xa2, 0x04, 0xe0, 0x67, 0xee, 0xc3, 0x38, 0x55, 0x15,
-  0xb4, 0x73, 0xf0, 0x4a, 0x58, 0x4b, 0x4f, 0x01, 0xfb, 0xa7, 0xb9, 0x81,
-  0x66, 0xda, 0x53, 0x9a, 0xf6, 0xd4, 0x8a, 0x56, 0x99, 0xef, 0x35, 0xb4,
-  0x49, 0xd8, 0x4c, 0xe7, 0xbe, 0x9c, 0xbb, 0x53, 0xdb, 0xa0, 0x60, 0x2a,
-  0x73, 0x27, 0xf0, 0x4a, 0x5f, 0x0a, 0x94, 0x37, 0xda, 0x69, 0x7c, 0xc5,
-  0xa4, 0xa6, 0x1d, 0xcd, 0x06, 0xf4, 0x38, 0x4d, 0xd2, 0x5b, 0x66, 0x2a,
-  0x35, 0xd4, 0x82, 0x28, 0xee, 0x60, 0xbe, 0x54, 0xcc, 0x17, 0x93, 0x55,
-  0xc4, 0x93, 0xa1, 0x95, 0xb3, 0x8e, 0x32, 0x13, 0x5b, 0x81, 0x72, 0xb9,
-  0x4d, 0x07, 0xec, 0x9f, 0x99, 0xea, 0x73, 0x2d, 0xd2, 0xdb, 0xf4, 0x48,
-  0x68, 0x2e, 0x51, 0x34, 0x89, 0xd3, 0xa6, 0xde, 0x41, 0xc0, 0xf0, 0x59,
-  0xbf, 0xf9, 0x68, 0x2a, 0xe7, 0xb4, 0xc5, 0x08, 0xd1, 0x6c, 0xc6, 0x68,
-  0x9d, 0x1c, 0x29, 0xc4, 0x6a, 0xf2, 0xac, 0x26, 0x4e, 0xdd, 0x52, 0xa8,
-  0xb8, 0x13, 0xdf, 0x15, 0xfb, 0xba, 0x91, 0xeb, 0xb1, 0x8f, 0x68, 0x8a,
-  0xae, 0xda, 0x2c, 0x9f, 0x41, 0x77, 0x93, 0xaa, 0xa6, 0x50, 0x35, 0xa1,
-  0x3e, 0x81, 0x17, 0x20, 0xc5, 0xc0, 0xfe, 0x30, 0x36, 0x26, 0x22, 0xec,
-  0x14, 0x22, 0x68, 0xee, 0x03, 0x55, 0x37, 0xd1, 0xb9, 0x8a, 0xb4, 0xc8,
-  0x3e, 0x3c, 0xa1, 0x30, 0x51, 0x54, 0xe5, 0x28, 0x41, 0xc0, 0xbd, 0x62,
-  0xe4, 0x83, 0xd9, 0x57, 0x12, 0x67, 0x0f, 0x24, 0xdf, 0x6f, 0x39, 0x54,
-  0x51, 0x25, 0xaf, 0x89, 0xeb, 0x2b, 0x67, 0x96, 0x59, 0x41, 0x67, 0x05,
-  0x64, 0x2c, 0x8e, 0xe6, 0xb6, 0xce, 0x86, 0x9d, 0x9c, 0xca, 0x5b, 0x3a,
-  0xcb, 0xfc, 0x61, 0x83, 0xb6, 0x32, 0xed, 0x9c, 0x2e, 0x88, 0xc5, 0x92,
-  0xce, 0x22, 0xc6, 0xf3, 0x12, 0xe5, 0x0a, 0x57, 0x80, 0x3d, 0xde, 0x09,
-  0x3e, 0xd6, 0xe3, 0x20, 0xb9, 0x8d, 0xf2, 0x45, 0x3e, 0x40, 0x8b, 0x8f,
-  0x18, 0xbd, 0x8b, 0xb3, 0xda, 0xc9, 0xf0, 0xea, 0x67, 0xd3, 0x3f, 0xef,
-  0xfe, 0x37, 0xbc, 0xf6, 0x8f, 0x3f, 0xfc, 0xfd, 0x8f, 0xaf, 0xbd, 0x79,
-  0xe8, 0x3f, 0xbf, 0x8b, 0x7f, 0xbd, 0xf5, 0xd6, 0xc1, 0x87, 0xee, 0x7f,
-  0xe9, 0xc8, 0xda, 0x45, 0x9c, 0x23, 0xbf, 0xf4, 0x83, 0x60, 0x7f, 0x9c,
-  0x69, 0xe7, 0xcf, 0xb1, 0xcf, 0x1e, 0xc7, 0x39, 0xf6, 0xdf, 0xcf, 0xce,
-  0x9d, 0x63, 0xef, 0x0a, 0xdf, 0x3e, 0x7e, 0xfe, 0xc6, 0xe1, 0xe4, 0x37,
-  0x5f, 0xff, 0x9f, 0x5b, 0xff, 0xd7, 0x8b, 0xf7, 0xfd, 0xea, 0x3c, 0xb0,
-  0x7f, 0xf9, 0x39, 0x7c, 0x7d, 0x3c, 0xf7, 0xf0, 0x4e, 0xb0, 0xbf, 0xd0,
-  0x9f, 0xbb, 0xb1, 0x48, 0x47, 0xf1, 0x5b, 0xd0, 0xbf, 0xf7, 0xc4, 0xcb,
-  0xdb, 0xe2, 0xf3, 0x4f, 0xbd, 0xb0, 0xfc, 0xd2, 0xc9, 0xb5, 0x03, 0xcf,
-  0xe0, 0xbb, 0x69, 0xf1, 0x0e, 0xfe, 0x6e, 0x5a, 0xbc, 0x93, 0xbf, 0x9b,
-  0x5e, 0x08, 0xf6, 0x13, 0xa2, 0x86, 0x37, 0xbb, 0x07, 0x8f, 0x07, 0x0b,
-  0x4b, 0xd7, 0xe7, 0x28, 0x03, 0xf9, 0x89, 0x0f, 0x76, 0x9e, 0xbf, 0xf7,
-  0xdb, 0xd9, 0xf3, 0xd7, 0x7e, 0xdc, 0xfd, 0xed, 0x81, 0x1d, 0x60, 0x6f,
-  0xff, 0x10, 0x7c, 0xff, 0xc9, 0xd2, 0x3e, 0xe0, 0xfb, 0x3c, 0xdd, 0x65,
-  0xb8, 0x48, 0x9c, 0xbf, 0x15, 0x7b, 0xff, 0x8d, 0x0f, 0xce, 0x1e, 0x5b,
-  0x79, 0xbb, 0xc1, 0xfe, 0x21, 0x2c, 0x1c, 0xc8, 0xc6, 0xe4, 0x10, 0x00,
-  0x00}
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xd5, 0x57,
+	0xcf, 0x8f, 0x1c, 0x47, 0x15, 0xee, 0x8e, 0xe3, 0x98, 0x8d, 0x8c, 0xe4,
+	0x75, 0x1c, 0x92, 0x40, 0x40, 0x65, 0xe1, 0x48, 0x0e, 0x6c, 0xcd, 0xf6,
+	0xcc, 0xec, 0x6e, 0xd6, 0x96, 0x1a, 0x4c, 0x36, 0x78, 0x6d, 0x29, 0x89,
+	0xac, 0xf0, 0x43, 0x02, 0xcb, 0x12, 0x35, 0xdd, 0x35, 0xd3, 0x25, 0x77,
+	0x77, 0xf5, 0x56, 0xd5, 0xcc, 0xec, 0x18, 0xb4, 0x6c, 0x4e, 0x10, 0x45,
+	0x91, 0x22, 0x42, 0x04, 0x27, 0xc4, 0x8f, 0x5c, 0x38, 0x20, 0x27, 0x56,
+	0xc2, 0x01, 0x90, 0x88, 0x91, 0x90, 0x50, 0xb8, 0xe4, 0x18, 0x29, 0x12,
+	0x8a, 0x6f, 0x88, 0x93, 0x11, 0x20, 0x84, 0x94, 0xb0, 0xf9, 0x5e, 0x75,
+	0xcf, 0x64, 0xec, 0x7f, 0x20, 0xeb, 0xd1, 0x6e, 0x77, 0xd5, 0x7b, 0x5d,
+	0xaf, 0xbf, 0xf7, 0xde, 0xf7, 0x5e, 0x55, 0x6f, 0x9e, 0x59, 0x3c, 0x12,
+	0x3c, 0x7e, 0xf3, 0x91, 0x20, 0xbc, 0x1e, 0x04, 0x7b, 0xe1, 0x5e, 0x10,
+	0xbe, 0xbf, 0x7b, 0xec, 0xdc, 0xd1, 0xf0, 0x9e, 0xb3, 0x67, 0x8b, 0x4a,
+	0x0e, 0x16, 0xbe, 0x26, 0xcd, 0x48, 0x25, 0x32, 0x6a, 0x8f, 0xbf, 0xb7,
+	0xf1, 0xd6, 0xde, 0xfe, 0xfa, 0x6d, 0x9e, 0x09, 0x8e, 0x04, 0xc1, 0xab,
+	0x9f, 0xf4, 0xd8, 0x83, 0xf0, 0x66, 0xf0, 0x85, 0xd7, 0xee, 0xbe, 0xb6,
+	0x77, 0x67, 0xfc, 0x36, 0x2f, 0x00, 0xfb, 0x5d, 0xaf, 0x3e, 0xe8, 0xb1,
+	0xdf, 0x08, 0x6e, 0x06, 0x27, 0x70, 0xb9, 0xe7, 0xe0, 0xdd, 0xe7, 0xbe,
+	0xfa, 0xcd, 0x8d, 0xbf, 0xfe, 0x2c, 0x78, 0x66, 0x5f, 0x63, 0xff, 0x4a,
+	0x10, 0x1d, 0xba, 0x10, 0x04, 0xdf, 0x3d, 0xbc, 0x43, 0x71, 0x7f, 0x2f,
+	0x08, 0x76, 0xdf, 0xbc, 0xb7, 0x1d, 0x2c, 0x1c, 0xf9, 0xc5, 0x62, 0x70,
+	0xe8, 0x1d, 0x41, 0xb2, 0xb3, 0xe1, 0x05, 0xba, 0x9d, 0x09, 0x0f, 0x87,
+	0x7b, 0x7b, 0xe1, 0x77, 0x82, 0xe0, 0x40, 0xf0, 0x22, 0x5d, 0xf0, 0xf7,
+	0xb9, 0x97, 0x7f, 0xba, 0x40, 0xba, 0xc7, 0xc3, 0xf0, 0x36, 0xc5, 0xcf,
+	0x8f, 0xb2, 0x13, 0xdf, 0x92, 0xfd, 0x1f, 0x3d, 0x79, 0x35, 0xcc, 0x3e,
+	0x41, 0x12, 0x7f, 0xf9, 0xcb, 0x19, 0x7a, 0xfa, 0x89, 0xf0, 0xba, 0x79,
+	0xbd, 0x87, 0x61, 0xf8, 0x74, 0x78, 0x70, 0x0a, 0xe4, 0x9f, 0x4b, 0xbf,
+	0xfc, 0xdb, 0xc2, 0x1b, 0x0f, 0x6c, 0xbe, 0xfb, 0xfb, 0x6f, 0xbc, 0xf2,
+	0xff, 0xef, 0xff, 0xe9, 0xfd, 0xa7, 0xb7, 0x3b, 0x6b, 0xab, 0xec, 0x64,
+	0x6f, 0xa8, 0xf2, 0x94, 0x75, 0xa2, 0xee, 0xa3, 0x8c, 0xb3, 0x6e, 0x6b,
+	0xf5, 0x8b, 0x9d, 0x88, 0xb7, 0x1f, 0x5b, 0xef, 0x9e, 0x4a, 0x92, 0x68,
+	0x33, 0x0c, 0x16, 0xd3, 0xd3, 0x17, 0x9f, 0x54, 0xe5, 0x70, 0xfb, 0xd2,
+	0xc5, 0xcd, 0x8d, 0x0d, 0xd6, 0x8e, 0x5a, 0xdd, 0x56, 0x74, 0xe9, 0xe2,
+	0xda, 0x0a, 0xeb, 0x29, 0x77, 0x89, 0xad, 0xe3, 0x8a, 0x75, 0xe7, 0x5a,
+	0xb0, 0xb5, 0x4c, 0xe9, 0x60, 0x89, 0x4e, 0x65, 0x02, 0xd1, 0x86, 0xae,
+	0x26, 0x46, 0x0d, 0x32, 0x07, 0xdb, 0xed, 0x2e, 0xc7, 0x65, 0x9d, 0x9d,
+	0x4c, 0x1e, 0x65, 0x4f, 0x0d, 0x73, 0xa7, 0x12, 0x6d, 0xe4, 0x58, 0x18,
+	0xb9, 0xc4, 0xce, 0x97, 0xf4, 0x70, 0xe6, 0x5c, 0x75, 0x7a, 0x79, 0x99,
+	0x10, 0xb5, 0xb4, 0x19, 0x40, 0xa2, 0x2b, 0xa7, 0x74, 0x69, 0x4f, 0xb3,
+	0xa4, 0x1a, 0xaa, 0x34, 0x6e, 0xe3, 0x17, 0x75, 0x4f, 0xb1, 0xbe, 0x11,
+	0x85, 0xe4, 0x2e, 0x33, 0x52, 0xa4, 0x36, 0xee, 0xb0, 0x71, 0x55, 0xb1,
+	0x52, 0xf3, 0xaa, 0xc0, 0x5b, 0xeb, 0x41, 0x7d, 0xb3, 0x25, 0xb0, 0x1f,
+	0x35, 0x34, 0xb6, 0x56, 0x15, 0x2c, 0xd7, 0x03, 0x9e, 0xcb, 0x91, 0xcc,
+	0xb1, 0x06, 0x90, 0x53, 0x59, 0xb9, 0x2c, 0x5e, 0x67, 0xaa, 0xac, 0x86,
+	0x8e, 0x27, 0xb6, 0x8a, 0xdb, 0xac, 0x5f, 0xc1, 0xe0, 0xea, 0x72, 0xbb,
+	0x11, 0x1a, 0x69, 0xe3, 0xf6, 0xca, 0xca, 0x36, 0xfe, 0x21, 0x71, 0xd2,
+	0xe4, 0x22, 0x91, 0x71, 0xc4, 0x9c, 0x76, 0x22, 0xe7, 0x1e, 0x87, 0xc5,
+	0xd4, 0x1b, 0xe5, 0x2a, 0x4d, 0x30, 0xce, 0xe0, 0x2e, 0x77, 0x4a, 0x1a,
+	0x58, 0x1b, 0x66, 0x29, 0xef, 0xa5, 0x10, 0x1a, 0xd9, 0x8f, 0xbb, 0x84,
+	0x43, 0xe4, 0xb9, 0x1e, 0xf3, 0x52, 0x97, 0x3c, 0xd1, 0x65, 0x5f, 0x9b,
+	0x42, 0x94, 0x89, 0x84, 0xba, 0x92, 0xc2, 0xf1, 0x0c, 0xfe, 0x48, 0x63,
+	0x99, 0x28, 0x4b, 0xb9, 0xdd, 0x03, 0xf6, 0xfb, 0xfc, 0x92, 0x61, 0x4a,
+	0x37, 0xa9, 0x7b, 0xf5, 0xcd, 0xd2, 0x2d, 0x33, 0x29, 0x00, 0xf5, 0x35,
+	0xcb, 0x84, 0xcd, 0xf0, 0x02, 0x88, 0x9c, 0x2c, 0x2a, 0x6d, 0x00, 0x2b,
+	0x17, 0x13, 0xb2, 0xa2, 0x2b, 0x59, 0xf2, 0x81, 0xae, 0x58, 0xa1, 0x4a,
+	0x7e, 0x59, 0x4e, 0x80, 0x1f, 0xae, 0xb1, 0xd9, 0x28, 0x62, 0x50, 0xf2,
+	0x5c, 0xeb, 0xcb, 0x82, 0x5e, 0x0c, 0x23, 0xbd, 0xc6, 0x21, 0xa4, 0x95,
+	0x8b, 0x54, 0x54, 0x8e, 0xe2, 0xc4, 0x91, 0x41, 0x51, 0xa8, 0xb4, 0xd1,
+	0xf2, 0x9e, 0x12, 0xe4, 0xb2, 0x49, 0xe6, 0x96, 0x76, 0x10, 0x82, 0xe9,
+	0x84, 0xdb, 0x5c, 0x25, 0xc0, 0x7e, 0xcc, 0x47, 0xc6, 0x26, 0xb2, 0x94,
+	0xc9, 0xd0, 0xc5, 0x2b, 0x1e, 0x63, 0xa6, 0xac, 0xe3, 0x53, 0x19, 0x33,
+	0x22, 0xcd, 0x6b, 0xec, 0xb6, 0xc2, 0x22, 0x9f, 0x34, 0x60, 0x33, 0x02,
+	0x71, 0xef, 0x23, 0xf4, 0x19, 0x4b, 0xdc, 0x30, 0x06, 0xcb, 0xc8, 0x83,
+	0x64, 0xc8, 0xad, 0xba, 0x22, 0x91, 0x2f, 0x3c, 0x65, 0x64, 0xe2, 0x7c,
+	0x6c, 0x0a, 0xb8, 0x27, 0xb6, 0xb9, 0x6b, 0x94, 0xdd, 0x0e, 0xc3, 0xd0,
+	0x67, 0x8a, 0xd7, 0xe9, 0x6d, 0x37, 0x02, 0x18, 0x9d, 0x0a, 0x72, 0x55,
+	0x28, 0x87, 0x25, 0xe4, 0x45, 0xaa, 0xb7, 0x1a, 0x4a, 0x44, 0x2c, 0x9d,
+	0x94, 0x70, 0x94, 0xb0, 0xdf, 0xcf, 0x0d, 0xe2, 0xd1, 0x8a, 0xa2, 0x29,
+	0x75, 0x30, 0x67, 0x56, 0x0d, 0xca, 0x4c, 0xd5, 0x0c, 0x73, 0xf6, 0xb2,
+	0x02, 0xe7, 0x4c, 0x6d, 0x99, 0x7c, 0x30, 0xf5, 0x5b, 0x6b, 0x77, 0x90,
+	0x5b, 0x0b, 0xb9, 0x2a, 0x65, 0x5a, 0x3f, 0xc1, 0x30, 0xd5, 0xe5, 0xa0,
+	0x01, 0x62, 0x0b, 0xad, 0x5d, 0xa6, 0xca, 0x81, 0xc7, 0x5e, 0x48, 0x33,
+	0x00, 0xf2, 0x06, 0x16, 0x3c, 0x07, 0xe5, 0xc8, 0x48, 0x3d, 0x27, 0x4e,
+	0x5b, 0x56, 0x48, 0xc8, 0xec, 0xb0, 0x87, 0x7b, 0x07, 0x13, 0x23, 0x4a,
+	0x2c, 0x59, 0x7d, 0x8c, 0xcd, 0x72, 0x5e, 0x8c, 0x7c, 0x09, 0x00, 0xfb,
+	0xa7, 0xea, 0x34, 0xa5, 0x43, 0x2f, 0xc8, 0x50, 0x0a, 0x63, 0x49, 0x15,
+	0xe8, 0xa7, 0xf5, 0xd0, 0x13, 0x49, 0x94, 0x22, 0x9f, 0x5c, 0x91, 0xdc,
+	0x22, 0x93, 0x95, 0x4a, 0x2c, 0x4b, 0x65, 0x2f, 0xd7, 0xc9, 0xe5, 0x38,
+	0x3a, 0x8d, 0xb4, 0x09, 0xed, 0x5d, 0x17, 0xda, 0x73, 0xb5, 0x51, 0x21,
+	0x5c, 0xc0, 0x69, 0x65, 0x8e, 0xe8, 0xab, 0x91, 0x24, 0x35, 0xb8, 0x22,
+	0x85, 0xc9, 0x27, 0xdc, 0x07, 0xc4, 0xd4, 0x61, 0xd1, 0xbc, 0x2f, 0x90,
+	0xe7, 0xda, 0xf3, 0x69, 0xb4, 0xbc, 0xcc, 0x07, 0x67, 0x08, 0xe6, 0x58,
+	0x9b, 0x4b, 0x6b, 0xc1, 0xae, 0xd9, 0x43, 0x16, 0xd8, 0x1f, 0x00, 0x0d,
+	0x9c, 0x49, 0x1b, 0x63, 0x29, 0x08, 0x2c, 0x72, 0x37, 0x41, 0x4c, 0x2b,
+	0x3b, 0xa1, 0x94, 0x74, 0x28, 0x25, 0xf5, 0x58, 0x6f, 0xcd, 0x12, 0x84,
+	0x05, 0x88, 0x1a, 0x82, 0xed, 0xa3, 0x36, 0x35, 0x9d, 0xf4, 0xb6, 0x2a,
+	0xdd, 0xef, 0x13, 0x09, 0x13, 0x33, 0x1b, 0x9a, 0x24, 0x4e, 0x4c, 0x1f,
+	0x92, 0x7e, 0xdc, 0x59, 0x6f, 0x45, 0x6c, 0x2b, 0xd1, 0x45, 0x05, 0x4b,
+	0x6b, 0x18, 0x56, 0xd6, 0xc9, 0x0a, 0x0e, 0x59, 0x27, 0x9c, 0xe5, 0x63,
+	0xa3, 0x1c, 0x95, 0x7a, 0x3d, 0x33, 0x75, 0x85, 0xa8, 0xca, 0x08, 0xb4,
+	0xa4, 0xb8, 0xdd, 0x02, 0x9f, 0xab, 0xde, 0x74, 0xd2, 0x05, 0xf6, 0x07,
+	0x23, 0x26, 0xb6, 0x7c, 0xba, 0x90, 0x22, 0x8c, 0x90, 0x71, 0x59, 0x0e,
+	0x88, 0x70, 0x04, 0x13, 0x74, 0x37, 0x52, 0xb2, 0x2b, 0xba, 0x94, 0x60,
+	0xc7, 0x10, 0x05, 0x58, 0x73, 0xcb, 0x19, 0x95, 0xa0, 0xf7, 0xf4, 0x0c,
+	0xdb, 0x1a, 0xcc, 0x28, 0x4c, 0x3e, 0x25, 0x7c, 0x40, 0x04, 0x02, 0x2a,
+	0x70, 0x24, 0x5e, 0x3b, 0x45, 0x03, 0x55, 0xce, 0xd1, 0x8b, 0x8f, 0x7a,
+	0x23, 0xe4, 0x89, 0xda, 0x8c, 0x1e, 0xa1, 0xde, 0x13, 0x41, 0xda, 0x11,
+	0x08, 0xaa, 0x7d, 0x5f, 0x71, 0xf1, 0x2a, 0xab, 0x79, 0x82, 0xb7, 0xeb,
+	0x5c, 0x9b, 0xca, 0xa8, 0x02, 0xd0, 0x10, 0xee, 0xd2, 0xf6, 0xc1, 0xd4,
+	0x4e, 0x2d, 0x2e, 0x80, 0xfd, 0x21, 0x01, 0x1c, 0xdb, 0x24, 0xc9, 0x8c,
+	0x2e, 0x04, 0x72, 0x4d, 0xe5, 0xa0, 0x50, 0x95, 0x62, 0xc2, 0xc7, 0xaa,
+	0x4c, 0xf5, 0x98, 0xac, 0xe4, 0xa8, 0x92, 0xa5, 0xc8, 0x57, 0x63, 0x3e,
+	0x2c, 0x88, 0xf6, 0xc4, 0x5f, 0x3f, 0xec, 0xac, 0xae, 0x52, 0x7b, 0xed,
+	0x70, 0x92, 0x54, 0x1a, 0xcd, 0xc1, 0xf6, 0x50, 0xaa, 0xa3, 0xa1, 0x42,
+	0x2f, 0xc4, 0x02, 0xa2, 0x3e, 0xba, 0x15, 0xcd, 0xd1, 0xba, 0xea, 0x09,
+	0x35, 0x0a, 0xd9, 0x90, 0x1d, 0x9d, 0x9e, 0x6f, 0x55, 0xbc, 0xaa, 0xec,
+	0x74, 0x86, 0x94, 0xa2, 0x04, 0xe0, 0x67, 0xee, 0xc3, 0x38, 0x55, 0x15,
+	0xb4, 0x73, 0xf0, 0x4a, 0x58, 0x4b, 0x4f, 0x01, 0xfb, 0xa7, 0xb9, 0x81,
+	0x66, 0xda, 0x53, 0x9a, 0xf6, 0xd4, 0x8a, 0x56, 0x99, 0xef, 0x35, 0xb4,
+	0x49, 0xd8, 0x4c, 0xe7, 0xbe, 0x9c, 0xbb, 0x53, 0xdb, 0xa0, 0x60, 0x2a,
+	0x73, 0x27, 0xf0, 0x4a, 0x5f, 0x0a, 0x94, 0x37, 0xda, 0x69, 0x7c, 0xc5,
+	0xa4, 0xa6, 0x1d, 0xcd, 0x06, 0xf4, 0x38, 0x4d, 0xd2, 0x5b, 0x66, 0x2a,
+	0x35, 0xd4, 0x82, 0x28, 0xee, 0x60, 0xbe, 0x54, 0xcc, 0x17, 0x93, 0x55,
+	0xc4, 0x93, 0xa1, 0x95, 0xb3, 0x8e, 0x32, 0x13, 0x5b, 0x81, 0x72, 0xb9,
+	0x4d, 0x07, 0xec, 0x9f, 0x99, 0xea, 0x73, 0x2d, 0xd2, 0xdb, 0xf4, 0x48,
+	0x68, 0x2e, 0x51, 0x34, 0x89, 0xd3, 0xa6, 0xde, 0x41, 0xc0, 0xf0, 0x59,
+	0xbf, 0xf9, 0x68, 0x2a, 0xe7, 0xb4, 0xc5, 0x08, 0xd1, 0x6c, 0xc6, 0x68,
+	0x9d, 0x1c, 0x29, 0xc4, 0x6a, 0xf2, 0xac, 0x26, 0x4e, 0xdd, 0x52, 0xa8,
+	0xb8, 0x13, 0xdf, 0x15, 0xfb, 0xba, 0x91, 0xeb, 0xb1, 0x8f, 0x68, 0x8a,
+	0xae, 0xda, 0x2c, 0x9f, 0x41, 0x77, 0x93, 0xaa, 0xa6, 0x50, 0x35, 0xa1,
+	0x3e, 0x81, 0x17, 0x20, 0xc5, 0xc0, 0xfe, 0x30, 0x36, 0x26, 0x22, 0xec,
+	0x14, 0x22, 0x68, 0xee, 0x03, 0x55, 0x37, 0xd1, 0xb9, 0x8a, 0xb4, 0xc8,
+	0x3e, 0x3c, 0xa1, 0x30, 0x51, 0x54, 0xe5, 0x28, 0x41, 0xc0, 0xbd, 0x62,
+	0xe4, 0x83, 0xd9, 0x57, 0x12, 0x67, 0x0f, 0x24, 0xdf, 0x6f, 0x39, 0x54,
+	0x51, 0x25, 0xaf, 0x89, 0xeb, 0x2b, 0x67, 0x96, 0x59, 0x41, 0x67, 0x05,
+	0x64, 0x2c, 0x8e, 0xe6, 0xb6, 0xce, 0x86, 0x9d, 0x9c, 0xca, 0x5b, 0x3a,
+	0xcb, 0xfc, 0x61, 0x83, 0xb6, 0x32, 0xed, 0x9c, 0x2e, 0x88, 0xc5, 0x92,
+	0xce, 0x22, 0xc6, 0xf3, 0x12, 0xe5, 0x0a, 0x57, 0x80, 0x3d, 0xde, 0x09,
+	0x3e, 0xd6, 0xe3, 0x20, 0xb9, 0x8d, 0xf2, 0x45, 0x3e, 0x40, 0x8b, 0x8f,
+	0x18, 0xbd, 0x8b, 0xb3, 0xda, 0xc9, 0xf0, 0xea, 0x67, 0xd3, 0x3f, 0xef,
+	0xfe, 0x37, 0xbc, 0xf6, 0x8f, 0x3f, 0xfc, 0xfd, 0x8f, 0xaf, 0xbd, 0x79,
+	0xe8, 0x3f, 0xbf, 0x8b, 0x7f, 0xbd, 0xf5, 0xd6, 0xc1, 0x87, 0xee, 0x7f,
+	0xe9, 0xc8, 0xda, 0x45, 0x9c, 0x23, 0xbf, 0xf4, 0x83, 0x60, 0x7f, 0x9c,
+	0x69, 0xe7, 0xcf, 0xb1, 0xcf, 0x1e, 0xc7, 0x39, 0xf6, 0xdf, 0xcf, 0xce,
+	0x9d, 0x63, 0xef, 0x0a, 0xdf, 0x3e, 0x7e, 0xfe, 0xc6, 0xe1, 0xe4, 0x37,
+	0x5f, 0xff, 0x9f, 0x5b, 0xff, 0xd7, 0x8b, 0xf7, 0xfd, 0xea, 0x3c, 0xb0,
+	0x7f, 0xf9, 0x39, 0x7c, 0x7d, 0x3c, 0xf7, 0xf0, 0x4e, 0xb0, 0xbf, 0xd0,
+	0x9f, 0xbb, 0xb1, 0x48, 0x47, 0xf1, 0x5b, 0xd0, 0xbf, 0xf7, 0xc4, 0xcb,
+	0xdb, 0xe2, 0xf3, 0x4f, 0xbd, 0xb0, 0xfc, 0xd2, 0xc9, 0xb5, 0x03, 0xcf,
+	0xe0, 0xbb, 0x69, 0xf1, 0x0e, 0xfe, 0x6e, 0x5a, 0xbc, 0x93, 0xbf, 0x9b,
+	0x5e, 0x08, 0xf6, 0x13, 0xa2, 0x86, 0x37, 0xbb, 0x07, 0x8f, 0x07, 0x0b,
+	0x4b, 0xd7, 0xe7, 0x28, 0x03, 0xf9, 0x89, 0x0f, 0x76, 0x9e, 0xbf, 0xf7,
+	0xdb, 0xd9, 0xf3, 0xd7, 0x7e, 0xdc, 0xfd, 0xed, 0x81, 0x1d, 0x60, 0x6f,
+	0xff, 0x10, 0x7c, 0xff, 0xc9, 0xd2, 0x3e, 0xe0, 0xfb, 0x3c, 0xdd, 0x65,
+	0xb8, 0x48, 0x9c, 0xbf, 0x15, 0x7b, 0xff, 0x8d, 0x0f, 0xce, 0x1e, 0x5b,
+	0x79, 0xbb, 0xc1, 0xfe, 0x21, 0x2c, 0x1c, 0xc8, 0xc6, 0xe4, 0x10, 0x00,
+	0x00}
 var testSegment_VP8 = []byte{
-  0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x93, 0x72,
-  0xbd, 0xbf, 0x78, 0xbe, 0x53, 0x5b, 0x23, 0xa3, 0xd3, 0x77, 0x20, 0xfe,
-  0xd4, 0xc8, 0xe2, 0xf4, 0xb9, 0x91, 0xc3, 0xa9, 0xa9, 0xa5, 0x3c, 0x35,
-  0x29, 0xd7, 0xa9, 0xbd, 0x91, 0xc9, 0xa9, 0xb5, 0x91, 0x49, 0x22, 0xb8,
-  0x21, 0x9d, 0xf1, 0x3f, 0x04, 0x08, 0xfa, 0xce, 0x2e, 0x59, 0xed, 0xbb,
-  0xbb, 0x3b, 0x78, 0x75, 0x8b, 0xa8, 0xe7, 0xca, 0xb4, 0xe0, 0x35, 0x8d,
-  0x0b, 0x21, 0x3c, 0xb1, 0x90, 0x75, 0xd9, 0x40, 0xde, 0x59, 0xdf, 0xdd,
-  0x3d, 0x40, 0x9e, 0x50, 0xc8, 0xe1, 0xf4, 0xe0, 0x35, 0x4d, 0x8c, 0xe2,
-  0x6f, 0x18, 0x19, 0xc0, 0x20, 0x83, 0x81, 0x4e, 0x00, 0xe4, 0xaa, 0xe5,
-  0x5a, 0xd7, 0x37, 0x36, 0xf3, 0x3b, 0x39, 0xf8, 0x36, 0xf4, 0xfa, 0x24,
-  0x96, 0xa5, 0x99, 0x5a, 0xe8, 0x99, 0x9b, 0xe9, 0x19, 0x1a, 0x18, 0x84,
-  0x3b, 0xa2, 0xf2, 0x41, 0x6e, 0x3e, 0xba, 0x0e, 0xea, 0x42, 0x9b, 0xeb,
-  0x8d, 0x8c, 0xc5, 0x47, 0x3b, 0x4c, 0xda, 0x57, 0xb8, 0xbc, 0x50, 0xb9,
-  0x56, 0x31, 0xa7, 0x91, 0x41, 0x69, 0xeb, 0x9c, 0xe6, 0xd2, 0xbc, 0x94,
-  0xb6, 0xd6, 0xb0, 0xf8, 0xb0, 0x00, 0x8b, 0xe6, 0x46, 0x46, 0xe5, 0xc7,
-  0xcd, 0x2d, 0x4c, 0x49, 0x51, 0x0c, 0x0f, 0xa0, 0x5a, 0x38, 0x37, 0x34,
-  0x4e, 0xd8, 0xd5, 0x38, 0x61, 0x56, 0x23, 0x13, 0xc8, 0xbf, 0x5f, 0x8b,
-  0x8b, 0xa1, 0xe2, 0xea, 0xc9, 0x07, 0x1a, 0xd2, 0x4f, 0x40, 0x39, 0x52,
-  0xae, 0x8b, 0xdb, 0x5d, 0xfd, 0x9c, 0xfd, 0x5d, 0x5c, 0x83, 0x5c, 0xda,
-  0x51, 0xed, 0x87, 0x6b, 0xb0, 0x4a, 0x3e, 0xd0, 0x9d, 0x8c, 0xb0, 0x1b,
-  0xae, 0x57, 0x09, 0x59, 0xef, 0x54, 0xa0, 0xde, 0x64, 0xa0, 0x5e, 0x43,
-  0x63, 0x13, 0x90, 0x66, 0x85, 0x9c, 0xcc, 0xa4, 0xb2, 0x82, 0x0a, 0x79,
-  0xe7, 0x6d, 0xa5, 0x0e, 0x9b, 0x9f, 0x37, 0x32, 0x2c, 0x3e, 0xd6, 0xc8,
-  0xc0, 0xd0, 0x50, 0xc0, 0xc6, 0x30, 0x97, 0x51, 0x6b, 0x02, 0xc3, 0x04,
-  0x06, 0x06, 0x77, 0x8e, 0xd6, 0xd6, 0x8e, 0xd6, 0x96, 0x0e, 0x26, 0x26,
-  0x06, 0x36, 0x25, 0x7e, 0x56, 0x81, 0x39, 0x41, 0x97, 0x16, 0x5a, 0x2c,
-  0x5d, 0xea, 0x54, 0xe8, 0xed, 0xd5, 0xf2, 0x68, 0xda, 0x54, 0xce, 0xa3,
-  0xba, 0x5a, 0xc2, 0x5d, 0x51, 0x21, 0xea, 0x22, 0x5b, 0x56, 0xf8, 0x69,
-  0x66, 0x06, 0xcc, 0x31, 0x61, 0xf8, 0xf7, 0x7f, 0xf1, 0x3d, 0x86, 0xc5,
-  0x33, 0x1a, 0x19, 0x34, 0x18, 0x04, 0x99, 0x18, 0x58, 0x05, 0xd6, 0x30,
-  0x48, 0x30, 0x48, 0x44, 0xe8, 0x7f, 0x61, 0xe0, 0x68, 0x78, 0xf5, 0xff,
-  0x01, 0x58, 0x26, 0x00, 0xa7, 0x4c, 0x05, 0x4e, 0x99, 0x05, 0x58, 0x65,
-  0x00, 0x28, 0x3b, 0x25, 0xe1, 0x7a, 0x02, 0x00, 0x00}
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x93, 0x72,
+	0xbd, 0xbf, 0x78, 0xbe, 0x53, 0x5b, 0x23, 0xa3, 0xd3, 0x77, 0x20, 0xfe,
+	0xd4, 0xc8, 0xe2, 0xf4, 0xb9, 0x91, 0xc3, 0xa9, 0xa9, 0xa5, 0x3c, 0x35,
+	0x29, 0xd7, 0xa9, 0xbd, 0x91, 0xc9, 0xa9, 0xb5, 0x91, 0x49, 0x22, 0xb8,
+	0x21, 0x9d, 0xf1, 0x3f, 0x04, 0x08, 0xfa, 0xce, 0x2e, 0x59, 0xed, 0xbb,
+	0xbb, 0x3b, 0x78, 0x75, 0x8b, 0xa8, 0xe7, 0xca, 0xb4, 0xe0, 0x35, 0x8d,
+	0x0b, 0x21, 0x3c, 0xb1, 0x90, 0x75, 0xd9, 0x40, 0xde, 0x59, 0xdf, 0xdd,
+	0x3d, 0x40, 0x9e, 0x50, 0xc8, 0xe1, 0xf4, 0xe0, 0x35, 0x4d, 0x8c, 0xe2,
+	0x6f, 0x18, 0x19, 0xc0, 0x20, 0x83, 0x81, 0x4e, 0x00, 0xe4, 0xaa, 0xe5,
+	0x5a, 0xd7, 0x37, 0x36, 0xf3, 0x3b, 0x39, 0xf8, 0x36, 0xf4, 0xfa, 0x24,
+	0x96, 0xa5, 0x99, 0x5a, 0xe8, 0x99, 0x9b, 0xe9, 0x19, 0x1a, 0x18, 0x84,
+	0x3b, 0xa2, 0xf2, 0x41, 0x6e, 0x3e, 0xba, 0x0e, 0xea, 0x42, 0x9b, 0xeb,
+	0x8d, 0x8c, 0xc5, 0x47, 0x3b, 0x4c, 0xda, 0x57, 0xb8, 0xbc, 0x50, 0xb9,
+	0x56, 0x31, 0xa7, 0x91, 0x41, 0x69, 0xeb, 0x9c, 0xe6, 0xd2, 0xbc, 0x94,
+	0xb6, 0xd6, 0xb0, 0xf8, 0xb0, 0x00, 0x8b, 0xe6, 0x46, 0x46, 0xe5, 0xc7,
+	0xcd, 0x2d, 0x4c, 0x49, 0x51, 0x0c, 0x0f, 0xa0, 0x5a, 0x38, 0x37, 0x34,
+	0x4e, 0xd8, 0xd5, 0x38, 0x61, 0x56, 0x23, 0x13, 0xc8, 0xbf, 0x5f, 0x8b,
+	0x8b, 0xa1, 0xe2, 0xea, 0xc9, 0x07, 0x1a, 0xd2, 0x4f, 0x40, 0x39, 0x52,
+	0xae, 0x8b, 0xdb, 0x5d, 0xfd, 0x9c, 0xfd, 0x5d, 0x5c, 0x83, 0x5c, 0xda,
+	0x51, 0xed, 0x87, 0x6b, 0xb0, 0x4a, 0x3e, 0xd0, 0x9d, 0x8c, 0xb0, 0x1b,
+	0xae, 0x57, 0x09, 0x59, 0xef, 0x54, 0xa0, 0xde, 0x64, 0xa0, 0x5e, 0x43,
+	0x63, 0x13, 0x90, 0x66, 0x85, 0x9c, 0xcc, 0xa4, 0xb2, 0x82, 0x0a, 0x79,
+	0xe7, 0x6d, 0xa5, 0x0e, 0x9b, 0x9f, 0x37, 0x32, 0x2c, 0x3e, 0xd6, 0xc8,
+	0xc0, 0xd0, 0x50, 0xc0, 0xc6, 0x30, 0x97, 0x51, 0x6b, 0x02, 0xc3, 0x04,
+	0x06, 0x06, 0x77, 0x8e, 0xd6, 0xd6, 0x8e, 0xd6, 0x96, 0x0e, 0x26, 0x26,
+	0x06, 0x36, 0x25, 0x7e, 0x56, 0x81, 0x39, 0x41, 0x97, 0x16, 0x5a, 0x2c,
+	0x5d, 0xea, 0x54, 0xe8, 0xed, 0xd5, 0xf2, 0x68, 0xda, 0x54, 0xce, 0xa3,
+	0xba, 0x5a, 0xc2, 0x5d, 0x51, 0x21, 0xea, 0x22, 0x5b, 0x56, 0xf8, 0x69,
+	0x66, 0x06, 0xcc, 0x31, 0x61, 0xf8, 0xf7, 0x7f, 0xf1, 0x3d, 0x86, 0xc5,
+	0x33, 0x1a, 0x19, 0x34, 0x18, 0x04, 0x99, 0x18, 0x58, 0x05, 0xd6, 0x30,
+	0x48, 0x30, 0x48, 0x44, 0xe8, 0x7f, 0x61, 0xe0, 0x68, 0x78, 0xf5, 0xff,
+	0x01, 0x58, 0x26, 0x00, 0xa7, 0x4c, 0x05, 0x4e, 0x99, 0x05, 0x58, 0x65,
+	0x00, 0x28, 0x3b, 0x25, 0xe1, 0x7a, 0x02, 0x00, 0x00}
 var testSegment_VP9 = []byte{
-  0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x93, 0x72,
-  0xbd, 0xbf, 0x78, 0xbe, 0x53, 0x5b, 0x23, 0xa3, 0xd3, 0x77, 0x20, 0xfe,
-  0xd4, 0xc8, 0xe2, 0xf4, 0xb9, 0x91, 0xc3, 0xa9, 0xa9, 0xa5, 0x3c, 0x35,
-  0x29, 0xd7, 0xa9, 0xbd, 0x91, 0xc9, 0xa9, 0xb5, 0x91, 0x49, 0x22, 0xb8,
-  0x21, 0x9d, 0xf1, 0x3f, 0x04, 0x08, 0xfa, 0xce, 0x2e, 0x59, 0xed, 0xbb,
-  0xbb, 0x3b, 0x78, 0x75, 0x8b, 0xa8, 0xe7, 0xca, 0xb4, 0xe0, 0x35, 0x8d,
-  0x0b, 0x21, 0x3c, 0xb1, 0x90, 0x75, 0xd9, 0x40, 0xde, 0x59, 0xdf, 0xdd,
-  0x3d, 0x40, 0x9e, 0x50, 0xc8, 0xe1, 0xf4, 0xe0, 0x35, 0x4d, 0x8c, 0xe2,
-  0x6f, 0x18, 0x19, 0xc0, 0x20, 0x83, 0x81, 0x4e, 0x00, 0xe4, 0xaa, 0xe5,
-  0x5a, 0xd7, 0x37, 0x36, 0xf3, 0x3b, 0x39, 0xf8, 0x36, 0xf4, 0xfa, 0x24,
-  0x96, 0xa5, 0x99, 0x5a, 0xe8, 0x99, 0x9b, 0xe9, 0x19, 0x1a, 0x18, 0x84,
-  0x3b, 0xa2, 0xf2, 0x41, 0x6e, 0x3e, 0xba, 0x0e, 0xea, 0x42, 0x9b, 0xeb,
-  0x8d, 0x8c, 0xc5, 0x47, 0x3b, 0x74, 0x97, 0x26, 0x3b, 0x3d, 0xbf, 0x72,
-  0xe1, 0xf9, 0x9c, 0x46, 0x06, 0xa5, 0xad, 0x73, 0x9a, 0x4b, 0xf3, 0x52,
-  0xda, 0x5a, 0xc3, 0xe2, 0xc3, 0x02, 0x2c, 0x9b, 0x1b, 0x19, 0x95, 0x1f,
-  0x37, 0xb7, 0x30, 0x25, 0x45, 0x31, 0x3c, 0x80, 0x6a, 0xe1, 0xdc, 0xd0,
-  0x38, 0x61, 0x57, 0xe3, 0x84, 0x59, 0x8d, 0x4c, 0x20, 0xff, 0xfe, 0x2c,
-  0x2e, 0x86, 0x8a, 0xab, 0x27, 0x1f, 0x68, 0x48, 0x3f, 0x01, 0xe5, 0x48,
-  0xb9, 0x2e, 0x6e, 0x77, 0xf5, 0x73, 0xf6, 0x77, 0x71, 0x0d, 0x72, 0x69,
-  0x47, 0xb5, 0x1f, 0xae, 0xc1, 0x2e, 0xf9, 0x40, 0x77, 0x32, 0xc2, 0x6e,
-  0xb8, 0x5e, 0x35, 0x64, 0xbd, 0x33, 0x81, 0x7a, 0x93, 0x81, 0x7a, 0x0d,
-  0x8d, 0x4d, 0x40, 0x9a, 0x15, 0x72, 0x32, 0x93, 0xca, 0x0a, 0x2a, 0x74,
-  0xcb, 0x0a, 0x2c, 0xe5, 0x9d, 0xb7, 0x95, 0x3a, 0xf4, 0x3c, 0x6f, 0x64,
-  0x58, 0xbc, 0xbc, 0x91, 0x81, 0xa1, 0xa1, 0xc9, 0xb3, 0xd9, 0x89, 0x81,
-  0xe3, 0x03, 0xc7, 0x37, 0x06, 0x0b, 0x15, 0x19, 0x09, 0x2f, 0x06, 0x06,
-  0x83, 0x04, 0x06, 0x86, 0x74, 0xfb, 0xff, 0xff, 0x83, 0x04, 0x39, 0xef,
-  0x1e, 0xb2, 0x79, 0xe2, 0x10, 0xd8, 0xb0, 0x78, 0x5a, 0x23, 0x83, 0x06,
-  0x43, 0x1b, 0x83, 0xc3, 0xa4, 0x39, 0x0c, 0x01, 0x0c, 0x0c, 0xcc, 0x0a,
-  0x0c, 0x0c, 0x91, 0x4c, 0x3a, 0x01, 0x1d, 0x20, 0xf1, 0x00, 0xa8, 0xb8,
-  0xdf, 0x03, 0x54, 0xf1, 0x0a, 0x1c, 0xea, 0x17, 0x40, 0xc5, 0x7d, 0x1d,
-  0x10, 0xe2, 0x00, 0x5a, 0x92, 0xd7, 0x17, 0x57, 0x02, 0x00, 0x00}
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x93, 0x72,
+	0xbd, 0xbf, 0x78, 0xbe, 0x53, 0x5b, 0x23, 0xa3, 0xd3, 0x77, 0x20, 0xfe,
+	0xd4, 0xc8, 0xe2, 0xf4, 0xb9, 0x91, 0xc3, 0xa9, 0xa9, 0xa5, 0x3c, 0x35,
+	0x29, 0xd7, 0xa9, 0xbd, 0x91, 0xc9, 0xa9, 0xb5, 0x91, 0x49, 0x22, 0xb8,
+	0x21, 0x9d, 0xf1, 0x3f, 0x04, 0x08, 0xfa, 0xce, 0x2e, 0x59, 0xed, 0xbb,
+	0xbb, 0x3b, 0x78, 0x75, 0x8b, 0xa8, 0xe7, 0xca, 0xb4, 0xe0, 0x35, 0x8d,
+	0x0b, 0x21, 0x3c, 0xb1, 0x90, 0x75, 0xd9, 0x40, 0xde, 0x59, 0xdf, 0xdd,
+	0x3d, 0x40, 0x9e, 0x50, 0xc8, 0xe1, 0xf4, 0xe0, 0x35, 0x4d, 0x8c, 0xe2,
+	0x6f, 0x18, 0x19, 0xc0, 0x20, 0x83, 0x81, 0x4e, 0x00, 0xe4, 0xaa, 0xe5,
+	0x5a, 0xd7, 0x37, 0x36, 0xf3, 0x3b, 0x39, 0xf8, 0x36, 0xf4, 0xfa, 0x24,
+	0x96, 0xa5, 0x99, 0x5a, 0xe8, 0x99, 0x9b, 0xe9, 0x19, 0x1a, 0x18, 0x84,
+	0x3b, 0xa2, 0xf2, 0x41, 0x6e, 0x3e, 0xba, 0x0e, 0xea, 0x42, 0x9b, 0xeb,
+	0x8d, 0x8c, 0xc5, 0x47, 0x3b, 0x74, 0x97, 0x26, 0x3b, 0x3d, 0xbf, 0x72,
+	0xe1, 0xf9, 0x9c, 0x46, 0x06, 0xa5, 0xad, 0x73, 0x9a, 0x4b, 0xf3, 0x52,
+	0xda, 0x5a, 0xc3, 0xe2, 0xc3, 0x02, 0x2c, 0x9b, 0x1b, 0x19, 0x95, 0x1f,
+	0x37, 0xb7, 0x30, 0x25, 0x45, 0x31, 0x3c, 0x80, 0x6a, 0xe1, 0xdc, 0xd0,
+	0x38, 0x61, 0x57, 0xe3, 0x84, 0x59, 0x8d, 0x4c, 0x20, 0xff, 0xfe, 0x2c,
+	0x2e, 0x86, 0x8a, 0xab, 0x27, 0x1f, 0x68, 0x48, 0x3f, 0x01, 0xe5, 0x48,
+	0xb9, 0x2e, 0x6e, 0x77, 0xf5, 0x73, 0xf6, 0x77, 0x71, 0x0d, 0x72, 0x69,
+	0x47, 0xb5, 0x1f, 0xae, 0xc1, 0x2e, 0xf9, 0x40, 0x77, 0x32, 0xc2, 0x6e,
+	0xb8, 0x5e, 0x35, 0x64, 0xbd, 0x33, 0x81, 0x7a, 0x93, 0x81, 0x7a, 0x0d,
+	0x8d, 0x4d, 0x40, 0x9a, 0x15, 0x72, 0x32, 0x93, 0xca, 0x0a, 0x2a, 0x74,
+	0xcb, 0x0a, 0x2c, 0xe5, 0x9d, 0xb7, 0x95, 0x3a, 0xf4, 0x3c, 0x6f, 0x64,
+	0x58, 0xbc, 0xbc, 0x91, 0x81, 0xa1, 0xa1, 0xc9, 0xb3, 0xd9, 0x89, 0x81,
+	0xe3, 0x03, 0xc7, 0x37, 0x06, 0x0b, 0x15, 0x19, 0x09, 0x2f, 0x06, 0x06,
+	0x83, 0x04, 0x06, 0x86, 0x74, 0xfb, 0xff, 0xff, 0x83, 0x04, 0x39, 0xef,
+	0x1e, 0xb2, 0x79, 0xe2, 0x10, 0xd8, 0xb0, 0x78, 0x5a, 0x23, 0x83, 0x06,
+	0x43, 0x1b, 0x83, 0xc3, 0xa4, 0x39, 0x0c, 0x01, 0x0c, 0x0c, 0xcc, 0x0a,
+	0x0c, 0x0c, 0x91, 0x4c, 0x3a, 0x01, 0x1d, 0x20, 0xf1, 0x00, 0xa8, 0xb8,
+	0xdf, 0x03, 0x54, 0xf1, 0x0a, 0x1c, 0xea, 0x17, 0x40, 0xc5, 0x7d, 0x1d,
+	0x10, 0xe2, 0x00, 0x5a, 0x92, 0xd7, 0x17, 0x57, 0x02, 0x00, 0x00}
diff --git a/eth/blockwatch/block_watcher_test.go b/eth/blockwatch/block_watcher_test.go
index 7fc05df1..f94f68b4 100644
--- a/eth/blockwatch/block_watcher_test.go
+++ b/eth/blockwatch/block_watcher_test.go
@@ -527,6 +527,7 @@ func TestEnrichWithL1_One(t *testing.T) {
 	header := &MiniHeader{
 		Number: big.NewInt(FakeBlockNumber),
 		Hash:   common.HexToHash(FakeHash),
+		Logs:   []types.Log{logStub},
 	}
 	events := []*Event{{BlockHeader: header}}
 
@@ -536,6 +537,7 @@ func TestEnrichWithL1_One(t *testing.T) {
 	assert.Equal(common.HexToHash(FakeHash), res[0].BlockHeader.Hash)
 	assert.Equal(big.NewInt(FakeBlockNumber), res[0].BlockHeader.Number)
 	assert.Equal(big.NewInt(FakeL1BlockNumber), res[0].BlockHeader.L1BlockNumber)
+	assert.Contains(res[0].BlockHeader.Logs, logStub)
 }
 
 func TestEnrichWithL1_Multiple(t *testing.T) {