From 4882a6dd9dc8ee5475ce8a00c52a522e661dd387 Mon Sep 17 00:00:00 2001
From: Matthew Heon <matthew.heon@gmail.com>
Date: Wed, 10 Oct 2018 14:04:17 -0400
Subject: [PATCH] Add --ip flag and plumbing into libpod

Add the --ip flag back with bash completions. Manpages still
missing.

Add plumbing to pass appropriate the appropriate option down to
libpod to connect the flag to backend logic added in the previous
commits.

Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
---
 cmd/podman/common.go         |    4 +
 completions/bash/podman      |    1 +
 libpod/container_easyjson.go | 8132 +++++++++++++++++++++++++++++++++-
 libpod/pod_easyjson.go       |  749 ++++
 pkg/spec/createconfig.go     |   13 +-
 5 files changed, 8876 insertions(+), 23 deletions(-)
 create mode 100644 libpod/pod_easyjson.go

diff --git a/cmd/podman/common.go b/cmd/podman/common.go
index 9ab0e57e53..c1e15e2fb2 100644
--- a/cmd/podman/common.go
+++ b/cmd/podman/common.go
@@ -248,6 +248,10 @@ var createFlags = []cli.Flag{
 		Name:  "interactive, i",
 		Usage: "Keep STDIN open even if not attached",
 	},
+	cli.StringFlag{
+		Name:  "ip",
+		Usage: "Specify a static IPv4 address for the container",
+	},
 	cli.StringFlag{
 		Name:  "ipc",
 		Usage: "IPC namespace to use",
diff --git a/completions/bash/podman b/completions/bash/podman
index 604a25f5dd..5cfed348f4 100644
--- a/completions/bash/podman
+++ b/completions/bash/podman
@@ -1512,6 +1512,7 @@ _podman_container_run() {
 		--hostname -h
 		--image-volume
 		--init-path
+		--ip
 		--ipc
 		--kernel-memory
 		--label-file
diff --git a/libpod/container_easyjson.go b/libpod/container_easyjson.go
index 61fa33a302..f783660653 100644
--- a/libpod/container_easyjson.go
+++ b/libpod/container_easyjson.go
@@ -1,32 +1,8124 @@
 // +build  seccomp   ostree selinux  varlink exclude_graphdriver_devicemapper
 
-// TEMPORARY AUTOGENERATED FILE: easyjson stub code to make the package
-// compilable during generation.
+// Code generated by easyjson for marshaling/unmarshaling. DO NOT EDIT.
 
-package  libpod
+package libpod
 
 import (
-  "github.com/mailru/easyjson/jwriter"
-  "github.com/mailru/easyjson/jlexer"
+	json "encoding/json"
+	types "github.com/containernetworking/cni/pkg/types"
+	current "github.com/containernetworking/cni/pkg/types/current"
+	storage "github.com/containers/storage"
+	idtools "github.com/containers/storage/pkg/idtools"
+	ocicni "github.com/cri-o/ocicni/pkg/ocicni"
+	easyjson "github.com/mailru/easyjson"
+	jlexer "github.com/mailru/easyjson/jlexer"
+	jwriter "github.com/mailru/easyjson/jwriter"
+	specs_go "github.com/opencontainers/runtime-spec/specs-go"
+	net "net"
+	os "os"
 )
 
-func ( ContainerConfig ) MarshalJSON() ([]byte, error) { return nil, nil }
-func (* ContainerConfig ) UnmarshalJSON([]byte) error { return nil }
-func ( ContainerConfig ) MarshalEasyJSON(w *jwriter.Writer) {}
-func (* ContainerConfig ) UnmarshalEasyJSON(l *jlexer.Lexer) {}
+// suppress unused package warning
+var (
+	_ *json.RawMessage
+	_ *jlexer.Lexer
+	_ *jwriter.Writer
+	_ easyjson.Marshaler
+)
 
-type EasyJSON_exporter_ContainerConfig *ContainerConfig
+func easyjson1dbef17bDecodeGithubComContainersLibpodLibpod(in *jlexer.Lexer, out *containerState) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "state":
+			out.State = ContainerStatus(in.Int())
+		case "configPath":
+			out.ConfigPath = string(in.String())
+		case "runDir":
+			out.RunDir = string(in.String())
+		case "destinationRunDir":
+			out.DestinationRunDir = string(in.String())
+		case "mounted":
+			out.Mounted = bool(in.Bool())
+		case "mountPoint":
+			out.Mountpoint = string(in.String())
+		case "realMountPoint":
+			out.RealMountpoint = string(in.String())
+		case "startedTime":
+			if data := in.Raw(); in.Ok() {
+				in.AddError((out.StartedTime).UnmarshalJSON(data))
+			}
+		case "finishedTime":
+			if data := in.Raw(); in.Ok() {
+				in.AddError((out.FinishedTime).UnmarshalJSON(data))
+			}
+		case "exitCode":
+			out.ExitCode = int32(in.Int32())
+		case "exited":
+			out.Exited = bool(in.Bool())
+		case "oomKilled":
+			out.OOMKilled = bool(in.Bool())
+		case "pid":
+			out.PID = int(in.Int())
+		case "execSessions":
+			if in.IsNull() {
+				in.Skip()
+			} else {
+				in.Delim('{')
+				if !in.IsDelim('}') {
+					out.ExecSessions = make(map[string]*ExecSession)
+				} else {
+					out.ExecSessions = nil
+				}
+				for !in.IsDelim('}') {
+					key := string(in.String())
+					in.WantColon()
+					var v1 *ExecSession
+					if in.IsNull() {
+						in.Skip()
+						v1 = nil
+					} else {
+						if v1 == nil {
+							v1 = new(ExecSession)
+						}
+						if data := in.Raw(); in.Ok() {
+							in.AddError((*v1).UnmarshalJSON(data))
+						}
+					}
+					(out.ExecSessions)[key] = v1
+					in.WantComma()
+				}
+				in.Delim('}')
+			}
+		case "networkResults":
+			if in.IsNull() {
+				in.Skip()
+				out.NetworkStatus = nil
+			} else {
+				in.Delim('[')
+				if out.NetworkStatus == nil {
+					if !in.IsDelim(']') {
+						out.NetworkStatus = make([]*current.Result, 0, 8)
+					} else {
+						out.NetworkStatus = []*current.Result{}
+					}
+				} else {
+					out.NetworkStatus = (out.NetworkStatus)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v2 *current.Result
+					if in.IsNull() {
+						in.Skip()
+						v2 = nil
+					} else {
+						if v2 == nil {
+							v2 = new(current.Result)
+						}
+						easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComContainernetworkingCniPkgTypesCurrent(in, &*v2)
+					}
+					out.NetworkStatus = append(out.NetworkStatus, v2)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "bindMounts":
+			if in.IsNull() {
+				in.Skip()
+			} else {
+				in.Delim('{')
+				if !in.IsDelim('}') {
+					out.BindMounts = make(map[string]string)
+				} else {
+					out.BindMounts = nil
+				}
+				for !in.IsDelim('}') {
+					key := string(in.String())
+					in.WantColon()
+					var v3 string
+					v3 = string(in.String())
+					(out.BindMounts)[key] = v3
+					in.WantComma()
+				}
+				in.Delim('}')
+			}
+		case "userNSRoot":
+			out.UserNSRoot = string(in.String())
+		case "extensionStageHooks":
+			if in.IsNull() {
+				in.Skip()
+			} else {
+				in.Delim('{')
+				if !in.IsDelim('}') {
+					out.ExtensionStageHooks = make(map[string][]specs_go.Hook)
+				} else {
+					out.ExtensionStageHooks = nil
+				}
+				for !in.IsDelim('}') {
+					key := string(in.String())
+					in.WantColon()
+					var v4 []specs_go.Hook
+					if in.IsNull() {
+						in.Skip()
+						v4 = nil
+					} else {
+						in.Delim('[')
+						if v4 == nil {
+							if !in.IsDelim(']') {
+								v4 = make([]specs_go.Hook, 0, 1)
+							} else {
+								v4 = []specs_go.Hook{}
+							}
+						} else {
+							v4 = (v4)[:0]
+						}
+						for !in.IsDelim(']') {
+							var v5 specs_go.Hook
+							easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo(in, &v5)
+							v4 = append(v4, v5)
+							in.WantComma()
+						}
+						in.Delim(']')
+					}
+					(out.ExtensionStageHooks)[key] = v4
+					in.WantComma()
+				}
+				in.Delim('}')
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodLibpod(out *jwriter.Writer, in containerState) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"state\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int(int(in.State))
+	}
+	if in.ConfigPath != "" {
+		const prefix string = ",\"configPath\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.ConfigPath))
+	}
+	if in.RunDir != "" {
+		const prefix string = ",\"runDir\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.RunDir))
+	}
+	if in.DestinationRunDir != "" {
+		const prefix string = ",\"destinationRunDir\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.DestinationRunDir))
+	}
+	if in.Mounted {
+		const prefix string = ",\"mounted\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.Mounted))
+	}
+	if in.Mountpoint != "" {
+		const prefix string = ",\"mountPoint\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Mountpoint))
+	}
+	if in.RealMountpoint != "" {
+		const prefix string = ",\"realMountPoint\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.RealMountpoint))
+	}
+	if true {
+		const prefix string = ",\"startedTime\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Raw((in.StartedTime).MarshalJSON())
+	}
+	if true {
+		const prefix string = ",\"finishedTime\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Raw((in.FinishedTime).MarshalJSON())
+	}
+	if in.ExitCode != 0 {
+		const prefix string = ",\"exitCode\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int32(int32(in.ExitCode))
+	}
+	if in.Exited {
+		const prefix string = ",\"exited\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.Exited))
+	}
+	if in.OOMKilled {
+		const prefix string = ",\"oomKilled\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.OOMKilled))
+	}
+	if in.PID != 0 {
+		const prefix string = ",\"pid\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int(int(in.PID))
+	}
+	if len(in.ExecSessions) != 0 {
+		const prefix string = ",\"execSessions\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('{')
+			v6First := true
+			for v6Name, v6Value := range in.ExecSessions {
+				if v6First {
+					v6First = false
+				} else {
+					out.RawByte(',')
+				}
+				out.String(string(v6Name))
+				out.RawByte(':')
+				if v6Value == nil {
+					out.RawString("null")
+				} else {
+					out.Raw((*v6Value).MarshalJSON())
+				}
+			}
+			out.RawByte('}')
+		}
+	}
+	if len(in.NetworkStatus) != 0 {
+		const prefix string = ",\"networkResults\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v7, v8 := range in.NetworkStatus {
+				if v7 > 0 {
+					out.RawByte(',')
+				}
+				if v8 == nil {
+					out.RawString("null")
+				} else {
+					easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComContainernetworkingCniPkgTypesCurrent(out, *v8)
+				}
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.BindMounts) != 0 {
+		const prefix string = ",\"bindMounts\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('{')
+			v9First := true
+			for v9Name, v9Value := range in.BindMounts {
+				if v9First {
+					v9First = false
+				} else {
+					out.RawByte(',')
+				}
+				out.String(string(v9Name))
+				out.RawByte(':')
+				out.String(string(v9Value))
+			}
+			out.RawByte('}')
+		}
+	}
+	if in.UserNSRoot != "" {
+		const prefix string = ",\"userNSRoot\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.UserNSRoot))
+	}
+	if len(in.ExtensionStageHooks) != 0 {
+		const prefix string = ",\"extensionStageHooks\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('{')
+			v10First := true
+			for v10Name, v10Value := range in.ExtensionStageHooks {
+				if v10First {
+					v10First = false
+				} else {
+					out.RawByte(',')
+				}
+				out.String(string(v10Name))
+				out.RawByte(':')
+				if v10Value == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
+					out.RawString("null")
+				} else {
+					out.RawByte('[')
+					for v11, v12 := range v10Value {
+						if v11 > 0 {
+							out.RawByte(',')
+						}
+						easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo(out, v12)
+					}
+					out.RawByte(']')
+				}
+			}
+			out.RawByte('}')
+		}
+	}
+	out.RawByte('}')
+}
 
-func ( ExecSession ) MarshalJSON() ([]byte, error) { return nil, nil }
-func (* ExecSession ) UnmarshalJSON([]byte) error { return nil }
-func ( ExecSession ) MarshalEasyJSON(w *jwriter.Writer) {}
-func (* ExecSession ) UnmarshalEasyJSON(l *jlexer.Lexer) {}
+// MarshalJSON supports json.Marshaler interface
+func (v containerState) MarshalJSON() ([]byte, error) {
+	w := jwriter.Writer{}
+	easyjson1dbef17bEncodeGithubComContainersLibpodLibpod(&w, v)
+	return w.Buffer.BuildBytes(), w.Error
+}
 
-type EasyJSON_exporter_ExecSession *ExecSession
+// MarshalEasyJSON supports easyjson.Marshaler interface
+func (v containerState) MarshalEasyJSON(w *jwriter.Writer) {
+	easyjson1dbef17bEncodeGithubComContainersLibpodLibpod(w, v)
+}
 
-func ( containerState ) MarshalJSON() ([]byte, error) { return nil, nil }
-func (* containerState ) UnmarshalJSON([]byte) error { return nil }
-func ( containerState ) MarshalEasyJSON(w *jwriter.Writer) {}
-func (* containerState ) UnmarshalEasyJSON(l *jlexer.Lexer) {}
+// UnmarshalJSON supports json.Unmarshaler interface
+func (v *containerState) UnmarshalJSON(data []byte) error {
+	r := jlexer.Lexer{Data: data}
+	easyjson1dbef17bDecodeGithubComContainersLibpodLibpod(&r, v)
+	return r.Error()
+}
 
-type EasyJSON_exporter_containerState *containerState
+// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
+func (v *containerState) UnmarshalEasyJSON(l *jlexer.Lexer) {
+	easyjson1dbef17bDecodeGithubComContainersLibpodLibpod(l, v)
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo(in *jlexer.Lexer, out *specs_go.Hook) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "path":
+			out.Path = string(in.String())
+		case "args":
+			if in.IsNull() {
+				in.Skip()
+				out.Args = nil
+			} else {
+				in.Delim('[')
+				if out.Args == nil {
+					if !in.IsDelim(']') {
+						out.Args = make([]string, 0, 4)
+					} else {
+						out.Args = []string{}
+					}
+				} else {
+					out.Args = (out.Args)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v13 string
+					v13 = string(in.String())
+					out.Args = append(out.Args, v13)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "env":
+			if in.IsNull() {
+				in.Skip()
+				out.Env = nil
+			} else {
+				in.Delim('[')
+				if out.Env == nil {
+					if !in.IsDelim(']') {
+						out.Env = make([]string, 0, 4)
+					} else {
+						out.Env = []string{}
+					}
+				} else {
+					out.Env = (out.Env)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v14 string
+					v14 = string(in.String())
+					out.Env = append(out.Env, v14)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "timeout":
+			if in.IsNull() {
+				in.Skip()
+				out.Timeout = nil
+			} else {
+				if out.Timeout == nil {
+					out.Timeout = new(int)
+				}
+				*out.Timeout = int(in.Int())
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo(out *jwriter.Writer, in specs_go.Hook) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"path\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Path))
+	}
+	if len(in.Args) != 0 {
+		const prefix string = ",\"args\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v15, v16 := range in.Args {
+				if v15 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v16))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Env) != 0 {
+		const prefix string = ",\"env\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v17, v18 := range in.Env {
+				if v17 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v18))
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.Timeout != nil {
+		const prefix string = ",\"timeout\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int(int(*in.Timeout))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComContainernetworkingCniPkgTypesCurrent(in *jlexer.Lexer, out *current.Result) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "cniVersion":
+			out.CNIVersion = string(in.String())
+		case "interfaces":
+			if in.IsNull() {
+				in.Skip()
+				out.Interfaces = nil
+			} else {
+				in.Delim('[')
+				if out.Interfaces == nil {
+					if !in.IsDelim(']') {
+						out.Interfaces = make([]*current.Interface, 0, 8)
+					} else {
+						out.Interfaces = []*current.Interface{}
+					}
+				} else {
+					out.Interfaces = (out.Interfaces)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v19 *current.Interface
+					if in.IsNull() {
+						in.Skip()
+						v19 = nil
+					} else {
+						if v19 == nil {
+							v19 = new(current.Interface)
+						}
+						easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComContainernetworkingCniPkgTypesCurrent1(in, &*v19)
+					}
+					out.Interfaces = append(out.Interfaces, v19)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "ips":
+			if in.IsNull() {
+				in.Skip()
+				out.IPs = nil
+			} else {
+				in.Delim('[')
+				if out.IPs == nil {
+					if !in.IsDelim(']') {
+						out.IPs = make([]*current.IPConfig, 0, 8)
+					} else {
+						out.IPs = []*current.IPConfig{}
+					}
+				} else {
+					out.IPs = (out.IPs)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v20 *current.IPConfig
+					if in.IsNull() {
+						in.Skip()
+						v20 = nil
+					} else {
+						if v20 == nil {
+							v20 = new(current.IPConfig)
+						}
+						if data := in.Raw(); in.Ok() {
+							in.AddError((*v20).UnmarshalJSON(data))
+						}
+					}
+					out.IPs = append(out.IPs, v20)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "routes":
+			if in.IsNull() {
+				in.Skip()
+				out.Routes = nil
+			} else {
+				in.Delim('[')
+				if out.Routes == nil {
+					if !in.IsDelim(']') {
+						out.Routes = make([]*types.Route, 0, 8)
+					} else {
+						out.Routes = []*types.Route{}
+					}
+				} else {
+					out.Routes = (out.Routes)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v21 *types.Route
+					if in.IsNull() {
+						in.Skip()
+						v21 = nil
+					} else {
+						if v21 == nil {
+							v21 = new(types.Route)
+						}
+						if data := in.Raw(); in.Ok() {
+							in.AddError((*v21).UnmarshalJSON(data))
+						}
+					}
+					out.Routes = append(out.Routes, v21)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "dns":
+			easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComContainernetworkingCniPkgTypes(in, &out.DNS)
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComContainernetworkingCniPkgTypesCurrent(out *jwriter.Writer, in current.Result) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.CNIVersion != "" {
+		const prefix string = ",\"cniVersion\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.CNIVersion))
+	}
+	if len(in.Interfaces) != 0 {
+		const prefix string = ",\"interfaces\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v22, v23 := range in.Interfaces {
+				if v22 > 0 {
+					out.RawByte(',')
+				}
+				if v23 == nil {
+					out.RawString("null")
+				} else {
+					easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComContainernetworkingCniPkgTypesCurrent1(out, *v23)
+				}
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.IPs) != 0 {
+		const prefix string = ",\"ips\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v24, v25 := range in.IPs {
+				if v24 > 0 {
+					out.RawByte(',')
+				}
+				if v25 == nil {
+					out.RawString("null")
+				} else {
+					out.Raw((*v25).MarshalJSON())
+				}
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Routes) != 0 {
+		const prefix string = ",\"routes\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v26, v27 := range in.Routes {
+				if v26 > 0 {
+					out.RawByte(',')
+				}
+				if v27 == nil {
+					out.RawString("null")
+				} else {
+					out.Raw((*v27).MarshalJSON())
+				}
+			}
+			out.RawByte(']')
+		}
+	}
+	if true {
+		const prefix string = ",\"dns\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComContainernetworkingCniPkgTypes(out, in.DNS)
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComContainernetworkingCniPkgTypes(in *jlexer.Lexer, out *types.DNS) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "nameservers":
+			if in.IsNull() {
+				in.Skip()
+				out.Nameservers = nil
+			} else {
+				in.Delim('[')
+				if out.Nameservers == nil {
+					if !in.IsDelim(']') {
+						out.Nameservers = make([]string, 0, 4)
+					} else {
+						out.Nameservers = []string{}
+					}
+				} else {
+					out.Nameservers = (out.Nameservers)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v28 string
+					v28 = string(in.String())
+					out.Nameservers = append(out.Nameservers, v28)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "domain":
+			out.Domain = string(in.String())
+		case "search":
+			if in.IsNull() {
+				in.Skip()
+				out.Search = nil
+			} else {
+				in.Delim('[')
+				if out.Search == nil {
+					if !in.IsDelim(']') {
+						out.Search = make([]string, 0, 4)
+					} else {
+						out.Search = []string{}
+					}
+				} else {
+					out.Search = (out.Search)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v29 string
+					v29 = string(in.String())
+					out.Search = append(out.Search, v29)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "options":
+			if in.IsNull() {
+				in.Skip()
+				out.Options = nil
+			} else {
+				in.Delim('[')
+				if out.Options == nil {
+					if !in.IsDelim(']') {
+						out.Options = make([]string, 0, 4)
+					} else {
+						out.Options = []string{}
+					}
+				} else {
+					out.Options = (out.Options)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v30 string
+					v30 = string(in.String())
+					out.Options = append(out.Options, v30)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComContainernetworkingCniPkgTypes(out *jwriter.Writer, in types.DNS) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if len(in.Nameservers) != 0 {
+		const prefix string = ",\"nameservers\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v31, v32 := range in.Nameservers {
+				if v31 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v32))
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.Domain != "" {
+		const prefix string = ",\"domain\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Domain))
+	}
+	if len(in.Search) != 0 {
+		const prefix string = ",\"search\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v33, v34 := range in.Search {
+				if v33 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v34))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Options) != 0 {
+		const prefix string = ",\"options\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v35, v36 := range in.Options {
+				if v35 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v36))
+			}
+			out.RawByte(']')
+		}
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComContainernetworkingCniPkgTypesCurrent1(in *jlexer.Lexer, out *current.Interface) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "name":
+			out.Name = string(in.String())
+		case "mac":
+			out.Mac = string(in.String())
+		case "sandbox":
+			out.Sandbox = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComContainernetworkingCniPkgTypesCurrent1(out *jwriter.Writer, in current.Interface) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"name\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Name))
+	}
+	if in.Mac != "" {
+		const prefix string = ",\"mac\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Mac))
+	}
+	if in.Sandbox != "" {
+		const prefix string = ",\"sandbox\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Sandbox))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodLibpod1(in *jlexer.Lexer, out *ExecSession) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "id":
+			out.ID = string(in.String())
+		case "command":
+			if in.IsNull() {
+				in.Skip()
+				out.Command = nil
+			} else {
+				in.Delim('[')
+				if out.Command == nil {
+					if !in.IsDelim(']') {
+						out.Command = make([]string, 0, 4)
+					} else {
+						out.Command = []string{}
+					}
+				} else {
+					out.Command = (out.Command)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v37 string
+					v37 = string(in.String())
+					out.Command = append(out.Command, v37)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "pid":
+			out.PID = int(in.Int())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodLibpod1(out *jwriter.Writer, in ExecSession) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"id\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.ID))
+	}
+	{
+		const prefix string = ",\"command\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.Command == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
+			out.RawString("null")
+		} else {
+			out.RawByte('[')
+			for v38, v39 := range in.Command {
+				if v38 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v39))
+			}
+			out.RawByte(']')
+		}
+	}
+	{
+		const prefix string = ",\"pid\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int(int(in.PID))
+	}
+	out.RawByte('}')
+}
+
+// MarshalJSON supports json.Marshaler interface
+func (v ExecSession) MarshalJSON() ([]byte, error) {
+	w := jwriter.Writer{}
+	easyjson1dbef17bEncodeGithubComContainersLibpodLibpod1(&w, v)
+	return w.Buffer.BuildBytes(), w.Error
+}
+
+// MarshalEasyJSON supports easyjson.Marshaler interface
+func (v ExecSession) MarshalEasyJSON(w *jwriter.Writer) {
+	easyjson1dbef17bEncodeGithubComContainersLibpodLibpod1(w, v)
+}
+
+// UnmarshalJSON supports json.Unmarshaler interface
+func (v *ExecSession) UnmarshalJSON(data []byte) error {
+	r := jlexer.Lexer{Data: data}
+	easyjson1dbef17bDecodeGithubComContainersLibpodLibpod1(&r, v)
+	return r.Error()
+}
+
+// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
+func (v *ExecSession) UnmarshalEasyJSON(l *jlexer.Lexer) {
+	easyjson1dbef17bDecodeGithubComContainersLibpodLibpod1(l, v)
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodLibpod2(in *jlexer.Lexer, out *ContainerConfig) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "spec":
+			if in.IsNull() {
+				in.Skip()
+				out.Spec = nil
+			} else {
+				if out.Spec == nil {
+					out.Spec = new(specs_go.Spec)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo1(in, &*out.Spec)
+			}
+		case "id":
+			out.ID = string(in.String())
+		case "name":
+			out.Name = string(in.String())
+		case "pod":
+			out.Pod = string(in.String())
+		case "namespace":
+			out.Namespace = string(in.String())
+		case "idMappingsOptions":
+			easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComContainersStorage(in, &out.IDMappings)
+		case "rootfsImageID":
+			out.RootfsImageID = string(in.String())
+		case "rootfsImageName":
+			out.RootfsImageName = string(in.String())
+		case "rootfs":
+			out.Rootfs = string(in.String())
+		case "imageVolumes":
+			out.ImageVolumes = bool(in.Bool())
+		case "ShmDir":
+			out.ShmDir = string(in.String())
+		case "shmSize":
+			out.ShmSize = int64(in.Int64())
+		case "staticDir":
+			out.StaticDir = string(in.String())
+		case "mounts":
+			if in.IsNull() {
+				in.Skip()
+				out.Mounts = nil
+			} else {
+				in.Delim('[')
+				if out.Mounts == nil {
+					if !in.IsDelim(']') {
+						out.Mounts = make([]string, 0, 4)
+					} else {
+						out.Mounts = []string{}
+					}
+				} else {
+					out.Mounts = (out.Mounts)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v40 string
+					v40 = string(in.String())
+					out.Mounts = append(out.Mounts, v40)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "privileged":
+			out.Privileged = bool(in.Bool())
+		case "ProcessLabel":
+			out.ProcessLabel = string(in.String())
+		case "MountLabel":
+			out.MountLabel = string(in.String())
+		case "user":
+			out.User = string(in.String())
+		case "groups":
+			if in.IsNull() {
+				in.Skip()
+				out.Groups = nil
+			} else {
+				in.Delim('[')
+				if out.Groups == nil {
+					if !in.IsDelim(']') {
+						out.Groups = make([]string, 0, 4)
+					} else {
+						out.Groups = []string{}
+					}
+				} else {
+					out.Groups = (out.Groups)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v41 string
+					v41 = string(in.String())
+					out.Groups = append(out.Groups, v41)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "ipcNsCtr":
+			out.IPCNsCtr = string(in.String())
+		case "mountNsCtr":
+			out.MountNsCtr = string(in.String())
+		case "netNsCtr":
+			out.NetNsCtr = string(in.String())
+		case "pidNsCtr":
+			out.PIDNsCtr = string(in.String())
+		case "userNsCtr":
+			out.UserNsCtr = string(in.String())
+		case "utsNsCtr":
+			out.UTSNsCtr = string(in.String())
+		case "cgroupNsCtr":
+			out.CgroupNsCtr = string(in.String())
+		case "Dependencies":
+			if in.IsNull() {
+				in.Skip()
+				out.Dependencies = nil
+			} else {
+				in.Delim('[')
+				if out.Dependencies == nil {
+					if !in.IsDelim(']') {
+						out.Dependencies = make([]string, 0, 4)
+					} else {
+						out.Dependencies = []string{}
+					}
+				} else {
+					out.Dependencies = (out.Dependencies)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v42 string
+					v42 = string(in.String())
+					out.Dependencies = append(out.Dependencies, v42)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "createNetNS":
+			out.CreateNetNS = bool(in.Bool())
+		case "staticIP":
+			if data := in.UnsafeBytes(); in.Ok() {
+				in.AddError((out.StaticIP).UnmarshalText(data))
+			}
+		case "portMappings":
+			if in.IsNull() {
+				in.Skip()
+				out.PortMappings = nil
+			} else {
+				in.Delim('[')
+				if out.PortMappings == nil {
+					if !in.IsDelim(']') {
+						out.PortMappings = make([]ocicni.PortMapping, 0, 1)
+					} else {
+						out.PortMappings = []ocicni.PortMapping{}
+					}
+				} else {
+					out.PortMappings = (out.PortMappings)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v43 ocicni.PortMapping
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComCriOOcicniPkgOcicni(in, &v43)
+					out.PortMappings = append(out.PortMappings, v43)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "dnsServer":
+			if in.IsNull() {
+				in.Skip()
+				out.DNSServer = nil
+			} else {
+				in.Delim('[')
+				if out.DNSServer == nil {
+					if !in.IsDelim(']') {
+						out.DNSServer = make([]net.IP, 0, 2)
+					} else {
+						out.DNSServer = []net.IP{}
+					}
+				} else {
+					out.DNSServer = (out.DNSServer)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v44 net.IP
+					if data := in.UnsafeBytes(); in.Ok() {
+						in.AddError((v44).UnmarshalText(data))
+					}
+					out.DNSServer = append(out.DNSServer, v44)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "dnsSearch":
+			if in.IsNull() {
+				in.Skip()
+				out.DNSSearch = nil
+			} else {
+				in.Delim('[')
+				if out.DNSSearch == nil {
+					if !in.IsDelim(']') {
+						out.DNSSearch = make([]string, 0, 4)
+					} else {
+						out.DNSSearch = []string{}
+					}
+				} else {
+					out.DNSSearch = (out.DNSSearch)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v45 string
+					v45 = string(in.String())
+					out.DNSSearch = append(out.DNSSearch, v45)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "dnsOption":
+			if in.IsNull() {
+				in.Skip()
+				out.DNSOption = nil
+			} else {
+				in.Delim('[')
+				if out.DNSOption == nil {
+					if !in.IsDelim(']') {
+						out.DNSOption = make([]string, 0, 4)
+					} else {
+						out.DNSOption = []string{}
+					}
+				} else {
+					out.DNSOption = (out.DNSOption)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v46 string
+					v46 = string(in.String())
+					out.DNSOption = append(out.DNSOption, v46)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "hostsAdd":
+			if in.IsNull() {
+				in.Skip()
+				out.HostAdd = nil
+			} else {
+				in.Delim('[')
+				if out.HostAdd == nil {
+					if !in.IsDelim(']') {
+						out.HostAdd = make([]string, 0, 4)
+					} else {
+						out.HostAdd = []string{}
+					}
+				} else {
+					out.HostAdd = (out.HostAdd)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v47 string
+					v47 = string(in.String())
+					out.HostAdd = append(out.HostAdd, v47)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "networks":
+			if in.IsNull() {
+				in.Skip()
+				out.Networks = nil
+			} else {
+				in.Delim('[')
+				if out.Networks == nil {
+					if !in.IsDelim(']') {
+						out.Networks = make([]string, 0, 4)
+					} else {
+						out.Networks = []string{}
+					}
+				} else {
+					out.Networks = (out.Networks)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v48 string
+					v48 = string(in.String())
+					out.Networks = append(out.Networks, v48)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "userVolumes":
+			if in.IsNull() {
+				in.Skip()
+				out.UserVolumes = nil
+			} else {
+				in.Delim('[')
+				if out.UserVolumes == nil {
+					if !in.IsDelim(']') {
+						out.UserVolumes = make([]string, 0, 4)
+					} else {
+						out.UserVolumes = []string{}
+					}
+				} else {
+					out.UserVolumes = (out.UserVolumes)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v49 string
+					v49 = string(in.String())
+					out.UserVolumes = append(out.UserVolumes, v49)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "entrypoint":
+			if in.IsNull() {
+				in.Skip()
+				out.Entrypoint = nil
+			} else {
+				in.Delim('[')
+				if out.Entrypoint == nil {
+					if !in.IsDelim(']') {
+						out.Entrypoint = make([]string, 0, 4)
+					} else {
+						out.Entrypoint = []string{}
+					}
+				} else {
+					out.Entrypoint = (out.Entrypoint)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v50 string
+					v50 = string(in.String())
+					out.Entrypoint = append(out.Entrypoint, v50)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "command":
+			if in.IsNull() {
+				in.Skip()
+				out.Command = nil
+			} else {
+				in.Delim('[')
+				if out.Command == nil {
+					if !in.IsDelim(']') {
+						out.Command = make([]string, 0, 4)
+					} else {
+						out.Command = []string{}
+					}
+				} else {
+					out.Command = (out.Command)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v51 string
+					v51 = string(in.String())
+					out.Command = append(out.Command, v51)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "stdin":
+			out.Stdin = bool(in.Bool())
+		case "labels":
+			if in.IsNull() {
+				in.Skip()
+			} else {
+				in.Delim('{')
+				if !in.IsDelim('}') {
+					out.Labels = make(map[string]string)
+				} else {
+					out.Labels = nil
+				}
+				for !in.IsDelim('}') {
+					key := string(in.String())
+					in.WantColon()
+					var v52 string
+					v52 = string(in.String())
+					(out.Labels)[key] = v52
+					in.WantComma()
+				}
+				in.Delim('}')
+			}
+		case "stopSignal":
+			out.StopSignal = uint(in.Uint())
+		case "stopTimeout":
+			out.StopTimeout = uint(in.Uint())
+		case "createdTime":
+			if data := in.Raw(); in.Ok() {
+				in.AddError((out.CreatedTime).UnmarshalJSON(data))
+			}
+		case "cgroupParent":
+			out.CgroupParent = string(in.String())
+		case "logPath":
+			out.LogPath = string(in.String())
+		case "conmonPidFile":
+			out.ConmonPidFile = string(in.String())
+		case "postConfigureNetNS":
+			out.PostConfigureNetNS = bool(in.Bool())
+		case "exitCommand":
+			if in.IsNull() {
+				in.Skip()
+				out.ExitCommand = nil
+			} else {
+				in.Delim('[')
+				if out.ExitCommand == nil {
+					if !in.IsDelim(']') {
+						out.ExitCommand = make([]string, 0, 4)
+					} else {
+						out.ExitCommand = []string{}
+					}
+				} else {
+					out.ExitCommand = (out.ExitCommand)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v53 string
+					v53 = string(in.String())
+					out.ExitCommand = append(out.ExitCommand, v53)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "LocalVolumes":
+			if in.IsNull() {
+				in.Skip()
+				out.LocalVolumes = nil
+			} else {
+				in.Delim('[')
+				if out.LocalVolumes == nil {
+					if !in.IsDelim(']') {
+						out.LocalVolumes = make([]string, 0, 4)
+					} else {
+						out.LocalVolumes = []string{}
+					}
+				} else {
+					out.LocalVolumes = (out.LocalVolumes)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v54 string
+					v54 = string(in.String())
+					out.LocalVolumes = append(out.LocalVolumes, v54)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "pause":
+			out.IsInfra = bool(in.Bool())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodLibpod2(out *jwriter.Writer, in ContainerConfig) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"spec\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.Spec == nil {
+			out.RawString("null")
+		} else {
+			easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo1(out, *in.Spec)
+		}
+	}
+	{
+		const prefix string = ",\"id\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.ID))
+	}
+	{
+		const prefix string = ",\"name\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Name))
+	}
+	if in.Pod != "" {
+		const prefix string = ",\"pod\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Pod))
+	}
+	if in.Namespace != "" {
+		const prefix string = ",\"namespace\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Namespace))
+	}
+	if true {
+		const prefix string = ",\"idMappingsOptions\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComContainersStorage(out, in.IDMappings)
+	}
+	if in.RootfsImageID != "" {
+		const prefix string = ",\"rootfsImageID\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.RootfsImageID))
+	}
+	if in.RootfsImageName != "" {
+		const prefix string = ",\"rootfsImageName\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.RootfsImageName))
+	}
+	if in.Rootfs != "" {
+		const prefix string = ",\"rootfs\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Rootfs))
+	}
+	{
+		const prefix string = ",\"imageVolumes\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.ImageVolumes))
+	}
+	if in.ShmDir != "" {
+		const prefix string = ",\"ShmDir\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.ShmDir))
+	}
+	{
+		const prefix string = ",\"shmSize\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(in.ShmSize))
+	}
+	{
+		const prefix string = ",\"staticDir\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.StaticDir))
+	}
+	if len(in.Mounts) != 0 {
+		const prefix string = ",\"mounts\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v55, v56 := range in.Mounts {
+				if v55 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v56))
+			}
+			out.RawByte(']')
+		}
+	}
+	{
+		const prefix string = ",\"privileged\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.Privileged))
+	}
+	if in.ProcessLabel != "" {
+		const prefix string = ",\"ProcessLabel\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.ProcessLabel))
+	}
+	if in.MountLabel != "" {
+		const prefix string = ",\"MountLabel\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.MountLabel))
+	}
+	if in.User != "" {
+		const prefix string = ",\"user\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.User))
+	}
+	if len(in.Groups) != 0 {
+		const prefix string = ",\"groups\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v57, v58 := range in.Groups {
+				if v57 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v58))
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.IPCNsCtr != "" {
+		const prefix string = ",\"ipcNsCtr\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.IPCNsCtr))
+	}
+	if in.MountNsCtr != "" {
+		const prefix string = ",\"mountNsCtr\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.MountNsCtr))
+	}
+	if in.NetNsCtr != "" {
+		const prefix string = ",\"netNsCtr\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.NetNsCtr))
+	}
+	if in.PIDNsCtr != "" {
+		const prefix string = ",\"pidNsCtr\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.PIDNsCtr))
+	}
+	if in.UserNsCtr != "" {
+		const prefix string = ",\"userNsCtr\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.UserNsCtr))
+	}
+	if in.UTSNsCtr != "" {
+		const prefix string = ",\"utsNsCtr\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.UTSNsCtr))
+	}
+	if in.CgroupNsCtr != "" {
+		const prefix string = ",\"cgroupNsCtr\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.CgroupNsCtr))
+	}
+	{
+		const prefix string = ",\"Dependencies\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.Dependencies == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
+			out.RawString("null")
+		} else {
+			out.RawByte('[')
+			for v59, v60 := range in.Dependencies {
+				if v59 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v60))
+			}
+			out.RawByte(']')
+		}
+	}
+	{
+		const prefix string = ",\"createNetNS\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.CreateNetNS))
+	}
+	{
+		const prefix string = ",\"staticIP\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.RawText((in.StaticIP).MarshalText())
+	}
+	if len(in.PortMappings) != 0 {
+		const prefix string = ",\"portMappings\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v61, v62 := range in.PortMappings {
+				if v61 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComCriOOcicniPkgOcicni(out, v62)
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.DNSServer) != 0 {
+		const prefix string = ",\"dnsServer\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v63, v64 := range in.DNSServer {
+				if v63 > 0 {
+					out.RawByte(',')
+				}
+				out.RawText((v64).MarshalText())
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.DNSSearch) != 0 {
+		const prefix string = ",\"dnsSearch\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v65, v66 := range in.DNSSearch {
+				if v65 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v66))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.DNSOption) != 0 {
+		const prefix string = ",\"dnsOption\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v67, v68 := range in.DNSOption {
+				if v67 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v68))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.HostAdd) != 0 {
+		const prefix string = ",\"hostsAdd\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v69, v70 := range in.HostAdd {
+				if v69 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v70))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Networks) != 0 {
+		const prefix string = ",\"networks\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v71, v72 := range in.Networks {
+				if v71 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v72))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.UserVolumes) != 0 {
+		const prefix string = ",\"userVolumes\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v73, v74 := range in.UserVolumes {
+				if v73 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v74))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Entrypoint) != 0 {
+		const prefix string = ",\"entrypoint\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v75, v76 := range in.Entrypoint {
+				if v75 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v76))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Command) != 0 {
+		const prefix string = ",\"command\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v77, v78 := range in.Command {
+				if v77 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v78))
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.Stdin {
+		const prefix string = ",\"stdin\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.Stdin))
+	}
+	if len(in.Labels) != 0 {
+		const prefix string = ",\"labels\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('{')
+			v79First := true
+			for v79Name, v79Value := range in.Labels {
+				if v79First {
+					v79First = false
+				} else {
+					out.RawByte(',')
+				}
+				out.String(string(v79Name))
+				out.RawByte(':')
+				out.String(string(v79Value))
+			}
+			out.RawByte('}')
+		}
+	}
+	if in.StopSignal != 0 {
+		const prefix string = ",\"stopSignal\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint(uint(in.StopSignal))
+	}
+	if in.StopTimeout != 0 {
+		const prefix string = ",\"stopTimeout\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint(uint(in.StopTimeout))
+	}
+	{
+		const prefix string = ",\"createdTime\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Raw((in.CreatedTime).MarshalJSON())
+	}
+	{
+		const prefix string = ",\"cgroupParent\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.CgroupParent))
+	}
+	{
+		const prefix string = ",\"logPath\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.LogPath))
+	}
+	if in.ConmonPidFile != "" {
+		const prefix string = ",\"conmonPidFile\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.ConmonPidFile))
+	}
+	{
+		const prefix string = ",\"postConfigureNetNS\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.PostConfigureNetNS))
+	}
+	if len(in.ExitCommand) != 0 {
+		const prefix string = ",\"exitCommand\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v80, v81 := range in.ExitCommand {
+				if v80 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v81))
+			}
+			out.RawByte(']')
+		}
+	}
+	{
+		const prefix string = ",\"LocalVolumes\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.LocalVolumes == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
+			out.RawString("null")
+		} else {
+			out.RawByte('[')
+			for v82, v83 := range in.LocalVolumes {
+				if v82 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v83))
+			}
+			out.RawByte(']')
+		}
+	}
+	{
+		const prefix string = ",\"pause\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.IsInfra))
+	}
+	out.RawByte('}')
+}
+
+// MarshalJSON supports json.Marshaler interface
+func (v ContainerConfig) MarshalJSON() ([]byte, error) {
+	w := jwriter.Writer{}
+	easyjson1dbef17bEncodeGithubComContainersLibpodLibpod2(&w, v)
+	return w.Buffer.BuildBytes(), w.Error
+}
+
+// MarshalEasyJSON supports easyjson.Marshaler interface
+func (v ContainerConfig) MarshalEasyJSON(w *jwriter.Writer) {
+	easyjson1dbef17bEncodeGithubComContainersLibpodLibpod2(w, v)
+}
+
+// UnmarshalJSON supports json.Unmarshaler interface
+func (v *ContainerConfig) UnmarshalJSON(data []byte) error {
+	r := jlexer.Lexer{Data: data}
+	easyjson1dbef17bDecodeGithubComContainersLibpodLibpod2(&r, v)
+	return r.Error()
+}
+
+// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
+func (v *ContainerConfig) UnmarshalEasyJSON(l *jlexer.Lexer) {
+	easyjson1dbef17bDecodeGithubComContainersLibpodLibpod2(l, v)
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComCriOOcicniPkgOcicni(in *jlexer.Lexer, out *ocicni.PortMapping) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "hostPort":
+			out.HostPort = int32(in.Int32())
+		case "containerPort":
+			out.ContainerPort = int32(in.Int32())
+		case "protocol":
+			out.Protocol = string(in.String())
+		case "hostIP":
+			out.HostIP = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComCriOOcicniPkgOcicni(out *jwriter.Writer, in ocicni.PortMapping) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"hostPort\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int32(int32(in.HostPort))
+	}
+	{
+		const prefix string = ",\"containerPort\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int32(int32(in.ContainerPort))
+	}
+	{
+		const prefix string = ",\"protocol\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Protocol))
+	}
+	{
+		const prefix string = ",\"hostIP\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.HostIP))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComContainersStorage(in *jlexer.Lexer, out *storage.IDMappingOptions) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "HostUIDMapping":
+			out.HostUIDMapping = bool(in.Bool())
+		case "HostGIDMapping":
+			out.HostGIDMapping = bool(in.Bool())
+		case "UIDMap":
+			if in.IsNull() {
+				in.Skip()
+				out.UIDMap = nil
+			} else {
+				in.Delim('[')
+				if out.UIDMap == nil {
+					if !in.IsDelim(']') {
+						out.UIDMap = make([]idtools.IDMap, 0, 2)
+					} else {
+						out.UIDMap = []idtools.IDMap{}
+					}
+				} else {
+					out.UIDMap = (out.UIDMap)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v84 idtools.IDMap
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComContainersStoragePkgIdtools(in, &v84)
+					out.UIDMap = append(out.UIDMap, v84)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "GIDMap":
+			if in.IsNull() {
+				in.Skip()
+				out.GIDMap = nil
+			} else {
+				in.Delim('[')
+				if out.GIDMap == nil {
+					if !in.IsDelim(']') {
+						out.GIDMap = make([]idtools.IDMap, 0, 2)
+					} else {
+						out.GIDMap = []idtools.IDMap{}
+					}
+				} else {
+					out.GIDMap = (out.GIDMap)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v85 idtools.IDMap
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComContainersStoragePkgIdtools(in, &v85)
+					out.GIDMap = append(out.GIDMap, v85)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComContainersStorage(out *jwriter.Writer, in storage.IDMappingOptions) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"HostUIDMapping\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.HostUIDMapping))
+	}
+	{
+		const prefix string = ",\"HostGIDMapping\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.HostGIDMapping))
+	}
+	{
+		const prefix string = ",\"UIDMap\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.UIDMap == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
+			out.RawString("null")
+		} else {
+			out.RawByte('[')
+			for v86, v87 := range in.UIDMap {
+				if v86 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComContainersStoragePkgIdtools(out, v87)
+			}
+			out.RawByte(']')
+		}
+	}
+	{
+		const prefix string = ",\"GIDMap\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.GIDMap == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
+			out.RawString("null")
+		} else {
+			out.RawByte('[')
+			for v88, v89 := range in.GIDMap {
+				if v88 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComContainersStoragePkgIdtools(out, v89)
+			}
+			out.RawByte(']')
+		}
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComContainersStoragePkgIdtools(in *jlexer.Lexer, out *idtools.IDMap) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "container_id":
+			out.ContainerID = int(in.Int())
+		case "host_id":
+			out.HostID = int(in.Int())
+		case "size":
+			out.Size = int(in.Int())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComContainersStoragePkgIdtools(out *jwriter.Writer, in idtools.IDMap) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"container_id\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int(int(in.ContainerID))
+	}
+	{
+		const prefix string = ",\"host_id\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int(int(in.HostID))
+	}
+	{
+		const prefix string = ",\"size\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int(int(in.Size))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo1(in *jlexer.Lexer, out *specs_go.Spec) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "ociVersion":
+			out.Version = string(in.String())
+		case "process":
+			if in.IsNull() {
+				in.Skip()
+				out.Process = nil
+			} else {
+				if out.Process == nil {
+					out.Process = new(specs_go.Process)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo2(in, &*out.Process)
+			}
+		case "root":
+			if in.IsNull() {
+				in.Skip()
+				out.Root = nil
+			} else {
+				if out.Root == nil {
+					out.Root = new(specs_go.Root)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo3(in, &*out.Root)
+			}
+		case "hostname":
+			out.Hostname = string(in.String())
+		case "mounts":
+			if in.IsNull() {
+				in.Skip()
+				out.Mounts = nil
+			} else {
+				in.Delim('[')
+				if out.Mounts == nil {
+					if !in.IsDelim(']') {
+						out.Mounts = make([]specs_go.Mount, 0, 1)
+					} else {
+						out.Mounts = []specs_go.Mount{}
+					}
+				} else {
+					out.Mounts = (out.Mounts)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v90 specs_go.Mount
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo4(in, &v90)
+					out.Mounts = append(out.Mounts, v90)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "hooks":
+			if in.IsNull() {
+				in.Skip()
+				out.Hooks = nil
+			} else {
+				if out.Hooks == nil {
+					out.Hooks = new(specs_go.Hooks)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo5(in, &*out.Hooks)
+			}
+		case "annotations":
+			if in.IsNull() {
+				in.Skip()
+			} else {
+				in.Delim('{')
+				if !in.IsDelim('}') {
+					out.Annotations = make(map[string]string)
+				} else {
+					out.Annotations = nil
+				}
+				for !in.IsDelim('}') {
+					key := string(in.String())
+					in.WantColon()
+					var v91 string
+					v91 = string(in.String())
+					(out.Annotations)[key] = v91
+					in.WantComma()
+				}
+				in.Delim('}')
+			}
+		case "linux":
+			if in.IsNull() {
+				in.Skip()
+				out.Linux = nil
+			} else {
+				if out.Linux == nil {
+					out.Linux = new(specs_go.Linux)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo6(in, &*out.Linux)
+			}
+		case "solaris":
+			if in.IsNull() {
+				in.Skip()
+				out.Solaris = nil
+			} else {
+				if out.Solaris == nil {
+					out.Solaris = new(specs_go.Solaris)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo7(in, &*out.Solaris)
+			}
+		case "windows":
+			if in.IsNull() {
+				in.Skip()
+				out.Windows = nil
+			} else {
+				if out.Windows == nil {
+					out.Windows = new(specs_go.Windows)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo8(in, &*out.Windows)
+			}
+		case "vm":
+			if in.IsNull() {
+				in.Skip()
+				out.VM = nil
+			} else {
+				if out.VM == nil {
+					out.VM = new(specs_go.VM)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo9(in, &*out.VM)
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo1(out *jwriter.Writer, in specs_go.Spec) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"ociVersion\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Version))
+	}
+	if in.Process != nil {
+		const prefix string = ",\"process\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo2(out, *in.Process)
+	}
+	if in.Root != nil {
+		const prefix string = ",\"root\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo3(out, *in.Root)
+	}
+	if in.Hostname != "" {
+		const prefix string = ",\"hostname\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Hostname))
+	}
+	if len(in.Mounts) != 0 {
+		const prefix string = ",\"mounts\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v92, v93 := range in.Mounts {
+				if v92 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo4(out, v93)
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.Hooks != nil {
+		const prefix string = ",\"hooks\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo5(out, *in.Hooks)
+	}
+	if len(in.Annotations) != 0 {
+		const prefix string = ",\"annotations\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('{')
+			v94First := true
+			for v94Name, v94Value := range in.Annotations {
+				if v94First {
+					v94First = false
+				} else {
+					out.RawByte(',')
+				}
+				out.String(string(v94Name))
+				out.RawByte(':')
+				out.String(string(v94Value))
+			}
+			out.RawByte('}')
+		}
+	}
+	if in.Linux != nil {
+		const prefix string = ",\"linux\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo6(out, *in.Linux)
+	}
+	if in.Solaris != nil {
+		const prefix string = ",\"solaris\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo7(out, *in.Solaris)
+	}
+	if in.Windows != nil {
+		const prefix string = ",\"windows\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo8(out, *in.Windows)
+	}
+	if in.VM != nil {
+		const prefix string = ",\"vm\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo9(out, *in.VM)
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo9(in *jlexer.Lexer, out *specs_go.VM) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "hypervisor":
+			easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo10(in, &out.Hypervisor)
+		case "kernel":
+			easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo11(in, &out.Kernel)
+		case "image":
+			easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo12(in, &out.Image)
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo9(out *jwriter.Writer, in specs_go.VM) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if true {
+		const prefix string = ",\"hypervisor\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo10(out, in.Hypervisor)
+	}
+	{
+		const prefix string = ",\"kernel\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo11(out, in.Kernel)
+	}
+	if true {
+		const prefix string = ",\"image\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo12(out, in.Image)
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo12(in *jlexer.Lexer, out *specs_go.VMImage) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "path":
+			out.Path = string(in.String())
+		case "format":
+			out.Format = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo12(out *jwriter.Writer, in specs_go.VMImage) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"path\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Path))
+	}
+	{
+		const prefix string = ",\"format\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Format))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo11(in *jlexer.Lexer, out *specs_go.VMKernel) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "path":
+			out.Path = string(in.String())
+		case "parameters":
+			out.Parameters = string(in.String())
+		case "initrd":
+			out.InitRD = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo11(out *jwriter.Writer, in specs_go.VMKernel) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"path\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Path))
+	}
+	if in.Parameters != "" {
+		const prefix string = ",\"parameters\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Parameters))
+	}
+	if in.InitRD != "" {
+		const prefix string = ",\"initrd\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.InitRD))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo10(in *jlexer.Lexer, out *specs_go.VMHypervisor) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "path":
+			out.Path = string(in.String())
+		case "parameters":
+			out.Parameters = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo10(out *jwriter.Writer, in specs_go.VMHypervisor) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"path\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Path))
+	}
+	if in.Parameters != "" {
+		const prefix string = ",\"parameters\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Parameters))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo8(in *jlexer.Lexer, out *specs_go.Windows) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "layerFolders":
+			if in.IsNull() {
+				in.Skip()
+				out.LayerFolders = nil
+			} else {
+				in.Delim('[')
+				if out.LayerFolders == nil {
+					if !in.IsDelim(']') {
+						out.LayerFolders = make([]string, 0, 4)
+					} else {
+						out.LayerFolders = []string{}
+					}
+				} else {
+					out.LayerFolders = (out.LayerFolders)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v95 string
+					v95 = string(in.String())
+					out.LayerFolders = append(out.LayerFolders, v95)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "devices":
+			if in.IsNull() {
+				in.Skip()
+				out.Devices = nil
+			} else {
+				in.Delim('[')
+				if out.Devices == nil {
+					if !in.IsDelim(']') {
+						out.Devices = make([]specs_go.WindowsDevice, 0, 2)
+					} else {
+						out.Devices = []specs_go.WindowsDevice{}
+					}
+				} else {
+					out.Devices = (out.Devices)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v96 specs_go.WindowsDevice
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo13(in, &v96)
+					out.Devices = append(out.Devices, v96)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "resources":
+			if in.IsNull() {
+				in.Skip()
+				out.Resources = nil
+			} else {
+				if out.Resources == nil {
+					out.Resources = new(specs_go.WindowsResources)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo14(in, &*out.Resources)
+			}
+		case "credentialSpec":
+			if m, ok := out.CredentialSpec.(easyjson.Unmarshaler); ok {
+				m.UnmarshalEasyJSON(in)
+			} else if m, ok := out.CredentialSpec.(json.Unmarshaler); ok {
+				_ = m.UnmarshalJSON(in.Raw())
+			} else {
+				out.CredentialSpec = in.Interface()
+			}
+		case "servicing":
+			out.Servicing = bool(in.Bool())
+		case "ignoreFlushesDuringBoot":
+			out.IgnoreFlushesDuringBoot = bool(in.Bool())
+		case "hyperv":
+			if in.IsNull() {
+				in.Skip()
+				out.HyperV = nil
+			} else {
+				if out.HyperV == nil {
+					out.HyperV = new(specs_go.WindowsHyperV)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo15(in, &*out.HyperV)
+			}
+		case "network":
+			if in.IsNull() {
+				in.Skip()
+				out.Network = nil
+			} else {
+				if out.Network == nil {
+					out.Network = new(specs_go.WindowsNetwork)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo16(in, &*out.Network)
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo8(out *jwriter.Writer, in specs_go.Windows) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"layerFolders\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.LayerFolders == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
+			out.RawString("null")
+		} else {
+			out.RawByte('[')
+			for v97, v98 := range in.LayerFolders {
+				if v97 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v98))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Devices) != 0 {
+		const prefix string = ",\"devices\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v99, v100 := range in.Devices {
+				if v99 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo13(out, v100)
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.Resources != nil {
+		const prefix string = ",\"resources\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo14(out, *in.Resources)
+	}
+	if in.CredentialSpec != nil {
+		const prefix string = ",\"credentialSpec\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if m, ok := in.CredentialSpec.(easyjson.Marshaler); ok {
+			m.MarshalEasyJSON(out)
+		} else if m, ok := in.CredentialSpec.(json.Marshaler); ok {
+			out.Raw(m.MarshalJSON())
+		} else {
+			out.Raw(json.Marshal(in.CredentialSpec))
+		}
+	}
+	if in.Servicing {
+		const prefix string = ",\"servicing\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.Servicing))
+	}
+	if in.IgnoreFlushesDuringBoot {
+		const prefix string = ",\"ignoreFlushesDuringBoot\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.IgnoreFlushesDuringBoot))
+	}
+	if in.HyperV != nil {
+		const prefix string = ",\"hyperv\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo15(out, *in.HyperV)
+	}
+	if in.Network != nil {
+		const prefix string = ",\"network\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo16(out, *in.Network)
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo16(in *jlexer.Lexer, out *specs_go.WindowsNetwork) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "endpointList":
+			if in.IsNull() {
+				in.Skip()
+				out.EndpointList = nil
+			} else {
+				in.Delim('[')
+				if out.EndpointList == nil {
+					if !in.IsDelim(']') {
+						out.EndpointList = make([]string, 0, 4)
+					} else {
+						out.EndpointList = []string{}
+					}
+				} else {
+					out.EndpointList = (out.EndpointList)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v101 string
+					v101 = string(in.String())
+					out.EndpointList = append(out.EndpointList, v101)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "allowUnqualifiedDNSQuery":
+			out.AllowUnqualifiedDNSQuery = bool(in.Bool())
+		case "DNSSearchList":
+			if in.IsNull() {
+				in.Skip()
+				out.DNSSearchList = nil
+			} else {
+				in.Delim('[')
+				if out.DNSSearchList == nil {
+					if !in.IsDelim(']') {
+						out.DNSSearchList = make([]string, 0, 4)
+					} else {
+						out.DNSSearchList = []string{}
+					}
+				} else {
+					out.DNSSearchList = (out.DNSSearchList)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v102 string
+					v102 = string(in.String())
+					out.DNSSearchList = append(out.DNSSearchList, v102)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "networkSharedContainerName":
+			out.NetworkSharedContainerName = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo16(out *jwriter.Writer, in specs_go.WindowsNetwork) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if len(in.EndpointList) != 0 {
+		const prefix string = ",\"endpointList\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v103, v104 := range in.EndpointList {
+				if v103 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v104))
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.AllowUnqualifiedDNSQuery {
+		const prefix string = ",\"allowUnqualifiedDNSQuery\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.AllowUnqualifiedDNSQuery))
+	}
+	if len(in.DNSSearchList) != 0 {
+		const prefix string = ",\"DNSSearchList\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v105, v106 := range in.DNSSearchList {
+				if v105 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v106))
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.NetworkSharedContainerName != "" {
+		const prefix string = ",\"networkSharedContainerName\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.NetworkSharedContainerName))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo15(in *jlexer.Lexer, out *specs_go.WindowsHyperV) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "utilityVMPath":
+			out.UtilityVMPath = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo15(out *jwriter.Writer, in specs_go.WindowsHyperV) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.UtilityVMPath != "" {
+		const prefix string = ",\"utilityVMPath\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.UtilityVMPath))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo14(in *jlexer.Lexer, out *specs_go.WindowsResources) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "memory":
+			if in.IsNull() {
+				in.Skip()
+				out.Memory = nil
+			} else {
+				if out.Memory == nil {
+					out.Memory = new(specs_go.WindowsMemoryResources)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo17(in, &*out.Memory)
+			}
+		case "cpu":
+			if in.IsNull() {
+				in.Skip()
+				out.CPU = nil
+			} else {
+				if out.CPU == nil {
+					out.CPU = new(specs_go.WindowsCPUResources)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo18(in, &*out.CPU)
+			}
+		case "storage":
+			if in.IsNull() {
+				in.Skip()
+				out.Storage = nil
+			} else {
+				if out.Storage == nil {
+					out.Storage = new(specs_go.WindowsStorageResources)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo19(in, &*out.Storage)
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo14(out *jwriter.Writer, in specs_go.WindowsResources) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.Memory != nil {
+		const prefix string = ",\"memory\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo17(out, *in.Memory)
+	}
+	if in.CPU != nil {
+		const prefix string = ",\"cpu\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo18(out, *in.CPU)
+	}
+	if in.Storage != nil {
+		const prefix string = ",\"storage\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo19(out, *in.Storage)
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo19(in *jlexer.Lexer, out *specs_go.WindowsStorageResources) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "iops":
+			if in.IsNull() {
+				in.Skip()
+				out.Iops = nil
+			} else {
+				if out.Iops == nil {
+					out.Iops = new(uint64)
+				}
+				*out.Iops = uint64(in.Uint64())
+			}
+		case "bps":
+			if in.IsNull() {
+				in.Skip()
+				out.Bps = nil
+			} else {
+				if out.Bps == nil {
+					out.Bps = new(uint64)
+				}
+				*out.Bps = uint64(in.Uint64())
+			}
+		case "sandboxSize":
+			if in.IsNull() {
+				in.Skip()
+				out.SandboxSize = nil
+			} else {
+				if out.SandboxSize == nil {
+					out.SandboxSize = new(uint64)
+				}
+				*out.SandboxSize = uint64(in.Uint64())
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo19(out *jwriter.Writer, in specs_go.WindowsStorageResources) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.Iops != nil {
+		const prefix string = ",\"iops\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(*in.Iops))
+	}
+	if in.Bps != nil {
+		const prefix string = ",\"bps\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(*in.Bps))
+	}
+	if in.SandboxSize != nil {
+		const prefix string = ",\"sandboxSize\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(*in.SandboxSize))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo18(in *jlexer.Lexer, out *specs_go.WindowsCPUResources) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "count":
+			if in.IsNull() {
+				in.Skip()
+				out.Count = nil
+			} else {
+				if out.Count == nil {
+					out.Count = new(uint64)
+				}
+				*out.Count = uint64(in.Uint64())
+			}
+		case "shares":
+			if in.IsNull() {
+				in.Skip()
+				out.Shares = nil
+			} else {
+				if out.Shares == nil {
+					out.Shares = new(uint16)
+				}
+				*out.Shares = uint16(in.Uint16())
+			}
+		case "maximum":
+			if in.IsNull() {
+				in.Skip()
+				out.Maximum = nil
+			} else {
+				if out.Maximum == nil {
+					out.Maximum = new(uint16)
+				}
+				*out.Maximum = uint16(in.Uint16())
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo18(out *jwriter.Writer, in specs_go.WindowsCPUResources) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.Count != nil {
+		const prefix string = ",\"count\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(*in.Count))
+	}
+	if in.Shares != nil {
+		const prefix string = ",\"shares\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint16(uint16(*in.Shares))
+	}
+	if in.Maximum != nil {
+		const prefix string = ",\"maximum\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint16(uint16(*in.Maximum))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo17(in *jlexer.Lexer, out *specs_go.WindowsMemoryResources) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "limit":
+			if in.IsNull() {
+				in.Skip()
+				out.Limit = nil
+			} else {
+				if out.Limit == nil {
+					out.Limit = new(uint64)
+				}
+				*out.Limit = uint64(in.Uint64())
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo17(out *jwriter.Writer, in specs_go.WindowsMemoryResources) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.Limit != nil {
+		const prefix string = ",\"limit\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(*in.Limit))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo13(in *jlexer.Lexer, out *specs_go.WindowsDevice) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "id":
+			out.ID = string(in.String())
+		case "idType":
+			out.IDType = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo13(out *jwriter.Writer, in specs_go.WindowsDevice) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"id\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.ID))
+	}
+	{
+		const prefix string = ",\"idType\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.IDType))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo7(in *jlexer.Lexer, out *specs_go.Solaris) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "milestone":
+			out.Milestone = string(in.String())
+		case "limitpriv":
+			out.LimitPriv = string(in.String())
+		case "maxShmMemory":
+			out.MaxShmMemory = string(in.String())
+		case "anet":
+			if in.IsNull() {
+				in.Skip()
+				out.Anet = nil
+			} else {
+				in.Delim('[')
+				if out.Anet == nil {
+					if !in.IsDelim(']') {
+						out.Anet = make([]specs_go.SolarisAnet, 0, 1)
+					} else {
+						out.Anet = []specs_go.SolarisAnet{}
+					}
+				} else {
+					out.Anet = (out.Anet)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v107 specs_go.SolarisAnet
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo20(in, &v107)
+					out.Anet = append(out.Anet, v107)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "cappedCPU":
+			if in.IsNull() {
+				in.Skip()
+				out.CappedCPU = nil
+			} else {
+				if out.CappedCPU == nil {
+					out.CappedCPU = new(specs_go.SolarisCappedCPU)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo21(in, &*out.CappedCPU)
+			}
+		case "cappedMemory":
+			if in.IsNull() {
+				in.Skip()
+				out.CappedMemory = nil
+			} else {
+				if out.CappedMemory == nil {
+					out.CappedMemory = new(specs_go.SolarisCappedMemory)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo22(in, &*out.CappedMemory)
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo7(out *jwriter.Writer, in specs_go.Solaris) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.Milestone != "" {
+		const prefix string = ",\"milestone\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Milestone))
+	}
+	if in.LimitPriv != "" {
+		const prefix string = ",\"limitpriv\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.LimitPriv))
+	}
+	if in.MaxShmMemory != "" {
+		const prefix string = ",\"maxShmMemory\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.MaxShmMemory))
+	}
+	if len(in.Anet) != 0 {
+		const prefix string = ",\"anet\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v108, v109 := range in.Anet {
+				if v108 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo20(out, v109)
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.CappedCPU != nil {
+		const prefix string = ",\"cappedCPU\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo21(out, *in.CappedCPU)
+	}
+	if in.CappedMemory != nil {
+		const prefix string = ",\"cappedMemory\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo22(out, *in.CappedMemory)
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo22(in *jlexer.Lexer, out *specs_go.SolarisCappedMemory) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "physical":
+			out.Physical = string(in.String())
+		case "swap":
+			out.Swap = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo22(out *jwriter.Writer, in specs_go.SolarisCappedMemory) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.Physical != "" {
+		const prefix string = ",\"physical\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Physical))
+	}
+	if in.Swap != "" {
+		const prefix string = ",\"swap\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Swap))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo21(in *jlexer.Lexer, out *specs_go.SolarisCappedCPU) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "ncpus":
+			out.Ncpus = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo21(out *jwriter.Writer, in specs_go.SolarisCappedCPU) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.Ncpus != "" {
+		const prefix string = ",\"ncpus\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Ncpus))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo20(in *jlexer.Lexer, out *specs_go.SolarisAnet) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "linkname":
+			out.Linkname = string(in.String())
+		case "lowerLink":
+			out.Lowerlink = string(in.String())
+		case "allowedAddress":
+			out.Allowedaddr = string(in.String())
+		case "configureAllowedAddress":
+			out.Configallowedaddr = string(in.String())
+		case "defrouter":
+			out.Defrouter = string(in.String())
+		case "linkProtection":
+			out.Linkprotection = string(in.String())
+		case "macAddress":
+			out.Macaddress = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo20(out *jwriter.Writer, in specs_go.SolarisAnet) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.Linkname != "" {
+		const prefix string = ",\"linkname\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Linkname))
+	}
+	if in.Lowerlink != "" {
+		const prefix string = ",\"lowerLink\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Lowerlink))
+	}
+	if in.Allowedaddr != "" {
+		const prefix string = ",\"allowedAddress\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Allowedaddr))
+	}
+	if in.Configallowedaddr != "" {
+		const prefix string = ",\"configureAllowedAddress\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Configallowedaddr))
+	}
+	if in.Defrouter != "" {
+		const prefix string = ",\"defrouter\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Defrouter))
+	}
+	if in.Linkprotection != "" {
+		const prefix string = ",\"linkProtection\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Linkprotection))
+	}
+	if in.Macaddress != "" {
+		const prefix string = ",\"macAddress\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Macaddress))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo6(in *jlexer.Lexer, out *specs_go.Linux) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "uidMappings":
+			if in.IsNull() {
+				in.Skip()
+				out.UIDMappings = nil
+			} else {
+				in.Delim('[')
+				if out.UIDMappings == nil {
+					if !in.IsDelim(']') {
+						out.UIDMappings = make([]specs_go.LinuxIDMapping, 0, 5)
+					} else {
+						out.UIDMappings = []specs_go.LinuxIDMapping{}
+					}
+				} else {
+					out.UIDMappings = (out.UIDMappings)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v110 specs_go.LinuxIDMapping
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo23(in, &v110)
+					out.UIDMappings = append(out.UIDMappings, v110)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "gidMappings":
+			if in.IsNull() {
+				in.Skip()
+				out.GIDMappings = nil
+			} else {
+				in.Delim('[')
+				if out.GIDMappings == nil {
+					if !in.IsDelim(']') {
+						out.GIDMappings = make([]specs_go.LinuxIDMapping, 0, 5)
+					} else {
+						out.GIDMappings = []specs_go.LinuxIDMapping{}
+					}
+				} else {
+					out.GIDMappings = (out.GIDMappings)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v111 specs_go.LinuxIDMapping
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo23(in, &v111)
+					out.GIDMappings = append(out.GIDMappings, v111)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "sysctl":
+			if in.IsNull() {
+				in.Skip()
+			} else {
+				in.Delim('{')
+				if !in.IsDelim('}') {
+					out.Sysctl = make(map[string]string)
+				} else {
+					out.Sysctl = nil
+				}
+				for !in.IsDelim('}') {
+					key := string(in.String())
+					in.WantColon()
+					var v112 string
+					v112 = string(in.String())
+					(out.Sysctl)[key] = v112
+					in.WantComma()
+				}
+				in.Delim('}')
+			}
+		case "resources":
+			if in.IsNull() {
+				in.Skip()
+				out.Resources = nil
+			} else {
+				if out.Resources == nil {
+					out.Resources = new(specs_go.LinuxResources)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo24(in, &*out.Resources)
+			}
+		case "cgroupsPath":
+			out.CgroupsPath = string(in.String())
+		case "namespaces":
+			if in.IsNull() {
+				in.Skip()
+				out.Namespaces = nil
+			} else {
+				in.Delim('[')
+				if out.Namespaces == nil {
+					if !in.IsDelim(']') {
+						out.Namespaces = make([]specs_go.LinuxNamespace, 0, 2)
+					} else {
+						out.Namespaces = []specs_go.LinuxNamespace{}
+					}
+				} else {
+					out.Namespaces = (out.Namespaces)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v113 specs_go.LinuxNamespace
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo25(in, &v113)
+					out.Namespaces = append(out.Namespaces, v113)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "devices":
+			if in.IsNull() {
+				in.Skip()
+				out.Devices = nil
+			} else {
+				in.Delim('[')
+				if out.Devices == nil {
+					if !in.IsDelim(']') {
+						out.Devices = make([]specs_go.LinuxDevice, 0, 1)
+					} else {
+						out.Devices = []specs_go.LinuxDevice{}
+					}
+				} else {
+					out.Devices = (out.Devices)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v114 specs_go.LinuxDevice
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo26(in, &v114)
+					out.Devices = append(out.Devices, v114)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "seccomp":
+			if in.IsNull() {
+				in.Skip()
+				out.Seccomp = nil
+			} else {
+				if out.Seccomp == nil {
+					out.Seccomp = new(specs_go.LinuxSeccomp)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo27(in, &*out.Seccomp)
+			}
+		case "rootfsPropagation":
+			out.RootfsPropagation = string(in.String())
+		case "maskedPaths":
+			if in.IsNull() {
+				in.Skip()
+				out.MaskedPaths = nil
+			} else {
+				in.Delim('[')
+				if out.MaskedPaths == nil {
+					if !in.IsDelim(']') {
+						out.MaskedPaths = make([]string, 0, 4)
+					} else {
+						out.MaskedPaths = []string{}
+					}
+				} else {
+					out.MaskedPaths = (out.MaskedPaths)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v115 string
+					v115 = string(in.String())
+					out.MaskedPaths = append(out.MaskedPaths, v115)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "readonlyPaths":
+			if in.IsNull() {
+				in.Skip()
+				out.ReadonlyPaths = nil
+			} else {
+				in.Delim('[')
+				if out.ReadonlyPaths == nil {
+					if !in.IsDelim(']') {
+						out.ReadonlyPaths = make([]string, 0, 4)
+					} else {
+						out.ReadonlyPaths = []string{}
+					}
+				} else {
+					out.ReadonlyPaths = (out.ReadonlyPaths)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v116 string
+					v116 = string(in.String())
+					out.ReadonlyPaths = append(out.ReadonlyPaths, v116)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "mountLabel":
+			out.MountLabel = string(in.String())
+		case "intelRdt":
+			if in.IsNull() {
+				in.Skip()
+				out.IntelRdt = nil
+			} else {
+				if out.IntelRdt == nil {
+					out.IntelRdt = new(specs_go.LinuxIntelRdt)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo28(in, &*out.IntelRdt)
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo6(out *jwriter.Writer, in specs_go.Linux) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if len(in.UIDMappings) != 0 {
+		const prefix string = ",\"uidMappings\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v117, v118 := range in.UIDMappings {
+				if v117 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo23(out, v118)
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.GIDMappings) != 0 {
+		const prefix string = ",\"gidMappings\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v119, v120 := range in.GIDMappings {
+				if v119 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo23(out, v120)
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Sysctl) != 0 {
+		const prefix string = ",\"sysctl\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('{')
+			v121First := true
+			for v121Name, v121Value := range in.Sysctl {
+				if v121First {
+					v121First = false
+				} else {
+					out.RawByte(',')
+				}
+				out.String(string(v121Name))
+				out.RawByte(':')
+				out.String(string(v121Value))
+			}
+			out.RawByte('}')
+		}
+	}
+	if in.Resources != nil {
+		const prefix string = ",\"resources\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo24(out, *in.Resources)
+	}
+	if in.CgroupsPath != "" {
+		const prefix string = ",\"cgroupsPath\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.CgroupsPath))
+	}
+	if len(in.Namespaces) != 0 {
+		const prefix string = ",\"namespaces\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v122, v123 := range in.Namespaces {
+				if v122 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo25(out, v123)
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Devices) != 0 {
+		const prefix string = ",\"devices\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v124, v125 := range in.Devices {
+				if v124 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo26(out, v125)
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.Seccomp != nil {
+		const prefix string = ",\"seccomp\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo27(out, *in.Seccomp)
+	}
+	if in.RootfsPropagation != "" {
+		const prefix string = ",\"rootfsPropagation\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.RootfsPropagation))
+	}
+	if len(in.MaskedPaths) != 0 {
+		const prefix string = ",\"maskedPaths\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v126, v127 := range in.MaskedPaths {
+				if v126 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v127))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.ReadonlyPaths) != 0 {
+		const prefix string = ",\"readonlyPaths\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v128, v129 := range in.ReadonlyPaths {
+				if v128 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v129))
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.MountLabel != "" {
+		const prefix string = ",\"mountLabel\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.MountLabel))
+	}
+	if in.IntelRdt != nil {
+		const prefix string = ",\"intelRdt\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo28(out, *in.IntelRdt)
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo28(in *jlexer.Lexer, out *specs_go.LinuxIntelRdt) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "l3CacheSchema":
+			out.L3CacheSchema = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo28(out *jwriter.Writer, in specs_go.LinuxIntelRdt) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.L3CacheSchema != "" {
+		const prefix string = ",\"l3CacheSchema\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.L3CacheSchema))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo27(in *jlexer.Lexer, out *specs_go.LinuxSeccomp) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "defaultAction":
+			out.DefaultAction = specs_go.LinuxSeccompAction(in.String())
+		case "architectures":
+			if in.IsNull() {
+				in.Skip()
+				out.Architectures = nil
+			} else {
+				in.Delim('[')
+				if out.Architectures == nil {
+					if !in.IsDelim(']') {
+						out.Architectures = make([]specs_go.Arch, 0, 4)
+					} else {
+						out.Architectures = []specs_go.Arch{}
+					}
+				} else {
+					out.Architectures = (out.Architectures)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v130 specs_go.Arch
+					v130 = specs_go.Arch(in.String())
+					out.Architectures = append(out.Architectures, v130)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "syscalls":
+			if in.IsNull() {
+				in.Skip()
+				out.Syscalls = nil
+			} else {
+				in.Delim('[')
+				if out.Syscalls == nil {
+					if !in.IsDelim(']') {
+						out.Syscalls = make([]specs_go.LinuxSyscall, 0, 1)
+					} else {
+						out.Syscalls = []specs_go.LinuxSyscall{}
+					}
+				} else {
+					out.Syscalls = (out.Syscalls)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v131 specs_go.LinuxSyscall
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo29(in, &v131)
+					out.Syscalls = append(out.Syscalls, v131)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo27(out *jwriter.Writer, in specs_go.LinuxSeccomp) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"defaultAction\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.DefaultAction))
+	}
+	if len(in.Architectures) != 0 {
+		const prefix string = ",\"architectures\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v132, v133 := range in.Architectures {
+				if v132 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v133))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Syscalls) != 0 {
+		const prefix string = ",\"syscalls\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v134, v135 := range in.Syscalls {
+				if v134 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo29(out, v135)
+			}
+			out.RawByte(']')
+		}
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo29(in *jlexer.Lexer, out *specs_go.LinuxSyscall) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "names":
+			if in.IsNull() {
+				in.Skip()
+				out.Names = nil
+			} else {
+				in.Delim('[')
+				if out.Names == nil {
+					if !in.IsDelim(']') {
+						out.Names = make([]string, 0, 4)
+					} else {
+						out.Names = []string{}
+					}
+				} else {
+					out.Names = (out.Names)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v136 string
+					v136 = string(in.String())
+					out.Names = append(out.Names, v136)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "action":
+			out.Action = specs_go.LinuxSeccompAction(in.String())
+		case "args":
+			if in.IsNull() {
+				in.Skip()
+				out.Args = nil
+			} else {
+				in.Delim('[')
+				if out.Args == nil {
+					if !in.IsDelim(']') {
+						out.Args = make([]specs_go.LinuxSeccompArg, 0, 1)
+					} else {
+						out.Args = []specs_go.LinuxSeccompArg{}
+					}
+				} else {
+					out.Args = (out.Args)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v137 specs_go.LinuxSeccompArg
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo30(in, &v137)
+					out.Args = append(out.Args, v137)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo29(out *jwriter.Writer, in specs_go.LinuxSyscall) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"names\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.Names == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
+			out.RawString("null")
+		} else {
+			out.RawByte('[')
+			for v138, v139 := range in.Names {
+				if v138 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v139))
+			}
+			out.RawByte(']')
+		}
+	}
+	{
+		const prefix string = ",\"action\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Action))
+	}
+	if len(in.Args) != 0 {
+		const prefix string = ",\"args\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v140, v141 := range in.Args {
+				if v140 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo30(out, v141)
+			}
+			out.RawByte(']')
+		}
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo30(in *jlexer.Lexer, out *specs_go.LinuxSeccompArg) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "index":
+			out.Index = uint(in.Uint())
+		case "value":
+			out.Value = uint64(in.Uint64())
+		case "valueTwo":
+			out.ValueTwo = uint64(in.Uint64())
+		case "op":
+			out.Op = specs_go.LinuxSeccompOperator(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo30(out *jwriter.Writer, in specs_go.LinuxSeccompArg) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"index\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint(uint(in.Index))
+	}
+	{
+		const prefix string = ",\"value\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(in.Value))
+	}
+	if in.ValueTwo != 0 {
+		const prefix string = ",\"valueTwo\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(in.ValueTwo))
+	}
+	{
+		const prefix string = ",\"op\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Op))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo26(in *jlexer.Lexer, out *specs_go.LinuxDevice) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "path":
+			out.Path = string(in.String())
+		case "type":
+			out.Type = string(in.String())
+		case "major":
+			out.Major = int64(in.Int64())
+		case "minor":
+			out.Minor = int64(in.Int64())
+		case "fileMode":
+			if in.IsNull() {
+				in.Skip()
+				out.FileMode = nil
+			} else {
+				if out.FileMode == nil {
+					out.FileMode = new(os.FileMode)
+				}
+				*out.FileMode = os.FileMode(in.Uint32())
+			}
+		case "uid":
+			if in.IsNull() {
+				in.Skip()
+				out.UID = nil
+			} else {
+				if out.UID == nil {
+					out.UID = new(uint32)
+				}
+				*out.UID = uint32(in.Uint32())
+			}
+		case "gid":
+			if in.IsNull() {
+				in.Skip()
+				out.GID = nil
+			} else {
+				if out.GID == nil {
+					out.GID = new(uint32)
+				}
+				*out.GID = uint32(in.Uint32())
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo26(out *jwriter.Writer, in specs_go.LinuxDevice) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"path\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Path))
+	}
+	{
+		const prefix string = ",\"type\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Type))
+	}
+	{
+		const prefix string = ",\"major\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(in.Major))
+	}
+	{
+		const prefix string = ",\"minor\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(in.Minor))
+	}
+	if in.FileMode != nil {
+		const prefix string = ",\"fileMode\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint32(uint32(*in.FileMode))
+	}
+	if in.UID != nil {
+		const prefix string = ",\"uid\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint32(uint32(*in.UID))
+	}
+	if in.GID != nil {
+		const prefix string = ",\"gid\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint32(uint32(*in.GID))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo25(in *jlexer.Lexer, out *specs_go.LinuxNamespace) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "type":
+			out.Type = specs_go.LinuxNamespaceType(in.String())
+		case "path":
+			out.Path = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo25(out *jwriter.Writer, in specs_go.LinuxNamespace) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"type\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Type))
+	}
+	if in.Path != "" {
+		const prefix string = ",\"path\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Path))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo24(in *jlexer.Lexer, out *specs_go.LinuxResources) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "devices":
+			if in.IsNull() {
+				in.Skip()
+				out.Devices = nil
+			} else {
+				in.Delim('[')
+				if out.Devices == nil {
+					if !in.IsDelim(']') {
+						out.Devices = make([]specs_go.LinuxDeviceCgroup, 0, 1)
+					} else {
+						out.Devices = []specs_go.LinuxDeviceCgroup{}
+					}
+				} else {
+					out.Devices = (out.Devices)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v142 specs_go.LinuxDeviceCgroup
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo31(in, &v142)
+					out.Devices = append(out.Devices, v142)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "memory":
+			if in.IsNull() {
+				in.Skip()
+				out.Memory = nil
+			} else {
+				if out.Memory == nil {
+					out.Memory = new(specs_go.LinuxMemory)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo32(in, &*out.Memory)
+			}
+		case "cpu":
+			if in.IsNull() {
+				in.Skip()
+				out.CPU = nil
+			} else {
+				if out.CPU == nil {
+					out.CPU = new(specs_go.LinuxCPU)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo33(in, &*out.CPU)
+			}
+		case "pids":
+			if in.IsNull() {
+				in.Skip()
+				out.Pids = nil
+			} else {
+				if out.Pids == nil {
+					out.Pids = new(specs_go.LinuxPids)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo34(in, &*out.Pids)
+			}
+		case "blockIO":
+			if in.IsNull() {
+				in.Skip()
+				out.BlockIO = nil
+			} else {
+				if out.BlockIO == nil {
+					out.BlockIO = new(specs_go.LinuxBlockIO)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo35(in, &*out.BlockIO)
+			}
+		case "hugepageLimits":
+			if in.IsNull() {
+				in.Skip()
+				out.HugepageLimits = nil
+			} else {
+				in.Delim('[')
+				if out.HugepageLimits == nil {
+					if !in.IsDelim(']') {
+						out.HugepageLimits = make([]specs_go.LinuxHugepageLimit, 0, 2)
+					} else {
+						out.HugepageLimits = []specs_go.LinuxHugepageLimit{}
+					}
+				} else {
+					out.HugepageLimits = (out.HugepageLimits)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v143 specs_go.LinuxHugepageLimit
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo36(in, &v143)
+					out.HugepageLimits = append(out.HugepageLimits, v143)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "network":
+			if in.IsNull() {
+				in.Skip()
+				out.Network = nil
+			} else {
+				if out.Network == nil {
+					out.Network = new(specs_go.LinuxNetwork)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo37(in, &*out.Network)
+			}
+		case "rdma":
+			if in.IsNull() {
+				in.Skip()
+			} else {
+				in.Delim('{')
+				if !in.IsDelim('}') {
+					out.Rdma = make(map[string]specs_go.LinuxRdma)
+				} else {
+					out.Rdma = nil
+				}
+				for !in.IsDelim('}') {
+					key := string(in.String())
+					in.WantColon()
+					var v144 specs_go.LinuxRdma
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo38(in, &v144)
+					(out.Rdma)[key] = v144
+					in.WantComma()
+				}
+				in.Delim('}')
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo24(out *jwriter.Writer, in specs_go.LinuxResources) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if len(in.Devices) != 0 {
+		const prefix string = ",\"devices\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v145, v146 := range in.Devices {
+				if v145 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo31(out, v146)
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.Memory != nil {
+		const prefix string = ",\"memory\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo32(out, *in.Memory)
+	}
+	if in.CPU != nil {
+		const prefix string = ",\"cpu\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo33(out, *in.CPU)
+	}
+	if in.Pids != nil {
+		const prefix string = ",\"pids\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo34(out, *in.Pids)
+	}
+	if in.BlockIO != nil {
+		const prefix string = ",\"blockIO\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo35(out, *in.BlockIO)
+	}
+	if len(in.HugepageLimits) != 0 {
+		const prefix string = ",\"hugepageLimits\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v147, v148 := range in.HugepageLimits {
+				if v147 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo36(out, v148)
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.Network != nil {
+		const prefix string = ",\"network\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo37(out, *in.Network)
+	}
+	if len(in.Rdma) != 0 {
+		const prefix string = ",\"rdma\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('{')
+			v149First := true
+			for v149Name, v149Value := range in.Rdma {
+				if v149First {
+					v149First = false
+				} else {
+					out.RawByte(',')
+				}
+				out.String(string(v149Name))
+				out.RawByte(':')
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo38(out, v149Value)
+			}
+			out.RawByte('}')
+		}
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo38(in *jlexer.Lexer, out *specs_go.LinuxRdma) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "hcaHandles":
+			if in.IsNull() {
+				in.Skip()
+				out.HcaHandles = nil
+			} else {
+				if out.HcaHandles == nil {
+					out.HcaHandles = new(uint32)
+				}
+				*out.HcaHandles = uint32(in.Uint32())
+			}
+		case "hcaObjects":
+			if in.IsNull() {
+				in.Skip()
+				out.HcaObjects = nil
+			} else {
+				if out.HcaObjects == nil {
+					out.HcaObjects = new(uint32)
+				}
+				*out.HcaObjects = uint32(in.Uint32())
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo38(out *jwriter.Writer, in specs_go.LinuxRdma) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.HcaHandles != nil {
+		const prefix string = ",\"hcaHandles\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint32(uint32(*in.HcaHandles))
+	}
+	if in.HcaObjects != nil {
+		const prefix string = ",\"hcaObjects\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint32(uint32(*in.HcaObjects))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo37(in *jlexer.Lexer, out *specs_go.LinuxNetwork) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "classID":
+			if in.IsNull() {
+				in.Skip()
+				out.ClassID = nil
+			} else {
+				if out.ClassID == nil {
+					out.ClassID = new(uint32)
+				}
+				*out.ClassID = uint32(in.Uint32())
+			}
+		case "priorities":
+			if in.IsNull() {
+				in.Skip()
+				out.Priorities = nil
+			} else {
+				in.Delim('[')
+				if out.Priorities == nil {
+					if !in.IsDelim(']') {
+						out.Priorities = make([]specs_go.LinuxInterfacePriority, 0, 2)
+					} else {
+						out.Priorities = []specs_go.LinuxInterfacePriority{}
+					}
+				} else {
+					out.Priorities = (out.Priorities)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v150 specs_go.LinuxInterfacePriority
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo39(in, &v150)
+					out.Priorities = append(out.Priorities, v150)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo37(out *jwriter.Writer, in specs_go.LinuxNetwork) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.ClassID != nil {
+		const prefix string = ",\"classID\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint32(uint32(*in.ClassID))
+	}
+	if len(in.Priorities) != 0 {
+		const prefix string = ",\"priorities\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v151, v152 := range in.Priorities {
+				if v151 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo39(out, v152)
+			}
+			out.RawByte(']')
+		}
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo39(in *jlexer.Lexer, out *specs_go.LinuxInterfacePriority) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "name":
+			out.Name = string(in.String())
+		case "priority":
+			out.Priority = uint32(in.Uint32())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo39(out *jwriter.Writer, in specs_go.LinuxInterfacePriority) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"name\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Name))
+	}
+	{
+		const prefix string = ",\"priority\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint32(uint32(in.Priority))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo36(in *jlexer.Lexer, out *specs_go.LinuxHugepageLimit) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "pageSize":
+			out.Pagesize = string(in.String())
+		case "limit":
+			out.Limit = uint64(in.Uint64())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo36(out *jwriter.Writer, in specs_go.LinuxHugepageLimit) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"pageSize\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Pagesize))
+	}
+	{
+		const prefix string = ",\"limit\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(in.Limit))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo35(in *jlexer.Lexer, out *specs_go.LinuxBlockIO) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "weight":
+			if in.IsNull() {
+				in.Skip()
+				out.Weight = nil
+			} else {
+				if out.Weight == nil {
+					out.Weight = new(uint16)
+				}
+				*out.Weight = uint16(in.Uint16())
+			}
+		case "leafWeight":
+			if in.IsNull() {
+				in.Skip()
+				out.LeafWeight = nil
+			} else {
+				if out.LeafWeight == nil {
+					out.LeafWeight = new(uint16)
+				}
+				*out.LeafWeight = uint16(in.Uint16())
+			}
+		case "weightDevice":
+			if in.IsNull() {
+				in.Skip()
+				out.WeightDevice = nil
+			} else {
+				in.Delim('[')
+				if out.WeightDevice == nil {
+					if !in.IsDelim(']') {
+						out.WeightDevice = make([]specs_go.LinuxWeightDevice, 0, 2)
+					} else {
+						out.WeightDevice = []specs_go.LinuxWeightDevice{}
+					}
+				} else {
+					out.WeightDevice = (out.WeightDevice)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v153 specs_go.LinuxWeightDevice
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo40(in, &v153)
+					out.WeightDevice = append(out.WeightDevice, v153)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "throttleReadBpsDevice":
+			if in.IsNull() {
+				in.Skip()
+				out.ThrottleReadBpsDevice = nil
+			} else {
+				in.Delim('[')
+				if out.ThrottleReadBpsDevice == nil {
+					if !in.IsDelim(']') {
+						out.ThrottleReadBpsDevice = make([]specs_go.LinuxThrottleDevice, 0, 2)
+					} else {
+						out.ThrottleReadBpsDevice = []specs_go.LinuxThrottleDevice{}
+					}
+				} else {
+					out.ThrottleReadBpsDevice = (out.ThrottleReadBpsDevice)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v154 specs_go.LinuxThrottleDevice
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo41(in, &v154)
+					out.ThrottleReadBpsDevice = append(out.ThrottleReadBpsDevice, v154)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "throttleWriteBpsDevice":
+			if in.IsNull() {
+				in.Skip()
+				out.ThrottleWriteBpsDevice = nil
+			} else {
+				in.Delim('[')
+				if out.ThrottleWriteBpsDevice == nil {
+					if !in.IsDelim(']') {
+						out.ThrottleWriteBpsDevice = make([]specs_go.LinuxThrottleDevice, 0, 2)
+					} else {
+						out.ThrottleWriteBpsDevice = []specs_go.LinuxThrottleDevice{}
+					}
+				} else {
+					out.ThrottleWriteBpsDevice = (out.ThrottleWriteBpsDevice)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v155 specs_go.LinuxThrottleDevice
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo41(in, &v155)
+					out.ThrottleWriteBpsDevice = append(out.ThrottleWriteBpsDevice, v155)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "throttleReadIOPSDevice":
+			if in.IsNull() {
+				in.Skip()
+				out.ThrottleReadIOPSDevice = nil
+			} else {
+				in.Delim('[')
+				if out.ThrottleReadIOPSDevice == nil {
+					if !in.IsDelim(']') {
+						out.ThrottleReadIOPSDevice = make([]specs_go.LinuxThrottleDevice, 0, 2)
+					} else {
+						out.ThrottleReadIOPSDevice = []specs_go.LinuxThrottleDevice{}
+					}
+				} else {
+					out.ThrottleReadIOPSDevice = (out.ThrottleReadIOPSDevice)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v156 specs_go.LinuxThrottleDevice
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo41(in, &v156)
+					out.ThrottleReadIOPSDevice = append(out.ThrottleReadIOPSDevice, v156)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "throttleWriteIOPSDevice":
+			if in.IsNull() {
+				in.Skip()
+				out.ThrottleWriteIOPSDevice = nil
+			} else {
+				in.Delim('[')
+				if out.ThrottleWriteIOPSDevice == nil {
+					if !in.IsDelim(']') {
+						out.ThrottleWriteIOPSDevice = make([]specs_go.LinuxThrottleDevice, 0, 2)
+					} else {
+						out.ThrottleWriteIOPSDevice = []specs_go.LinuxThrottleDevice{}
+					}
+				} else {
+					out.ThrottleWriteIOPSDevice = (out.ThrottleWriteIOPSDevice)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v157 specs_go.LinuxThrottleDevice
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo41(in, &v157)
+					out.ThrottleWriteIOPSDevice = append(out.ThrottleWriteIOPSDevice, v157)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo35(out *jwriter.Writer, in specs_go.LinuxBlockIO) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.Weight != nil {
+		const prefix string = ",\"weight\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint16(uint16(*in.Weight))
+	}
+	if in.LeafWeight != nil {
+		const prefix string = ",\"leafWeight\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint16(uint16(*in.LeafWeight))
+	}
+	if len(in.WeightDevice) != 0 {
+		const prefix string = ",\"weightDevice\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v158, v159 := range in.WeightDevice {
+				if v158 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo40(out, v159)
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.ThrottleReadBpsDevice) != 0 {
+		const prefix string = ",\"throttleReadBpsDevice\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v160, v161 := range in.ThrottleReadBpsDevice {
+				if v160 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo41(out, v161)
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.ThrottleWriteBpsDevice) != 0 {
+		const prefix string = ",\"throttleWriteBpsDevice\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v162, v163 := range in.ThrottleWriteBpsDevice {
+				if v162 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo41(out, v163)
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.ThrottleReadIOPSDevice) != 0 {
+		const prefix string = ",\"throttleReadIOPSDevice\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v164, v165 := range in.ThrottleReadIOPSDevice {
+				if v164 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo41(out, v165)
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.ThrottleWriteIOPSDevice) != 0 {
+		const prefix string = ",\"throttleWriteIOPSDevice\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v166, v167 := range in.ThrottleWriteIOPSDevice {
+				if v166 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo41(out, v167)
+			}
+			out.RawByte(']')
+		}
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo41(in *jlexer.Lexer, out *specs_go.LinuxThrottleDevice) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "rate":
+			out.Rate = uint64(in.Uint64())
+		case "major":
+			out.Major = int64(in.Int64())
+		case "minor":
+			out.Minor = int64(in.Int64())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo41(out *jwriter.Writer, in specs_go.LinuxThrottleDevice) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"rate\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(in.Rate))
+	}
+	{
+		const prefix string = ",\"major\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(in.Major))
+	}
+	{
+		const prefix string = ",\"minor\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(in.Minor))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo40(in *jlexer.Lexer, out *specs_go.LinuxWeightDevice) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "weight":
+			if in.IsNull() {
+				in.Skip()
+				out.Weight = nil
+			} else {
+				if out.Weight == nil {
+					out.Weight = new(uint16)
+				}
+				*out.Weight = uint16(in.Uint16())
+			}
+		case "leafWeight":
+			if in.IsNull() {
+				in.Skip()
+				out.LeafWeight = nil
+			} else {
+				if out.LeafWeight == nil {
+					out.LeafWeight = new(uint16)
+				}
+				*out.LeafWeight = uint16(in.Uint16())
+			}
+		case "major":
+			out.Major = int64(in.Int64())
+		case "minor":
+			out.Minor = int64(in.Int64())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo40(out *jwriter.Writer, in specs_go.LinuxWeightDevice) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.Weight != nil {
+		const prefix string = ",\"weight\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint16(uint16(*in.Weight))
+	}
+	if in.LeafWeight != nil {
+		const prefix string = ",\"leafWeight\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint16(uint16(*in.LeafWeight))
+	}
+	{
+		const prefix string = ",\"major\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(in.Major))
+	}
+	{
+		const prefix string = ",\"minor\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(in.Minor))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo34(in *jlexer.Lexer, out *specs_go.LinuxPids) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "limit":
+			out.Limit = int64(in.Int64())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo34(out *jwriter.Writer, in specs_go.LinuxPids) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"limit\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(in.Limit))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo33(in *jlexer.Lexer, out *specs_go.LinuxCPU) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "shares":
+			if in.IsNull() {
+				in.Skip()
+				out.Shares = nil
+			} else {
+				if out.Shares == nil {
+					out.Shares = new(uint64)
+				}
+				*out.Shares = uint64(in.Uint64())
+			}
+		case "quota":
+			if in.IsNull() {
+				in.Skip()
+				out.Quota = nil
+			} else {
+				if out.Quota == nil {
+					out.Quota = new(int64)
+				}
+				*out.Quota = int64(in.Int64())
+			}
+		case "period":
+			if in.IsNull() {
+				in.Skip()
+				out.Period = nil
+			} else {
+				if out.Period == nil {
+					out.Period = new(uint64)
+				}
+				*out.Period = uint64(in.Uint64())
+			}
+		case "realtimeRuntime":
+			if in.IsNull() {
+				in.Skip()
+				out.RealtimeRuntime = nil
+			} else {
+				if out.RealtimeRuntime == nil {
+					out.RealtimeRuntime = new(int64)
+				}
+				*out.RealtimeRuntime = int64(in.Int64())
+			}
+		case "realtimePeriod":
+			if in.IsNull() {
+				in.Skip()
+				out.RealtimePeriod = nil
+			} else {
+				if out.RealtimePeriod == nil {
+					out.RealtimePeriod = new(uint64)
+				}
+				*out.RealtimePeriod = uint64(in.Uint64())
+			}
+		case "cpus":
+			out.Cpus = string(in.String())
+		case "mems":
+			out.Mems = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo33(out *jwriter.Writer, in specs_go.LinuxCPU) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.Shares != nil {
+		const prefix string = ",\"shares\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(*in.Shares))
+	}
+	if in.Quota != nil {
+		const prefix string = ",\"quota\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(*in.Quota))
+	}
+	if in.Period != nil {
+		const prefix string = ",\"period\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(*in.Period))
+	}
+	if in.RealtimeRuntime != nil {
+		const prefix string = ",\"realtimeRuntime\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(*in.RealtimeRuntime))
+	}
+	if in.RealtimePeriod != nil {
+		const prefix string = ",\"realtimePeriod\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(*in.RealtimePeriod))
+	}
+	if in.Cpus != "" {
+		const prefix string = ",\"cpus\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Cpus))
+	}
+	if in.Mems != "" {
+		const prefix string = ",\"mems\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Mems))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo32(in *jlexer.Lexer, out *specs_go.LinuxMemory) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "limit":
+			if in.IsNull() {
+				in.Skip()
+				out.Limit = nil
+			} else {
+				if out.Limit == nil {
+					out.Limit = new(int64)
+				}
+				*out.Limit = int64(in.Int64())
+			}
+		case "reservation":
+			if in.IsNull() {
+				in.Skip()
+				out.Reservation = nil
+			} else {
+				if out.Reservation == nil {
+					out.Reservation = new(int64)
+				}
+				*out.Reservation = int64(in.Int64())
+			}
+		case "swap":
+			if in.IsNull() {
+				in.Skip()
+				out.Swap = nil
+			} else {
+				if out.Swap == nil {
+					out.Swap = new(int64)
+				}
+				*out.Swap = int64(in.Int64())
+			}
+		case "kernel":
+			if in.IsNull() {
+				in.Skip()
+				out.Kernel = nil
+			} else {
+				if out.Kernel == nil {
+					out.Kernel = new(int64)
+				}
+				*out.Kernel = int64(in.Int64())
+			}
+		case "kernelTCP":
+			if in.IsNull() {
+				in.Skip()
+				out.KernelTCP = nil
+			} else {
+				if out.KernelTCP == nil {
+					out.KernelTCP = new(int64)
+				}
+				*out.KernelTCP = int64(in.Int64())
+			}
+		case "swappiness":
+			if in.IsNull() {
+				in.Skip()
+				out.Swappiness = nil
+			} else {
+				if out.Swappiness == nil {
+					out.Swappiness = new(uint64)
+				}
+				*out.Swappiness = uint64(in.Uint64())
+			}
+		case "disableOOMKiller":
+			if in.IsNull() {
+				in.Skip()
+				out.DisableOOMKiller = nil
+			} else {
+				if out.DisableOOMKiller == nil {
+					out.DisableOOMKiller = new(bool)
+				}
+				*out.DisableOOMKiller = bool(in.Bool())
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo32(out *jwriter.Writer, in specs_go.LinuxMemory) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.Limit != nil {
+		const prefix string = ",\"limit\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(*in.Limit))
+	}
+	if in.Reservation != nil {
+		const prefix string = ",\"reservation\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(*in.Reservation))
+	}
+	if in.Swap != nil {
+		const prefix string = ",\"swap\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(*in.Swap))
+	}
+	if in.Kernel != nil {
+		const prefix string = ",\"kernel\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(*in.Kernel))
+	}
+	if in.KernelTCP != nil {
+		const prefix string = ",\"kernelTCP\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(*in.KernelTCP))
+	}
+	if in.Swappiness != nil {
+		const prefix string = ",\"swappiness\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(*in.Swappiness))
+	}
+	if in.DisableOOMKiller != nil {
+		const prefix string = ",\"disableOOMKiller\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(*in.DisableOOMKiller))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo31(in *jlexer.Lexer, out *specs_go.LinuxDeviceCgroup) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "allow":
+			out.Allow = bool(in.Bool())
+		case "type":
+			out.Type = string(in.String())
+		case "major":
+			if in.IsNull() {
+				in.Skip()
+				out.Major = nil
+			} else {
+				if out.Major == nil {
+					out.Major = new(int64)
+				}
+				*out.Major = int64(in.Int64())
+			}
+		case "minor":
+			if in.IsNull() {
+				in.Skip()
+				out.Minor = nil
+			} else {
+				if out.Minor == nil {
+					out.Minor = new(int64)
+				}
+				*out.Minor = int64(in.Int64())
+			}
+		case "access":
+			out.Access = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo31(out *jwriter.Writer, in specs_go.LinuxDeviceCgroup) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"allow\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.Allow))
+	}
+	if in.Type != "" {
+		const prefix string = ",\"type\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Type))
+	}
+	if in.Major != nil {
+		const prefix string = ",\"major\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(*in.Major))
+	}
+	if in.Minor != nil {
+		const prefix string = ",\"minor\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int64(int64(*in.Minor))
+	}
+	if in.Access != "" {
+		const prefix string = ",\"access\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Access))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo23(in *jlexer.Lexer, out *specs_go.LinuxIDMapping) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "containerID":
+			out.ContainerID = uint32(in.Uint32())
+		case "hostID":
+			out.HostID = uint32(in.Uint32())
+		case "size":
+			out.Size = uint32(in.Uint32())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo23(out *jwriter.Writer, in specs_go.LinuxIDMapping) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"containerID\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint32(uint32(in.ContainerID))
+	}
+	{
+		const prefix string = ",\"hostID\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint32(uint32(in.HostID))
+	}
+	{
+		const prefix string = ",\"size\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint32(uint32(in.Size))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo5(in *jlexer.Lexer, out *specs_go.Hooks) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "prestart":
+			if in.IsNull() {
+				in.Skip()
+				out.Prestart = nil
+			} else {
+				in.Delim('[')
+				if out.Prestart == nil {
+					if !in.IsDelim(']') {
+						out.Prestart = make([]specs_go.Hook, 0, 1)
+					} else {
+						out.Prestart = []specs_go.Hook{}
+					}
+				} else {
+					out.Prestart = (out.Prestart)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v168 specs_go.Hook
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo(in, &v168)
+					out.Prestart = append(out.Prestart, v168)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "poststart":
+			if in.IsNull() {
+				in.Skip()
+				out.Poststart = nil
+			} else {
+				in.Delim('[')
+				if out.Poststart == nil {
+					if !in.IsDelim(']') {
+						out.Poststart = make([]specs_go.Hook, 0, 1)
+					} else {
+						out.Poststart = []specs_go.Hook{}
+					}
+				} else {
+					out.Poststart = (out.Poststart)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v169 specs_go.Hook
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo(in, &v169)
+					out.Poststart = append(out.Poststart, v169)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "poststop":
+			if in.IsNull() {
+				in.Skip()
+				out.Poststop = nil
+			} else {
+				in.Delim('[')
+				if out.Poststop == nil {
+					if !in.IsDelim(']') {
+						out.Poststop = make([]specs_go.Hook, 0, 1)
+					} else {
+						out.Poststop = []specs_go.Hook{}
+					}
+				} else {
+					out.Poststop = (out.Poststop)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v170 specs_go.Hook
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo(in, &v170)
+					out.Poststop = append(out.Poststop, v170)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo5(out *jwriter.Writer, in specs_go.Hooks) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if len(in.Prestart) != 0 {
+		const prefix string = ",\"prestart\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v171, v172 := range in.Prestart {
+				if v171 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo(out, v172)
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Poststart) != 0 {
+		const prefix string = ",\"poststart\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v173, v174 := range in.Poststart {
+				if v173 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo(out, v174)
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Poststop) != 0 {
+		const prefix string = ",\"poststop\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v175, v176 := range in.Poststop {
+				if v175 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo(out, v176)
+			}
+			out.RawByte(']')
+		}
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo4(in *jlexer.Lexer, out *specs_go.Mount) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "destination":
+			out.Destination = string(in.String())
+		case "type":
+			out.Type = string(in.String())
+		case "source":
+			out.Source = string(in.String())
+		case "options":
+			if in.IsNull() {
+				in.Skip()
+				out.Options = nil
+			} else {
+				in.Delim('[')
+				if out.Options == nil {
+					if !in.IsDelim(']') {
+						out.Options = make([]string, 0, 4)
+					} else {
+						out.Options = []string{}
+					}
+				} else {
+					out.Options = (out.Options)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v177 string
+					v177 = string(in.String())
+					out.Options = append(out.Options, v177)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo4(out *jwriter.Writer, in specs_go.Mount) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"destination\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Destination))
+	}
+	if in.Type != "" {
+		const prefix string = ",\"type\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Type))
+	}
+	if in.Source != "" {
+		const prefix string = ",\"source\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Source))
+	}
+	if len(in.Options) != 0 {
+		const prefix string = ",\"options\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v178, v179 := range in.Options {
+				if v178 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v179))
+			}
+			out.RawByte(']')
+		}
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo3(in *jlexer.Lexer, out *specs_go.Root) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "path":
+			out.Path = string(in.String())
+		case "readonly":
+			out.Readonly = bool(in.Bool())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo3(out *jwriter.Writer, in specs_go.Root) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"path\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Path))
+	}
+	if in.Readonly {
+		const prefix string = ",\"readonly\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.Readonly))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo2(in *jlexer.Lexer, out *specs_go.Process) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "terminal":
+			out.Terminal = bool(in.Bool())
+		case "consoleSize":
+			if in.IsNull() {
+				in.Skip()
+				out.ConsoleSize = nil
+			} else {
+				if out.ConsoleSize == nil {
+					out.ConsoleSize = new(specs_go.Box)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo42(in, &*out.ConsoleSize)
+			}
+		case "user":
+			easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo43(in, &out.User)
+		case "args":
+			if in.IsNull() {
+				in.Skip()
+				out.Args = nil
+			} else {
+				in.Delim('[')
+				if out.Args == nil {
+					if !in.IsDelim(']') {
+						out.Args = make([]string, 0, 4)
+					} else {
+						out.Args = []string{}
+					}
+				} else {
+					out.Args = (out.Args)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v180 string
+					v180 = string(in.String())
+					out.Args = append(out.Args, v180)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "env":
+			if in.IsNull() {
+				in.Skip()
+				out.Env = nil
+			} else {
+				in.Delim('[')
+				if out.Env == nil {
+					if !in.IsDelim(']') {
+						out.Env = make([]string, 0, 4)
+					} else {
+						out.Env = []string{}
+					}
+				} else {
+					out.Env = (out.Env)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v181 string
+					v181 = string(in.String())
+					out.Env = append(out.Env, v181)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "cwd":
+			out.Cwd = string(in.String())
+		case "capabilities":
+			if in.IsNull() {
+				in.Skip()
+				out.Capabilities = nil
+			} else {
+				if out.Capabilities == nil {
+					out.Capabilities = new(specs_go.LinuxCapabilities)
+				}
+				easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo44(in, &*out.Capabilities)
+			}
+		case "rlimits":
+			if in.IsNull() {
+				in.Skip()
+				out.Rlimits = nil
+			} else {
+				in.Delim('[')
+				if out.Rlimits == nil {
+					if !in.IsDelim(']') {
+						out.Rlimits = make([]specs_go.POSIXRlimit, 0, 2)
+					} else {
+						out.Rlimits = []specs_go.POSIXRlimit{}
+					}
+				} else {
+					out.Rlimits = (out.Rlimits)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v182 specs_go.POSIXRlimit
+					easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo45(in, &v182)
+					out.Rlimits = append(out.Rlimits, v182)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "noNewPrivileges":
+			out.NoNewPrivileges = bool(in.Bool())
+		case "apparmorProfile":
+			out.ApparmorProfile = string(in.String())
+		case "oomScoreAdj":
+			if in.IsNull() {
+				in.Skip()
+				out.OOMScoreAdj = nil
+			} else {
+				if out.OOMScoreAdj == nil {
+					out.OOMScoreAdj = new(int)
+				}
+				*out.OOMScoreAdj = int(in.Int())
+			}
+		case "selinuxLabel":
+			out.SelinuxLabel = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo2(out *jwriter.Writer, in specs_go.Process) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if in.Terminal {
+		const prefix string = ",\"terminal\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.Terminal))
+	}
+	if in.ConsoleSize != nil {
+		const prefix string = ",\"consoleSize\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo42(out, *in.ConsoleSize)
+	}
+	{
+		const prefix string = ",\"user\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo43(out, in.User)
+	}
+	{
+		const prefix string = ",\"args\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.Args == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
+			out.RawString("null")
+		} else {
+			out.RawByte('[')
+			for v183, v184 := range in.Args {
+				if v183 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v184))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Env) != 0 {
+		const prefix string = ",\"env\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v185, v186 := range in.Env {
+				if v185 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v186))
+			}
+			out.RawByte(']')
+		}
+	}
+	{
+		const prefix string = ",\"cwd\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Cwd))
+	}
+	if in.Capabilities != nil {
+		const prefix string = ",\"capabilities\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo44(out, *in.Capabilities)
+	}
+	if len(in.Rlimits) != 0 {
+		const prefix string = ",\"rlimits\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v187, v188 := range in.Rlimits {
+				if v187 > 0 {
+					out.RawByte(',')
+				}
+				easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo45(out, v188)
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.NoNewPrivileges {
+		const prefix string = ",\"noNewPrivileges\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.NoNewPrivileges))
+	}
+	if in.ApparmorProfile != "" {
+		const prefix string = ",\"apparmorProfile\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.ApparmorProfile))
+	}
+	if in.OOMScoreAdj != nil {
+		const prefix string = ",\"oomScoreAdj\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Int(int(*in.OOMScoreAdj))
+	}
+	if in.SelinuxLabel != "" {
+		const prefix string = ",\"selinuxLabel\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.SelinuxLabel))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo45(in *jlexer.Lexer, out *specs_go.POSIXRlimit) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "type":
+			out.Type = string(in.String())
+		case "hard":
+			out.Hard = uint64(in.Uint64())
+		case "soft":
+			out.Soft = uint64(in.Uint64())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo45(out *jwriter.Writer, in specs_go.POSIXRlimit) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"type\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Type))
+	}
+	{
+		const prefix string = ",\"hard\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(in.Hard))
+	}
+	{
+		const prefix string = ",\"soft\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint64(uint64(in.Soft))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo44(in *jlexer.Lexer, out *specs_go.LinuxCapabilities) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "bounding":
+			if in.IsNull() {
+				in.Skip()
+				out.Bounding = nil
+			} else {
+				in.Delim('[')
+				if out.Bounding == nil {
+					if !in.IsDelim(']') {
+						out.Bounding = make([]string, 0, 4)
+					} else {
+						out.Bounding = []string{}
+					}
+				} else {
+					out.Bounding = (out.Bounding)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v189 string
+					v189 = string(in.String())
+					out.Bounding = append(out.Bounding, v189)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "effective":
+			if in.IsNull() {
+				in.Skip()
+				out.Effective = nil
+			} else {
+				in.Delim('[')
+				if out.Effective == nil {
+					if !in.IsDelim(']') {
+						out.Effective = make([]string, 0, 4)
+					} else {
+						out.Effective = []string{}
+					}
+				} else {
+					out.Effective = (out.Effective)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v190 string
+					v190 = string(in.String())
+					out.Effective = append(out.Effective, v190)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "inheritable":
+			if in.IsNull() {
+				in.Skip()
+				out.Inheritable = nil
+			} else {
+				in.Delim('[')
+				if out.Inheritable == nil {
+					if !in.IsDelim(']') {
+						out.Inheritable = make([]string, 0, 4)
+					} else {
+						out.Inheritable = []string{}
+					}
+				} else {
+					out.Inheritable = (out.Inheritable)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v191 string
+					v191 = string(in.String())
+					out.Inheritable = append(out.Inheritable, v191)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "permitted":
+			if in.IsNull() {
+				in.Skip()
+				out.Permitted = nil
+			} else {
+				in.Delim('[')
+				if out.Permitted == nil {
+					if !in.IsDelim(']') {
+						out.Permitted = make([]string, 0, 4)
+					} else {
+						out.Permitted = []string{}
+					}
+				} else {
+					out.Permitted = (out.Permitted)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v192 string
+					v192 = string(in.String())
+					out.Permitted = append(out.Permitted, v192)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "ambient":
+			if in.IsNull() {
+				in.Skip()
+				out.Ambient = nil
+			} else {
+				in.Delim('[')
+				if out.Ambient == nil {
+					if !in.IsDelim(']') {
+						out.Ambient = make([]string, 0, 4)
+					} else {
+						out.Ambient = []string{}
+					}
+				} else {
+					out.Ambient = (out.Ambient)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v193 string
+					v193 = string(in.String())
+					out.Ambient = append(out.Ambient, v193)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo44(out *jwriter.Writer, in specs_go.LinuxCapabilities) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	if len(in.Bounding) != 0 {
+		const prefix string = ",\"bounding\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v194, v195 := range in.Bounding {
+				if v194 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v195))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Effective) != 0 {
+		const prefix string = ",\"effective\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v196, v197 := range in.Effective {
+				if v196 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v197))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Inheritable) != 0 {
+		const prefix string = ",\"inheritable\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v198, v199 := range in.Inheritable {
+				if v198 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v199))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Permitted) != 0 {
+		const prefix string = ",\"permitted\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v200, v201 := range in.Permitted {
+				if v200 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v201))
+			}
+			out.RawByte(']')
+		}
+	}
+	if len(in.Ambient) != 0 {
+		const prefix string = ",\"ambient\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v202, v203 := range in.Ambient {
+				if v202 > 0 {
+					out.RawByte(',')
+				}
+				out.String(string(v203))
+			}
+			out.RawByte(']')
+		}
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo43(in *jlexer.Lexer, out *specs_go.User) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "uid":
+			out.UID = uint32(in.Uint32())
+		case "gid":
+			out.GID = uint32(in.Uint32())
+		case "additionalGids":
+			if in.IsNull() {
+				in.Skip()
+				out.AdditionalGids = nil
+			} else {
+				in.Delim('[')
+				if out.AdditionalGids == nil {
+					if !in.IsDelim(']') {
+						out.AdditionalGids = make([]uint32, 0, 16)
+					} else {
+						out.AdditionalGids = []uint32{}
+					}
+				} else {
+					out.AdditionalGids = (out.AdditionalGids)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v204 uint32
+					v204 = uint32(in.Uint32())
+					out.AdditionalGids = append(out.AdditionalGids, v204)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		case "username":
+			out.Username = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo43(out *jwriter.Writer, in specs_go.User) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"uid\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint32(uint32(in.UID))
+	}
+	{
+		const prefix string = ",\"gid\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint32(uint32(in.GID))
+	}
+	if len(in.AdditionalGids) != 0 {
+		const prefix string = ",\"additionalGids\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		{
+			out.RawByte('[')
+			for v205, v206 := range in.AdditionalGids {
+				if v205 > 0 {
+					out.RawByte(',')
+				}
+				out.Uint32(uint32(v206))
+			}
+			out.RawByte(']')
+		}
+	}
+	if in.Username != "" {
+		const prefix string = ",\"username\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Username))
+	}
+	out.RawByte('}')
+}
+func easyjson1dbef17bDecodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo42(in *jlexer.Lexer, out *specs_go.Box) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "height":
+			out.Height = uint(in.Uint())
+		case "width":
+			out.Width = uint(in.Uint())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjson1dbef17bEncodeGithubComContainersLibpodVendorGithubComOpencontainersRuntimeSpecSpecsGo42(out *jwriter.Writer, in specs_go.Box) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"height\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint(uint(in.Height))
+	}
+	{
+		const prefix string = ",\"width\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Uint(uint(in.Width))
+	}
+	out.RawByte('}')
+}
diff --git a/libpod/pod_easyjson.go b/libpod/pod_easyjson.go
new file mode 100644
index 0000000000..6c1c939f34
--- /dev/null
+++ b/libpod/pod_easyjson.go
@@ -0,0 +1,749 @@
+// +build  seccomp   ostree selinux  varlink exclude_graphdriver_devicemapper
+
+// Code generated by easyjson for marshaling/unmarshaling. DO NOT EDIT.
+
+package libpod
+
+import (
+	json "encoding/json"
+	easyjson "github.com/mailru/easyjson"
+	jlexer "github.com/mailru/easyjson/jlexer"
+	jwriter "github.com/mailru/easyjson/jwriter"
+)
+
+// suppress unused package warning
+var (
+	_ *json.RawMessage
+	_ *jlexer.Lexer
+	_ *jwriter.Writer
+	_ easyjson.Marshaler
+)
+
+func easyjsonBe091417DecodeGithubComContainersLibpodLibpod(in *jlexer.Lexer, out *podState) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "cgroupPath":
+			out.CgroupPath = string(in.String())
+		case "InfraContainerID":
+			out.InfraContainerID = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjsonBe091417EncodeGithubComContainersLibpodLibpod(out *jwriter.Writer, in podState) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"cgroupPath\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.CgroupPath))
+	}
+	{
+		const prefix string = ",\"InfraContainerID\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.InfraContainerID))
+	}
+	out.RawByte('}')
+}
+
+// MarshalJSON supports json.Marshaler interface
+func (v podState) MarshalJSON() ([]byte, error) {
+	w := jwriter.Writer{}
+	easyjsonBe091417EncodeGithubComContainersLibpodLibpod(&w, v)
+	return w.Buffer.BuildBytes(), w.Error
+}
+
+// MarshalEasyJSON supports easyjson.Marshaler interface
+func (v podState) MarshalEasyJSON(w *jwriter.Writer) {
+	easyjsonBe091417EncodeGithubComContainersLibpodLibpod(w, v)
+}
+
+// UnmarshalJSON supports json.Unmarshaler interface
+func (v *podState) UnmarshalJSON(data []byte) error {
+	r := jlexer.Lexer{Data: data}
+	easyjsonBe091417DecodeGithubComContainersLibpodLibpod(&r, v)
+	return r.Error()
+}
+
+// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
+func (v *podState) UnmarshalEasyJSON(l *jlexer.Lexer) {
+	easyjsonBe091417DecodeGithubComContainersLibpodLibpod(l, v)
+}
+func easyjsonBe091417DecodeGithubComContainersLibpodLibpod1(in *jlexer.Lexer, out *PodInspectState) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "cgroupPath":
+			out.CgroupPath = string(in.String())
+		case "infraContainerID":
+			out.InfraContainerID = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjsonBe091417EncodeGithubComContainersLibpodLibpod1(out *jwriter.Writer, in PodInspectState) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"cgroupPath\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.CgroupPath))
+	}
+	{
+		const prefix string = ",\"infraContainerID\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.InfraContainerID))
+	}
+	out.RawByte('}')
+}
+
+// MarshalJSON supports json.Marshaler interface
+func (v PodInspectState) MarshalJSON() ([]byte, error) {
+	w := jwriter.Writer{}
+	easyjsonBe091417EncodeGithubComContainersLibpodLibpod1(&w, v)
+	return w.Buffer.BuildBytes(), w.Error
+}
+
+// MarshalEasyJSON supports easyjson.Marshaler interface
+func (v PodInspectState) MarshalEasyJSON(w *jwriter.Writer) {
+	easyjsonBe091417EncodeGithubComContainersLibpodLibpod1(w, v)
+}
+
+// UnmarshalJSON supports json.Unmarshaler interface
+func (v *PodInspectState) UnmarshalJSON(data []byte) error {
+	r := jlexer.Lexer{Data: data}
+	easyjsonBe091417DecodeGithubComContainersLibpodLibpod1(&r, v)
+	return r.Error()
+}
+
+// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
+func (v *PodInspectState) UnmarshalEasyJSON(l *jlexer.Lexer) {
+	easyjsonBe091417DecodeGithubComContainersLibpodLibpod1(l, v)
+}
+func easyjsonBe091417DecodeGithubComContainersLibpodLibpod2(in *jlexer.Lexer, out *PodInspect) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "Config":
+			if in.IsNull() {
+				in.Skip()
+				out.Config = nil
+			} else {
+				if out.Config == nil {
+					out.Config = new(PodConfig)
+				}
+				if data := in.Raw(); in.Ok() {
+					in.AddError((*out.Config).UnmarshalJSON(data))
+				}
+			}
+		case "State":
+			if in.IsNull() {
+				in.Skip()
+				out.State = nil
+			} else {
+				if out.State == nil {
+					out.State = new(PodInspectState)
+				}
+				if data := in.Raw(); in.Ok() {
+					in.AddError((*out.State).UnmarshalJSON(data))
+				}
+			}
+		case "Containers":
+			if in.IsNull() {
+				in.Skip()
+				out.Containers = nil
+			} else {
+				in.Delim('[')
+				if out.Containers == nil {
+					if !in.IsDelim(']') {
+						out.Containers = make([]PodContainerInfo, 0, 2)
+					} else {
+						out.Containers = []PodContainerInfo{}
+					}
+				} else {
+					out.Containers = (out.Containers)[:0]
+				}
+				for !in.IsDelim(']') {
+					var v1 PodContainerInfo
+					if data := in.Raw(); in.Ok() {
+						in.AddError((v1).UnmarshalJSON(data))
+					}
+					out.Containers = append(out.Containers, v1)
+					in.WantComma()
+				}
+				in.Delim(']')
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjsonBe091417EncodeGithubComContainersLibpodLibpod2(out *jwriter.Writer, in PodInspect) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"Config\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.Config == nil {
+			out.RawString("null")
+		} else {
+			out.Raw((*in.Config).MarshalJSON())
+		}
+	}
+	{
+		const prefix string = ",\"State\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.State == nil {
+			out.RawString("null")
+		} else {
+			out.Raw((*in.State).MarshalJSON())
+		}
+	}
+	{
+		const prefix string = ",\"Containers\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.Containers == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 {
+			out.RawString("null")
+		} else {
+			out.RawByte('[')
+			for v2, v3 := range in.Containers {
+				if v2 > 0 {
+					out.RawByte(',')
+				}
+				out.Raw((v3).MarshalJSON())
+			}
+			out.RawByte(']')
+		}
+	}
+	out.RawByte('}')
+}
+
+// MarshalJSON supports json.Marshaler interface
+func (v PodInspect) MarshalJSON() ([]byte, error) {
+	w := jwriter.Writer{}
+	easyjsonBe091417EncodeGithubComContainersLibpodLibpod2(&w, v)
+	return w.Buffer.BuildBytes(), w.Error
+}
+
+// MarshalEasyJSON supports easyjson.Marshaler interface
+func (v PodInspect) MarshalEasyJSON(w *jwriter.Writer) {
+	easyjsonBe091417EncodeGithubComContainersLibpodLibpod2(w, v)
+}
+
+// UnmarshalJSON supports json.Unmarshaler interface
+func (v *PodInspect) UnmarshalJSON(data []byte) error {
+	r := jlexer.Lexer{Data: data}
+	easyjsonBe091417DecodeGithubComContainersLibpodLibpod2(&r, v)
+	return r.Error()
+}
+
+// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
+func (v *PodInspect) UnmarshalEasyJSON(l *jlexer.Lexer) {
+	easyjsonBe091417DecodeGithubComContainersLibpodLibpod2(l, v)
+}
+func easyjsonBe091417DecodeGithubComContainersLibpodLibpod3(in *jlexer.Lexer, out *PodContainerInfo) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "id":
+			out.ID = string(in.String())
+		case "state":
+			out.State = string(in.String())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjsonBe091417EncodeGithubComContainersLibpodLibpod3(out *jwriter.Writer, in PodContainerInfo) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"id\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.ID))
+	}
+	{
+		const prefix string = ",\"state\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.State))
+	}
+	out.RawByte('}')
+}
+
+// MarshalJSON supports json.Marshaler interface
+func (v PodContainerInfo) MarshalJSON() ([]byte, error) {
+	w := jwriter.Writer{}
+	easyjsonBe091417EncodeGithubComContainersLibpodLibpod3(&w, v)
+	return w.Buffer.BuildBytes(), w.Error
+}
+
+// MarshalEasyJSON supports easyjson.Marshaler interface
+func (v PodContainerInfo) MarshalEasyJSON(w *jwriter.Writer) {
+	easyjsonBe091417EncodeGithubComContainersLibpodLibpod3(w, v)
+}
+
+// UnmarshalJSON supports json.Unmarshaler interface
+func (v *PodContainerInfo) UnmarshalJSON(data []byte) error {
+	r := jlexer.Lexer{Data: data}
+	easyjsonBe091417DecodeGithubComContainersLibpodLibpod3(&r, v)
+	return r.Error()
+}
+
+// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
+func (v *PodContainerInfo) UnmarshalEasyJSON(l *jlexer.Lexer) {
+	easyjsonBe091417DecodeGithubComContainersLibpodLibpod3(l, v)
+}
+func easyjsonBe091417DecodeGithubComContainersLibpodLibpod4(in *jlexer.Lexer, out *PodConfig) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "id":
+			out.ID = string(in.String())
+		case "name":
+			out.Name = string(in.String())
+		case "namespace":
+			out.Namespace = string(in.String())
+		case "labels":
+			if in.IsNull() {
+				in.Skip()
+			} else {
+				in.Delim('{')
+				if !in.IsDelim('}') {
+					out.Labels = make(map[string]string)
+				} else {
+					out.Labels = nil
+				}
+				for !in.IsDelim('}') {
+					key := string(in.String())
+					in.WantColon()
+					var v4 string
+					v4 = string(in.String())
+					(out.Labels)[key] = v4
+					in.WantComma()
+				}
+				in.Delim('}')
+			}
+		case "cgroupParent":
+			out.CgroupParent = string(in.String())
+		case "sharesCgroup":
+			out.UsePodCgroup = bool(in.Bool())
+		case "sharesPid":
+			out.UsePodPID = bool(in.Bool())
+		case "sharesIpc":
+			out.UsePodIPC = bool(in.Bool())
+		case "sharesNet":
+			out.UsePodNet = bool(in.Bool())
+		case "sharesMnt":
+			out.UsePodMount = bool(in.Bool())
+		case "sharesUser":
+			out.UsePodUser = bool(in.Bool())
+		case "sharesUts":
+			out.UsePodUTS = bool(in.Bool())
+		case "infraConfig":
+			if in.IsNull() {
+				in.Skip()
+				out.InfraContainer = nil
+			} else {
+				if out.InfraContainer == nil {
+					out.InfraContainer = new(InfraContainerConfig)
+				}
+				easyjsonBe091417DecodeGithubComContainersLibpodLibpod5(in, &*out.InfraContainer)
+			}
+		case "created":
+			if data := in.Raw(); in.Ok() {
+				in.AddError((out.CreatedTime).UnmarshalJSON(data))
+			}
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjsonBe091417EncodeGithubComContainersLibpodLibpod4(out *jwriter.Writer, in PodConfig) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"id\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.ID))
+	}
+	{
+		const prefix string = ",\"name\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Name))
+	}
+	if in.Namespace != "" {
+		const prefix string = ",\"namespace\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.Namespace))
+	}
+	{
+		const prefix string = ",\"labels\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.Labels == nil && (out.Flags&jwriter.NilMapAsEmpty) == 0 {
+			out.RawString(`null`)
+		} else {
+			out.RawByte('{')
+			v5First := true
+			for v5Name, v5Value := range in.Labels {
+				if v5First {
+					v5First = false
+				} else {
+					out.RawByte(',')
+				}
+				out.String(string(v5Name))
+				out.RawByte(':')
+				out.String(string(v5Value))
+			}
+			out.RawByte('}')
+		}
+	}
+	{
+		const prefix string = ",\"cgroupParent\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.String(string(in.CgroupParent))
+	}
+	if in.UsePodCgroup {
+		const prefix string = ",\"sharesCgroup\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.UsePodCgroup))
+	}
+	if in.UsePodPID {
+		const prefix string = ",\"sharesPid\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.UsePodPID))
+	}
+	if in.UsePodIPC {
+		const prefix string = ",\"sharesIpc\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.UsePodIPC))
+	}
+	if in.UsePodNet {
+		const prefix string = ",\"sharesNet\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.UsePodNet))
+	}
+	if in.UsePodMount {
+		const prefix string = ",\"sharesMnt\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.UsePodMount))
+	}
+	if in.UsePodUser {
+		const prefix string = ",\"sharesUser\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.UsePodUser))
+	}
+	if in.UsePodUTS {
+		const prefix string = ",\"sharesUts\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.UsePodUTS))
+	}
+	{
+		const prefix string = ",\"infraConfig\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		if in.InfraContainer == nil {
+			out.RawString("null")
+		} else {
+			easyjsonBe091417EncodeGithubComContainersLibpodLibpod5(out, *in.InfraContainer)
+		}
+	}
+	{
+		const prefix string = ",\"created\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Raw((in.CreatedTime).MarshalJSON())
+	}
+	out.RawByte('}')
+}
+
+// MarshalJSON supports json.Marshaler interface
+func (v PodConfig) MarshalJSON() ([]byte, error) {
+	w := jwriter.Writer{}
+	easyjsonBe091417EncodeGithubComContainersLibpodLibpod4(&w, v)
+	return w.Buffer.BuildBytes(), w.Error
+}
+
+// MarshalEasyJSON supports easyjson.Marshaler interface
+func (v PodConfig) MarshalEasyJSON(w *jwriter.Writer) {
+	easyjsonBe091417EncodeGithubComContainersLibpodLibpod4(w, v)
+}
+
+// UnmarshalJSON supports json.Unmarshaler interface
+func (v *PodConfig) UnmarshalJSON(data []byte) error {
+	r := jlexer.Lexer{Data: data}
+	easyjsonBe091417DecodeGithubComContainersLibpodLibpod4(&r, v)
+	return r.Error()
+}
+
+// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
+func (v *PodConfig) UnmarshalEasyJSON(l *jlexer.Lexer) {
+	easyjsonBe091417DecodeGithubComContainersLibpodLibpod4(l, v)
+}
+func easyjsonBe091417DecodeGithubComContainersLibpodLibpod5(in *jlexer.Lexer, out *InfraContainerConfig) {
+	isTopLevel := in.IsStart()
+	if in.IsNull() {
+		if isTopLevel {
+			in.Consumed()
+		}
+		in.Skip()
+		return
+	}
+	in.Delim('{')
+	for !in.IsDelim('}') {
+		key := in.UnsafeString()
+		in.WantColon()
+		if in.IsNull() {
+			in.Skip()
+			in.WantComma()
+			continue
+		}
+		switch key {
+		case "makeInfraContainer":
+			out.HasInfraContainer = bool(in.Bool())
+		default:
+			in.SkipRecursive()
+		}
+		in.WantComma()
+	}
+	in.Delim('}')
+	if isTopLevel {
+		in.Consumed()
+	}
+}
+func easyjsonBe091417EncodeGithubComContainersLibpodLibpod5(out *jwriter.Writer, in InfraContainerConfig) {
+	out.RawByte('{')
+	first := true
+	_ = first
+	{
+		const prefix string = ",\"makeInfraContainer\":"
+		if first {
+			first = false
+			out.RawString(prefix[1:])
+		} else {
+			out.RawString(prefix)
+		}
+		out.Bool(bool(in.HasInfraContainer))
+	}
+	out.RawByte('}')
+}
diff --git a/pkg/spec/createconfig.go b/pkg/spec/createconfig.go
index 887ef8e950..e9a5dc9dca 100644
--- a/pkg/spec/createconfig.go
+++ b/pkg/spec/createconfig.go
@@ -2,6 +2,7 @@ package createconfig
 
 import (
 	"encoding/json"
+	"net"
 	"os"
 	"strconv"
 	"strings"
@@ -311,9 +312,6 @@ func (c *CreateConfig) GetContainerCreateOptions(runtime *libpod.Runtime) ([]lib
 	var pod *libpod.Pod
 	var err error
 
-	// Uncomment after talking to mheon about unimplemented funcs
-	// options = append(options, libpod.WithLabels(c.labels))
-
 	if c.Interactive {
 		options = append(options, libpod.WithStdin())
 	}
@@ -442,6 +440,15 @@ func (c *CreateConfig) GetContainerCreateOptions(runtime *libpod.Runtime) ([]lib
 	if logPath != "" {
 		options = append(options, libpod.WithLogPath(logPath))
 	}
+	if c.IPAddress != "" {
+		ip := net.ParseIP(c.IPAddress)
+		if ip == nil {
+			return nil, errors.Wrapf(libpod.ErrInvalidArg, "cannot parse %s as IP address", c.IPAddress)
+		} else if ip.To4() == nil {
+			return nil, errors.Wrapf(libpod.ErrInvalidArg, "%s is not an IPv4 address", c.IPAddress)
+		}
+		options = append(options, libpod.WithStaticIP(ip))
+	}
 
 	options = append(options, libpod.WithPrivileged(c.Privileged))