diff --git a/vendor/go.uber.org/atomic/duration.go b/vendor/go.uber.org/atomic/duration.go
index 207594f..027cfcb 100644
--- a/vendor/go.uber.org/atomic/duration.go
+++ b/vendor/go.uber.org/atomic/duration.go
@@ -1,6 +1,6 @@
 // @generated Code generated by gen-atomicwrapper.
 
-// Copyright (c) 2020-2021 Uber Technologies, Inc.
+// Copyright (c) 2020 Uber Technologies, Inc.
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -37,10 +37,10 @@
 var _zeroDuration time.Duration
 
 // NewDuration creates a new Duration.
-func NewDuration(val time.Duration) *Duration {
+func NewDuration(v time.Duration) *Duration {
 	x := &Duration{}
-	if val != _zeroDuration {
-		x.Store(val)
+	if v != _zeroDuration {
+		x.Store(v)
 	}
 	return x
 }
@@ -51,19 +51,19 @@
 }
 
 // Store atomically stores the passed time.Duration.
-func (x *Duration) Store(val time.Duration) {
-	x.v.Store(int64(val))
+func (x *Duration) Store(v time.Duration) {
+	x.v.Store(int64(v))
 }
 
 // CAS is an atomic compare-and-swap for time.Duration values.
-func (x *Duration) CAS(old, new time.Duration) (swapped bool) {
-	return x.v.CAS(int64(old), int64(new))
+func (x *Duration) CAS(o, n time.Duration) bool {
+	return x.v.CAS(int64(o), int64(n))
 }
 
 // Swap atomically stores the given time.Duration and returns the old
 // value.
-func (x *Duration) Swap(val time.Duration) (old time.Duration) {
-	return time.Duration(x.v.Swap(int64(val)))
+func (x *Duration) Swap(o time.Duration) time.Duration {
+	return time.Duration(x.v.Swap(int64(o)))
 }
 
 // MarshalJSON encodes the wrapped time.Duration into JSON.
