diff --git a/Gopkg.lock b/Gopkg.lock index 6e9bf1a5ec..0657923765 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -433,7 +433,7 @@ "storage/v1alpha1", "storage/v1beta1" ] - revision = "kubernetes-1.12.0-alpha.0" + revision = "dc6e60c1b0483cd8e94610bfacf6989fe55df091" [[projects]] branch = "master" @@ -738,7 +738,7 @@ "pkg/volume/util/recyclerclient", "pkg/volume/util/types" ] - revision = "77a08ee2d774d1785670677d4d4b7d1a1739c12c" + revision = "v1.11.0-beta.1" [[projects]] branch = "master" @@ -749,6 +749,6 @@ [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "2a803b38db41744594cd39636c91db49297ced36ada6812d8967adcd3ec609db" + inputs-digest = "e687c933806d18d25a999a20b6e369841a637c2b437497ad3f442bef271c249a" solver-name = "gps-cdcl" solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml index 24ebee83a5..b7759df8b1 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -22,7 +22,9 @@ ignored = ["k8s.io/kubernetes/pkg/api"] [[constraint]] name = "k8s.io/api" - revision = "kubernetes-1.12.0-alpha.0" + # Pin to an unreleased commit because the latest release is not compatible + # with kubernetes/kubernetes:v1.11.0-beta.1. + revision = "dc6e60c1b0483cd8e94610bfacf6989fe55df091" # This needs to be an override as it is a non-direct dependency and will not be # considered by `dep` as a constraint. @@ -40,7 +42,7 @@ ignored = ["k8s.io/kubernetes/pkg/api"] [[constraint]] name = "k8s.io/kubernetes" - revision = "77a08ee2d774d1785670677d4d4b7d1a1739c12c" + revision = "v1.11.0-beta.1" # This needs to be an override as it is a non-direct dependency and will not be # considered by `dep` as a constraint. diff --git a/vendor/k8s.io/api/core/v1/generated.pb.go b/vendor/k8s.io/api/core/v1/generated.pb.go index 570ea23fdd..a94e6fe0dd 100644 --- a/vendor/k8s.io/api/core/v1/generated.pb.go +++ b/vendor/k8s.io/api/core/v1/generated.pb.go @@ -192,6 +192,7 @@ limitations under the License. Service ServiceAccount ServiceAccountList + ServiceAccountTokenProjection ServiceList ServicePort ServiceProxyOptions @@ -963,90 +964,96 @@ func (m *ServiceAccountList) Reset() { *m = ServiceAccountLis func (*ServiceAccountList) ProtoMessage() {} func (*ServiceAccountList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{166} } +func (m *ServiceAccountTokenProjection) Reset() { *m = ServiceAccountTokenProjection{} } +func (*ServiceAccountTokenProjection) ProtoMessage() {} +func (*ServiceAccountTokenProjection) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{167} +} + func (m *ServiceList) Reset() { *m = ServiceList{} } func (*ServiceList) ProtoMessage() {} -func (*ServiceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{167} } +func (*ServiceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{168} } func (m *ServicePort) Reset() { *m = ServicePort{} } func (*ServicePort) ProtoMessage() {} -func (*ServicePort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{168} } +func (*ServicePort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{169} } func (m *ServiceProxyOptions) Reset() { *m = ServiceProxyOptions{} } func (*ServiceProxyOptions) ProtoMessage() {} -func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{169} } +func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{170} } func (m *ServiceSpec) Reset() { *m = ServiceSpec{} } func (*ServiceSpec) ProtoMessage() {} -func (*ServiceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{170} } +func (*ServiceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{171} } func (m *ServiceStatus) Reset() { *m = ServiceStatus{} } func (*ServiceStatus) ProtoMessage() {} -func (*ServiceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{171} } +func (*ServiceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{172} } func (m *SessionAffinityConfig) Reset() { *m = SessionAffinityConfig{} } func (*SessionAffinityConfig) ProtoMessage() {} -func (*SessionAffinityConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{172} } +func (*SessionAffinityConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{173} } func (m *StorageOSPersistentVolumeSource) Reset() { *m = StorageOSPersistentVolumeSource{} } func (*StorageOSPersistentVolumeSource) ProtoMessage() {} func (*StorageOSPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{173} + return fileDescriptorGenerated, []int{174} } func (m *StorageOSVolumeSource) Reset() { *m = StorageOSVolumeSource{} } func (*StorageOSVolumeSource) ProtoMessage() {} -func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{174} } +func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{175} } func (m *Sysctl) Reset() { *m = Sysctl{} } func (*Sysctl) ProtoMessage() {} -func (*Sysctl) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{175} } +func (*Sysctl) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{176} } func (m *TCPSocketAction) Reset() { *m = TCPSocketAction{} } func (*TCPSocketAction) ProtoMessage() {} -func (*TCPSocketAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{176} } +func (*TCPSocketAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{177} } func (m *Taint) Reset() { *m = Taint{} } func (*Taint) ProtoMessage() {} -func (*Taint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{177} } +func (*Taint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{178} } func (m *Toleration) Reset() { *m = Toleration{} } func (*Toleration) ProtoMessage() {} -func (*Toleration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{178} } +func (*Toleration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{179} } func (m *Volume) Reset() { *m = Volume{} } func (*Volume) ProtoMessage() {} -func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{179} } +func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{180} } func (m *VolumeDevice) Reset() { *m = VolumeDevice{} } func (*VolumeDevice) ProtoMessage() {} -func (*VolumeDevice) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{180} } +func (*VolumeDevice) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{181} } func (m *VolumeMount) Reset() { *m = VolumeMount{} } func (*VolumeMount) ProtoMessage() {} -func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{181} } +func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{182} } func (m *VolumeNodeAffinity) Reset() { *m = VolumeNodeAffinity{} } func (*VolumeNodeAffinity) ProtoMessage() {} -func (*VolumeNodeAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{182} } +func (*VolumeNodeAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{183} } func (m *VolumeProjection) Reset() { *m = VolumeProjection{} } func (*VolumeProjection) ProtoMessage() {} -func (*VolumeProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{183} } +func (*VolumeProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{184} } func (m *VolumeSource) Reset() { *m = VolumeSource{} } func (*VolumeSource) ProtoMessage() {} -func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{184} } +func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{185} } func (m *VsphereVirtualDiskVolumeSource) Reset() { *m = VsphereVirtualDiskVolumeSource{} } func (*VsphereVirtualDiskVolumeSource) ProtoMessage() {} func (*VsphereVirtualDiskVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{185} + return fileDescriptorGenerated, []int{186} } func (m *WeightedPodAffinityTerm) Reset() { *m = WeightedPodAffinityTerm{} } func (*WeightedPodAffinityTerm) ProtoMessage() {} func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{186} + return fileDescriptorGenerated, []int{187} } func init() { @@ -1217,6 +1224,7 @@ func init() { proto.RegisterType((*Service)(nil), "k8s.io.api.core.v1.Service") proto.RegisterType((*ServiceAccount)(nil), "k8s.io.api.core.v1.ServiceAccount") proto.RegisterType((*ServiceAccountList)(nil), "k8s.io.api.core.v1.ServiceAccountList") + proto.RegisterType((*ServiceAccountTokenProjection)(nil), "k8s.io.api.core.v1.ServiceAccountTokenProjection") proto.RegisterType((*ServiceList)(nil), "k8s.io.api.core.v1.ServiceList") proto.RegisterType((*ServicePort)(nil), "k8s.io.api.core.v1.ServicePort") proto.RegisterType((*ServiceProxyOptions)(nil), "k8s.io.api.core.v1.ServiceProxyOptions") @@ -9472,6 +9480,37 @@ func (m *ServiceAccountList) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *ServiceAccountTokenProjection) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ServiceAccountTokenProjection) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Audience))) + i += copy(dAtA[i:], m.Audience) + if m.ExpirationSeconds != nil { + dAtA[i] = 0x10 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(*m.ExpirationSeconds)) + } + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Path))) + i += copy(dAtA[i:], m.Path) + return i, nil +} + func (m *ServiceList) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -10157,6 +10196,16 @@ func (m *VolumeProjection) MarshalTo(dAtA []byte) (int, error) { } i += n208 } + if m.ServiceAccountToken != nil { + dAtA[i] = 0x22 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ServiceAccountToken.Size())) + n209, err := m.ServiceAccountToken.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n209 + } return i, nil } @@ -10179,151 +10228,151 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.HostPath.Size())) - n209, err := m.HostPath.MarshalTo(dAtA[i:]) + n210, err := m.HostPath.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n209 + i += n210 } if m.EmptyDir != nil { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.EmptyDir.Size())) - n210, err := m.EmptyDir.MarshalTo(dAtA[i:]) + n211, err := m.EmptyDir.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n210 + i += n211 } if m.GCEPersistentDisk != nil { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.GCEPersistentDisk.Size())) - n211, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) + n212, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n211 + i += n212 } if m.AWSElasticBlockStore != nil { dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) - n212, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) + n213, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n212 + i += n213 } if m.GitRepo != nil { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.GitRepo.Size())) - n213, err := m.GitRepo.MarshalTo(dAtA[i:]) + n214, err := m.GitRepo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n213 + i += n214 } if m.Secret != nil { dAtA[i] = 0x32 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) - n214, err := m.Secret.MarshalTo(dAtA[i:]) + n215, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n214 + i += n215 } if m.NFS != nil { dAtA[i] = 0x3a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) - n215, err := m.NFS.MarshalTo(dAtA[i:]) + n216, err := m.NFS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n215 + i += n216 } if m.ISCSI != nil { dAtA[i] = 0x42 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) - n216, err := m.ISCSI.MarshalTo(dAtA[i:]) + n217, err := m.ISCSI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n216 + i += n217 } if m.Glusterfs != nil { dAtA[i] = 0x4a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) - n217, err := m.Glusterfs.MarshalTo(dAtA[i:]) + n218, err := m.Glusterfs.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n217 + i += n218 } if m.PersistentVolumeClaim != nil { dAtA[i] = 0x52 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeClaim.Size())) - n218, err := m.PersistentVolumeClaim.MarshalTo(dAtA[i:]) + n219, err := m.PersistentVolumeClaim.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n218 + i += n219 } if m.RBD != nil { dAtA[i] = 0x5a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) - n219, err := m.RBD.MarshalTo(dAtA[i:]) + n220, err := m.RBD.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n219 + i += n220 } if m.FlexVolume != nil { dAtA[i] = 0x62 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) - n220, err := m.FlexVolume.MarshalTo(dAtA[i:]) + n221, err := m.FlexVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n220 + i += n221 } if m.Cinder != nil { dAtA[i] = 0x6a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) - n221, err := m.Cinder.MarshalTo(dAtA[i:]) + n222, err := m.Cinder.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n221 + i += n222 } if m.CephFS != nil { dAtA[i] = 0x72 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) - n222, err := m.CephFS.MarshalTo(dAtA[i:]) + n223, err := m.CephFS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n222 + i += n223 } if m.Flocker != nil { dAtA[i] = 0x7a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) - n223, err := m.Flocker.MarshalTo(dAtA[i:]) + n224, err := m.Flocker.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n223 + i += n224 } if m.DownwardAPI != nil { dAtA[i] = 0x82 @@ -10331,11 +10380,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) - n224, err := m.DownwardAPI.MarshalTo(dAtA[i:]) + n225, err := m.DownwardAPI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n224 + i += n225 } if m.FC != nil { dAtA[i] = 0x8a @@ -10343,11 +10392,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.FC.Size())) - n225, err := m.FC.MarshalTo(dAtA[i:]) + n226, err := m.FC.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n225 + i += n226 } if m.AzureFile != nil { dAtA[i] = 0x92 @@ -10355,11 +10404,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.AzureFile.Size())) - n226, err := m.AzureFile.MarshalTo(dAtA[i:]) + n227, err := m.AzureFile.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n226 + i += n227 } if m.ConfigMap != nil { dAtA[i] = 0x9a @@ -10367,11 +10416,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) - n227, err := m.ConfigMap.MarshalTo(dAtA[i:]) + n228, err := m.ConfigMap.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n227 + i += n228 } if m.VsphereVolume != nil { dAtA[i] = 0xa2 @@ -10379,11 +10428,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.VsphereVolume.Size())) - n228, err := m.VsphereVolume.MarshalTo(dAtA[i:]) + n229, err := m.VsphereVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n228 + i += n229 } if m.Quobyte != nil { dAtA[i] = 0xaa @@ -10391,11 +10440,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Quobyte.Size())) - n229, err := m.Quobyte.MarshalTo(dAtA[i:]) + n230, err := m.Quobyte.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n229 + i += n230 } if m.AzureDisk != nil { dAtA[i] = 0xb2 @@ -10403,11 +10452,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size())) - n230, err := m.AzureDisk.MarshalTo(dAtA[i:]) + n231, err := m.AzureDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n230 + i += n231 } if m.PhotonPersistentDisk != nil { dAtA[i] = 0xba @@ -10415,11 +10464,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PhotonPersistentDisk.Size())) - n231, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) + n232, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n231 + i += n232 } if m.PortworxVolume != nil { dAtA[i] = 0xc2 @@ -10427,11 +10476,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PortworxVolume.Size())) - n232, err := m.PortworxVolume.MarshalTo(dAtA[i:]) + n233, err := m.PortworxVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n232 + i += n233 } if m.ScaleIO != nil { dAtA[i] = 0xca @@ -10439,11 +10488,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ScaleIO.Size())) - n233, err := m.ScaleIO.MarshalTo(dAtA[i:]) + n234, err := m.ScaleIO.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n233 + i += n234 } if m.Projected != nil { dAtA[i] = 0xd2 @@ -10451,11 +10500,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Projected.Size())) - n234, err := m.Projected.MarshalTo(dAtA[i:]) + n235, err := m.Projected.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n234 + i += n235 } if m.StorageOS != nil { dAtA[i] = 0xda @@ -10463,11 +10512,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.StorageOS.Size())) - n235, err := m.StorageOS.MarshalTo(dAtA[i:]) + n236, err := m.StorageOS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n235 + i += n236 } return i, nil } @@ -10527,11 +10576,11 @@ func (m *WeightedPodAffinityTerm) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PodAffinityTerm.Size())) - n236, err := m.PodAffinityTerm.MarshalTo(dAtA[i:]) + n237, err := m.PodAffinityTerm.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n236 + i += n237 return i, nil } @@ -13555,6 +13604,19 @@ func (m *ServiceAccountList) Size() (n int) { return n } +func (m *ServiceAccountTokenProjection) Size() (n int) { + var l int + _ = l + l = len(m.Audience) + n += 1 + l + sovGenerated(uint64(l)) + if m.ExpirationSeconds != nil { + n += 1 + sovGenerated(uint64(*m.ExpirationSeconds)) + } + l = len(m.Path) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func (m *ServiceList) Size() (n int) { var l int _ = l @@ -13808,6 +13870,10 @@ func (m *VolumeProjection) Size() (n int) { l = m.ConfigMap.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.ServiceAccountToken != nil { + l = m.ServiceAccountToken.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -16351,6 +16417,18 @@ func (this *ServiceAccountList) String() string { }, "") return s } +func (this *ServiceAccountTokenProjection) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ServiceAccountTokenProjection{`, + `Audience:` + fmt.Sprintf("%v", this.Audience) + `,`, + `ExpirationSeconds:` + valueToStringGenerated(this.ExpirationSeconds) + `,`, + `Path:` + fmt.Sprintf("%v", this.Path) + `,`, + `}`, + }, "") + return s +} func (this *ServiceList) String() string { if this == nil { return "nil" @@ -16569,6 +16647,7 @@ func (this *VolumeProjection) String() string { `Secret:` + strings.Replace(fmt.Sprintf("%v", this.Secret), "SecretProjection", "SecretProjection", 1) + `,`, `DownwardAPI:` + strings.Replace(fmt.Sprintf("%v", this.DownwardAPI), "DownwardAPIProjection", "DownwardAPIProjection", 1) + `,`, `ConfigMap:` + strings.Replace(fmt.Sprintf("%v", this.ConfigMap), "ConfigMapProjection", "ConfigMapProjection", 1) + `,`, + `ServiceAccountToken:` + strings.Replace(fmt.Sprintf("%v", this.ServiceAccountToken), "ServiceAccountTokenProjection", "ServiceAccountTokenProjection", 1) + `,`, `}`, }, "") return s @@ -45560,6 +45639,134 @@ func (m *ServiceAccountList) Unmarshal(dAtA []byte) error { } return nil } +func (m *ServiceAccountTokenProjection) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ServiceAccountTokenProjection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ServiceAccountTokenProjection: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Audience", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Audience = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpirationSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ExpirationSeconds = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ServiceList) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -48158,6 +48365,39 @@ func (m *VolumeProjection) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceAccountToken", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ServiceAccountToken == nil { + m.ServiceAccountToken = &ServiceAccountTokenProjection{} + } + if err := m.ServiceAccountToken.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -49495,778 +49735,782 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 12356 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x5d, 0x6c, 0x24, 0x57, - 0x76, 0x18, 0xbc, 0xd5, 0xdd, 0xfc, 0xe9, 0xc3, 0xff, 0x3b, 0x33, 0x12, 0x87, 0x92, 0xa6, 0x47, - 0xa5, 0xdd, 0xd1, 0x68, 0x25, 0x91, 0xd6, 0x48, 0x5a, 0xc9, 0xab, 0x5d, 0xd9, 0x24, 0x9b, 0x9c, - 0x69, 0xcd, 0x90, 0xd3, 0xba, 0xcd, 0x99, 0xd9, 0x5d, 0x6b, 0xd7, 0x5b, 0xec, 0xbe, 0x24, 0x4b, - 0x2c, 0x56, 0xb5, 0xaa, 0xaa, 0x39, 0x43, 0xc1, 0x06, 0xbe, 0x4f, 0x4e, 0x9c, 0x38, 0xf6, 0xc3, - 0x22, 0x36, 0x12, 0xc7, 0x36, 0x1c, 0x20, 0x71, 0x60, 0x6f, 0x9c, 0x04, 0x71, 0xec, 0xd8, 0xce, - 0xae, 0x93, 0x38, 0x4e, 0x1e, 0x9c, 0x97, 0x8d, 0x93, 0x97, 0x35, 0x60, 0x84, 0xb1, 0x69, 0x23, - 0x81, 0x1f, 0x12, 0x04, 0x31, 0x10, 0xc0, 0x8c, 0x11, 0x07, 0xf7, 0xb7, 0xee, 0xad, 0xae, 0xea, - 0x6e, 0x8e, 0x38, 0x94, 0x6c, 0xec, 0x5b, 0xf7, 0x3d, 0xe7, 0x9e, 0x7b, 0xeb, 0xfe, 0x9e, 0x73, - 0xee, 0xf9, 0x81, 0x37, 0x76, 0x5f, 0x8f, 0xe6, 0xdd, 0x60, 0x61, 0xb7, 0xb3, 0x49, 0x42, 0x9f, - 0xc4, 0x24, 0x5a, 0xd8, 0x27, 0x7e, 0x2b, 0x08, 0x17, 0x04, 0xc0, 0x69, 0xbb, 0x0b, 0xcd, 0x20, - 0x24, 0x0b, 0xfb, 0x2f, 0x2d, 0x6c, 0x13, 0x9f, 0x84, 0x4e, 0x4c, 0x5a, 0xf3, 0xed, 0x30, 0x88, - 0x03, 0x84, 0x38, 0xce, 0xbc, 0xd3, 0x76, 0xe7, 0x29, 0xce, 0xfc, 0xfe, 0x4b, 0x73, 0x2f, 0x6e, - 0xbb, 0xf1, 0x4e, 0x67, 0x73, 0xbe, 0x19, 0xec, 0x2d, 0x6c, 0x07, 0xdb, 0xc1, 0x02, 0x43, 0xdd, - 0xec, 0x6c, 0xb1, 0x7f, 0xec, 0x0f, 0xfb, 0xc5, 0x49, 0xcc, 0xad, 0x25, 0xcd, 0x90, 0x07, 0x31, - 0xf1, 0x23, 0x37, 0xf0, 0xa3, 0x17, 0x9d, 0xb6, 0x1b, 0x91, 0x70, 0x9f, 0x84, 0x0b, 0xed, 0xdd, - 0x6d, 0x0a, 0x8b, 0x4c, 0x84, 0x85, 0xfd, 0x97, 0x36, 0x49, 0xec, 0x74, 0xf5, 0x68, 0xee, 0x95, - 0x84, 0xdc, 0x9e, 0xd3, 0xdc, 0x71, 0x7d, 0x12, 0x1e, 0x48, 0x1a, 0x0b, 0x21, 0x89, 0x82, 0x4e, - 0xd8, 0x24, 0x27, 0xaa, 0x15, 0x2d, 0xec, 0x91, 0xd8, 0xc9, 0xf8, 0xfa, 0xb9, 0x85, 0xbc, 0x5a, - 0x61, 0xc7, 0x8f, 0xdd, 0xbd, 0xee, 0x66, 0x3e, 0xd3, 0xaf, 0x42, 0xd4, 0xdc, 0x21, 0x7b, 0x4e, - 0x57, 0xbd, 0x97, 0xf3, 0xea, 0x75, 0x62, 0xd7, 0x5b, 0x70, 0xfd, 0x38, 0x8a, 0xc3, 0x74, 0x25, - 0xfb, 0xdb, 0x16, 0x5c, 0x5e, 0xbc, 0xd7, 0x58, 0xf1, 0x9c, 0x28, 0x76, 0x9b, 0x4b, 0x5e, 0xd0, - 0xdc, 0x6d, 0xc4, 0x41, 0x48, 0xee, 0x06, 0x5e, 0x67, 0x8f, 0x34, 0xd8, 0x40, 0xa0, 0x17, 0x60, - 0x74, 0x9f, 0xfd, 0xaf, 0x55, 0x67, 0xad, 0xcb, 0xd6, 0xd5, 0xf2, 0xd2, 0xf4, 0x6f, 0x1f, 0x56, - 0x3e, 0x71, 0x74, 0x58, 0x19, 0xbd, 0x2b, 0xca, 0xb1, 0xc2, 0x40, 0x57, 0x60, 0x78, 0x2b, 0xda, - 0x38, 0x68, 0x93, 0xd9, 0x02, 0xc3, 0x9d, 0x14, 0xb8, 0xc3, 0xab, 0x0d, 0x5a, 0x8a, 0x05, 0x14, - 0x2d, 0x40, 0xb9, 0xed, 0x84, 0xb1, 0x1b, 0xbb, 0x81, 0x3f, 0x5b, 0xbc, 0x6c, 0x5d, 0x1d, 0x5a, - 0x9a, 0x11, 0xa8, 0xe5, 0xba, 0x04, 0xe0, 0x04, 0x87, 0x76, 0x23, 0x24, 0x4e, 0xeb, 0xb6, 0xef, - 0x1d, 0xcc, 0x96, 0x2e, 0x5b, 0x57, 0x47, 0x93, 0x6e, 0x60, 0x51, 0x8e, 0x15, 0x86, 0xfd, 0x53, - 0x05, 0x18, 0x5d, 0xdc, 0xda, 0x72, 0x7d, 0x37, 0x3e, 0x40, 0x77, 0x61, 0xdc, 0x0f, 0x5a, 0x44, - 0xfe, 0x67, 0x5f, 0x31, 0x76, 0xed, 0xf2, 0x7c, 0xf7, 0xca, 0x9c, 0x5f, 0xd7, 0xf0, 0x96, 0xa6, - 0x8f, 0x0e, 0x2b, 0xe3, 0x7a, 0x09, 0x36, 0xe8, 0x20, 0x0c, 0x63, 0xed, 0xa0, 0xa5, 0xc8, 0x16, - 0x18, 0xd9, 0x4a, 0x16, 0xd9, 0x7a, 0x82, 0xb6, 0x34, 0x75, 0x74, 0x58, 0x19, 0xd3, 0x0a, 0xb0, - 0x4e, 0x04, 0x6d, 0xc2, 0x14, 0xfd, 0xeb, 0xc7, 0xae, 0xa2, 0x5b, 0x64, 0x74, 0x9f, 0xc9, 0xa3, - 0xab, 0xa1, 0x2e, 0x9d, 0x3b, 0x3a, 0xac, 0x4c, 0xa5, 0x0a, 0x71, 0x9a, 0xa0, 0xfd, 0x3e, 0x4c, - 0x2e, 0xc6, 0xb1, 0xd3, 0xdc, 0x21, 0x2d, 0x3e, 0x83, 0xe8, 0x15, 0x28, 0xf9, 0xce, 0x1e, 0x11, - 0xf3, 0x7b, 0x59, 0x0c, 0x6c, 0x69, 0xdd, 0xd9, 0x23, 0xc7, 0x87, 0x95, 0xe9, 0x3b, 0xbe, 0xfb, - 0x5e, 0x47, 0xac, 0x0a, 0x5a, 0x86, 0x19, 0x36, 0xba, 0x06, 0xd0, 0x22, 0xfb, 0x6e, 0x93, 0xd4, - 0x9d, 0x78, 0x47, 0xcc, 0x37, 0x12, 0x75, 0xa1, 0xaa, 0x20, 0x58, 0xc3, 0xb2, 0x1f, 0x40, 0x79, - 0x71, 0x3f, 0x70, 0x5b, 0xf5, 0xa0, 0x15, 0xa1, 0x5d, 0x98, 0x6a, 0x87, 0x64, 0x8b, 0x84, 0xaa, - 0x68, 0xd6, 0xba, 0x5c, 0xbc, 0x3a, 0x76, 0xed, 0x6a, 0xe6, 0xc7, 0x9a, 0xa8, 0x2b, 0x7e, 0x1c, - 0x1e, 0x2c, 0x3d, 0x2e, 0xda, 0x9b, 0x4a, 0x41, 0x71, 0x9a, 0xb2, 0xfd, 0xef, 0x0a, 0x70, 0x61, - 0xf1, 0xfd, 0x4e, 0x48, 0xaa, 0x6e, 0xb4, 0x9b, 0x5e, 0xe1, 0x2d, 0x37, 0xda, 0x5d, 0x4f, 0x46, - 0x40, 0x2d, 0xad, 0xaa, 0x28, 0xc7, 0x0a, 0x03, 0xbd, 0x08, 0x23, 0xf4, 0xf7, 0x1d, 0x5c, 0x13, - 0x9f, 0x7c, 0x4e, 0x20, 0x8f, 0x55, 0x9d, 0xd8, 0xa9, 0x72, 0x10, 0x96, 0x38, 0x68, 0x0d, 0xc6, - 0x9a, 0x6c, 0x43, 0x6e, 0xaf, 0x05, 0x2d, 0xc2, 0x26, 0xb3, 0xbc, 0xf4, 0x3c, 0x45, 0x5f, 0x4e, - 0x8a, 0x8f, 0x0f, 0x2b, 0xb3, 0xbc, 0x6f, 0x82, 0x84, 0x06, 0xc3, 0x7a, 0x7d, 0x64, 0xab, 0xfd, - 0x55, 0x62, 0x94, 0x20, 0x63, 0x6f, 0x5d, 0xd5, 0xb6, 0xca, 0x10, 0xdb, 0x2a, 0xe3, 0xd9, 0xdb, - 0x04, 0xbd, 0x04, 0xa5, 0x5d, 0xd7, 0x6f, 0xcd, 0x0e, 0x33, 0x5a, 0x4f, 0xd1, 0x39, 0xbf, 0xe9, - 0xfa, 0xad, 0xe3, 0xc3, 0xca, 0x8c, 0xd1, 0x1d, 0x5a, 0x88, 0x19, 0xaa, 0xfd, 0x27, 0x16, 0x54, - 0x18, 0x6c, 0xd5, 0xf5, 0x48, 0x9d, 0x84, 0x91, 0x1b, 0xc5, 0xc4, 0x8f, 0x8d, 0x01, 0xbd, 0x06, - 0x10, 0x91, 0x66, 0x48, 0x62, 0x6d, 0x48, 0xd5, 0xc2, 0x68, 0x28, 0x08, 0xd6, 0xb0, 0xe8, 0x81, - 0x10, 0xed, 0x38, 0x21, 0x5b, 0x5f, 0x62, 0x60, 0xd5, 0x81, 0xd0, 0x90, 0x00, 0x9c, 0xe0, 0x18, - 0x07, 0x42, 0xb1, 0xdf, 0x81, 0x80, 0x3e, 0x0f, 0x53, 0x49, 0x63, 0x51, 0xdb, 0x69, 0xca, 0x01, - 0x64, 0x5b, 0xa6, 0x61, 0x82, 0x70, 0x1a, 0xd7, 0xfe, 0x87, 0x96, 0x58, 0x3c, 0xf4, 0xab, 0x3f, - 0xe6, 0xdf, 0x6a, 0xff, 0xba, 0x05, 0x23, 0x4b, 0xae, 0xdf, 0x72, 0xfd, 0x6d, 0xf4, 0x55, 0x18, - 0xa5, 0x77, 0x53, 0xcb, 0x89, 0x1d, 0x71, 0xee, 0x7d, 0x97, 0xb6, 0xb7, 0xd4, 0x55, 0x31, 0xdf, - 0xde, 0xdd, 0xa6, 0x05, 0xd1, 0x3c, 0xc5, 0xa6, 0xbb, 0xed, 0xf6, 0xe6, 0xbb, 0xa4, 0x19, 0xaf, - 0x91, 0xd8, 0x49, 0x3e, 0x27, 0x29, 0xc3, 0x8a, 0x2a, 0xba, 0x09, 0xc3, 0xb1, 0x13, 0x6e, 0x93, - 0x58, 0x1c, 0x80, 0x99, 0x07, 0x15, 0xaf, 0x89, 0xe9, 0x8e, 0x24, 0x7e, 0x93, 0x24, 0xd7, 0xc2, - 0x06, 0xab, 0x8a, 0x05, 0x09, 0xfb, 0x6f, 0x0c, 0xc3, 0xc5, 0xe5, 0x46, 0x2d, 0x67, 0x5d, 0x5d, - 0x81, 0xe1, 0x56, 0xe8, 0xee, 0x93, 0x50, 0x8c, 0xb3, 0xa2, 0x52, 0x65, 0xa5, 0x58, 0x40, 0xd1, - 0xeb, 0x30, 0xce, 0x2f, 0xa4, 0x1b, 0x8e, 0xdf, 0xf2, 0xe4, 0x10, 0x9f, 0x17, 0xd8, 0xe3, 0x77, - 0x35, 0x18, 0x36, 0x30, 0x4f, 0xb8, 0xa8, 0xae, 0xa4, 0x36, 0x63, 0xde, 0x65, 0xf7, 0x23, 0x16, - 0x4c, 0xf3, 0x66, 0x16, 0xe3, 0x38, 0x74, 0x37, 0x3b, 0x31, 0x89, 0x66, 0x87, 0xd8, 0x49, 0xb7, - 0x9c, 0x35, 0x5a, 0xb9, 0x23, 0x30, 0x7f, 0x37, 0x45, 0x85, 0x1f, 0x82, 0xb3, 0xa2, 0xdd, 0xe9, - 0x34, 0x18, 0x77, 0x35, 0x8b, 0x7e, 0xc8, 0x82, 0xb9, 0x66, 0xe0, 0xc7, 0x61, 0xe0, 0x79, 0x24, - 0xac, 0x77, 0x36, 0x3d, 0x37, 0xda, 0xe1, 0xeb, 0x14, 0x93, 0x2d, 0x76, 0x12, 0xe4, 0xcc, 0xa1, - 0x42, 0x12, 0x73, 0x78, 0xe9, 0xe8, 0xb0, 0x32, 0xb7, 0x9c, 0x4b, 0x0a, 0xf7, 0x68, 0x06, 0xed, - 0x02, 0xa2, 0x57, 0x69, 0x23, 0x76, 0xb6, 0x49, 0xd2, 0xf8, 0xc8, 0xe0, 0x8d, 0x3f, 0x76, 0x74, - 0x58, 0x41, 0xeb, 0x5d, 0x24, 0x70, 0x06, 0x59, 0xf4, 0x1e, 0x9c, 0xa7, 0xa5, 0x5d, 0xdf, 0x3a, - 0x3a, 0x78, 0x73, 0xb3, 0x47, 0x87, 0x95, 0xf3, 0xeb, 0x19, 0x44, 0x70, 0x26, 0xe9, 0xb9, 0x65, - 0xb8, 0x90, 0x39, 0x55, 0x68, 0x1a, 0x8a, 0xbb, 0x84, 0xb3, 0x20, 0x65, 0x4c, 0x7f, 0xa2, 0xf3, - 0x30, 0xb4, 0xef, 0x78, 0x1d, 0xb1, 0x4a, 0x31, 0xff, 0xf3, 0xd9, 0xc2, 0xeb, 0x96, 0xdd, 0x84, - 0xf1, 0x65, 0xa7, 0xed, 0x6c, 0xba, 0x9e, 0x1b, 0xbb, 0x24, 0x42, 0xcf, 0x42, 0xd1, 0x69, 0xb5, - 0xd8, 0x15, 0x59, 0x5e, 0xba, 0x70, 0x74, 0x58, 0x29, 0x2e, 0xb6, 0xe8, 0x59, 0x0d, 0x0a, 0xeb, - 0x00, 0x53, 0x0c, 0xf4, 0x69, 0x28, 0xb5, 0xc2, 0xa0, 0x3d, 0x5b, 0x60, 0x98, 0x74, 0xa8, 0x4a, - 0xd5, 0x30, 0x68, 0xa7, 0x50, 0x19, 0x8e, 0xfd, 0x9b, 0x05, 0x78, 0x72, 0x99, 0xb4, 0x77, 0x56, - 0x1b, 0x39, 0x9b, 0xee, 0x2a, 0x8c, 0xee, 0x05, 0xbe, 0x1b, 0x07, 0x61, 0x24, 0x9a, 0x66, 0xb7, - 0xc9, 0x9a, 0x28, 0xc3, 0x0a, 0x8a, 0x2e, 0x43, 0xa9, 0x9d, 0x70, 0x02, 0xe3, 0x92, 0x8b, 0x60, - 0x3c, 0x00, 0x83, 0x50, 0x8c, 0x4e, 0x44, 0x42, 0x71, 0x0b, 0x2a, 0x8c, 0x3b, 0x11, 0x09, 0x31, - 0x83, 0x24, 0xc7, 0x29, 0x3d, 0x68, 0xc5, 0xb6, 0x4a, 0x1d, 0xa7, 0x14, 0x82, 0x35, 0x2c, 0x54, - 0x87, 0x72, 0xa4, 0x26, 0x75, 0x68, 0xf0, 0x49, 0x9d, 0x60, 0xe7, 0xad, 0x9a, 0xc9, 0x84, 0x88, - 0x71, 0x0c, 0x0c, 0xf7, 0x3d, 0x6f, 0xbf, 0x59, 0x00, 0xc4, 0x87, 0xf0, 0x2f, 0xd8, 0xc0, 0xdd, - 0xe9, 0x1e, 0xb8, 0x4c, 0xce, 0xeb, 0x56, 0xd0, 0x74, 0xbc, 0xf4, 0x11, 0x7e, 0x5a, 0xa3, 0xf7, - 0x93, 0x16, 0xa0, 0x65, 0xd7, 0x6f, 0x91, 0xf0, 0x0c, 0xc4, 0x8e, 0x93, 0x5d, 0xa4, 0xb7, 0x60, - 0x72, 0xd9, 0x73, 0x89, 0x1f, 0xd7, 0xea, 0xcb, 0x81, 0xbf, 0xe5, 0x6e, 0xa3, 0xcf, 0xc2, 0x24, - 0x95, 0xc2, 0x82, 0x4e, 0xdc, 0x20, 0xcd, 0xc0, 0x67, 0x0c, 0x2b, 0x95, 0x5d, 0xd0, 0xd1, 0x61, - 0x65, 0x72, 0xc3, 0x80, 0xe0, 0x14, 0xa6, 0xfd, 0x7b, 0xf4, 0x43, 0x83, 0xbd, 0x76, 0xe0, 0x13, - 0x3f, 0x5e, 0x0e, 0xfc, 0x16, 0x17, 0x6c, 0x3e, 0x0b, 0xa5, 0x98, 0x76, 0x9c, 0x7f, 0xe4, 0x15, - 0x39, 0xb5, 0xb4, 0xbb, 0xc7, 0x87, 0x95, 0xc7, 0xba, 0x6b, 0xb0, 0x0f, 0x62, 0x75, 0xd0, 0x77, - 0xc3, 0x70, 0x14, 0x3b, 0x71, 0x27, 0x12, 0x9f, 0xfd, 0xb4, 0xfc, 0xec, 0x06, 0x2b, 0x3d, 0x3e, - 0xac, 0x4c, 0xa9, 0x6a, 0xbc, 0x08, 0x8b, 0x0a, 0xe8, 0x39, 0x18, 0xd9, 0x23, 0x51, 0xe4, 0x6c, - 0x4b, 0x9e, 0x74, 0x4a, 0xd4, 0x1d, 0x59, 0xe3, 0xc5, 0x58, 0xc2, 0xd1, 0x33, 0x30, 0x44, 0xc2, - 0x30, 0x08, 0xc5, 0xaa, 0x9a, 0x10, 0x88, 0x43, 0x2b, 0xb4, 0x10, 0x73, 0x98, 0xfd, 0x1f, 0x2c, - 0x98, 0x52, 0x7d, 0xe5, 0x6d, 0x9d, 0x01, 0xf3, 0xf1, 0x25, 0x80, 0xa6, 0xfc, 0xc0, 0x88, 0x9d, - 0x77, 0x63, 0xd7, 0xae, 0x64, 0x5e, 0xa9, 0x5d, 0xc3, 0x98, 0x50, 0x56, 0x45, 0x11, 0xd6, 0xa8, - 0xd9, 0xff, 0xd2, 0x82, 0x73, 0xa9, 0x2f, 0xba, 0xe5, 0x46, 0x31, 0x7a, 0xa7, 0xeb, 0xab, 0xe6, - 0x07, 0xfb, 0x2a, 0x5a, 0x9b, 0x7d, 0x93, 0x5a, 0x73, 0xb2, 0x44, 0xfb, 0xa2, 0x1b, 0x30, 0xe4, - 0xc6, 0x64, 0x4f, 0x7e, 0xcc, 0x33, 0x3d, 0x3f, 0x86, 0xf7, 0x2a, 0x99, 0x91, 0x1a, 0xad, 0x89, - 0x39, 0x01, 0xfb, 0xc7, 0x8b, 0x50, 0xe6, 0xcb, 0x76, 0xcd, 0x69, 0x9f, 0xc1, 0x5c, 0xd4, 0xa0, - 0xc4, 0xa8, 0xf3, 0x8e, 0x3f, 0x9b, 0xdd, 0x71, 0xd1, 0x9d, 0x79, 0x2a, 0x59, 0x70, 0xe6, 0x45, - 0x1d, 0x66, 0xb4, 0x08, 0x33, 0x12, 0xc8, 0x01, 0xd8, 0x74, 0x7d, 0x27, 0x3c, 0xa0, 0x65, 0xb3, - 0x45, 0x46, 0xf0, 0xc5, 0xde, 0x04, 0x97, 0x14, 0x3e, 0x27, 0xab, 0xfa, 0x9a, 0x00, 0xb0, 0x46, - 0x74, 0xee, 0x35, 0x28, 0x2b, 0xe4, 0x93, 0xdc, 0xca, 0x73, 0x9f, 0x87, 0xa9, 0x54, 0x5b, 0xfd, - 0xaa, 0x8f, 0xeb, 0x97, 0xfa, 0x37, 0xd8, 0x29, 0x20, 0x7a, 0xbd, 0xe2, 0xef, 0x8b, 0xe3, 0xee, - 0x7d, 0x38, 0xef, 0x65, 0x9c, 0xb2, 0x62, 0xaa, 0x06, 0x3f, 0x95, 0x9f, 0x14, 0x9f, 0x7d, 0x3e, - 0x0b, 0x8a, 0x33, 0xdb, 0xa0, 0x17, 0x55, 0xd0, 0xa6, 0x6b, 0xde, 0xf1, 0x58, 0x7f, 0x85, 0xbc, - 0x78, 0x5b, 0x94, 0x61, 0x05, 0xa5, 0x47, 0xd8, 0x79, 0xd5, 0xf9, 0x9b, 0xe4, 0xa0, 0x41, 0x3c, - 0xd2, 0x8c, 0x83, 0xf0, 0x23, 0xed, 0xfe, 0x53, 0x7c, 0xf4, 0xf9, 0x09, 0x38, 0x26, 0x08, 0x14, - 0x6f, 0x92, 0x03, 0x3e, 0x15, 0xfa, 0xd7, 0x15, 0x7b, 0x7e, 0xdd, 0x2f, 0x59, 0x30, 0xa1, 0xbe, - 0xee, 0x0c, 0xb6, 0xfa, 0x92, 0xb9, 0xd5, 0x9f, 0xea, 0xb9, 0xc0, 0x73, 0x36, 0xf9, 0x37, 0x0b, - 0x70, 0x51, 0xe1, 0x50, 0x06, 0x95, 0xff, 0x11, 0xab, 0x6a, 0x01, 0xca, 0xbe, 0x92, 0x77, 0x2d, - 0x53, 0xd0, 0x4c, 0xa4, 0xdd, 0x04, 0x87, 0xf2, 0x19, 0x7e, 0x22, 0x94, 0x8e, 0xeb, 0x8a, 0x20, - 0xa1, 0xf4, 0x59, 0x82, 0x62, 0xc7, 0x6d, 0x89, 0x3b, 0xe3, 0xbb, 0xe4, 0x68, 0xdf, 0xa9, 0x55, - 0x8f, 0x0f, 0x2b, 0x4f, 0xe7, 0x29, 0x21, 0xe9, 0x65, 0x15, 0xcd, 0xdf, 0xa9, 0x55, 0x31, 0xad, - 0x8c, 0x16, 0x61, 0x4a, 0xea, 0x59, 0xef, 0x52, 0xa6, 0x33, 0xf0, 0xc5, 0xd5, 0xa2, 0xb4, 0x39, - 0xd8, 0x04, 0xe3, 0x34, 0x3e, 0xaa, 0xc2, 0xf4, 0x6e, 0x67, 0x93, 0x78, 0x24, 0xe6, 0x1f, 0x7c, - 0x93, 0x70, 0x5d, 0x47, 0x39, 0x11, 0x86, 0x6e, 0xa6, 0xe0, 0xb8, 0xab, 0x86, 0xfd, 0xe7, 0xec, - 0x88, 0x17, 0xa3, 0x57, 0x0f, 0x03, 0xba, 0xb0, 0x28, 0xf5, 0x8f, 0x72, 0x39, 0x0f, 0xb2, 0x2a, - 0x6e, 0x92, 0x83, 0x8d, 0x80, 0xb2, 0x87, 0xd9, 0xab, 0xc2, 0x58, 0xf3, 0xa5, 0x9e, 0x6b, 0xfe, - 0x57, 0x0a, 0x70, 0x41, 0x8d, 0x80, 0xc1, 0x80, 0xfd, 0x45, 0x1f, 0x83, 0x97, 0x60, 0xac, 0x45, - 0xb6, 0x9c, 0x8e, 0x17, 0x2b, 0xc5, 0xdb, 0x10, 0x57, 0xbe, 0x56, 0x93, 0x62, 0xac, 0xe3, 0x9c, - 0x60, 0xd8, 0x7e, 0x6e, 0x8c, 0xdd, 0xad, 0xb1, 0x43, 0xd7, 0xb8, 0xda, 0x35, 0x56, 0xee, 0xae, - 0x79, 0x06, 0x86, 0xdc, 0x3d, 0xca, 0x6b, 0x15, 0x4c, 0x16, 0xaa, 0x46, 0x0b, 0x31, 0x87, 0xa1, - 0x4f, 0xc1, 0x48, 0x33, 0xd8, 0xdb, 0x73, 0xfc, 0x16, 0xbb, 0xf2, 0xca, 0x4b, 0x63, 0x94, 0x1d, - 0x5b, 0xe6, 0x45, 0x58, 0xc2, 0xd0, 0x93, 0x50, 0x72, 0xc2, 0xed, 0x68, 0xb6, 0xc4, 0x70, 0x46, - 0x69, 0x4b, 0x8b, 0xe1, 0x76, 0x84, 0x59, 0x29, 0x95, 0x03, 0xee, 0x07, 0xe1, 0xae, 0xeb, 0x6f, - 0x57, 0xdd, 0x50, 0x6c, 0x09, 0x75, 0x17, 0xde, 0x53, 0x10, 0xac, 0x61, 0xa1, 0x55, 0x18, 0x6a, - 0x07, 0x61, 0x1c, 0xcd, 0x0e, 0xb3, 0xe1, 0x7e, 0x3a, 0xe7, 0x20, 0xe2, 0x5f, 0x5b, 0x0f, 0xc2, - 0x38, 0xf9, 0x00, 0xfa, 0x2f, 0xc2, 0xbc, 0x3a, 0xfa, 0x6e, 0x28, 0x12, 0x7f, 0x7f, 0x76, 0x84, - 0x51, 0x99, 0xcb, 0xa2, 0xb2, 0xe2, 0xef, 0xdf, 0x75, 0xc2, 0xe4, 0x94, 0x5e, 0xf1, 0xf7, 0x31, - 0xad, 0x83, 0xbe, 0x08, 0x65, 0xb9, 0xc5, 0x23, 0x21, 0x98, 0x67, 0x2e, 0x31, 0x79, 0x30, 0x60, - 0xf2, 0x5e, 0xc7, 0x0d, 0xc9, 0x1e, 0xf1, 0xe3, 0x28, 0x39, 0xd3, 0x24, 0x34, 0xc2, 0x09, 0x35, - 0xf4, 0x45, 0xa9, 0x0d, 0x5a, 0x0b, 0x3a, 0x7e, 0x1c, 0xcd, 0x96, 0x59, 0xf7, 0x32, 0xf5, 0xf4, - 0x77, 0x13, 0xbc, 0xb4, 0xba, 0x88, 0x57, 0xc6, 0x06, 0x29, 0x84, 0x61, 0xc2, 0x73, 0xf7, 0x89, - 0x4f, 0xa2, 0xa8, 0x1e, 0x06, 0x9b, 0x64, 0x16, 0x58, 0xcf, 0x2f, 0x66, 0xab, 0xaf, 0x83, 0x4d, - 0xb2, 0x34, 0x73, 0x74, 0x58, 0x99, 0xb8, 0xa5, 0xd7, 0xc1, 0x26, 0x09, 0x74, 0x07, 0x26, 0xa9, - 0x00, 0xe2, 0x26, 0x44, 0xc7, 0xfa, 0x11, 0x65, 0xd2, 0x07, 0x36, 0x2a, 0xe1, 0x14, 0x11, 0xf4, - 0x16, 0x94, 0x3d, 0x77, 0x8b, 0x34, 0x0f, 0x9a, 0x1e, 0x99, 0x1d, 0x67, 0x14, 0x33, 0xb7, 0xd5, - 0x2d, 0x89, 0xc4, 0x05, 0x3c, 0xf5, 0x17, 0x27, 0xd5, 0xd1, 0x5d, 0x78, 0x2c, 0x26, 0xe1, 0x9e, - 0xeb, 0x3b, 0x74, 0x3b, 0x08, 0x79, 0x81, 0x3d, 0x02, 0x4c, 0xb0, 0xf5, 0x76, 0x49, 0x0c, 0xdd, - 0x63, 0x1b, 0x99, 0x58, 0x38, 0xa7, 0x36, 0xba, 0x0d, 0x53, 0x6c, 0x27, 0xd4, 0x3b, 0x9e, 0x57, - 0x0f, 0x3c, 0xb7, 0x79, 0x30, 0x3b, 0xc9, 0x08, 0x7e, 0x4a, 0xde, 0x0b, 0x35, 0x13, 0x7c, 0x7c, - 0x58, 0x81, 0xe4, 0x1f, 0x4e, 0xd7, 0x46, 0x9b, 0x4c, 0xeb, 0xdb, 0x09, 0xdd, 0xf8, 0x80, 0xae, - 0x5f, 0xf2, 0x20, 0x9e, 0x9d, 0xea, 0xa9, 0x1f, 0xd0, 0x51, 0x95, 0x6a, 0x58, 0x2f, 0xc4, 0x69, - 0x82, 0x74, 0x6b, 0x47, 0x71, 0xcb, 0xf5, 0x67, 0xa7, 0xd9, 0x89, 0xa1, 0x76, 0x46, 0x83, 0x16, - 0x62, 0x0e, 0x63, 0x1a, 0x5f, 0xfa, 0xe3, 0x36, 0x3d, 0x41, 0x67, 0x18, 0x62, 0xa2, 0xf1, 0x95, - 0x00, 0x9c, 0xe0, 0x50, 0xa6, 0x26, 0x8e, 0x0f, 0x66, 0x11, 0x43, 0x55, 0xdb, 0x65, 0x63, 0xe3, - 0x8b, 0x98, 0x96, 0xa3, 0x5b, 0x30, 0x42, 0xfc, 0xfd, 0xd5, 0x30, 0xd8, 0x9b, 0x3d, 0x97, 0xbf, - 0x67, 0x57, 0x38, 0x0a, 0x3f, 0xd0, 0x13, 0x01, 0x4f, 0x14, 0x63, 0x49, 0x02, 0x3d, 0x80, 0xd9, - 0x8c, 0x19, 0xe1, 0x13, 0x70, 0x9e, 0x4d, 0xc0, 0xe7, 0x44, 0xdd, 0xd9, 0x8d, 0x1c, 0xbc, 0xe3, - 0x1e, 0x30, 0x9c, 0x4b, 0x1d, 0x7d, 0x19, 0x26, 0xf8, 0x86, 0xe2, 0xcf, 0x45, 0xd1, 0xec, 0x05, - 0xf6, 0x35, 0x97, 0xf3, 0x37, 0x27, 0x47, 0x5c, 0xba, 0x20, 0x3a, 0x34, 0xa1, 0x97, 0x46, 0xd8, - 0xa4, 0x66, 0x6f, 0xc2, 0xa4, 0x3a, 0xb7, 0xd8, 0xd2, 0x41, 0x15, 0x18, 0x62, 0xdc, 0x8e, 0xd0, - 0xc8, 0x94, 0xe9, 0x4c, 0x31, 0x4e, 0x08, 0xf3, 0x72, 0x36, 0x53, 0xee, 0xfb, 0x64, 0xe9, 0x20, - 0x26, 0x5c, 0xaa, 0x2e, 0x6a, 0x33, 0x25, 0x01, 0x38, 0xc1, 0xb1, 0xff, 0x2f, 0xe7, 0x1a, 0x93, - 0xc3, 0x71, 0x80, 0xeb, 0xe0, 0x05, 0x18, 0xdd, 0x09, 0xa2, 0x98, 0x62, 0xb3, 0x36, 0x86, 0x12, - 0x3e, 0xf1, 0x86, 0x28, 0xc7, 0x0a, 0x03, 0xbd, 0x01, 0x13, 0x4d, 0xbd, 0x01, 0x71, 0x97, 0xa9, - 0x21, 0x30, 0x5a, 0xc7, 0x26, 0x2e, 0x7a, 0x1d, 0x46, 0xd9, 0x63, 0x6f, 0x33, 0xf0, 0x04, 0x93, - 0x25, 0x2f, 0xe4, 0xd1, 0xba, 0x28, 0x3f, 0xd6, 0x7e, 0x63, 0x85, 0x8d, 0xae, 0xc0, 0x30, 0xed, - 0x42, 0xad, 0x2e, 0x6e, 0x11, 0xa5, 0x53, 0xb9, 0xc1, 0x4a, 0xb1, 0x80, 0xda, 0x7f, 0xb3, 0xa0, - 0x8d, 0x32, 0x95, 0x48, 0x09, 0xaa, 0xc3, 0xc8, 0x7d, 0xc7, 0x8d, 0x5d, 0x7f, 0x5b, 0xb0, 0x0b, - 0xcf, 0xf5, 0xbc, 0x52, 0x58, 0xa5, 0x7b, 0xbc, 0x02, 0xbf, 0xf4, 0xc4, 0x1f, 0x2c, 0xc9, 0x50, - 0x8a, 0x61, 0xc7, 0xf7, 0x29, 0xc5, 0xc2, 0xa0, 0x14, 0x31, 0xaf, 0xc0, 0x29, 0x8a, 0x3f, 0x58, - 0x92, 0x41, 0xef, 0x00, 0xc8, 0x65, 0x49, 0x5a, 0xe2, 0x91, 0xf5, 0x85, 0xfe, 0x44, 0x37, 0x54, - 0x9d, 0xa5, 0x49, 0x7a, 0xa5, 0x26, 0xff, 0xb1, 0x46, 0xcf, 0x8e, 0x19, 0x5b, 0xd5, 0xdd, 0x19, - 0xf4, 0x7d, 0xf4, 0x24, 0x70, 0xc2, 0x98, 0xb4, 0x16, 0x63, 0x31, 0x38, 0x9f, 0x1e, 0x4c, 0xa6, - 0xd8, 0x70, 0xf7, 0x88, 0x7e, 0x6a, 0x08, 0x22, 0x38, 0xa1, 0x67, 0xff, 0x5a, 0x11, 0x66, 0xf3, - 0xba, 0x4b, 0x17, 0x1d, 0x79, 0xe0, 0xc6, 0xcb, 0x94, 0x1b, 0xb2, 0xcc, 0x45, 0xb7, 0x22, 0xca, - 0xb1, 0xc2, 0xa0, 0xb3, 0x1f, 0xb9, 0xdb, 0x52, 0x24, 0x1c, 0x4a, 0x66, 0xbf, 0xc1, 0x4a, 0xb1, - 0x80, 0x52, 0xbc, 0x90, 0x38, 0x91, 0x78, 0xc5, 0xd7, 0x56, 0x09, 0x66, 0xa5, 0x58, 0x40, 0x75, - 0x7d, 0x53, 0xa9, 0x8f, 0xbe, 0xc9, 0x18, 0xa2, 0xa1, 0xd3, 0x1d, 0x22, 0xf4, 0x15, 0x80, 0x2d, - 0xd7, 0x77, 0xa3, 0x1d, 0x46, 0x7d, 0xf8, 0xc4, 0xd4, 0x15, 0x2f, 0xb5, 0xaa, 0xa8, 0x60, 0x8d, - 0x22, 0x7a, 0x15, 0xc6, 0xd4, 0x06, 0xac, 0x55, 0xd9, 0x93, 0x86, 0xf6, 0x44, 0x9c, 0x9c, 0x46, - 0x55, 0xac, 0xe3, 0xd9, 0xef, 0xa6, 0xd7, 0x8b, 0xd8, 0x01, 0xda, 0xf8, 0x5a, 0x83, 0x8e, 0x6f, - 0xa1, 0xf7, 0xf8, 0xda, 0xbf, 0x55, 0x84, 0x29, 0xa3, 0xb1, 0x4e, 0x34, 0xc0, 0x99, 0x75, 0x9d, - 0xde, 0x73, 0x4e, 0x4c, 0xc4, 0xfe, 0xb3, 0xfb, 0x6f, 0x15, 0xfd, 0x2e, 0xa4, 0x3b, 0x80, 0xd7, - 0x47, 0x5f, 0x81, 0xb2, 0xe7, 0x44, 0x4c, 0x77, 0x45, 0xc4, 0xbe, 0x1b, 0x84, 0x58, 0x22, 0x47, - 0x38, 0x51, 0xac, 0x5d, 0x35, 0x9c, 0x76, 0x42, 0x92, 0x5e, 0xc8, 0x94, 0xf7, 0x91, 0x66, 0x22, - 0xaa, 0x13, 0x94, 0x41, 0x3a, 0xc0, 0x1c, 0x86, 0x5e, 0x87, 0xf1, 0x90, 0xb0, 0x55, 0xb1, 0x4c, - 0x59, 0x39, 0xb6, 0xcc, 0x86, 0x12, 0x9e, 0x0f, 0x6b, 0x30, 0x6c, 0x60, 0x26, 0xac, 0xfc, 0x70, - 0x0f, 0x56, 0xfe, 0x39, 0x18, 0x61, 0x3f, 0xd4, 0x0a, 0x50, 0xb3, 0x51, 0xe3, 0xc5, 0x58, 0xc2, - 0xd3, 0x0b, 0x66, 0x74, 0xc0, 0x05, 0xf3, 0x69, 0x98, 0xac, 0x3a, 0x64, 0x2f, 0xf0, 0x57, 0xfc, - 0x56, 0x3b, 0x70, 0xfd, 0x18, 0xcd, 0x42, 0x89, 0xdd, 0x0e, 0x7c, 0x6f, 0x97, 0x28, 0x05, 0x5c, - 0xa2, 0x8c, 0xb9, 0xbd, 0x0d, 0x17, 0xaa, 0xc1, 0x7d, 0xff, 0xbe, 0x13, 0xb6, 0x16, 0xeb, 0x35, - 0x4d, 0xce, 0x5d, 0x97, 0x72, 0x16, 0x37, 0xbb, 0xc8, 0x3c, 0x53, 0xb5, 0x9a, 0xfc, 0xae, 0x5d, - 0x75, 0x3d, 0x92, 0xa3, 0x8d, 0xf8, 0xdb, 0x05, 0xa3, 0xa5, 0x04, 0x5f, 0x3d, 0x71, 0x58, 0xb9, - 0x4f, 0x1c, 0x6f, 0xc3, 0xe8, 0x96, 0x4b, 0xbc, 0x16, 0x26, 0x5b, 0x62, 0x89, 0x3d, 0x9b, 0xff, - 0x92, 0xbc, 0x4a, 0x31, 0xa5, 0xf6, 0x89, 0x4b, 0x69, 0xab, 0xa2, 0x32, 0x56, 0x64, 0xd0, 0x2e, - 0x4c, 0x4b, 0x31, 0x40, 0x42, 0xc5, 0x82, 0x7b, 0xae, 0x97, 0x6c, 0x61, 0x12, 0x3f, 0x7f, 0x74, - 0x58, 0x99, 0xc6, 0x29, 0x32, 0xb8, 0x8b, 0x30, 0x15, 0xcb, 0xf6, 0xe8, 0xd1, 0x5a, 0x62, 0xc3, - 0xcf, 0xc4, 0x32, 0x26, 0x61, 0xb2, 0x52, 0xfb, 0x67, 0x2c, 0x78, 0xbc, 0x6b, 0x64, 0x84, 0xa4, - 0x7d, 0xca, 0xb3, 0x90, 0x96, 0x7c, 0x0b, 0xfd, 0x25, 0x5f, 0xfb, 0x1f, 0x59, 0x70, 0x7e, 0x65, - 0xaf, 0x1d, 0x1f, 0x54, 0x5d, 0xf3, 0x19, 0xe6, 0x35, 0x18, 0xde, 0x23, 0x2d, 0xb7, 0xb3, 0x27, - 0x66, 0xae, 0x22, 0x8f, 0x9f, 0x35, 0x56, 0x7a, 0x7c, 0x58, 0x99, 0x68, 0xc4, 0x41, 0xe8, 0x6c, - 0x13, 0x5e, 0x80, 0x05, 0x3a, 0x3b, 0xc4, 0xdd, 0xf7, 0xc9, 0x2d, 0x77, 0xcf, 0x95, 0x96, 0x01, - 0x3d, 0x75, 0x67, 0xf3, 0x72, 0x40, 0xe7, 0xdf, 0xee, 0x38, 0x7e, 0xec, 0xc6, 0x07, 0xe2, 0x85, - 0x49, 0x12, 0xc1, 0x09, 0x3d, 0xfb, 0xdb, 0x16, 0x4c, 0xc9, 0x75, 0xbf, 0xd8, 0x6a, 0x85, 0x24, - 0x8a, 0xd0, 0x1c, 0x14, 0xdc, 0xb6, 0xe8, 0x25, 0x88, 0x5e, 0x16, 0x6a, 0x75, 0x5c, 0x70, 0xdb, - 0xa8, 0x0e, 0x65, 0x6e, 0x60, 0x90, 0x2c, 0xae, 0x81, 0xcc, 0x14, 0x58, 0x0f, 0x36, 0x64, 0x4d, - 0x9c, 0x10, 0x91, 0x1c, 0x1c, 0x3b, 0x33, 0x8b, 0xe6, 0xf3, 0xd4, 0x0d, 0x51, 0x8e, 0x15, 0x06, - 0xba, 0x0a, 0xa3, 0x7e, 0xd0, 0xe2, 0xf6, 0x1e, 0xfc, 0xf6, 0x63, 0x4b, 0x76, 0x5d, 0x94, 0x61, - 0x05, 0xb5, 0x7f, 0xcc, 0x82, 0x71, 0xf9, 0x65, 0x03, 0x32, 0x93, 0x74, 0x6b, 0x25, 0x8c, 0x64, - 0xb2, 0xb5, 0x28, 0x33, 0xc8, 0x20, 0x06, 0x0f, 0x58, 0x3c, 0x09, 0x0f, 0x68, 0xff, 0x74, 0x01, - 0x26, 0x65, 0x77, 0x1a, 0x9d, 0xcd, 0x88, 0xc4, 0x68, 0x03, 0xca, 0x0e, 0x1f, 0x72, 0x22, 0x57, - 0xec, 0x33, 0xd9, 0xc2, 0x87, 0x31, 0x3f, 0xc9, 0xb5, 0xbc, 0x28, 0x6b, 0xe3, 0x84, 0x10, 0xf2, - 0x60, 0xc6, 0x0f, 0x62, 0x76, 0x44, 0x2b, 0x78, 0xaf, 0x27, 0x90, 0x34, 0xf5, 0x8b, 0x82, 0xfa, - 0xcc, 0x7a, 0x9a, 0x0a, 0xee, 0x26, 0x8c, 0x56, 0xa4, 0xc2, 0xa3, 0x98, 0x2f, 0x6e, 0xe8, 0xb3, - 0x90, 0xad, 0xef, 0xb0, 0x7f, 0xc3, 0x82, 0xb2, 0x44, 0x3b, 0x8b, 0xd7, 0xae, 0x35, 0x18, 0x89, - 0xd8, 0x24, 0xc8, 0xa1, 0xb1, 0x7b, 0x75, 0x9c, 0xcf, 0x57, 0x72, 0xf3, 0xf0, 0xff, 0x11, 0x96, - 0x34, 0x98, 0xbe, 0x5b, 0x75, 0xff, 0x63, 0xa2, 0xef, 0x56, 0xfd, 0xc9, 0xb9, 0x61, 0xfe, 0x1b, - 0xeb, 0xb3, 0x26, 0xd6, 0x52, 0x06, 0xa9, 0x1d, 0x92, 0x2d, 0xf7, 0x41, 0x9a, 0x41, 0xaa, 0xb3, - 0x52, 0x2c, 0xa0, 0xe8, 0x1d, 0x18, 0x6f, 0x4a, 0x45, 0x67, 0x72, 0x0c, 0x5c, 0xe9, 0xa9, 0x74, - 0x57, 0xef, 0x33, 0xdc, 0x16, 0x74, 0x59, 0xab, 0x8f, 0x0d, 0x6a, 0xa6, 0x0d, 0x42, 0xb1, 0x9f, - 0x0d, 0x42, 0x42, 0x37, 0xf7, 0x15, 0xdd, 0xfe, 0x59, 0x0b, 0x86, 0xb9, 0xba, 0x6c, 0x30, 0xfd, - 0xa2, 0xf6, 0x5c, 0x95, 0x8c, 0xdd, 0x5d, 0x5a, 0x28, 0x9e, 0x9f, 0xd0, 0x1a, 0x94, 0xd9, 0x0f, - 0xa6, 0x36, 0x28, 0xe6, 0x1b, 0xc1, 0xf2, 0x56, 0xf5, 0x0e, 0xde, 0x95, 0xd5, 0x70, 0x42, 0xc1, - 0xfe, 0x89, 0x22, 0x3d, 0xaa, 0x12, 0x54, 0xe3, 0x06, 0xb7, 0x1e, 0xdd, 0x0d, 0x5e, 0x78, 0x54, - 0x37, 0xf8, 0x36, 0x4c, 0x35, 0xb5, 0xc7, 0xad, 0x64, 0x26, 0xaf, 0xf6, 0x5c, 0x24, 0xda, 0x3b, - 0x18, 0x57, 0x19, 0x2d, 0x9b, 0x44, 0x70, 0x9a, 0x2a, 0xfa, 0x3e, 0x18, 0xe7, 0xf3, 0x2c, 0x5a, - 0x29, 0xb1, 0x56, 0x3e, 0x95, 0xbf, 0x5e, 0xf4, 0x26, 0xd8, 0x4a, 0x6c, 0x68, 0xd5, 0xb1, 0x41, - 0xcc, 0xfe, 0xb5, 0x51, 0x18, 0x5a, 0xd9, 0x27, 0x7e, 0x7c, 0x06, 0x07, 0x52, 0x13, 0x26, 0x5d, - 0x7f, 0x3f, 0xf0, 0xf6, 0x49, 0x8b, 0xc3, 0x4f, 0x72, 0xb9, 0x3e, 0x26, 0x48, 0x4f, 0xd6, 0x0c, - 0x12, 0x38, 0x45, 0xf2, 0x51, 0x48, 0x98, 0xd7, 0x61, 0x98, 0xcf, 0xbd, 0x10, 0x2f, 0x33, 0x95, - 0xc1, 0x6c, 0x10, 0xc5, 0x2e, 0x48, 0xa4, 0x5f, 0xae, 0x7d, 0x16, 0xd5, 0xd1, 0xbb, 0x30, 0xb9, - 0xe5, 0x86, 0x51, 0x4c, 0x45, 0xc3, 0x28, 0x76, 0xf6, 0xda, 0x0f, 0x21, 0x51, 0xaa, 0x71, 0x58, - 0x35, 0x28, 0xe1, 0x14, 0x65, 0xb4, 0x0d, 0x13, 0x54, 0xc8, 0x49, 0x9a, 0x1a, 0x39, 0x71, 0x53, - 0x4a, 0x65, 0x74, 0x4b, 0x27, 0x84, 0x4d, 0xba, 0xf4, 0x30, 0x69, 0x32, 0xa1, 0x68, 0x94, 0x71, - 0x14, 0xea, 0x30, 0xe1, 0xd2, 0x10, 0x87, 0xd1, 0x33, 0x89, 0x99, 0xad, 0x94, 0xcd, 0x33, 0x49, - 0x33, 0x4e, 0xf9, 0x2a, 0x94, 0x09, 0x1d, 0x42, 0x4a, 0x58, 0x28, 0xc6, 0x17, 0x06, 0xeb, 0xeb, - 0x9a, 0xdb, 0x0c, 0x03, 0x53, 0x96, 0x5f, 0x91, 0x94, 0x70, 0x42, 0x14, 0x2d, 0xc3, 0x70, 0x44, - 0x42, 0x97, 0x44, 0x42, 0x45, 0xde, 0x63, 0x1a, 0x19, 0x1a, 0xb7, 0x96, 0xe6, 0xbf, 0xb1, 0xa8, - 0x4a, 0x97, 0x97, 0xc3, 0xa4, 0x21, 0xa6, 0x15, 0xd7, 0x96, 0xd7, 0x22, 0x2b, 0xc5, 0x02, 0x8a, - 0xde, 0x82, 0x91, 0x90, 0x78, 0x4c, 0x59, 0x34, 0x31, 0xf8, 0x22, 0xe7, 0xba, 0x27, 0x5e, 0x0f, - 0x4b, 0x02, 0xe8, 0x26, 0xa0, 0x90, 0x50, 0x1e, 0xc2, 0xf5, 0xb7, 0x95, 0x31, 0x87, 0xd0, 0x75, - 0x3f, 0x21, 0xda, 0x3f, 0x87, 0x13, 0x0c, 0x69, 0x47, 0x89, 0x33, 0xaa, 0xa1, 0xeb, 0x30, 0xa3, - 0x4a, 0x6b, 0x7e, 0x14, 0x3b, 0x7e, 0x93, 0x30, 0x35, 0x77, 0x39, 0xe1, 0x8a, 0x70, 0x1a, 0x01, - 0x77, 0xd7, 0xb1, 0xbf, 0x4e, 0xd9, 0x19, 0x3a, 0x5a, 0x67, 0xc0, 0x0b, 0xbc, 0x69, 0xf2, 0x02, - 0x17, 0x73, 0x67, 0x2e, 0x87, 0x0f, 0x38, 0xb2, 0x60, 0x4c, 0x9b, 0xd9, 0x64, 0xcd, 0x5a, 0x3d, - 0xd6, 0x6c, 0x07, 0xa6, 0xe9, 0x4a, 0xbf, 0xbd, 0xc9, 0x1c, 0x87, 0x5a, 0x6c, 0x61, 0x16, 0x1e, - 0x6e, 0x61, 0xaa, 0x57, 0xe6, 0x5b, 0x29, 0x82, 0xb8, 0xab, 0x09, 0xf4, 0x9a, 0xd4, 0x9c, 0x14, - 0x0d, 0x23, 0x2d, 0xae, 0x15, 0x39, 0x3e, 0xac, 0x4c, 0x6b, 0x1f, 0xa2, 0x6b, 0x4a, 0xec, 0xaf, - 0xca, 0x6f, 0x54, 0xaf, 0xf9, 0x4d, 0xb5, 0x58, 0x52, 0xaf, 0xf9, 0x6a, 0x39, 0xe0, 0x04, 0x87, - 0xee, 0x51, 0x2a, 0x82, 0xa4, 0x5f, 0xf3, 0xa9, 0x80, 0x82, 0x19, 0xc4, 0x7e, 0x19, 0x60, 0xe5, - 0x01, 0x69, 0xf2, 0xa5, 0xae, 0x3f, 0x40, 0x5a, 0xf9, 0x0f, 0x90, 0xf6, 0x7f, 0xb2, 0x60, 0x72, - 0x75, 0xd9, 0x10, 0x13, 0xe7, 0x01, 0xb8, 0x6c, 0x74, 0xef, 0xde, 0xba, 0xd4, 0xad, 0x73, 0xf5, - 0xa8, 0x2a, 0xc5, 0x1a, 0x06, 0xba, 0x08, 0x45, 0xaf, 0xe3, 0x0b, 0x91, 0x65, 0xe4, 0xe8, 0xb0, - 0x52, 0xbc, 0xd5, 0xf1, 0x31, 0x2d, 0xd3, 0x4c, 0xf9, 0x8a, 0x03, 0x9b, 0xf2, 0xf5, 0x75, 0x08, - 0x42, 0x15, 0x18, 0xba, 0x7f, 0xdf, 0x6d, 0x71, 0xb3, 0x6b, 0xa1, 0xf7, 0xbf, 0x77, 0xaf, 0x56, - 0x8d, 0x30, 0x2f, 0xb7, 0xbf, 0x56, 0x84, 0xb9, 0x55, 0x8f, 0x3c, 0xf8, 0x90, 0xa6, 0xe7, 0x83, - 0x1a, 0x22, 0x9e, 0x8c, 0x5f, 0x3c, 0xa9, 0xd5, 0x65, 0xff, 0xf1, 0xd8, 0x82, 0x11, 0xfe, 0x98, - 0x2d, 0x0d, 0xd1, 0xdf, 0xc8, 0x6a, 0x3d, 0x7f, 0x40, 0xe6, 0xf9, 0xa3, 0xb8, 0x30, 0x40, 0x57, - 0x37, 0xad, 0x28, 0xc5, 0x92, 0xf8, 0xdc, 0x67, 0x61, 0x5c, 0xc7, 0x3c, 0x91, 0xfd, 0xf3, 0xff, - 0x5f, 0x84, 0x69, 0xda, 0x83, 0x47, 0x3a, 0x11, 0x77, 0xba, 0x27, 0xe2, 0xb4, 0x6d, 0x60, 0xfb, - 0xcf, 0xc6, 0x3b, 0xe9, 0xd9, 0x78, 0x29, 0x6f, 0x36, 0xce, 0x7a, 0x0e, 0x7e, 0xc8, 0x82, 0x73, - 0xab, 0x5e, 0xd0, 0xdc, 0x4d, 0x99, 0xe7, 0xbe, 0x0a, 0x63, 0xf4, 0x1c, 0x8f, 0x0c, 0xbf, 0x17, - 0xc3, 0x13, 0x4a, 0x80, 0xb0, 0x8e, 0xa7, 0x55, 0xbb, 0x73, 0xa7, 0x56, 0xcd, 0x72, 0xa0, 0x12, - 0x20, 0xac, 0xe3, 0xd9, 0xdf, 0xb2, 0xe0, 0xa9, 0xeb, 0xcb, 0x2b, 0xc9, 0x52, 0xec, 0xf2, 0xe1, - 0xa2, 0x52, 0x60, 0x4b, 0xeb, 0x4a, 0x22, 0x05, 0x56, 0x59, 0x2f, 0x04, 0xf4, 0xe3, 0xe2, 0x9f, - 0xf8, 0x0b, 0x16, 0x9c, 0xbb, 0xee, 0xc6, 0xf4, 0x5a, 0x4e, 0x7b, 0x13, 0xd1, 0x7b, 0x39, 0x72, - 0xe3, 0x20, 0x3c, 0x48, 0x7b, 0x13, 0x61, 0x05, 0xc1, 0x1a, 0x16, 0x6f, 0x79, 0xdf, 0x65, 0x66, - 0x54, 0x05, 0x53, 0x15, 0x85, 0x45, 0x39, 0x56, 0x18, 0xf4, 0xc3, 0x5a, 0x6e, 0xc8, 0x44, 0x89, - 0x03, 0x71, 0xc2, 0xaa, 0x0f, 0xab, 0x4a, 0x00, 0x4e, 0x70, 0xec, 0x9f, 0xb1, 0xe0, 0xc2, 0x75, - 0xaf, 0x13, 0xc5, 0x24, 0xdc, 0x8a, 0x8c, 0xce, 0xbe, 0x0c, 0x65, 0x22, 0xc5, 0x75, 0xd1, 0x57, - 0xc5, 0x60, 0x2a, 0x39, 0x9e, 0xbb, 0x32, 0x29, 0xbc, 0x01, 0x6c, 0xdd, 0x4f, 0x66, 0xa3, 0xfd, - 0xcb, 0x05, 0x98, 0xb8, 0xb1, 0xb1, 0x51, 0xbf, 0x4e, 0x62, 0x71, 0x8b, 0xf5, 0x57, 0x35, 0x63, - 0x4d, 0x63, 0xd6, 0x4b, 0x28, 0xea, 0xc4, 0xae, 0x37, 0xcf, 0x7d, 0x67, 0xe7, 0x6b, 0x7e, 0x7c, - 0x3b, 0x6c, 0xc4, 0xa1, 0xeb, 0x6f, 0x67, 0xea, 0xd8, 0xe4, 0x5d, 0x5b, 0xcc, 0xbb, 0x6b, 0xd1, - 0xcb, 0x30, 0xcc, 0x9c, 0x77, 0xa5, 0x78, 0xf2, 0x84, 0x92, 0x29, 0x58, 0xe9, 0xf1, 0x61, 0xa5, - 0x7c, 0x07, 0xd7, 0xf8, 0x1f, 0x2c, 0x50, 0xd1, 0x1d, 0x18, 0xdb, 0x89, 0xe3, 0xf6, 0x0d, 0xe2, - 0xb4, 0x48, 0x28, 0x4f, 0x87, 0x4b, 0x59, 0xa7, 0x03, 0x1d, 0x04, 0x8e, 0x96, 0x6c, 0xa8, 0xa4, - 0x2c, 0xc2, 0x3a, 0x1d, 0xbb, 0x01, 0x90, 0xc0, 0x4e, 0x49, 0xbf, 0x60, 0xff, 0xa1, 0x05, 0x23, - 0xdc, 0x8f, 0x2a, 0x44, 0x9f, 0x83, 0x12, 0x79, 0x40, 0x9a, 0x82, 0x73, 0xcc, 0xec, 0x70, 0xc2, - 0x78, 0x70, 0x6d, 0x39, 0xfd, 0x8f, 0x59, 0x2d, 0x74, 0x03, 0x46, 0x68, 0x6f, 0xaf, 0x2b, 0xa7, - 0xb2, 0xa7, 0xf3, 0xbe, 0x58, 0x4d, 0x3b, 0xe7, 0x55, 0x44, 0x11, 0x96, 0xd5, 0x99, 0xe6, 0xb7, - 0xd9, 0x6e, 0xd0, 0x03, 0x2c, 0xee, 0x75, 0xcf, 0x6e, 0x2c, 0xd7, 0x39, 0x92, 0xa0, 0xc6, 0x35, - 0xbf, 0xb2, 0x10, 0x27, 0x44, 0xec, 0x0d, 0x28, 0xd3, 0x49, 0x5d, 0xf4, 0x5c, 0xa7, 0xb7, 0xd2, - 0xf9, 0x79, 0x28, 0x4b, 0x05, 0x70, 0x24, 0x5c, 0x71, 0x18, 0x55, 0xa9, 0x1f, 0x8e, 0x70, 0x02, - 0xb7, 0xb7, 0xe0, 0x3c, 0x7b, 0xf9, 0x77, 0xe2, 0x1d, 0x63, 0x8f, 0xf5, 0x5f, 0xcc, 0x2f, 0x08, - 0x41, 0x8c, 0xcf, 0xcc, 0xac, 0xe6, 0x3b, 0x30, 0x2e, 0x29, 0x26, 0x42, 0x99, 0xfd, 0xc7, 0x25, - 0x78, 0xa2, 0xd6, 0xc8, 0x77, 0xb1, 0x7b, 0x1d, 0xc6, 0x39, 0x9b, 0x46, 0x97, 0xb6, 0xe3, 0x89, - 0x76, 0xd5, 0xbb, 0xd8, 0x86, 0x06, 0xc3, 0x06, 0x26, 0x7a, 0x0a, 0x8a, 0xee, 0x7b, 0x7e, 0xda, - 0x0c, 0xb7, 0xf6, 0xf6, 0x3a, 0xa6, 0xe5, 0x14, 0x4c, 0x39, 0x3e, 0x7e, 0x94, 0x2a, 0xb0, 0xe2, - 0xfa, 0xde, 0x84, 0x49, 0x37, 0x6a, 0x46, 0x6e, 0xcd, 0xa7, 0xe7, 0x4c, 0xe2, 0x9e, 0x99, 0x28, - 0x09, 0x68, 0xa7, 0x15, 0x14, 0xa7, 0xb0, 0xb5, 0x73, 0x7d, 0x68, 0x60, 0xae, 0xb1, 0xaf, 0x6f, - 0x0a, 0x65, 0x88, 0xdb, 0xec, 0xeb, 0x22, 0x66, 0xd4, 0x26, 0x18, 0x62, 0xfe, 0xc1, 0x11, 0x96, - 0x30, 0x2a, 0x81, 0x35, 0x77, 0x9c, 0xf6, 0x62, 0x27, 0xde, 0xa9, 0xba, 0x51, 0x33, 0xd8, 0x27, - 0xe1, 0x01, 0x13, 0x9e, 0x47, 0x13, 0x09, 0x4c, 0x01, 0x96, 0x6f, 0x2c, 0xd6, 0x29, 0x26, 0xee, - 0xae, 0x63, 0x72, 0x85, 0x70, 0x1a, 0x5c, 0xe1, 0x22, 0x4c, 0xc9, 0x66, 0x1a, 0x24, 0x62, 0x77, - 0xc4, 0x18, 0xeb, 0x98, 0x32, 0xb5, 0x15, 0xc5, 0xaa, 0x5b, 0x69, 0x7c, 0xf4, 0x1a, 0x4c, 0xb8, - 0xbe, 0x1b, 0xbb, 0x4e, 0x1c, 0x84, 0xec, 0x86, 0xe5, 0x72, 0x32, 0xb3, 0x64, 0xab, 0xe9, 0x00, - 0x6c, 0xe2, 0xd9, 0x7f, 0x54, 0x82, 0x19, 0x36, 0x6d, 0xdf, 0x59, 0x61, 0x1f, 0x9b, 0x15, 0x76, - 0xa7, 0x7b, 0x85, 0x9d, 0x06, 0xbb, 0xfb, 0x51, 0x2e, 0xb3, 0x77, 0xa1, 0xac, 0x6c, 0x81, 0xa5, - 0x33, 0x80, 0x95, 0xe3, 0x0c, 0xd0, 0x9f, 0xfb, 0x90, 0xcf, 0xb8, 0xc5, 0xcc, 0x67, 0xdc, 0xbf, - 0x63, 0x41, 0x62, 0x12, 0x89, 0x6e, 0x40, 0xb9, 0x1d, 0x30, 0xb3, 0x83, 0x50, 0xda, 0xf2, 0x3c, - 0x91, 0x79, 0x51, 0xf1, 0x4b, 0x91, 0x8f, 0x5f, 0x5d, 0xd6, 0xc0, 0x49, 0x65, 0xb4, 0x04, 0x23, - 0xed, 0x90, 0x34, 0x62, 0xe6, 0xb4, 0xd9, 0x97, 0x0e, 0x5f, 0x23, 0x1c, 0x1f, 0xcb, 0x8a, 0xf6, - 0xaf, 0x58, 0x00, 0xfc, 0xa5, 0xd4, 0xf1, 0xb7, 0xc9, 0x19, 0x68, 0x7f, 0xab, 0x50, 0x8a, 0xda, - 0xa4, 0xd9, 0xcb, 0x20, 0x24, 0xe9, 0x4f, 0xa3, 0x4d, 0x9a, 0xc9, 0x80, 0xd3, 0x7f, 0x98, 0xd5, - 0xb6, 0xff, 0x2a, 0xc0, 0x64, 0x82, 0x56, 0x8b, 0xc9, 0x1e, 0x7a, 0xd1, 0x70, 0x89, 0xbb, 0x98, - 0x72, 0x89, 0x2b, 0x33, 0x6c, 0x4d, 0xd1, 0xf8, 0x2e, 0x14, 0xf7, 0x9c, 0x07, 0x42, 0x93, 0xf4, - 0x7c, 0xef, 0x6e, 0x50, 0xfa, 0xf3, 0x6b, 0xce, 0x03, 0x2e, 0x33, 0x3d, 0x2f, 0x17, 0xc8, 0x9a, - 0xf3, 0xe0, 0x98, 0x9b, 0x7d, 0xb0, 0x43, 0xea, 0x96, 0x1b, 0xc5, 0x1f, 0xfc, 0x97, 0xe4, 0x3f, - 0x5b, 0x76, 0xb4, 0x11, 0xd6, 0x96, 0xeb, 0x8b, 0x77, 0xc3, 0x81, 0xda, 0x72, 0xfd, 0x74, 0x5b, - 0xae, 0x3f, 0x40, 0x5b, 0xae, 0x8f, 0xde, 0x87, 0x11, 0xf1, 0x46, 0xcf, 0x6c, 0xbd, 0x4d, 0x2d, - 0x55, 0x5e, 0x7b, 0xe2, 0x89, 0x9f, 0xb7, 0xb9, 0x20, 0x65, 0x42, 0x51, 0xda, 0xb7, 0x5d, 0xd9, - 0x20, 0xfa, 0x5b, 0x16, 0x4c, 0x8a, 0xdf, 0x98, 0xbc, 0xd7, 0x21, 0x51, 0x2c, 0x78, 0xcf, 0xcf, - 0x0c, 0xde, 0x07, 0x51, 0x91, 0x77, 0xe5, 0x33, 0xf2, 0x98, 0x35, 0x81, 0x7d, 0x7b, 0x94, 0xea, - 0x05, 0xfa, 0x27, 0x16, 0x9c, 0xdf, 0x73, 0x1e, 0xf0, 0x16, 0x79, 0x19, 0x76, 0x62, 0x37, 0x10, - 0xb6, 0xeb, 0x9f, 0x1b, 0x6c, 0xfa, 0xbb, 0xaa, 0xf3, 0x4e, 0x4a, 0x33, 0xd7, 0xf3, 0x59, 0x28, - 0x7d, 0xbb, 0x9a, 0xd9, 0xaf, 0xb9, 0x2d, 0x18, 0x95, 0xeb, 0x2d, 0x43, 0xf2, 0xae, 0xea, 0x8c, - 0xf5, 0x89, 0x4d, 0x24, 0x74, 0xbf, 0x34, 0xda, 0x8e, 0x58, 0x6b, 0x8f, 0xb4, 0x9d, 0x77, 0x61, - 0x5c, 0x5f, 0x63, 0x8f, 0xb4, 0xad, 0xf7, 0xe0, 0x5c, 0xc6, 0x5a, 0x7a, 0xa4, 0x4d, 0xde, 0x87, - 0x8b, 0xb9, 0xeb, 0xe3, 0x51, 0x36, 0x6c, 0xff, 0xb2, 0xa5, 0x9f, 0x83, 0x67, 0xa0, 0x82, 0x5f, - 0x36, 0x55, 0xf0, 0x97, 0x7a, 0xef, 0x9c, 0x1c, 0x3d, 0xfc, 0x3b, 0x7a, 0xa7, 0xe9, 0xa9, 0x8e, - 0xde, 0x82, 0x61, 0x8f, 0x96, 0x48, 0xe3, 0x10, 0xbb, 0xff, 0x8e, 0x4c, 0x78, 0x29, 0x56, 0x1e, - 0x61, 0x41, 0xc1, 0xfe, 0x75, 0x0b, 0x4a, 0x67, 0x30, 0x12, 0xd8, 0x1c, 0x89, 0x17, 0x73, 0x49, - 0x8b, 0x20, 0x5c, 0xf3, 0xd8, 0xb9, 0xbf, 0x22, 0x03, 0x8d, 0xe5, 0x0c, 0xcc, 0xf7, 0xc3, 0xb9, - 0x5b, 0x81, 0xd3, 0x5a, 0x72, 0x3c, 0xc7, 0x6f, 0x92, 0xb0, 0xe6, 0x6f, 0xf7, 0xb5, 0x52, 0xd2, - 0x6d, 0x8a, 0x0a, 0xfd, 0x6c, 0x8a, 0xec, 0x1d, 0x40, 0x7a, 0x03, 0xc2, 0x8e, 0x13, 0xc3, 0x88, - 0xcb, 0x9b, 0x12, 0xc3, 0xff, 0x6c, 0x36, 0x77, 0xd7, 0xd5, 0x33, 0xcd, 0x42, 0x91, 0x17, 0x60, - 0x49, 0xc8, 0x7e, 0x1d, 0x32, 0x7d, 0xb7, 0xfa, 0xab, 0x0d, 0xec, 0x57, 0x61, 0x86, 0xd5, 0x3c, - 0x99, 0x48, 0x6b, 0xff, 0x88, 0x05, 0x53, 0xeb, 0xa9, 0x68, 0x0a, 0x57, 0xd8, 0x5b, 0x5f, 0x86, - 0xde, 0xb7, 0xc1, 0x4a, 0xb1, 0x80, 0x9e, 0xba, 0x7e, 0xe9, 0xcf, 0x2d, 0x48, 0x5c, 0x25, 0xcf, - 0x80, 0xa9, 0x5a, 0x36, 0x98, 0xaa, 0x4c, 0xbd, 0x87, 0xea, 0x4e, 0x1e, 0x4f, 0x85, 0x6e, 0xaa, - 0xb8, 0x00, 0x3d, 0x54, 0x1e, 0x09, 0x19, 0xee, 0x45, 0x3e, 0x69, 0x06, 0x0f, 0x90, 0x91, 0x02, - 0x98, 0x99, 0x90, 0xc2, 0xfd, 0x98, 0x98, 0x09, 0xa9, 0xfe, 0xe4, 0xec, 0xbe, 0xba, 0xd6, 0x65, - 0x76, 0x2a, 0x7d, 0x0f, 0x33, 0xfb, 0x76, 0x3c, 0xf7, 0x7d, 0xa2, 0xc2, 0x71, 0x54, 0x84, 0x19, - 0xb7, 0x28, 0x3d, 0x3e, 0xac, 0x4c, 0xa8, 0x7f, 0x3c, 0x66, 0x53, 0x52, 0xc5, 0xbe, 0x01, 0x53, - 0xa9, 0x01, 0x43, 0xaf, 0xc2, 0x50, 0x7b, 0xc7, 0x89, 0x48, 0xca, 0x34, 0x72, 0xa8, 0x4e, 0x0b, - 0x8f, 0x0f, 0x2b, 0x93, 0xaa, 0x02, 0x2b, 0xc1, 0x1c, 0xdb, 0xfe, 0x9f, 0x16, 0x94, 0xd6, 0x83, - 0xd6, 0x59, 0x2c, 0xa6, 0x37, 0x8d, 0xc5, 0xf4, 0x64, 0x5e, 0xc4, 0xbb, 0xdc, 0x75, 0xb4, 0x9a, - 0x5a, 0x47, 0x97, 0x72, 0x29, 0xf4, 0x5e, 0x42, 0x7b, 0x30, 0xc6, 0xe2, 0xe8, 0x09, 0x53, 0xcd, - 0x97, 0x0d, 0xfe, 0xbe, 0x92, 0xe2, 0xef, 0xa7, 0x34, 0x54, 0x8d, 0xcb, 0x7f, 0x0e, 0x46, 0x84, - 0xb9, 0x60, 0xda, 0xc0, 0x5d, 0xe0, 0x62, 0x09, 0xb7, 0x7f, 0xb6, 0x08, 0x46, 0xdc, 0x3e, 0xf4, - 0x1b, 0x16, 0xcc, 0x87, 0xdc, 0x63, 0xb0, 0x55, 0xed, 0x84, 0xae, 0xbf, 0xdd, 0x68, 0xee, 0x90, - 0x56, 0xc7, 0x73, 0xfd, 0xed, 0xda, 0xb6, 0x1f, 0xa8, 0xe2, 0x95, 0x07, 0xa4, 0xd9, 0x61, 0x3a, - 0xff, 0x3e, 0x41, 0x02, 0x95, 0x39, 0xce, 0xb5, 0xa3, 0xc3, 0xca, 0x3c, 0x3e, 0x11, 0x6d, 0x7c, - 0xc2, 0xbe, 0xa0, 0x6f, 0x59, 0xb0, 0xc0, 0xc3, 0xd9, 0x0d, 0xde, 0xff, 0x1e, 0xd2, 0x50, 0x5d, - 0x92, 0x4a, 0x88, 0x6c, 0x90, 0x70, 0x6f, 0xe9, 0x35, 0x31, 0xa0, 0x0b, 0xf5, 0x93, 0xb5, 0x85, - 0x4f, 0xda, 0x39, 0xfb, 0xdf, 0x14, 0x61, 0x42, 0x38, 0xab, 0x8b, 0x28, 0x28, 0xaf, 0x1a, 0x4b, - 0xe2, 0xe9, 0xd4, 0x92, 0x98, 0x31, 0x90, 0x4f, 0x27, 0x00, 0x4a, 0x04, 0x33, 0x9e, 0x13, 0xc5, - 0x37, 0x88, 0x13, 0xc6, 0x9b, 0xc4, 0xe1, 0x66, 0x2a, 0xc5, 0x13, 0x9b, 0xd4, 0x28, 0xf5, 0xcb, - 0xad, 0x34, 0x31, 0xdc, 0x4d, 0x1f, 0xed, 0x03, 0x62, 0xb6, 0x36, 0xa1, 0xe3, 0x47, 0xfc, 0x5b, - 0x5c, 0xf1, 0x1e, 0x70, 0xb2, 0x56, 0xe7, 0x44, 0xab, 0xe8, 0x56, 0x17, 0x35, 0x9c, 0xd1, 0x82, - 0x66, 0x43, 0x35, 0x34, 0xa8, 0x0d, 0xd5, 0x70, 0x1f, 0x2f, 0x12, 0x1f, 0xa6, 0xbb, 0xe2, 0x0d, - 0x7c, 0x09, 0xca, 0xca, 0xd6, 0x4d, 0x1c, 0x3a, 0xbd, 0xc3, 0x76, 0xa4, 0x29, 0x70, 0x15, 0x49, - 0x62, 0x67, 0x99, 0x90, 0xb3, 0xff, 0x69, 0xc1, 0x68, 0x90, 0x4f, 0xe2, 0x3a, 0x8c, 0x3a, 0x51, - 0xe4, 0x6e, 0xfb, 0xa4, 0x25, 0x76, 0xec, 0x27, 0xf3, 0x76, 0xac, 0xd1, 0x0c, 0xb3, 0x37, 0x5c, - 0x14, 0x35, 0xb1, 0xa2, 0x81, 0x6e, 0x70, 0x63, 0xa0, 0x7d, 0xc9, 0xcf, 0x0f, 0x46, 0x0d, 0xa4, - 0xb9, 0xd0, 0x3e, 0xc1, 0xa2, 0x3e, 0xfa, 0x32, 0xb7, 0xd6, 0xba, 0xe9, 0x07, 0xf7, 0xfd, 0xeb, - 0x41, 0x20, 0x3d, 0xcc, 0x06, 0x23, 0x38, 0x23, 0x6d, 0xb4, 0x54, 0x75, 0x6c, 0x52, 0x1b, 0x2c, - 0x26, 0xcf, 0x0f, 0xc0, 0x39, 0x4a, 0xda, 0xf4, 0x13, 0x89, 0x10, 0x81, 0x29, 0x11, 0x09, 0x41, - 0x96, 0x89, 0xb1, 0xcb, 0x64, 0xd5, 0xcd, 0xda, 0x89, 0x42, 0xef, 0xa6, 0x49, 0x02, 0xa7, 0x69, - 0xda, 0x3f, 0x6f, 0x01, 0xb3, 0x70, 0x3f, 0x03, 0x96, 0xe1, 0xf3, 0x26, 0xcb, 0x30, 0x9b, 0x37, - 0xc8, 0x39, 0xdc, 0xc2, 0x2b, 0x7c, 0x65, 0xd5, 0xc3, 0xe0, 0xc1, 0x81, 0x78, 0x29, 0x1f, 0x80, - 0x4b, 0xfd, 0x3f, 0x16, 0x3f, 0xc4, 0x94, 0xd3, 0x39, 0xfa, 0x41, 0x18, 0x6d, 0x3a, 0x6d, 0xa7, - 0xc9, 0x83, 0xcc, 0xe6, 0x6a, 0x6c, 0x8c, 0x4a, 0xf3, 0xcb, 0xa2, 0x06, 0xd7, 0x40, 0xc8, 0x88, - 0x1a, 0xa3, 0xb2, 0xb8, 0xaf, 0xd6, 0x41, 0x35, 0x39, 0xb7, 0x0b, 0x13, 0x06, 0xb1, 0x47, 0x2a, - 0xae, 0xfe, 0x20, 0xbf, 0x62, 0x55, 0x04, 0x98, 0x3d, 0x98, 0xf1, 0xb5, 0xff, 0xf4, 0x42, 0x91, - 0x22, 0xc8, 0x27, 0xfb, 0x5d, 0xa2, 0xec, 0xf6, 0xd1, 0x2c, 0xf8, 0x53, 0x64, 0x70, 0x37, 0x65, - 0xfb, 0xef, 0x59, 0xf0, 0xb8, 0x8e, 0xa8, 0xc5, 0x03, 0xe8, 0xa7, 0x03, 0xae, 0xc2, 0x68, 0xd0, - 0x26, 0xa1, 0x13, 0x07, 0xa1, 0xb8, 0x35, 0xae, 0xca, 0x41, 0xbf, 0x2d, 0xca, 0x8f, 0x45, 0xb4, - 0x3f, 0x49, 0x5d, 0x96, 0x63, 0x55, 0x13, 0xd9, 0x30, 0xcc, 0x06, 0x23, 0x12, 0xb1, 0x1a, 0xd8, - 0x19, 0xc0, 0x9e, 0x43, 0x23, 0x2c, 0x20, 0xf6, 0x1f, 0x5b, 0x7c, 0x61, 0xe9, 0x5d, 0x47, 0xef, - 0xc1, 0xf4, 0x9e, 0x13, 0x37, 0x77, 0x56, 0x1e, 0xb4, 0x43, 0xae, 0xfa, 0x96, 0xe3, 0xf4, 0x7c, - 0xbf, 0x71, 0xd2, 0x3e, 0x32, 0x31, 0x40, 0x5b, 0x4b, 0x11, 0xc3, 0x5d, 0xe4, 0xd1, 0x26, 0x8c, - 0xb1, 0x32, 0x66, 0xe9, 0x1c, 0xf5, 0x62, 0x0d, 0xf2, 0x5a, 0x53, 0x2f, 0xca, 0x6b, 0x09, 0x1d, - 0xac, 0x13, 0xb5, 0x3f, 0x28, 0xf2, 0xdd, 0xce, 0xb8, 0xed, 0xe7, 0x60, 0xa4, 0x1d, 0xb4, 0x96, - 0x6b, 0x55, 0x2c, 0x66, 0x41, 0x5d, 0x23, 0x75, 0x5e, 0x8c, 0x25, 0x1c, 0xbd, 0x01, 0x40, 0x1e, - 0xc4, 0x24, 0xf4, 0x1d, 0x4f, 0x19, 0x84, 0x28, 0x13, 0xc8, 0x6a, 0xb0, 0x1e, 0xc4, 0x77, 0x22, - 0xf2, 0xfd, 0x2b, 0x0a, 0x05, 0x6b, 0xe8, 0xe8, 0x1a, 0x40, 0x3b, 0x0c, 0xf6, 0xdd, 0x16, 0x73, - 0x9d, 0x2b, 0x9a, 0xe6, 0x12, 0x75, 0x05, 0xc1, 0x1a, 0x16, 0x7a, 0x03, 0x26, 0x3a, 0x7e, 0xc4, - 0x39, 0x14, 0x67, 0x53, 0xc4, 0xca, 0x1b, 0x4d, 0x2c, 0x17, 0xee, 0xe8, 0x40, 0x6c, 0xe2, 0xa2, - 0x45, 0x18, 0x8e, 0x1d, 0x66, 0xef, 0x30, 0x94, 0x6f, 0xb7, 0xb8, 0x41, 0x31, 0xf4, 0x10, 0xa7, - 0xb4, 0x02, 0x16, 0x15, 0xd1, 0x97, 0xa4, 0x1f, 0x02, 0x3f, 0xeb, 0x85, 0xc1, 0xf0, 0x60, 0xf7, - 0x82, 0xe6, 0x85, 0x20, 0x0c, 0x91, 0x0d, 0x5a, 0xf6, 0xb7, 0xca, 0x00, 0x09, 0x3b, 0x8e, 0xde, - 0xef, 0x3a, 0x8f, 0x5e, 0xe8, 0xcd, 0xc0, 0x9f, 0xde, 0x61, 0x84, 0x7e, 0xd8, 0x82, 0x31, 0xc7, - 0xf3, 0x82, 0xa6, 0x13, 0xb3, 0x51, 0x2e, 0xf4, 0x3e, 0x0f, 0x45, 0xfb, 0x8b, 0x49, 0x0d, 0xde, - 0x85, 0x97, 0xe5, 0xc2, 0xd3, 0x20, 0x7d, 0x7b, 0xa1, 0x37, 0x8c, 0xbe, 0x4b, 0x4a, 0x69, 0x7c, - 0x79, 0xcc, 0xa5, 0xa5, 0xb4, 0x32, 0x3b, 0xfa, 0x35, 0x01, 0x0d, 0xdd, 0x31, 0x82, 0xca, 0x95, - 0xf2, 0xe3, 0x2b, 0x18, 0x5c, 0x69, 0xbf, 0x78, 0x72, 0xa8, 0xae, 0x3b, 0x4e, 0x0d, 0xe5, 0x07, - 0x21, 0xd1, 0xc4, 0x9f, 0x3e, 0x4e, 0x53, 0xef, 0xc2, 0x54, 0xcb, 0xbc, 0xdb, 0xc5, 0x6a, 0x7a, - 0x36, 0x8f, 0x6e, 0x8a, 0x15, 0x48, 0x6e, 0xf3, 0x14, 0x00, 0xa7, 0x09, 0xa3, 0x3a, 0x77, 0x61, - 0xab, 0xf9, 0x5b, 0x81, 0x30, 0x3c, 0xb7, 0x73, 0xe7, 0xf2, 0x20, 0x8a, 0xc9, 0x1e, 0xc5, 0x4c, - 0x2e, 0xed, 0x75, 0x51, 0x17, 0x2b, 0x2a, 0xe8, 0x2d, 0x18, 0x66, 0x3e, 0xb0, 0xd1, 0xec, 0x68, - 0xbe, 0xa2, 0xd0, 0x0c, 0xdf, 0x90, 0x6c, 0x2a, 0xf6, 0x37, 0xc2, 0x82, 0x02, 0xba, 0x21, 0x63, - 0xbc, 0x44, 0x35, 0xff, 0x4e, 0x44, 0x58, 0x8c, 0x97, 0xf2, 0xd2, 0x27, 0x93, 0xf0, 0x2d, 0xbc, - 0x3c, 0x33, 0x98, 0xb9, 0x51, 0x93, 0x32, 0x47, 0xe2, 0xbf, 0x8c, 0x91, 0x3e, 0x0b, 0xf9, 0xdd, - 0x33, 0xe3, 0xa8, 0x27, 0xc3, 0x79, 0xd7, 0x24, 0x81, 0xd3, 0x34, 0x29, 0xa3, 0xc9, 0x77, 0xae, - 0x30, 0x5d, 0xef, 0xb7, 0xff, 0xb9, 0x7c, 0xcd, 0x2e, 0x19, 0x5e, 0x82, 0x45, 0xfd, 0x33, 0xbd, - 0xf5, 0xe7, 0x7c, 0x98, 0x4e, 0x6f, 0xd1, 0x47, 0xca, 0x65, 0xfc, 0x61, 0x09, 0x26, 0xcd, 0x25, - 0x85, 0x16, 0xa0, 0x2c, 0x88, 0xa8, 0xc8, 0xa0, 0x6a, 0x97, 0xac, 0x49, 0x00, 0x4e, 0x70, 0x58, - 0x64, 0x54, 0x56, 0x5d, 0x33, 0x39, 0x4c, 0x22, 0xa3, 0x2a, 0x08, 0xd6, 0xb0, 0xa8, 0xbc, 0xb4, - 0x19, 0x04, 0xb1, 0xba, 0x54, 0xd4, 0xba, 0x5b, 0x62, 0xa5, 0x58, 0x40, 0xe9, 0x65, 0xb2, 0x4b, - 0x42, 0x9f, 0x78, 0x66, 0x1c, 0x33, 0x75, 0x99, 0xdc, 0xd4, 0x81, 0xd8, 0xc4, 0xa5, 0xb7, 0x64, - 0x10, 0xb1, 0x85, 0x2c, 0xa4, 0xb2, 0xc4, 0x84, 0xb3, 0xc1, 0xbd, 0xc9, 0x25, 0x1c, 0x7d, 0x11, - 0x1e, 0x57, 0xce, 0xdf, 0x98, 0x2b, 0xa1, 0x65, 0x8b, 0xc3, 0x86, 0x12, 0xe5, 0xf1, 0xe5, 0x6c, - 0x34, 0x9c, 0x57, 0x1f, 0xbd, 0x09, 0x93, 0x82, 0x73, 0x97, 0x14, 0x47, 0x4c, 0xbb, 0x88, 0x9b, - 0x06, 0x14, 0xa7, 0xb0, 0x65, 0x24, 0x36, 0xc6, 0x3c, 0x4b, 0x0a, 0xa3, 0xdd, 0x91, 0xd8, 0x74, - 0x38, 0xee, 0xaa, 0x81, 0x16, 0x61, 0x8a, 0xb3, 0x56, 0xae, 0xbf, 0xcd, 0xe7, 0x44, 0x78, 0x96, - 0xa8, 0x2d, 0x75, 0xdb, 0x04, 0xe3, 0x34, 0x3e, 0x7a, 0x1d, 0xc6, 0x9d, 0xb0, 0xb9, 0xe3, 0xc6, - 0xa4, 0x19, 0x77, 0x42, 0xee, 0x72, 0xa2, 0x19, 0x96, 0x2c, 0x6a, 0x30, 0x6c, 0x60, 0xda, 0xef, - 0xc3, 0xb9, 0x0c, 0xa7, 0x34, 0xba, 0x70, 0x9c, 0xb6, 0x2b, 0xbf, 0x29, 0x65, 0x8c, 0xb9, 0x58, - 0xaf, 0xc9, 0xaf, 0xd1, 0xb0, 0xe8, 0xea, 0x64, 0xce, 0x6b, 0x5a, 0x4a, 0x04, 0xb5, 0x3a, 0x57, - 0x25, 0x00, 0x27, 0x38, 0xf6, 0xff, 0x2a, 0xc0, 0x54, 0x86, 0x62, 0x9d, 0x85, 0xe5, 0x4f, 0xc9, - 0x1e, 0x49, 0x14, 0x7e, 0x33, 0xb0, 0x5f, 0xe1, 0x04, 0x81, 0xfd, 0x8a, 0xfd, 0x02, 0xfb, 0x95, - 0x3e, 0x4c, 0x60, 0x3f, 0x73, 0xc4, 0x86, 0x06, 0x1a, 0xb1, 0x8c, 0x60, 0x80, 0xc3, 0x27, 0x0c, - 0x06, 0x68, 0x0c, 0xfa, 0xc8, 0x00, 0x83, 0xfe, 0x13, 0x05, 0x98, 0x4e, 0x1b, 0xc0, 0x9d, 0x81, - 0x3a, 0xf6, 0x2d, 0x43, 0x1d, 0x9b, 0x9d, 0xe4, 0x22, 0x6d, 0x96, 0x97, 0xa7, 0x9a, 0xc5, 0x29, - 0xd5, 0xec, 0xa7, 0x07, 0xa2, 0xd6, 0x5b, 0x4d, 0xfb, 0xf7, 0x0b, 0x70, 0x21, 0x5d, 0x65, 0xd9, - 0x73, 0xdc, 0xbd, 0x33, 0x18, 0x9b, 0xdb, 0xc6, 0xd8, 0xbc, 0x38, 0xc8, 0xd7, 0xb0, 0xae, 0xe5, - 0x0e, 0xd0, 0xbd, 0xd4, 0x00, 0x2d, 0x0c, 0x4e, 0xb2, 0xf7, 0x28, 0x7d, 0xbb, 0x08, 0x97, 0x32, - 0xeb, 0x25, 0xda, 0xcc, 0x55, 0x43, 0x9b, 0x79, 0x2d, 0xa5, 0xcd, 0xb4, 0x7b, 0xd7, 0x3e, 0x1d, - 0xf5, 0xa6, 0xf0, 0x16, 0x64, 0xc1, 0xdf, 0x1e, 0x52, 0xb5, 0x69, 0x78, 0x0b, 0x2a, 0x42, 0xd8, - 0xa4, 0xfb, 0x97, 0x49, 0xa5, 0xf9, 0xef, 0x2d, 0xb8, 0x98, 0x39, 0x37, 0x67, 0xa0, 0xc2, 0x5a, - 0x37, 0x55, 0x58, 0xcf, 0x0d, 0xbc, 0x5a, 0x73, 0x74, 0x5a, 0x7f, 0x54, 0xcc, 0xf9, 0x16, 0x26, - 0xa0, 0xdf, 0x86, 0x31, 0xa7, 0xd9, 0x24, 0x51, 0xb4, 0x16, 0xb4, 0x54, 0x30, 0xb4, 0x17, 0x99, - 0x9c, 0x95, 0x14, 0x1f, 0x1f, 0x56, 0xe6, 0xd2, 0x24, 0x12, 0x30, 0xd6, 0x29, 0x98, 0xf1, 0x1b, - 0x0b, 0xa7, 0x1a, 0xbf, 0xf1, 0x1a, 0xc0, 0xbe, 0xe2, 0xd6, 0xd3, 0x42, 0xbe, 0xc6, 0xc7, 0x6b, - 0x58, 0xe8, 0xcb, 0x30, 0x1a, 0x89, 0x6b, 0x5c, 0x2c, 0xc5, 0x97, 0x07, 0x9c, 0x2b, 0x67, 0x93, - 0x78, 0xa6, 0x5b, 0xba, 0xd2, 0x87, 0x28, 0x92, 0xe8, 0x7b, 0x61, 0x3a, 0xe2, 0x51, 0x4f, 0x96, - 0x3d, 0x27, 0x62, 0x3e, 0x0e, 0x62, 0x15, 0x32, 0x5f, 0xf3, 0x46, 0x0a, 0x86, 0xbb, 0xb0, 0xd1, - 0xaa, 0xfc, 0x28, 0x16, 0xa2, 0x85, 0x2f, 0xcc, 0x2b, 0xc9, 0x07, 0x89, 0xa4, 0x40, 0xe7, 0xd3, - 0xc3, 0xcf, 0x06, 0x5e, 0xab, 0x69, 0xff, 0x44, 0x09, 0x9e, 0xe8, 0x71, 0x88, 0xa1, 0x45, 0xf3, - 0x8d, 0xf2, 0xf9, 0xb4, 0xf4, 0x3b, 0x97, 0x59, 0xd9, 0x10, 0x87, 0x53, 0x6b, 0xa5, 0xf0, 0xa1, - 0xd7, 0xca, 0x8f, 0x5a, 0x9a, 0x5e, 0x82, 0x5b, 0xd2, 0x7d, 0xfe, 0x84, 0x87, 0xf3, 0x29, 0x2a, - 0x2a, 0xb6, 0x32, 0xa4, 0xfd, 0x6b, 0x03, 0x77, 0x67, 0x60, 0xf1, 0xff, 0x6c, 0xb5, 0xb3, 0x1f, - 0x58, 0xf0, 0x74, 0x66, 0x7f, 0x0d, 0x9b, 0x8a, 0x05, 0x28, 0x37, 0x69, 0xa1, 0xe6, 0x37, 0x95, - 0x38, 0x94, 0x4a, 0x00, 0x4e, 0x70, 0x0c, 0xd3, 0x89, 0x42, 0x5f, 0xd3, 0x89, 0x7f, 0x6d, 0x41, - 0xd7, 0x02, 0x3e, 0x83, 0x93, 0xb4, 0x66, 0x9e, 0xa4, 0x9f, 0x1c, 0x64, 0x2e, 0x73, 0x0e, 0xd1, - 0xdf, 0x9b, 0x82, 0xc7, 0x72, 0x1c, 0x25, 0xf6, 0x61, 0x66, 0xbb, 0x49, 0x4c, 0x8f, 0x34, 0xf1, - 0x31, 0x99, 0xce, 0x7b, 0x3d, 0xdd, 0xd7, 0x58, 0x36, 0x97, 0x99, 0x2e, 0x14, 0xdc, 0xdd, 0x04, - 0xfa, 0xc0, 0x82, 0xf3, 0xce, 0xfd, 0xa8, 0x2b, 0x67, 0x9f, 0x58, 0x33, 0xaf, 0x64, 0x6a, 0x29, - 0xfa, 0xe4, 0xf8, 0xe3, 0xe9, 0x6d, 0xb2, 0xb0, 0x70, 0x66, 0x5b, 0x08, 0x8b, 0xf8, 0x95, 0x94, - 0xdf, 0xee, 0xe1, 0x33, 0x99, 0xe5, 0xd1, 0xc2, 0xcf, 0x54, 0x09, 0xc1, 0x8a, 0x0e, 0xba, 0x0b, - 0xe5, 0x6d, 0xe9, 0x66, 0x26, 0xce, 0xec, 0xcc, 0x4b, 0x30, 0xd3, 0x17, 0x8d, 0xbf, 0x1b, 0x2a, - 0x10, 0x4e, 0x48, 0xa1, 0x37, 0xa1, 0xe8, 0x6f, 0x45, 0xbd, 0xf2, 0xc2, 0xa4, 0x4c, 0x8d, 0xb8, - 0x3f, 0xf2, 0xfa, 0x6a, 0x03, 0xd3, 0x8a, 0xe8, 0x06, 0x14, 0xc3, 0xcd, 0x96, 0x50, 0xac, 0x65, - 0xf2, 0xa5, 0x78, 0xa9, 0x9a, 0xbd, 0x48, 0x38, 0x25, 0xbc, 0x54, 0xc5, 0x94, 0x04, 0xaa, 0xc3, - 0x10, 0xf3, 0x29, 0x10, 0xfa, 0xb3, 0x4c, 0x86, 0xb4, 0x87, 0x6f, 0x0e, 0x77, 0x5a, 0x66, 0x08, - 0x98, 0x13, 0x42, 0x6f, 0xc1, 0x70, 0x93, 0xa5, 0x4e, 0x11, 0x21, 0x93, 0xb3, 0xa3, 0xd9, 0x74, - 0x25, 0x57, 0x11, 0x7a, 0x24, 0x56, 0x8e, 0x05, 0x05, 0xb4, 0x01, 0xc3, 0x4d, 0xd2, 0xde, 0xd9, - 0x8a, 0x98, 0xe0, 0x6d, 0x32, 0xf8, 0x09, 0xad, 0x1e, 0x99, 0x82, 0x04, 0x55, 0x86, 0x81, 0x05, - 0x2d, 0xf4, 0x59, 0x28, 0x6c, 0x35, 0x85, 0xa3, 0x41, 0xa6, 0x06, 0xcd, 0x74, 0x24, 0x5f, 0x1a, - 0x3e, 0x3a, 0xac, 0x14, 0x56, 0x97, 0x71, 0x61, 0xab, 0x89, 0xd6, 0x61, 0x64, 0x8b, 0xbb, 0x9e, - 0x0a, 0x25, 0xd9, 0xb3, 0xd9, 0x5e, 0xb1, 0x5d, 0xde, 0xa9, 0xdc, 0x40, 0x5e, 0x00, 0xb0, 0x24, - 0xc2, 0x42, 0x3f, 0x2a, 0x17, 0x5a, 0x11, 0x03, 0x79, 0xfe, 0x64, 0x6e, 0xcf, 0xdc, 0xa9, 0x3d, - 0x71, 0xc4, 0xc5, 0x1a, 0x45, 0xf4, 0x55, 0x28, 0x3b, 0x32, 0x47, 0x9c, 0x88, 0x11, 0xf1, 0x72, - 0xe6, 0x76, 0xec, 0x9d, 0x3e, 0x8f, 0xaf, 0x65, 0x85, 0x84, 0x13, 0xa2, 0x68, 0x17, 0x26, 0xf6, - 0xa3, 0xf6, 0x0e, 0x91, 0xdb, 0x97, 0x85, 0x8c, 0xc8, 0xb9, 0xae, 0xee, 0x0a, 0x44, 0x37, 0x8c, - 0x3b, 0x8e, 0xd7, 0x75, 0xe2, 0xb0, 0x27, 0xe6, 0xbb, 0x3a, 0x31, 0x6c, 0xd2, 0xa6, 0xc3, 0xff, - 0x5e, 0x27, 0xd8, 0x3c, 0x88, 0x89, 0x08, 0x9a, 0x9c, 0x39, 0xfc, 0x6f, 0x73, 0x94, 0xee, 0xe1, - 0x17, 0x00, 0x2c, 0x89, 0xd0, 0x0d, 0xee, 0xc8, 0xfc, 0x8b, 0x2c, 0x58, 0x72, 0xce, 0x06, 0xcf, - 0x4c, 0xd2, 0xa8, 0x0d, 0x0a, 0x3b, 0x19, 0x13, 0x52, 0xec, 0x44, 0x6c, 0xef, 0x04, 0x71, 0xe0, - 0xa7, 0x4e, 0xe3, 0x99, 0xfc, 0x13, 0xb1, 0x9e, 0x81, 0xdf, 0x7d, 0x22, 0x66, 0x61, 0xe1, 0xcc, - 0xb6, 0x50, 0x0b, 0x26, 0xdb, 0x41, 0x18, 0xdf, 0x0f, 0x42, 0xb9, 0xbe, 0x50, 0x0f, 0x21, 0xdf, - 0xc0, 0x14, 0x2d, 0xb2, 0x20, 0xde, 0x26, 0x04, 0xa7, 0x68, 0xa2, 0x2f, 0xc0, 0x48, 0xd4, 0x74, - 0x3c, 0x52, 0xbb, 0x3d, 0x7b, 0x2e, 0xff, 0xaa, 0x69, 0x70, 0x94, 0x9c, 0xd5, 0xc5, 0x26, 0x47, - 0xa0, 0x60, 0x49, 0x0e, 0xad, 0xc2, 0x10, 0x8b, 0xc4, 0xcf, 0xe2, 0x3d, 0xe7, 0xc4, 0x22, 0xea, - 0x32, 0xe5, 0xe4, 0x27, 0x12, 0x2b, 0xc6, 0xbc, 0x3a, 0xdd, 0x03, 0x82, 0xd7, 0x0d, 0xa2, 0xd9, - 0x0b, 0xf9, 0x7b, 0x40, 0xb0, 0xc8, 0xb7, 0x1b, 0xbd, 0xf6, 0x80, 0x42, 0xc2, 0x09, 0x51, 0x7a, - 0x1e, 0xd3, 0x33, 0xf4, 0xb1, 0x1e, 0xd6, 0x25, 0xb9, 0x27, 0x28, 0x3b, 0x8f, 0xe9, 0xf9, 0x49, - 0x49, 0xd8, 0xbf, 0x3f, 0xd2, 0xcd, 0x9f, 0x30, 0xe9, 0xe8, 0xaf, 0x58, 0x5d, 0x0f, 0x67, 0x9f, - 0x19, 0x54, 0x59, 0x73, 0x8a, 0x9c, 0xe9, 0x07, 0x16, 0x3c, 0xd6, 0xce, 0xfc, 0x10, 0x71, 0xd9, - 0x0f, 0xa6, 0xf3, 0xe1, 0x9f, 0xae, 0x62, 0xb2, 0x67, 0xc3, 0x71, 0x4e, 0x4b, 0x69, 0xee, 0xbf, - 0xf8, 0xa1, 0xb9, 0xff, 0x35, 0x18, 0x65, 0x0c, 0x65, 0x12, 0xf8, 0x6a, 0xa0, 0x40, 0x3a, 0x8c, - 0x6d, 0x58, 0x16, 0x15, 0xb1, 0x22, 0x81, 0x7e, 0xcc, 0x82, 0xa7, 0xd2, 0x5d, 0xc7, 0x84, 0x81, - 0x45, 0x04, 0x73, 0x2e, 0x98, 0xad, 0x8a, 0xef, 0x7f, 0xaa, 0xde, 0x0b, 0xf9, 0xb8, 0x1f, 0x02, - 0xee, 0xdd, 0x18, 0xaa, 0x66, 0x48, 0x86, 0xc3, 0xa6, 0x36, 0x7c, 0x00, 0xe9, 0xf0, 0x15, 0x18, - 0xdf, 0x0b, 0x3a, 0x7e, 0x2c, 0x8c, 0x51, 0x84, 0x6b, 0x20, 0x7b, 0xfd, 0x5d, 0xd3, 0xca, 0xb1, - 0x81, 0x95, 0x92, 0x29, 0x47, 0x1f, 0x56, 0xa6, 0x44, 0xef, 0xa4, 0xf2, 0x25, 0x97, 0xf3, 0x79, - 0x0b, 0x21, 0x7e, 0x9f, 0x20, 0x6b, 0xf2, 0xd9, 0xca, 0x41, 0x5f, 0xb7, 0x32, 0x18, 0x78, 0x2e, - 0x19, 0x7f, 0xce, 0x94, 0x8c, 0xaf, 0xa4, 0x25, 0xe3, 0x2e, 0x4d, 0xa8, 0x21, 0x14, 0x0f, 0x1e, - 0x6e, 0x79, 0xd0, 0xf8, 0x65, 0xb6, 0x07, 0x97, 0xfb, 0x5d, 0x4b, 0xcc, 0x2a, 0xa9, 0xa5, 0xde, - 0xbd, 0x12, 0xab, 0xa4, 0x56, 0xad, 0x8a, 0x19, 0x64, 0xd0, 0x00, 0x17, 0xf6, 0x7f, 0xb7, 0xa0, - 0x58, 0x0f, 0x5a, 0x67, 0xa0, 0xd9, 0xfd, 0xbc, 0xa1, 0xd9, 0x7d, 0x22, 0x27, 0x8f, 0x75, 0xae, - 0x1e, 0x77, 0x25, 0xa5, 0xc7, 0x7d, 0x2a, 0x8f, 0x40, 0x6f, 0xad, 0xed, 0xcf, 0x15, 0x41, 0xcf, - 0xba, 0x8d, 0xfe, 0xed, 0xc3, 0x98, 0x04, 0x17, 0x7b, 0x25, 0xe2, 0x16, 0x94, 0x99, 0x31, 0x93, - 0xf4, 0x76, 0xfb, 0x0b, 0x66, 0x19, 0x7c, 0x8f, 0xb8, 0xdb, 0x3b, 0x31, 0x69, 0xa5, 0x3f, 0xe7, - 0xec, 0x2c, 0x83, 0xff, 0xab, 0x05, 0x53, 0xa9, 0xd6, 0x91, 0x07, 0x13, 0x9e, 0xae, 0x96, 0x13, - 0xeb, 0xf4, 0xa1, 0x34, 0x7a, 0xc2, 0xb2, 0x52, 0x2b, 0xc2, 0x26, 0x71, 0x34, 0x0f, 0xa0, 0x9e, - 0xcd, 0xa4, 0xb6, 0x8b, 0x71, 0xfd, 0xea, 0x5d, 0x2d, 0xc2, 0x1a, 0x06, 0x7a, 0x15, 0xc6, 0xe2, - 0xa0, 0x1d, 0x78, 0xc1, 0xf6, 0xc1, 0x4d, 0x22, 0x43, 0xaa, 0x28, 0x7b, 0xa9, 0x8d, 0x04, 0x84, - 0x75, 0x3c, 0xfb, 0x17, 0x8a, 0x90, 0xce, 0xd4, 0xfe, 0x9d, 0x35, 0xf9, 0xf1, 0x5c, 0x93, 0xdf, - 0xb6, 0x60, 0x9a, 0xb6, 0xce, 0x6c, 0x37, 0xe4, 0x65, 0xab, 0xd2, 0xbe, 0x58, 0x3d, 0xd2, 0xbe, - 0x5c, 0xa1, 0x67, 0x57, 0x2b, 0xe8, 0xc4, 0x42, 0x5b, 0xa6, 0x1d, 0x4e, 0xb4, 0x14, 0x0b, 0xa8, - 0xc0, 0x23, 0x61, 0x28, 0x1c, 0x92, 0x74, 0x3c, 0x12, 0x86, 0x58, 0x40, 0x65, 0x56, 0x98, 0x52, - 0x4e, 0x56, 0x18, 0x16, 0x20, 0x4e, 0xbc, 0xf2, 0x0b, 0xb6, 0x47, 0x0b, 0x10, 0x27, 0x9f, 0xff, - 0x13, 0x1c, 0xfb, 0x97, 0x8b, 0x30, 0x5e, 0x0f, 0x5a, 0xc9, 0xc3, 0xd5, 0x2b, 0xc6, 0xc3, 0xd5, - 0xe5, 0xd4, 0xc3, 0xd5, 0xb4, 0x8e, 0xfb, 0x9d, 0x67, 0xaa, 0x8f, 0xea, 0x99, 0xea, 0x5f, 0x59, - 0x6c, 0xd6, 0xaa, 0xeb, 0x0d, 0x91, 0x95, 0xf6, 0x25, 0x18, 0x63, 0x07, 0x12, 0xf3, 0x80, 0x93, - 0xaf, 0x39, 0x2c, 0xe0, 0xfb, 0x7a, 0x52, 0x8c, 0x75, 0x1c, 0x74, 0x15, 0x46, 0x23, 0xe2, 0x84, - 0xcd, 0x1d, 0x75, 0xc6, 0x89, 0xb7, 0x0e, 0x5e, 0x86, 0x15, 0x14, 0xbd, 0x9d, 0xc4, 0x26, 0x2b, - 0xe6, 0xe7, 0x57, 0xd5, 0xfb, 0xc3, 0xb7, 0x48, 0x7e, 0x40, 0x32, 0xfb, 0x1e, 0xa0, 0x6e, 0xfc, - 0x01, 0xa2, 0x10, 0x55, 0xcc, 0x28, 0x44, 0xe5, 0xae, 0x08, 0x44, 0x7f, 0x66, 0xc1, 0x64, 0x3d, - 0x68, 0xd1, 0xad, 0xfb, 0x97, 0x69, 0x9f, 0xea, 0x81, 0x19, 0x87, 0x7b, 0x04, 0x66, 0xfc, 0x07, - 0x16, 0x8c, 0xd4, 0x83, 0xd6, 0x19, 0xe8, 0xd8, 0x3f, 0x67, 0xea, 0xd8, 0x1f, 0xcf, 0x59, 0x12, - 0x39, 0x6a, 0xf5, 0x5f, 0x2d, 0xc2, 0x04, 0xed, 0x67, 0xb0, 0x2d, 0x67, 0xc9, 0x18, 0x11, 0x6b, - 0x80, 0x11, 0xa1, 0x6c, 0x6e, 0xe0, 0x79, 0xc1, 0xfd, 0xf4, 0x8c, 0xad, 0xb2, 0x52, 0x2c, 0xa0, - 0xe8, 0x05, 0x18, 0x6d, 0x87, 0x64, 0xdf, 0x0d, 0x04, 0xff, 0xa8, 0xbd, 0x58, 0xd4, 0x45, 0x39, - 0x56, 0x18, 0x54, 0xee, 0x8a, 0x5c, 0xbf, 0x49, 0x64, 0x72, 0xe7, 0x12, 0xcb, 0xff, 0xc4, 0x23, - 0x2e, 0x6b, 0xe5, 0xd8, 0xc0, 0x42, 0xf7, 0xa0, 0xcc, 0xfe, 0xb3, 0x13, 0xe5, 0xe4, 0xf9, 0x6a, - 0x44, 0x9a, 0x03, 0x41, 0x00, 0x27, 0xb4, 0xd0, 0x35, 0x80, 0x58, 0x46, 0xe5, 0x8d, 0x44, 0x30, - 0x19, 0xc5, 0x6b, 0xab, 0x78, 0xbd, 0x11, 0xd6, 0xb0, 0xd0, 0xf3, 0x50, 0x8e, 0x1d, 0xd7, 0xbb, - 0xe5, 0xfa, 0x24, 0x62, 0x8a, 0xe6, 0xa2, 0xcc, 0x62, 0x20, 0x0a, 0x71, 0x02, 0xa7, 0xbc, 0x0e, - 0xf3, 0xb4, 0xe6, 0xd9, 0xae, 0x46, 0x19, 0x36, 0xe3, 0x75, 0x6e, 0xa9, 0x52, 0xac, 0x61, 0xd8, - 0xaf, 0xc3, 0x85, 0x7a, 0xd0, 0xaa, 0x07, 0x61, 0xbc, 0x1a, 0x84, 0xf7, 0x9d, 0xb0, 0x25, 0xe7, - 0xaf, 0x22, 0x03, 0xea, 0xd3, 0xb3, 0x67, 0x88, 0xef, 0x4c, 0x23, 0x54, 0xfe, 0xcb, 0x8c, 0xdb, - 0x39, 0xa1, 0x87, 0xc5, 0xff, 0x2e, 0xb0, 0x83, 0x22, 0x95, 0x82, 0x0d, 0x7d, 0x05, 0x26, 0x23, - 0x72, 0xcb, 0xf5, 0x3b, 0x0f, 0xa4, 0x7c, 0xdc, 0xc3, 0x7d, 0xa5, 0xb1, 0xa2, 0x63, 0x72, 0x2d, - 0x9b, 0x59, 0x86, 0x53, 0xd4, 0xe8, 0x10, 0x86, 0x1d, 0x7f, 0x31, 0xba, 0x13, 0x91, 0x50, 0xa4, - 0x00, 0x63, 0x43, 0x88, 0x65, 0x21, 0x4e, 0xe0, 0x74, 0xc9, 0xb0, 0x3f, 0xeb, 0x81, 0x8f, 0x83, - 0x20, 0x96, 0x8b, 0x8c, 0x25, 0x91, 0xd1, 0xca, 0xb1, 0x81, 0x85, 0x56, 0x01, 0x45, 0x9d, 0x76, - 0xdb, 0x63, 0x0f, 0xe0, 0x8e, 0x77, 0x3d, 0x0c, 0x3a, 0x6d, 0xfe, 0xf8, 0x58, 0x64, 0xf9, 0xfa, - 0x51, 0xa3, 0x0b, 0x8a, 0x33, 0x6a, 0xd0, 0x83, 0x61, 0x2b, 0x62, 0xbf, 0xd9, 0xc2, 0x2b, 0x0a, - 0xcd, 0x77, 0x83, 0x15, 0x61, 0x09, 0xa3, 0xf3, 0xcc, 0x9a, 0xe7, 0x98, 0xc3, 0xc9, 0x3c, 0x63, - 0x55, 0x8a, 0x35, 0x0c, 0xfb, 0x07, 0xd9, 0x05, 0xc3, 0x32, 0x3d, 0xc5, 0x9d, 0x90, 0xa0, 0x3d, - 0x98, 0x68, 0xb3, 0xab, 0x5f, 0xc4, 0x21, 0x16, 0x03, 0xfe, 0xca, 0x80, 0x92, 0xe2, 0x7d, 0xba, - 0x79, 0x95, 0x26, 0x87, 0xb1, 0xe0, 0x75, 0x9d, 0x1c, 0x36, 0xa9, 0xdb, 0x3f, 0x37, 0xcd, 0xce, - 0xb1, 0x06, 0x17, 0xff, 0x46, 0x84, 0xed, 0xac, 0xe0, 0x75, 0xe7, 0xf2, 0xf5, 0x10, 0xc9, 0x95, - 0x23, 0xec, 0x6f, 0xb1, 0xac, 0x8b, 0xde, 0x66, 0xaf, 0xbc, 0xfc, 0xf0, 0xe8, 0x97, 0x70, 0x97, - 0x63, 0x19, 0x0f, 0xba, 0xa2, 0x22, 0xd6, 0x88, 0xa0, 0x5b, 0x30, 0x21, 0x12, 0x03, 0x09, 0x45, - 0x53, 0xd1, 0x50, 0x24, 0x4c, 0x60, 0x1d, 0x78, 0x9c, 0x2e, 0xc0, 0x66, 0x65, 0xb4, 0x0d, 0x4f, - 0x69, 0x59, 0xf2, 0xae, 0x87, 0x0e, 0x7b, 0xf9, 0x73, 0xd9, 0xea, 0xd7, 0xce, 0xa2, 0xa7, 0x8f, - 0x0e, 0x2b, 0x4f, 0x6d, 0xf4, 0x42, 0xc4, 0xbd, 0xe9, 0xa0, 0xdb, 0x70, 0x81, 0xbb, 0xa8, 0x55, - 0x89, 0xd3, 0xf2, 0x5c, 0x5f, 0x1d, 0x76, 0x7c, 0x01, 0x5d, 0x3c, 0x3a, 0xac, 0x5c, 0x58, 0xcc, - 0x42, 0xc0, 0xd9, 0xf5, 0xd0, 0xe7, 0xa0, 0xdc, 0xf2, 0x23, 0x31, 0x06, 0xc3, 0x46, 0x02, 0xc8, - 0x72, 0x75, 0xbd, 0xa1, 0xbe, 0x3f, 0xf9, 0x83, 0x93, 0x0a, 0x68, 0x9b, 0x2b, 0x9b, 0x94, 0x6c, - 0x37, 0x92, 0x9f, 0xec, 0x5b, 0x2c, 0x09, 0xc3, 0x49, 0x85, 0x6b, 0x59, 0x95, 0x91, 0xa7, 0xe1, - 0xbf, 0x62, 0x10, 0x46, 0x6f, 0x01, 0xa2, 0xcc, 0x8f, 0xdb, 0x24, 0x8b, 0x4d, 0x16, 0x0e, 0x9a, - 0xe9, 0xe6, 0x46, 0x0d, 0xa7, 0x00, 0xd4, 0xe8, 0xc2, 0xc0, 0x19, 0xb5, 0xd0, 0x0d, 0x7a, 0x02, - 0xe9, 0xa5, 0xc2, 0x58, 0x55, 0x32, 0xcc, 0xb3, 0x55, 0xd2, 0x0e, 0x49, 0xd3, 0x89, 0x49, 0xcb, - 0xa4, 0x88, 0x53, 0xf5, 0xe8, 0xfd, 0xa4, 0x32, 0xc3, 0x80, 0x19, 0xf3, 0xa1, 0x3b, 0x3b, 0x0c, - 0x95, 0x35, 0x77, 0x82, 0x28, 0x5e, 0x27, 0xf1, 0xfd, 0x20, 0xdc, 0x15, 0x21, 0xb6, 0x92, 0x68, - 0x8f, 0x09, 0x08, 0xeb, 0x78, 0x94, 0xb7, 0x64, 0xcf, 0xac, 0xb5, 0x2a, 0x7b, 0xf5, 0x1a, 0x4d, - 0xf6, 0xc9, 0x0d, 0x5e, 0x8c, 0x25, 0x5c, 0xa2, 0xd6, 0xea, 0xcb, 0xec, 0x05, 0x2b, 0x85, 0x5a, - 0xab, 0x2f, 0x63, 0x09, 0x47, 0xa4, 0x3b, 0xb9, 0xe6, 0x64, 0xbe, 0xa6, 0xb0, 0xfb, 0x1c, 0x1f, - 0x30, 0xbf, 0xa6, 0x0f, 0xd3, 0x2a, 0xad, 0x27, 0x8f, 0x3d, 0x16, 0xcd, 0x4e, 0xb1, 0x45, 0x32, - 0x78, 0xe0, 0x32, 0xa5, 0x7b, 0xad, 0xa5, 0x28, 0xe1, 0x2e, 0xda, 0x46, 0x14, 0x8e, 0xe9, 0xbe, - 0x99, 0x7d, 0x16, 0xa0, 0x1c, 0x75, 0x36, 0x5b, 0xc1, 0x9e, 0xe3, 0xfa, 0xec, 0xc1, 0x49, 0x63, - 0x5c, 0x1a, 0x12, 0x80, 0x13, 0x1c, 0xb4, 0x0a, 0xa3, 0x8e, 0x54, 0xac, 0xa2, 0x7c, 0xb7, 0x7c, - 0xa5, 0x4e, 0xe5, 0x9e, 0xaa, 0x52, 0x95, 0xaa, 0xea, 0xa2, 0x37, 0x60, 0x42, 0x38, 0x26, 0xf1, - 0x60, 0x05, 0xec, 0x41, 0x48, 0xb3, 0x3c, 0x6f, 0xe8, 0x40, 0x6c, 0xe2, 0xa2, 0x2f, 0xc3, 0x24, - 0xa5, 0x92, 0x1c, 0x6c, 0xb3, 0xe7, 0x07, 0x39, 0x11, 0xb5, 0x8c, 0x0d, 0x7a, 0x65, 0x9c, 0x22, - 0x86, 0x5a, 0xf0, 0xa4, 0xd3, 0x89, 0x03, 0xa6, 0x9c, 0x36, 0xd7, 0xff, 0x46, 0xb0, 0x4b, 0x7c, - 0xf6, 0x2e, 0x34, 0xba, 0x74, 0xf9, 0xe8, 0xb0, 0xf2, 0xe4, 0x62, 0x0f, 0x3c, 0xdc, 0x93, 0x0a, - 0xba, 0x03, 0x63, 0x71, 0xe0, 0x31, 0x1b, 0x70, 0xca, 0x03, 0x3c, 0x96, 0x1f, 0xc5, 0x66, 0x43, - 0xa1, 0xe9, 0x8a, 0x19, 0x55, 0x15, 0xeb, 0x74, 0xd0, 0x06, 0xdf, 0x63, 0x2c, 0xbe, 0x27, 0x89, - 0x66, 0x1f, 0xcf, 0x1f, 0x18, 0x15, 0x06, 0xd4, 0xdc, 0x82, 0xa2, 0x26, 0xd6, 0xc9, 0xa0, 0xeb, - 0x30, 0xd3, 0x0e, 0xdd, 0x80, 0x2d, 0x6c, 0xf5, 0x30, 0x30, 0x6b, 0x06, 0xe9, 0xaf, 0xa7, 0x11, - 0x70, 0x77, 0x1d, 0x2a, 0xb8, 0xc9, 0xc2, 0xd9, 0x8b, 0x3c, 0xe3, 0x13, 0x67, 0x66, 0x79, 0x19, - 0x56, 0x50, 0xb4, 0xc6, 0xce, 0x65, 0x2e, 0x62, 0xcd, 0xce, 0xe5, 0x87, 0x33, 0xd0, 0x45, 0x31, - 0xce, 0xe8, 0xa8, 0xbf, 0x38, 0xa1, 0x40, 0xef, 0x8d, 0x68, 0xc7, 0x09, 0x49, 0x3d, 0x0c, 0x9a, - 0x84, 0x77, 0x86, 0x9b, 0x9f, 0x3f, 0xc1, 0xc3, 0x10, 0xd2, 0x7b, 0xa3, 0x91, 0x85, 0x80, 0xb3, - 0xeb, 0xcd, 0x7d, 0x0f, 0xcc, 0x74, 0x9d, 0xe4, 0x27, 0x8a, 0x4d, 0xfd, 0xa7, 0x43, 0x50, 0x56, - 0x8a, 0x5f, 0xb4, 0x60, 0xea, 0xf3, 0x2f, 0xa6, 0xf5, 0xf9, 0xa3, 0x94, 0xff, 0xd4, 0x55, 0xf8, - 0x1b, 0x86, 0xe1, 0x57, 0x21, 0x3f, 0x13, 0x94, 0xae, 0xf5, 0xe8, 0xeb, 0xe5, 0xa5, 0xc9, 0xf1, - 0xc5, 0x81, 0x1f, 0x06, 0x4a, 0x3d, 0x55, 0x03, 0x03, 0x26, 0x62, 0xa5, 0xa2, 0x6e, 0x3b, 0x68, - 0xd5, 0xea, 0xe9, 0xcc, 0x84, 0x75, 0x5a, 0x88, 0x39, 0x8c, 0x09, 0x2b, 0x94, 0xed, 0x60, 0xc2, - 0xca, 0xc8, 0x43, 0x0a, 0x2b, 0x92, 0x00, 0x4e, 0x68, 0x21, 0x0f, 0x66, 0x9a, 0x66, 0x52, 0x49, - 0xe5, 0xd9, 0xf5, 0x4c, 0xdf, 0xf4, 0x8e, 0x1d, 0x2d, 0x83, 0xd7, 0x72, 0x9a, 0x0a, 0xee, 0x26, - 0x8c, 0xde, 0x80, 0xd1, 0xf7, 0x82, 0x88, 0x6d, 0x0b, 0x71, 0xf7, 0x4a, 0x0f, 0x98, 0xd1, 0xb7, - 0x6f, 0x37, 0x58, 0xf9, 0xf1, 0x61, 0x65, 0xac, 0x1e, 0xb4, 0xe4, 0x5f, 0xac, 0x2a, 0xa0, 0x07, - 0x70, 0xc1, 0x38, 0xb1, 0x54, 0x77, 0x61, 0xf0, 0xee, 0x3e, 0x25, 0x9a, 0xbb, 0x50, 0xcb, 0xa2, - 0x84, 0xb3, 0x1b, 0xa0, 0xc7, 0x80, 0x1f, 0x88, 0x84, 0xac, 0xf2, 0x7e, 0x67, 0xd7, 0x78, 0x59, - 0xf7, 0x7f, 0x4e, 0x21, 0xe0, 0xee, 0x3a, 0xf6, 0x37, 0xb8, 0x9e, 0x5c, 0x68, 0xd3, 0x48, 0xd4, - 0xf1, 0xce, 0x22, 0xdf, 0xcf, 0x8a, 0xa1, 0xe8, 0x7b, 0xe8, 0xb7, 0x98, 0xdf, 0xb2, 0xd8, 0x5b, - 0xcc, 0x06, 0xd9, 0x6b, 0x7b, 0x4e, 0x7c, 0x16, 0x9e, 0x17, 0x6f, 0xc3, 0x68, 0x2c, 0x5a, 0xeb, - 0x95, 0xa2, 0x48, 0xeb, 0x14, 0x7b, 0x8f, 0x52, 0x37, 0xbf, 0x2c, 0xc5, 0x8a, 0x8c, 0xfd, 0xcf, - 0xf9, 0x0c, 0x48, 0xc8, 0x19, 0x28, 0x5d, 0xaa, 0xa6, 0xd2, 0xa5, 0xd2, 0xe7, 0x0b, 0x72, 0x94, - 0x2f, 0xff, 0xcc, 0xec, 0x37, 0x13, 0xb2, 0x3e, 0xee, 0x8f, 0x80, 0xf6, 0x4f, 0x59, 0x70, 0x3e, - 0xcb, 0x6a, 0x86, 0x72, 0x6b, 0x5c, 0xc4, 0x53, 0x8f, 0xa2, 0x6a, 0x04, 0xef, 0x8a, 0x72, 0xac, - 0x30, 0x06, 0x8e, 0xfe, 0x7f, 0xb2, 0x10, 0x61, 0xb7, 0x61, 0xa2, 0x1e, 0x12, 0xed, 0x0e, 0x78, - 0x93, 0xbb, 0x52, 0xf1, 0xfe, 0xbc, 0x70, 0x62, 0x37, 0x2a, 0xfb, 0x17, 0x0b, 0x70, 0x9e, 0xbf, - 0x6a, 0x2c, 0xee, 0x07, 0x6e, 0xab, 0x1e, 0xb4, 0x44, 0xe6, 0x86, 0x2f, 0xc1, 0x78, 0x5b, 0x93, - 0xcb, 0x7b, 0x05, 0x29, 0xd2, 0xe5, 0xf7, 0x44, 0x3e, 0xd2, 0x4b, 0xb1, 0x41, 0x0b, 0xb5, 0x60, - 0x9c, 0xec, 0xbb, 0x4d, 0xa5, 0x1a, 0x2f, 0x9c, 0xf8, 0x6e, 0x50, 0xad, 0xac, 0x68, 0x74, 0xb0, - 0x41, 0xf5, 0x11, 0x24, 0xf3, 0xb2, 0x7f, 0xda, 0x82, 0xc7, 0x73, 0x42, 0x1a, 0xd1, 0xe6, 0xee, - 0xb3, 0xf7, 0x23, 0x91, 0x17, 0x48, 0x35, 0xc7, 0x5f, 0x95, 0xb0, 0x80, 0xa2, 0x2f, 0x00, 0xf0, - 0x57, 0x21, 0x2a, 0x2e, 0xf4, 0x8b, 0xfd, 0x62, 0x84, 0xad, 0xd0, 0xc2, 0x0d, 0xc8, 0xfa, 0x58, - 0xa3, 0x65, 0xff, 0x7c, 0x11, 0x86, 0xd8, 0x2b, 0x04, 0x5a, 0x85, 0x91, 0x1d, 0x1e, 0xc0, 0x77, - 0x90, 0x58, 0xc1, 0x89, 0xdc, 0xc5, 0x0b, 0xb0, 0xac, 0x8c, 0xd6, 0xe0, 0x1c, 0x0f, 0x80, 0xec, - 0x55, 0x89, 0xe7, 0x1c, 0x48, 0xf1, 0x9d, 0xe7, 0xd2, 0x51, 0xa1, 0x13, 0x6a, 0xdd, 0x28, 0x38, - 0xab, 0x1e, 0x7a, 0x13, 0x26, 0x63, 0x77, 0x8f, 0x04, 0x9d, 0x58, 0x52, 0xe2, 0xa1, 0x8f, 0x15, - 0xb3, 0xbf, 0x61, 0x40, 0x71, 0x0a, 0x9b, 0x0a, 0x22, 0xed, 0x2e, 0x45, 0x85, 0x96, 0x9d, 0xde, - 0x54, 0x4e, 0x98, 0xb8, 0xcc, 0x5c, 0xa6, 0xc3, 0x8c, 0x83, 0x36, 0x76, 0x42, 0x12, 0xed, 0x04, - 0x5e, 0x4b, 0xa4, 0x62, 0x4e, 0xcc, 0x65, 0x52, 0x70, 0xdc, 0x55, 0x83, 0x52, 0xd9, 0x72, 0x5c, - 0xaf, 0x13, 0x92, 0x84, 0xca, 0xb0, 0x49, 0x65, 0x35, 0x05, 0xc7, 0x5d, 0x35, 0xe8, 0x3a, 0xba, - 0x20, 0x72, 0x23, 0x4b, 0x87, 0x6e, 0x65, 0x03, 0x35, 0x22, 0x5d, 0x5b, 0x7a, 0x44, 0x34, 0x11, - 0x56, 0x22, 0x2a, 0xbb, 0xb2, 0x96, 0x79, 0x53, 0x38, 0xb5, 0x48, 0x2a, 0x0f, 0x93, 0xa1, 0xf7, - 0xf7, 0x2d, 0x38, 0x97, 0x61, 0x6b, 0xc9, 0x8f, 0xaa, 0x6d, 0x37, 0x8a, 0x55, 0xbe, 0x10, 0xed, - 0xa8, 0xe2, 0xe5, 0x58, 0x61, 0xd0, 0xfd, 0xc0, 0x0f, 0xc3, 0xf4, 0x01, 0x28, 0x6c, 0x99, 0x04, - 0xf4, 0x64, 0x07, 0x20, 0xba, 0x0c, 0xa5, 0x4e, 0x44, 0x64, 0x2c, 0x22, 0x75, 0x7e, 0x33, 0x55, - 0x29, 0x83, 0x50, 0xd6, 0x74, 0x5b, 0x69, 0x29, 0x35, 0xd6, 0x94, 0xab, 0x1e, 0x39, 0xcc, 0xfe, - 0x5a, 0x11, 0x2e, 0xe6, 0xda, 0x52, 0xd3, 0x2e, 0xed, 0x05, 0xbe, 0x1b, 0x07, 0xea, 0x85, 0x8b, - 0x47, 0xc3, 0x20, 0xed, 0x9d, 0x35, 0x51, 0x8e, 0x15, 0x06, 0xba, 0x22, 0xb3, 0x74, 0xa7, 0x33, - 0xa2, 0x2c, 0x55, 0x8d, 0x44, 0xdd, 0x83, 0x66, 0x9b, 0x7a, 0x06, 0x4a, 0xed, 0x20, 0xf0, 0xd2, - 0x87, 0x11, 0xed, 0x6e, 0x10, 0x78, 0x98, 0x01, 0xd1, 0xa7, 0xc4, 0x38, 0xa4, 0x9e, 0x74, 0xb0, - 0xd3, 0x0a, 0x22, 0x6d, 0x30, 0x9e, 0x83, 0x91, 0x5d, 0x72, 0x10, 0xba, 0xfe, 0x76, 0xfa, 0xa9, - 0xef, 0x26, 0x2f, 0xc6, 0x12, 0x6e, 0x26, 0x04, 0x18, 0x39, 0xed, 0x34, 0x51, 0xa3, 0x7d, 0xaf, - 0xb6, 0x1f, 0x2d, 0xc2, 0x14, 0x5e, 0xaa, 0x7e, 0x67, 0x22, 0xee, 0x74, 0x4f, 0xc4, 0x69, 0xa7, - 0x89, 0xea, 0x3f, 0x1b, 0xbf, 0x6a, 0xc1, 0x14, 0x0b, 0x9a, 0x2b, 0x62, 0x30, 0xb8, 0x81, 0x7f, - 0x06, 0xac, 0xdb, 0x33, 0x30, 0x14, 0xd2, 0x46, 0xd3, 0xb9, 0x5f, 0x58, 0x4f, 0x30, 0x87, 0xa1, - 0x27, 0xa1, 0xc4, 0xba, 0x40, 0x27, 0x6f, 0x9c, 0x87, 0xcd, 0xaf, 0x3a, 0xb1, 0x83, 0x59, 0x29, - 0x73, 0x2c, 0xc6, 0xa4, 0xed, 0xb9, 0xbc, 0xd3, 0x89, 0xaa, 0xff, 0xe3, 0xe1, 0x58, 0x9c, 0xd9, - 0xb5, 0x0f, 0xe7, 0x58, 0x9c, 0x4d, 0xb2, 0xb7, 0x58, 0xf4, 0x3f, 0x0a, 0x70, 0x29, 0xb3, 0xde, - 0xc0, 0x8e, 0xc5, 0xbd, 0x6b, 0x9f, 0x8e, 0xc5, 0x46, 0xb6, 0x21, 0x45, 0xf1, 0x0c, 0x0d, 0x29, - 0x4a, 0x83, 0x72, 0x8e, 0x43, 0x03, 0xf8, 0xfb, 0x66, 0x0e, 0xd9, 0xc7, 0xc4, 0xdf, 0x37, 0xb3, - 0x6f, 0x39, 0x62, 0xdd, 0x9f, 0x17, 0x72, 0xbe, 0x85, 0x09, 0x78, 0x57, 0xe9, 0x39, 0xc3, 0x80, - 0x91, 0xe0, 0x84, 0xc7, 0xf9, 0x19, 0xc3, 0xcb, 0xb0, 0x82, 0x22, 0x57, 0xf3, 0x9c, 0x2d, 0xe4, - 0x67, 0x06, 0xcc, 0x6d, 0x6a, 0xde, 0x7c, 0x99, 0x51, 0x43, 0x90, 0xe1, 0x45, 0xbb, 0xa6, 0x09, - 0xe5, 0xc5, 0xc1, 0x85, 0xf2, 0xf1, 0x6c, 0x81, 0x1c, 0x2d, 0xc2, 0xd4, 0x9e, 0xeb, 0xb3, 0x4c, - 0xef, 0x26, 0x2b, 0xaa, 0x02, 0x49, 0xac, 0x99, 0x60, 0x9c, 0xc6, 0x9f, 0x7b, 0x03, 0x26, 0x1e, - 0x5e, 0x1d, 0xf9, 0xed, 0x22, 0x3c, 0xd1, 0x63, 0xdb, 0xf3, 0xb3, 0xde, 0x98, 0x03, 0xed, 0xac, - 0xef, 0x9a, 0x87, 0x3a, 0x9c, 0xdf, 0xea, 0x78, 0xde, 0x01, 0xb3, 0x55, 0x24, 0x2d, 0x89, 0x21, - 0x78, 0x45, 0x99, 0xbf, 0xff, 0xfc, 0x6a, 0x06, 0x0e, 0xce, 0xac, 0x89, 0xde, 0x02, 0x14, 0x88, - 0xb4, 0xa4, 0xd7, 0x89, 0x2f, 0xf4, 0xdd, 0x6c, 0xe0, 0x8b, 0xc9, 0x66, 0xbc, 0xdd, 0x85, 0x81, - 0x33, 0x6a, 0x51, 0xa6, 0x9f, 0xde, 0x4a, 0x07, 0xaa, 0x5b, 0x29, 0xa6, 0x1f, 0xeb, 0x40, 0x6c, - 0xe2, 0xa2, 0xeb, 0x30, 0xe3, 0xec, 0x3b, 0x2e, 0x0f, 0xb0, 0x26, 0x09, 0x70, 0xae, 0x5f, 0x29, - 0xc1, 0x16, 0xd3, 0x08, 0xb8, 0xbb, 0x4e, 0xca, 0x75, 0x77, 0x38, 0xdf, 0x75, 0xb7, 0xf7, 0xb9, - 0xd8, 0x4f, 0xa7, 0x6b, 0xff, 0x67, 0x8b, 0x5e, 0x5f, 0x19, 0xa9, 0xc5, 0xe9, 0x38, 0x28, 0xdd, - 0xa4, 0xe6, 0x45, 0xab, 0xc6, 0x61, 0x59, 0x07, 0x62, 0x13, 0x97, 0x2f, 0x88, 0x28, 0x71, 0xe8, - 0x30, 0x58, 0x77, 0xe1, 0x26, 0xaf, 0x30, 0xd0, 0x17, 0x61, 0xa4, 0xe5, 0xee, 0xbb, 0x51, 0x10, - 0x8a, 0xcd, 0x72, 0x42, 0xb3, 0xf8, 0xe4, 0x1c, 0xac, 0x72, 0x32, 0x58, 0xd2, 0xb3, 0x7f, 0xb4, - 0x00, 0x13, 0xb2, 0xc5, 0xb7, 0x3b, 0x41, 0xec, 0x9c, 0xc1, 0xb5, 0x7c, 0xdd, 0xb8, 0x96, 0x3f, - 0xd5, 0x2b, 0x56, 0x00, 0xeb, 0x52, 0xee, 0x75, 0x7c, 0x3b, 0x75, 0x1d, 0x3f, 0xdb, 0x9f, 0x54, - 0xef, 0x6b, 0xf8, 0x5f, 0x58, 0x30, 0x63, 0xe0, 0x9f, 0xc1, 0x6d, 0xb0, 0x6a, 0xde, 0x06, 0x4f, - 0xf7, 0xfd, 0x86, 0x9c, 0x5b, 0xe0, 0xeb, 0x85, 0x54, 0xdf, 0xd9, 0xe9, 0xff, 0x1e, 0x94, 0x76, - 0x9c, 0xb0, 0xd5, 0x2b, 0x26, 0x69, 0x57, 0xa5, 0xf9, 0x1b, 0x4e, 0xd8, 0xe2, 0x67, 0xf8, 0x0b, - 0x2a, 0x99, 0xa1, 0x13, 0xb6, 0xfa, 0xfa, 0x2f, 0xb1, 0xa6, 0xd0, 0xeb, 0x30, 0x1c, 0x35, 0x83, - 0xb6, 0xb2, 0x2e, 0xbc, 0xcc, 0x13, 0x1d, 0xd2, 0x92, 0xe3, 0xc3, 0x0a, 0x32, 0x9b, 0xa3, 0xc5, - 0x58, 0xe0, 0xcf, 0x6d, 0x43, 0x59, 0x35, 0xfd, 0x48, 0x7d, 0x43, 0xfe, 0x63, 0x11, 0xce, 0x65, - 0xac, 0x0b, 0x14, 0x19, 0xa3, 0xf5, 0xd2, 0x80, 0xcb, 0xe9, 0x43, 0x8e, 0x57, 0xc4, 0x24, 0x96, - 0x96, 0x98, 0xff, 0x81, 0x1b, 0xbd, 0x13, 0x91, 0x74, 0xa3, 0xb4, 0xa8, 0x7f, 0xa3, 0xb4, 0xb1, - 0x33, 0x1b, 0x6a, 0xda, 0x90, 0xea, 0xe9, 0x23, 0x9d, 0xd3, 0x3f, 0x29, 0xc2, 0xf9, 0xac, 0x10, - 0x23, 0xe8, 0x07, 0x52, 0x59, 0x49, 0x5e, 0x19, 0x34, 0x38, 0x09, 0x4f, 0x55, 0x22, 0x72, 0xec, - 0xce, 0x9b, 0x79, 0x4a, 0xfa, 0x0e, 0xb3, 0x68, 0x93, 0x39, 0x14, 0x86, 0x3c, 0x9b, 0x8c, 0xdc, - 0xe2, 0x9f, 0x19, 0xb8, 0x03, 0x22, 0x0d, 0x4d, 0x94, 0x72, 0x28, 0x94, 0xc5, 0xfd, 0x1d, 0x0a, - 0x65, 0xcb, 0x73, 0x2e, 0x8c, 0x69, 0x5f, 0xf3, 0x48, 0x67, 0x7c, 0x97, 0xde, 0x28, 0x5a, 0xbf, - 0x1f, 0xe9, 0xac, 0xff, 0xb4, 0x05, 0x29, 0x9b, 0x3e, 0xa5, 0x92, 0xb2, 0x72, 0x55, 0x52, 0x97, - 0xa1, 0x14, 0x06, 0x1e, 0x49, 0x27, 0x0a, 0xc1, 0x81, 0x47, 0x30, 0x83, 0x50, 0x8c, 0x38, 0x51, - 0x48, 0x8c, 0xeb, 0xc2, 0x96, 0x10, 0xa3, 0x9e, 0x81, 0x21, 0x8f, 0xec, 0x13, 0x2f, 0x1d, 0x85, - 0xfb, 0x16, 0x2d, 0xc4, 0x1c, 0x66, 0xff, 0x6a, 0x09, 0x9e, 0xea, 0xe9, 0x92, 0x4b, 0x45, 0x96, - 0x6d, 0x27, 0x26, 0xf7, 0x9d, 0x83, 0x74, 0xb8, 0xdc, 0xeb, 0xbc, 0x18, 0x4b, 0x38, 0xb3, 0x40, - 0xe6, 0xe1, 0xf1, 0x52, 0x0a, 0x3c, 0x11, 0x15, 0x4f, 0x40, 0x1f, 0x41, 0x7e, 0xf1, 0x6b, 0x00, - 0x51, 0xe4, 0xad, 0xf8, 0x94, 0x03, 0x6b, 0x09, 0xd3, 0xe6, 0x24, 0x8c, 0x62, 0xe3, 0x96, 0x80, - 0x60, 0x0d, 0x0b, 0x55, 0x61, 0xba, 0x1d, 0x06, 0x31, 0xd7, 0x87, 0x56, 0xb9, 0x91, 0xcc, 0x90, - 0xe9, 0x0d, 0x59, 0x4f, 0xc1, 0x71, 0x57, 0x0d, 0xf4, 0x2a, 0x8c, 0x09, 0x0f, 0xc9, 0x7a, 0x10, - 0x78, 0x42, 0x55, 0xa3, 0x4c, 0x2e, 0x1a, 0x09, 0x08, 0xeb, 0x78, 0x5a, 0x35, 0xa6, 0x64, 0x1d, - 0xc9, 0xac, 0xc6, 0x15, 0xad, 0x1a, 0x5e, 0x2a, 0xdc, 0xd0, 0xe8, 0x40, 0xe1, 0x86, 0x12, 0xe5, - 0x55, 0x79, 0xe0, 0x77, 0x25, 0xe8, 0xab, 0xee, 0xf9, 0xa5, 0x12, 0x9c, 0x13, 0x0b, 0xe7, 0x51, - 0x2f, 0x97, 0x47, 0x94, 0x05, 0xfd, 0x3b, 0x6b, 0xe6, 0xac, 0xd7, 0xcc, 0x37, 0x8a, 0x30, 0xcc, - 0xa7, 0xe2, 0x0c, 0x78, 0xf8, 0x55, 0xa1, 0xf4, 0xeb, 0x11, 0x68, 0x87, 0xf7, 0x65, 0xbe, 0xea, - 0xc4, 0x0e, 0xbf, 0xbf, 0xd4, 0x31, 0x9a, 0xa8, 0x07, 0xd1, 0xbc, 0x71, 0xd0, 0xce, 0xa5, 0xb4, - 0x5a, 0xc0, 0x69, 0x68, 0xc7, 0xee, 0x57, 0x00, 0x22, 0x96, 0x89, 0x9b, 0xd2, 0x10, 0x21, 0x9b, - 0x3e, 0xdd, 0xa3, 0xf5, 0x86, 0x42, 0xe6, 0x7d, 0x48, 0x96, 0xa0, 0x02, 0x60, 0x8d, 0xe2, 0xdc, - 0x6b, 0x50, 0x56, 0xc8, 0xfd, 0x54, 0x00, 0xe3, 0xfa, 0xad, 0xf7, 0x79, 0x98, 0x4a, 0xb5, 0x75, - 0x22, 0x0d, 0xc2, 0xaf, 0x59, 0x30, 0xc5, 0xbb, 0xbc, 0xe2, 0xef, 0x8b, 0xcd, 0xfe, 0x3e, 0x9c, - 0xf7, 0x32, 0x36, 0x9d, 0x98, 0xd1, 0xc1, 0x37, 0xa9, 0xd2, 0x18, 0x64, 0x41, 0x71, 0x66, 0x1b, - 0xe8, 0x2a, 0x8c, 0x72, 0x97, 0x1d, 0xc7, 0x13, 0x6e, 0x16, 0xe3, 0x3c, 0x4a, 0x3e, 0x2f, 0xc3, - 0x0a, 0x6a, 0xff, 0xae, 0x05, 0x33, 0xbc, 0xe7, 0x37, 0xc9, 0x81, 0x92, 0x8e, 0x3f, 0xca, 0xbe, - 0x8b, 0x24, 0x00, 0x85, 0x9c, 0x24, 0x00, 0xfa, 0xa7, 0x15, 0x7b, 0x7e, 0xda, 0x2f, 0x5a, 0x20, - 0x56, 0xe0, 0x19, 0xc8, 0x81, 0xdf, 0x63, 0xca, 0x81, 0x73, 0xf9, 0x8b, 0x3a, 0x47, 0x00, 0xfc, - 0x33, 0x0b, 0xa6, 0x39, 0x42, 0xf2, 0x10, 0xf9, 0x91, 0xce, 0xc3, 0x20, 0xd9, 0xbc, 0x54, 0xfa, - 0xde, 0xec, 0x8f, 0x32, 0x26, 0xab, 0xd4, 0x73, 0xb2, 0x5a, 0x72, 0x03, 0x9d, 0x20, 0x4b, 0xdd, - 0x89, 0x83, 0xe9, 0xda, 0x7f, 0x6c, 0x01, 0xe2, 0xcd, 0x18, 0xf7, 0x32, 0xbd, 0xed, 0x58, 0xa9, - 0xa6, 0x09, 0x4a, 0x8e, 0x1a, 0x05, 0xc1, 0x1a, 0xd6, 0xa9, 0x0c, 0x4f, 0xea, 0x35, 0xb9, 0xd8, - 0xff, 0x35, 0xf9, 0x04, 0x23, 0xfa, 0x8d, 0x12, 0xa4, 0x6d, 0xb4, 0xd1, 0x5d, 0x18, 0x6f, 0x3a, - 0x6d, 0x67, 0xd3, 0xf5, 0xdc, 0xd8, 0x25, 0x51, 0x2f, 0x33, 0x94, 0x65, 0x0d, 0x4f, 0xbc, 0x13, - 0x6a, 0x25, 0xd8, 0xa0, 0x83, 0xe6, 0x01, 0xda, 0xa1, 0xbb, 0xef, 0x7a, 0x64, 0x9b, 0x89, 0xc2, - 0xcc, 0xb1, 0x8b, 0xdb, 0x56, 0xc8, 0x52, 0xac, 0x61, 0x64, 0x38, 0x02, 0x15, 0x1f, 0x9d, 0x23, - 0x50, 0xe9, 0x84, 0x8e, 0x40, 0x43, 0x03, 0x39, 0x02, 0x61, 0x78, 0x4c, 0xde, 0xdd, 0xf4, 0xff, - 0xaa, 0xeb, 0x11, 0xc1, 0xb0, 0x71, 0x77, 0xaf, 0xb9, 0xa3, 0xc3, 0xca, 0x63, 0x38, 0x13, 0x03, - 0xe7, 0xd4, 0x44, 0x5f, 0x80, 0x59, 0xc7, 0xf3, 0x82, 0xfb, 0x6a, 0xd4, 0x56, 0xa2, 0xa6, 0xe3, - 0x71, 0x75, 0xef, 0x08, 0xa3, 0xfa, 0xe4, 0xd1, 0x61, 0x65, 0x76, 0x31, 0x07, 0x07, 0xe7, 0xd6, - 0x4e, 0xf9, 0x11, 0x8d, 0xf6, 0xf5, 0x23, 0xda, 0x85, 0x73, 0x0d, 0x12, 0xba, 0x2c, 0x87, 0x5e, - 0x2b, 0xd9, 0x92, 0x1b, 0x50, 0x0e, 0x53, 0x87, 0xd0, 0x40, 0x31, 0x60, 0xb4, 0x38, 0xa1, 0xf2, - 0xd0, 0x49, 0x08, 0xd9, 0x7f, 0x6a, 0xc1, 0x88, 0xb0, 0x13, 0x3f, 0x03, 0xde, 0x67, 0xd1, 0xd0, - 0x5f, 0x56, 0xb2, 0x0f, 0x6a, 0xd6, 0x99, 0x5c, 0xcd, 0x65, 0x2d, 0xa5, 0xb9, 0x7c, 0xba, 0x17, - 0x91, 0xde, 0x3a, 0xcb, 0x9f, 0x2c, 0xc2, 0xa4, 0x69, 0x23, 0x7f, 0x06, 0x43, 0xb0, 0x0e, 0x23, - 0x91, 0x70, 0xc8, 0x28, 0xe4, 0x1b, 0xce, 0xa6, 0x27, 0x31, 0xb1, 0x8a, 0x11, 0x2e, 0x18, 0x92, - 0x48, 0xa6, 0xa7, 0x47, 0xf1, 0x11, 0x7a, 0x7a, 0xf4, 0x73, 0x53, 0x28, 0x9d, 0x86, 0x9b, 0x82, - 0xfd, 0x4d, 0x76, 0x59, 0xe8, 0xe5, 0x67, 0xc0, 0x47, 0x5c, 0x37, 0xaf, 0x15, 0xbb, 0xc7, 0xca, - 0x12, 0x9d, 0xca, 0xe1, 0x27, 0xfe, 0xb1, 0x05, 0x63, 0x02, 0xf1, 0x0c, 0xba, 0xfd, 0xbd, 0x66, - 0xb7, 0x9f, 0xe8, 0xd1, 0xed, 0x9c, 0xfe, 0xfe, 0xdd, 0x82, 0xea, 0x6f, 0x3d, 0x08, 0xe3, 0x01, - 0x6e, 0xff, 0xd7, 0x61, 0x94, 0x4a, 0x8f, 0x41, 0x33, 0xf0, 0xc4, 0xe5, 0xff, 0x64, 0xe2, 0x21, - 0xcc, 0xcb, 0x8f, 0xb5, 0xdf, 0x58, 0x61, 0x33, 0x07, 0xd6, 0x20, 0x8c, 0xc5, 0x85, 0x9b, 0x38, - 0xb0, 0x06, 0x61, 0x8c, 0x19, 0x04, 0xb5, 0x00, 0x62, 0x27, 0xdc, 0x26, 0x31, 0x2d, 0x13, 0xc1, - 0x06, 0xf2, 0x77, 0x61, 0x27, 0x76, 0xbd, 0x79, 0xd7, 0x8f, 0xa3, 0x38, 0x9c, 0xaf, 0xf9, 0xf1, - 0xed, 0x90, 0xcb, 0x12, 0x9a, 0xcb, 0xaf, 0xa2, 0x85, 0x35, 0xba, 0xd2, 0x87, 0x8c, 0xb5, 0x31, - 0x64, 0x3e, 0x2c, 0xae, 0x8b, 0x72, 0xac, 0x30, 0xec, 0xd7, 0xd8, 0x99, 0xcc, 0x06, 0xe8, 0x64, - 0xde, 0xb8, 0xdf, 0x1a, 0x55, 0x43, 0xcb, 0x5e, 0x15, 0xaa, 0xba, 0xcf, 0x6f, 0xef, 0x23, 0x90, - 0x36, 0xac, 0xfb, 0x23, 0x24, 0x8e, 0xc1, 0xe8, 0xfb, 0xba, 0xde, 0x9b, 0x5f, 0xec, 0x73, 0x96, - 0x9e, 0xe0, 0x85, 0x99, 0x05, 0xb8, 0x65, 0x81, 0x40, 0x6b, 0x75, 0x21, 0x5d, 0x6a, 0x01, 0x6e, - 0x05, 0x00, 0x27, 0x38, 0x68, 0x41, 0x48, 0xa2, 0x25, 0x23, 0x0f, 0x95, 0x94, 0x44, 0xe5, 0xe7, - 0x6b, 0xa2, 0xe8, 0x4b, 0x30, 0xa6, 0xf2, 0x51, 0xd5, 0x79, 0x5a, 0x1f, 0x11, 0x7a, 0x61, 0x25, - 0x29, 0xc6, 0x3a, 0x0e, 0xda, 0x80, 0xa9, 0x88, 0x67, 0xe6, 0x52, 0x11, 0xb6, 0xb8, 0x9e, 0xe1, - 0xd3, 0xf2, 0x9d, 0xba, 0x61, 0x82, 0x8f, 0x59, 0x11, 0xdf, 0xac, 0xd2, 0x11, 0x2c, 0x4d, 0x02, - 0xbd, 0x09, 0x93, 0x9e, 0x9e, 0xd5, 0xb9, 0x2e, 0xd4, 0x10, 0xca, 0x8c, 0xd3, 0xc8, 0xf9, 0x5c, - 0xc7, 0x29, 0x6c, 0xca, 0x34, 0xe8, 0x25, 0x22, 0x2a, 0x9c, 0xe3, 0x6f, 0x93, 0x48, 0x64, 0xd3, - 0x61, 0x4c, 0xc3, 0xad, 0x1c, 0x1c, 0x9c, 0x5b, 0x1b, 0xbd, 0x0e, 0xe3, 0xf2, 0xf3, 0x35, 0x37, - 0xc7, 0xc4, 0x58, 0x58, 0x83, 0x61, 0x03, 0x13, 0xdd, 0x87, 0x0b, 0xf2, 0xff, 0x46, 0xe8, 0x6c, - 0x6d, 0xb9, 0x4d, 0xe1, 0x65, 0xca, 0x3d, 0x26, 0x16, 0xa5, 0x0b, 0xc6, 0x4a, 0x16, 0xd2, 0xf1, - 0x61, 0xe5, 0xb2, 0x18, 0xb5, 0x4c, 0x38, 0x9b, 0xc4, 0x6c, 0xfa, 0x68, 0x0d, 0xce, 0xed, 0x10, - 0xc7, 0x8b, 0x77, 0x96, 0x77, 0x48, 0x73, 0x57, 0x6e, 0x22, 0xe6, 0x3c, 0xa9, 0x99, 0xd8, 0xde, - 0xe8, 0x46, 0xc1, 0x59, 0xf5, 0xd0, 0x3b, 0x30, 0xdb, 0xee, 0x6c, 0x7a, 0x6e, 0xb4, 0xb3, 0x1e, - 0xc4, 0xec, 0x69, 0x5c, 0xa5, 0x73, 0x12, 0x5e, 0x96, 0xca, 0x71, 0xb4, 0x9e, 0x83, 0x87, 0x73, - 0x29, 0xa0, 0xf7, 0xe1, 0x42, 0x6a, 0x31, 0x08, 0x9f, 0xaf, 0xc9, 0xfc, 0x18, 0x9b, 0x8d, 0xac, - 0x0a, 0xc2, 0x87, 0x2b, 0x0b, 0x84, 0xb3, 0x9b, 0xf8, 0x70, 0x06, 0x13, 0xef, 0xd1, 0xca, 0x1a, - 0x77, 0x83, 0xbe, 0x0a, 0xe3, 0xfa, 0x2a, 0x12, 0x17, 0xcc, 0x95, 0x7e, 0x19, 0xcc, 0x05, 0x6f, - 0xa4, 0x56, 0x94, 0x0e, 0xc3, 0x06, 0x45, 0x9b, 0x40, 0xf6, 0xf7, 0xa1, 0x5b, 0x30, 0xda, 0xf4, - 0x5c, 0xe2, 0xc7, 0xb5, 0x7a, 0xaf, 0x68, 0x02, 0xcb, 0x02, 0x47, 0x0c, 0x98, 0x08, 0x4a, 0xc8, - 0xcb, 0xb0, 0xa2, 0x60, 0xff, 0x66, 0x01, 0x2a, 0x7d, 0x22, 0x5c, 0xa6, 0x74, 0x86, 0xd6, 0x40, - 0x3a, 0xc3, 0x45, 0x99, 0x9c, 0x6a, 0x3d, 0x25, 0xaf, 0xa6, 0x12, 0x4f, 0x25, 0x52, 0x6b, 0x1a, - 0x7f, 0x60, 0x3b, 0x4b, 0x5d, 0xed, 0x58, 0xea, 0x6b, 0x01, 0x6c, 0x3c, 0x37, 0x0c, 0x0d, 0xce, - 0xd1, 0xe7, 0xaa, 0x8e, 0xed, 0x6f, 0x16, 0xe0, 0x82, 0x1a, 0xc2, 0xbf, 0xbc, 0x03, 0x77, 0xa7, - 0x7b, 0xe0, 0x4e, 0x41, 0xf1, 0x6e, 0xdf, 0x86, 0xe1, 0xc6, 0x41, 0xd4, 0x8c, 0xbd, 0x01, 0x18, - 0xa0, 0x67, 0xcc, 0xa8, 0x3a, 0xea, 0x9a, 0x36, 0x22, 0xeb, 0xfc, 0x35, 0x0b, 0xa6, 0x36, 0x96, - 0xeb, 0x8d, 0xa0, 0xb9, 0x4b, 0xe2, 0x45, 0xae, 0x56, 0xc2, 0x82, 0xff, 0xb1, 0x1e, 0x92, 0xaf, - 0xc9, 0xe2, 0x98, 0x2e, 0x43, 0x69, 0x27, 0x88, 0xe2, 0xf4, 0xab, 0xdc, 0x8d, 0x20, 0x8a, 0x31, - 0x83, 0xd8, 0xbf, 0x67, 0xc1, 0x10, 0x4b, 0xa9, 0xd8, 0x2f, 0xcf, 0xe7, 0x20, 0xdf, 0x85, 0x5e, - 0x85, 0x61, 0xb2, 0xb5, 0x45, 0x9a, 0xb1, 0x98, 0x55, 0xe9, 0xd6, 0x37, 0xbc, 0xc2, 0x4a, 0xe9, - 0xa5, 0xcf, 0x1a, 0xe3, 0x7f, 0xb1, 0x40, 0x46, 0xf7, 0xa0, 0x1c, 0xbb, 0x7b, 0x64, 0xb1, 0xd5, - 0x12, 0xef, 0x1a, 0x0f, 0xe1, 0x45, 0xb9, 0x21, 0x09, 0xe0, 0x84, 0x96, 0xfd, 0xb5, 0x02, 0x40, - 0xe2, 0x9a, 0xdc, 0xef, 0x13, 0x97, 0xba, 0x52, 0x99, 0x5e, 0xc9, 0x48, 0x65, 0x8a, 0x12, 0x82, - 0x19, 0x89, 0x4c, 0xd5, 0x30, 0x15, 0x07, 0x1a, 0xa6, 0xd2, 0x49, 0x86, 0x69, 0x19, 0x66, 0x12, - 0xd7, 0x6a, 0x33, 0xce, 0x04, 0x8b, 0x78, 0xbf, 0x91, 0x06, 0xe2, 0x6e, 0x7c, 0xfb, 0x87, 0x2d, - 0x10, 0xee, 0x09, 0x03, 0x2c, 0xe6, 0x2f, 0xc9, 0x44, 0x80, 0x46, 0xa0, 0xdc, 0xcb, 0xf9, 0xfe, - 0x1a, 0x22, 0x3c, 0xae, 0xba, 0x3c, 0x8c, 0xa0, 0xb8, 0x06, 0x2d, 0xbb, 0x05, 0x02, 0x5a, 0x25, - 0x4c, 0xc9, 0xd0, 0xbf, 0x37, 0xd7, 0x00, 0x5a, 0x0c, 0x57, 0x4b, 0x07, 0xa6, 0x8e, 0xaa, 0xaa, - 0x82, 0x60, 0x0d, 0xcb, 0xfe, 0xf1, 0x02, 0x8c, 0xc9, 0xc0, 0xac, 0x54, 0x8e, 0xef, 0xdf, 0xca, - 0x89, 0xb2, 0x32, 0xb0, 0xfc, 0x79, 0x94, 0xb0, 0x0a, 0xde, 0xaf, 0xe7, 0xcf, 0x93, 0x00, 0x9c, - 0xe0, 0xa0, 0xe7, 0x60, 0x24, 0xea, 0x6c, 0x32, 0xf4, 0x94, 0xd1, 0x7d, 0x83, 0x17, 0x63, 0x09, - 0x47, 0x5f, 0x80, 0x69, 0x5e, 0x2f, 0x0c, 0xda, 0xce, 0x36, 0xd7, 0x38, 0x0d, 0x29, 0x2f, 0xb8, - 0xe9, 0xb5, 0x14, 0xec, 0xf8, 0xb0, 0x72, 0x3e, 0x5d, 0xc6, 0x74, 0x95, 0x5d, 0x54, 0xec, 0xaf, - 0x02, 0xea, 0x8e, 0x35, 0x8b, 0xde, 0xe2, 0x66, 0x15, 0x6e, 0xa8, 0xd2, 0x7f, 0xf7, 0x4f, 0xd8, - 0x3f, 0x2e, 0x8d, 0x27, 0x68, 0x2d, 0xac, 0xea, 0xd3, 0x9d, 0x37, 0x9d, 0x76, 0xe1, 0x41, 0x37, - 0x60, 0x98, 0x1f, 0xaa, 0xbd, 0xb2, 0x8b, 0xa7, 0xf5, 0xed, 0x3c, 0x10, 0xbe, 0x38, 0x97, 0x45, - 0x7d, 0xf4, 0x0e, 0x8c, 0xb5, 0x82, 0xfb, 0xfe, 0x7d, 0x27, 0x6c, 0x2d, 0xd6, 0x6b, 0x62, 0x5d, - 0x66, 0xf2, 0x66, 0xd5, 0x04, 0x4d, 0x77, 0x26, 0x62, 0xfa, 0xdc, 0x04, 0x84, 0x75, 0x72, 0x68, - 0x43, 0x4f, 0xbc, 0xde, 0xc3, 0x0e, 0x4e, 0x65, 0x56, 0xd7, 0x28, 0xe7, 0xa7, 0x5c, 0xff, 0xe0, - 0x1c, 0x18, 0xfb, 0xc1, 0xc8, 0xfb, 0x60, 0x9d, 0x52, 0xde, 0x07, 0x0c, 0xa3, 0x64, 0xaf, 0x1d, - 0x1f, 0x54, 0xdd, 0xb0, 0x57, 0xe2, 0xa0, 0x15, 0x81, 0xd3, 0x4d, 0x53, 0x42, 0xb0, 0xa2, 0x93, - 0x9d, 0x9c, 0xa3, 0xf8, 0x11, 0x26, 0xe7, 0x28, 0x9d, 0x61, 0x72, 0x8e, 0x75, 0x18, 0xd9, 0x76, - 0x63, 0x4c, 0xda, 0x81, 0x60, 0x28, 0x32, 0x57, 0xc2, 0x75, 0x8e, 0xd2, 0x1d, 0x1a, 0x5e, 0x00, - 0xb0, 0x24, 0x82, 0xde, 0x52, 0x7b, 0x60, 0x38, 0x9f, 0x1f, 0xef, 0x7e, 0x0e, 0xc9, 0xdc, 0x05, - 0x22, 0x19, 0xc7, 0xc8, 0xc3, 0x26, 0xe3, 0x58, 0x95, 0x29, 0x34, 0x46, 0xf3, 0xcd, 0x46, 0x59, - 0x86, 0x8c, 0x3e, 0x89, 0x33, 0x8c, 0x64, 0x23, 0xe5, 0xd3, 0x4b, 0x36, 0xf2, 0xc3, 0x16, 0x5c, - 0x68, 0x67, 0xe5, 0xdd, 0x11, 0x29, 0x30, 0x5e, 0x1d, 0x38, 0xb1, 0x90, 0xd1, 0x20, 0x13, 0xcc, - 0x32, 0xd1, 0x70, 0x76, 0x73, 0x74, 0xa0, 0xc3, 0xcd, 0x96, 0xc8, 0x9b, 0xf1, 0x4c, 0x4e, 0xd6, - 0x92, 0x1e, 0xb9, 0x4a, 0x36, 0x32, 0x72, 0x65, 0x7c, 0x32, 0x2f, 0x57, 0xc6, 0xc0, 0x19, 0x32, - 0x92, 0x7c, 0x25, 0x13, 0x1f, 0x3a, 0x5f, 0xc9, 0x5b, 0x2a, 0x5f, 0x49, 0x8f, 0xa8, 0x43, 0x3c, - 0x1b, 0x49, 0xdf, 0x2c, 0x25, 0x5a, 0xa6, 0x91, 0xa9, 0xd3, 0xc9, 0x34, 0x62, 0x1c, 0xf6, 0x3c, - 0xd9, 0xc5, 0xf3, 0x7d, 0x0e, 0x7b, 0x83, 0x6e, 0xef, 0xe3, 0x9e, 0x67, 0x55, 0x99, 0x79, 0xa8, - 0xac, 0x2a, 0x77, 0xf5, 0x2c, 0x25, 0xa8, 0x4f, 0x1a, 0x0e, 0x8a, 0x34, 0x60, 0x6e, 0x92, 0xbb, - 0xfa, 0x15, 0x74, 0x2e, 0x9f, 0xae, 0xba, 0x69, 0xba, 0xe9, 0x66, 0x5d, 0x42, 0xdd, 0x39, 0x4f, - 0xce, 0x9f, 0x4d, 0xce, 0x93, 0x0b, 0xa7, 0x9e, 0xf3, 0xe4, 0xb1, 0x33, 0xc8, 0x79, 0xf2, 0xf8, - 0x47, 0x9a, 0xf3, 0x64, 0xf6, 0x11, 0xe4, 0x3c, 0x59, 0x4f, 0x72, 0x9e, 0x5c, 0xcc, 0x9f, 0x92, - 0x0c, 0x3b, 0xb9, 0x9c, 0x4c, 0x27, 0x77, 0xa1, 0xdc, 0x96, 0x5e, 0xde, 0x22, 0x2c, 0x52, 0x76, - 0xb2, 0xc5, 0x2c, 0x57, 0x70, 0x3e, 0x25, 0x0a, 0x84, 0x13, 0x52, 0x94, 0x6e, 0x92, 0xf9, 0xe4, - 0x89, 0x1e, 0xaa, 0xb7, 0x2c, 0xa5, 0x46, 0x7e, 0xbe, 0x13, 0xfb, 0xaf, 0x17, 0xe0, 0x52, 0xef, - 0x75, 0x9d, 0x68, 0x44, 0xea, 0x89, 0x06, 0x3f, 0xa5, 0x11, 0xe1, 0x62, 0x46, 0x82, 0x35, 0x70, - 0x28, 0x8c, 0xeb, 0x30, 0xa3, 0x0c, 0xe4, 0x3c, 0xb7, 0x79, 0xa0, 0x25, 0x61, 0x54, 0xce, 0x3a, - 0x8d, 0x34, 0x02, 0xee, 0xae, 0x83, 0x16, 0x61, 0xca, 0x28, 0xac, 0x55, 0x85, 0x38, 0xa1, 0x54, - 0x30, 0x0d, 0x13, 0x8c, 0xd3, 0xf8, 0xf6, 0xd7, 0x2d, 0x78, 0x3c, 0x27, 0x1c, 0xf8, 0xc0, 0x91, - 0x1e, 0xb6, 0x60, 0xaa, 0x6d, 0x56, 0xed, 0x13, 0x10, 0xc6, 0x08, 0x3a, 0xae, 0xfa, 0x9a, 0x02, - 0xe0, 0x34, 0xd1, 0xa5, 0xab, 0xbf, 0xfd, 0x07, 0x97, 0x3e, 0xf1, 0x3b, 0x7f, 0x70, 0xe9, 0x13, - 0xbf, 0xfb, 0x07, 0x97, 0x3e, 0xf1, 0xff, 0x1d, 0x5d, 0xb2, 0x7e, 0xfb, 0xe8, 0x92, 0xf5, 0x3b, - 0x47, 0x97, 0xac, 0xdf, 0x3d, 0xba, 0x64, 0xfd, 0xfe, 0xd1, 0x25, 0xeb, 0x6b, 0x7f, 0x78, 0xe9, - 0x13, 0x5f, 0x2a, 0xec, 0xbf, 0xf4, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xa2, 0x14, 0x11, 0x2e, - 0x5f, 0xdf, 0x00, 0x00, + // 12432 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x24, 0x47, + 0x76, 0xd8, 0xf5, 0xcc, 0x90, 0x9c, 0x79, 0xfc, 0xae, 0xdd, 0x95, 0xb8, 0x94, 0x76, 0x67, 0xd5, + 0xba, 0x5b, 0xad, 0x4e, 0x12, 0x69, 0xad, 0xa4, 0x93, 0x7c, 0xba, 0x93, 0x4d, 0x72, 0xc8, 0x5d, + 0x6a, 0x97, 0xdc, 0x51, 0x0d, 0x77, 0x75, 0x77, 0xd6, 0x9d, 0xaf, 0x39, 0x53, 0x24, 0x5b, 0x6c, + 0x76, 0x8f, 0xba, 0x7b, 0xb8, 0x4b, 0xc1, 0x06, 0x92, 0x73, 0xe2, 0xc4, 0xb1, 0x11, 0x1c, 0x62, + 0x23, 0x71, 0x6c, 0xc3, 0x01, 0x12, 0x07, 0xf6, 0xc5, 0x49, 0x10, 0xc7, 0x8e, 0xed, 0xdc, 0x39, + 0x89, 0xe3, 0xe4, 0x87, 0xf3, 0xe7, 0xe2, 0xe4, 0xcf, 0x19, 0x30, 0xc2, 0xd8, 0xb4, 0x91, 0xc0, + 0x3f, 0x12, 0x04, 0x31, 0x10, 0xc0, 0x8c, 0x11, 0x07, 0xf5, 0xd9, 0x55, 0x3d, 0xdd, 0x33, 0xc3, + 0x15, 0x97, 0x92, 0x0f, 0xf7, 0x6f, 0xa6, 0xde, 0xab, 0x57, 0xd5, 0xf5, 0xf9, 0xde, 0xab, 0xf7, + 0x01, 0xaf, 0xef, 0xbe, 0x16, 0xcd, 0xb9, 0xc1, 0xfc, 0x6e, 0x67, 0x93, 0x84, 0x3e, 0x89, 0x49, + 0x34, 0xbf, 0x4f, 0xfc, 0x56, 0x10, 0xce, 0x0b, 0x80, 0xd3, 0x76, 0xe7, 0x9b, 0x41, 0x48, 0xe6, + 0xf7, 0x5f, 0x9c, 0xdf, 0x26, 0x3e, 0x09, 0x9d, 0x98, 0xb4, 0xe6, 0xda, 0x61, 0x10, 0x07, 0x08, + 0x71, 0x9c, 0x39, 0xa7, 0xed, 0xce, 0x51, 0x9c, 0xb9, 0xfd, 0x17, 0x67, 0x5f, 0xd8, 0x76, 0xe3, + 0x9d, 0xce, 0xe6, 0x5c, 0x33, 0xd8, 0x9b, 0xdf, 0x0e, 0xb6, 0x83, 0x79, 0x86, 0xba, 0xd9, 0xd9, + 0x62, 0xff, 0xd8, 0x1f, 0xf6, 0x8b, 0x93, 0x98, 0x5d, 0x4b, 0x9a, 0x21, 0x0f, 0x62, 0xe2, 0x47, + 0x6e, 0xe0, 0x47, 0x2f, 0x38, 0x6d, 0x37, 0x22, 0xe1, 0x3e, 0x09, 0xe7, 0xdb, 0xbb, 0xdb, 0x14, + 0x16, 0x99, 0x08, 0xf3, 0xfb, 0x2f, 0x6e, 0x92, 0xd8, 0xe9, 0xea, 0xd1, 0xec, 0xcb, 0x09, 0xb9, + 0x3d, 0xa7, 0xb9, 0xe3, 0xfa, 0x24, 0x3c, 0x90, 0x34, 0xe6, 0x43, 0x12, 0x05, 0x9d, 0xb0, 0x49, + 0x4e, 0x54, 0x2b, 0x9a, 0xdf, 0x23, 0xb1, 0x93, 0xf1, 0xf5, 0xb3, 0xf3, 0x79, 0xb5, 0xc2, 0x8e, + 0x1f, 0xbb, 0x7b, 0xdd, 0xcd, 0x7c, 0xaa, 0x5f, 0x85, 0xa8, 0xb9, 0x43, 0xf6, 0x9c, 0xae, 0x7a, + 0x2f, 0xe5, 0xd5, 0xeb, 0xc4, 0xae, 0x37, 0xef, 0xfa, 0x71, 0x14, 0x87, 0xe9, 0x4a, 0xf6, 0xb7, + 0x2c, 0xb8, 0xb2, 0xf0, 0x76, 0x63, 0xd9, 0x73, 0xa2, 0xd8, 0x6d, 0x2e, 0x7a, 0x41, 0x73, 0xb7, + 0x11, 0x07, 0x21, 0xb9, 0x17, 0x78, 0x9d, 0x3d, 0xd2, 0x60, 0x03, 0x81, 0x9e, 0x87, 0xf2, 0x3e, + 0xfb, 0xbf, 0x5a, 0x9b, 0xb1, 0xae, 0x58, 0xd7, 0x2a, 0x8b, 0x53, 0xbf, 0x7d, 0x58, 0xfd, 0xd8, + 0xd1, 0x61, 0xb5, 0x7c, 0x4f, 0x94, 0x63, 0x85, 0x81, 0xae, 0xc2, 0xf0, 0x56, 0xb4, 0x71, 0xd0, + 0x26, 0x33, 0x05, 0x86, 0x3b, 0x21, 0x70, 0x87, 0x57, 0x1a, 0xb4, 0x14, 0x0b, 0x28, 0x9a, 0x87, + 0x4a, 0xdb, 0x09, 0x63, 0x37, 0x76, 0x03, 0x7f, 0xa6, 0x78, 0xc5, 0xba, 0x36, 0xb4, 0x38, 0x2d, + 0x50, 0x2b, 0x75, 0x09, 0xc0, 0x09, 0x0e, 0xed, 0x46, 0x48, 0x9c, 0xd6, 0x1d, 0xdf, 0x3b, 0x98, + 0x29, 0x5d, 0xb1, 0xae, 0x95, 0x93, 0x6e, 0x60, 0x51, 0x8e, 0x15, 0x86, 0xfd, 0x53, 0x05, 0x28, + 0x2f, 0x6c, 0x6d, 0xb9, 0xbe, 0x1b, 0x1f, 0xa0, 0x7b, 0x30, 0xe6, 0x07, 0x2d, 0x22, 0xff, 0xb3, + 0xaf, 0x18, 0xbd, 0x7e, 0x65, 0xae, 0x7b, 0x65, 0xce, 0xad, 0x6b, 0x78, 0x8b, 0x53, 0x47, 0x87, + 0xd5, 0x31, 0xbd, 0x04, 0x1b, 0x74, 0x10, 0x86, 0xd1, 0x76, 0xd0, 0x52, 0x64, 0x0b, 0x8c, 0x6c, + 0x35, 0x8b, 0x6c, 0x3d, 0x41, 0x5b, 0x9c, 0x3c, 0x3a, 0xac, 0x8e, 0x6a, 0x05, 0x58, 0x27, 0x82, + 0x36, 0x61, 0x92, 0xfe, 0xf5, 0x63, 0x57, 0xd1, 0x2d, 0x32, 0xba, 0x4f, 0xe7, 0xd1, 0xd5, 0x50, + 0x17, 0xcf, 0x1d, 0x1d, 0x56, 0x27, 0x53, 0x85, 0x38, 0x4d, 0xd0, 0x7e, 0x1f, 0x26, 0x16, 0xe2, + 0xd8, 0x69, 0xee, 0x90, 0x16, 0x9f, 0x41, 0xf4, 0x32, 0x94, 0x7c, 0x67, 0x8f, 0x88, 0xf9, 0xbd, + 0x22, 0x06, 0xb6, 0xb4, 0xee, 0xec, 0x91, 0xe3, 0xc3, 0xea, 0xd4, 0x5d, 0xdf, 0x7d, 0xaf, 0x23, + 0x56, 0x05, 0x2d, 0xc3, 0x0c, 0x1b, 0x5d, 0x07, 0x68, 0x91, 0x7d, 0xb7, 0x49, 0xea, 0x4e, 0xbc, + 0x23, 0xe6, 0x1b, 0x89, 0xba, 0x50, 0x53, 0x10, 0xac, 0x61, 0xd9, 0x0f, 0xa0, 0xb2, 0xb0, 0x1f, + 0xb8, 0xad, 0x7a, 0xd0, 0x8a, 0xd0, 0x2e, 0x4c, 0xb6, 0x43, 0xb2, 0x45, 0x42, 0x55, 0x34, 0x63, + 0x5d, 0x29, 0x5e, 0x1b, 0xbd, 0x7e, 0x2d, 0xf3, 0x63, 0x4d, 0xd4, 0x65, 0x3f, 0x0e, 0x0f, 0x16, + 0x1f, 0x17, 0xed, 0x4d, 0xa6, 0xa0, 0x38, 0x4d, 0xd9, 0xfe, 0xf7, 0x05, 0xb8, 0xb0, 0xf0, 0x7e, + 0x27, 0x24, 0x35, 0x37, 0xda, 0x4d, 0xaf, 0xf0, 0x96, 0x1b, 0xed, 0xae, 0x27, 0x23, 0xa0, 0x96, + 0x56, 0x4d, 0x94, 0x63, 0x85, 0x81, 0x5e, 0x80, 0x11, 0xfa, 0xfb, 0x2e, 0x5e, 0x15, 0x9f, 0x7c, + 0x4e, 0x20, 0x8f, 0xd6, 0x9c, 0xd8, 0xa9, 0x71, 0x10, 0x96, 0x38, 0x68, 0x0d, 0x46, 0x9b, 0x6c, + 0x43, 0x6e, 0xaf, 0x05, 0x2d, 0xc2, 0x26, 0xb3, 0xb2, 0xf8, 0x1c, 0x45, 0x5f, 0x4a, 0x8a, 0x8f, + 0x0f, 0xab, 0x33, 0xbc, 0x6f, 0x82, 0x84, 0x06, 0xc3, 0x7a, 0x7d, 0x64, 0xab, 0xfd, 0x55, 0x62, + 0x94, 0x20, 0x63, 0x6f, 0x5d, 0xd3, 0xb6, 0xca, 0x10, 0xdb, 0x2a, 0x63, 0xd9, 0xdb, 0x04, 0xbd, + 0x08, 0xa5, 0x5d, 0xd7, 0x6f, 0xcd, 0x0c, 0x33, 0x5a, 0x97, 0xe8, 0x9c, 0xdf, 0x72, 0xfd, 0xd6, + 0xf1, 0x61, 0x75, 0xda, 0xe8, 0x0e, 0x2d, 0xc4, 0x0c, 0xd5, 0xfe, 0x13, 0x0b, 0xaa, 0x0c, 0xb6, + 0xe2, 0x7a, 0xa4, 0x4e, 0xc2, 0xc8, 0x8d, 0x62, 0xe2, 0xc7, 0xc6, 0x80, 0x5e, 0x07, 0x88, 0x48, + 0x33, 0x24, 0xb1, 0x36, 0xa4, 0x6a, 0x61, 0x34, 0x14, 0x04, 0x6b, 0x58, 0xf4, 0x40, 0x88, 0x76, + 0x9c, 0x90, 0xad, 0x2f, 0x31, 0xb0, 0xea, 0x40, 0x68, 0x48, 0x00, 0x4e, 0x70, 0x8c, 0x03, 0xa1, + 0xd8, 0xef, 0x40, 0x40, 0x9f, 0x85, 0xc9, 0xa4, 0xb1, 0xa8, 0xed, 0x34, 0xe5, 0x00, 0xb2, 0x2d, + 0xd3, 0x30, 0x41, 0x38, 0x8d, 0x6b, 0xff, 0x23, 0x4b, 0x2c, 0x1e, 0xfa, 0xd5, 0x1f, 0xf1, 0x6f, + 0xb5, 0x7f, 0xdd, 0x82, 0x91, 0x45, 0xd7, 0x6f, 0xb9, 0xfe, 0x36, 0xfa, 0x32, 0x94, 0xe9, 0xdd, + 0xd4, 0x72, 0x62, 0x47, 0x9c, 0x7b, 0xdf, 0xa5, 0xed, 0x2d, 0x75, 0x55, 0xcc, 0xb5, 0x77, 0xb7, + 0x69, 0x41, 0x34, 0x47, 0xb1, 0xe9, 0x6e, 0xbb, 0xb3, 0xf9, 0x2e, 0x69, 0xc6, 0x6b, 0x24, 0x76, + 0x92, 0xcf, 0x49, 0xca, 0xb0, 0xa2, 0x8a, 0x6e, 0xc1, 0x70, 0xec, 0x84, 0xdb, 0x24, 0x16, 0x07, + 0x60, 0xe6, 0x41, 0xc5, 0x6b, 0x62, 0xba, 0x23, 0x89, 0xdf, 0x24, 0xc9, 0xb5, 0xb0, 0xc1, 0xaa, + 0x62, 0x41, 0xc2, 0xfe, 0x1b, 0xc3, 0x70, 0x71, 0xa9, 0xb1, 0x9a, 0xb3, 0xae, 0xae, 0xc2, 0x70, + 0x2b, 0x74, 0xf7, 0x49, 0x28, 0xc6, 0x59, 0x51, 0xa9, 0xb1, 0x52, 0x2c, 0xa0, 0xe8, 0x35, 0x18, + 0xe3, 0x17, 0xd2, 0x4d, 0xc7, 0x6f, 0x79, 0x72, 0x88, 0xcf, 0x0b, 0xec, 0xb1, 0x7b, 0x1a, 0x0c, + 0x1b, 0x98, 0x27, 0x5c, 0x54, 0x57, 0x53, 0x9b, 0x31, 0xef, 0xb2, 0xfb, 0x11, 0x0b, 0xa6, 0x78, + 0x33, 0x0b, 0x71, 0x1c, 0xba, 0x9b, 0x9d, 0x98, 0x44, 0x33, 0x43, 0xec, 0xa4, 0x5b, 0xca, 0x1a, + 0xad, 0xdc, 0x11, 0x98, 0xbb, 0x97, 0xa2, 0xc2, 0x0f, 0xc1, 0x19, 0xd1, 0xee, 0x54, 0x1a, 0x8c, + 0xbb, 0x9a, 0x45, 0x3f, 0x64, 0xc1, 0x6c, 0x33, 0xf0, 0xe3, 0x30, 0xf0, 0x3c, 0x12, 0xd6, 0x3b, + 0x9b, 0x9e, 0x1b, 0xed, 0xf0, 0x75, 0x8a, 0xc9, 0x16, 0x3b, 0x09, 0x72, 0xe6, 0x50, 0x21, 0x89, + 0x39, 0xbc, 0x7c, 0x74, 0x58, 0x9d, 0x5d, 0xca, 0x25, 0x85, 0x7b, 0x34, 0x83, 0x76, 0x01, 0xd1, + 0xab, 0xb4, 0x11, 0x3b, 0xdb, 0x24, 0x69, 0x7c, 0x64, 0xf0, 0xc6, 0x1f, 0x3b, 0x3a, 0xac, 0xa2, + 0xf5, 0x2e, 0x12, 0x38, 0x83, 0x2c, 0x7a, 0x0f, 0xce, 0xd3, 0xd2, 0xae, 0x6f, 0x2d, 0x0f, 0xde, + 0xdc, 0xcc, 0xd1, 0x61, 0xf5, 0xfc, 0x7a, 0x06, 0x11, 0x9c, 0x49, 0x7a, 0x76, 0x09, 0x2e, 0x64, + 0x4e, 0x15, 0x9a, 0x82, 0xe2, 0x2e, 0xe1, 0x2c, 0x48, 0x05, 0xd3, 0x9f, 0xe8, 0x3c, 0x0c, 0xed, + 0x3b, 0x5e, 0x47, 0xac, 0x52, 0xcc, 0xff, 0x7c, 0xba, 0xf0, 0x9a, 0x65, 0x37, 0x61, 0x6c, 0xc9, + 0x69, 0x3b, 0x9b, 0xae, 0xe7, 0xc6, 0x2e, 0x89, 0xd0, 0x33, 0x50, 0x74, 0x5a, 0x2d, 0x76, 0x45, + 0x56, 0x16, 0x2f, 0x1c, 0x1d, 0x56, 0x8b, 0x0b, 0x2d, 0x7a, 0x56, 0x83, 0xc2, 0x3a, 0xc0, 0x14, + 0x03, 0x7d, 0x12, 0x4a, 0xad, 0x30, 0x68, 0xcf, 0x14, 0x18, 0x26, 0x1d, 0xaa, 0x52, 0x2d, 0x0c, + 0xda, 0x29, 0x54, 0x86, 0x63, 0xff, 0x66, 0x01, 0x9e, 0x5c, 0x22, 0xed, 0x9d, 0x95, 0x46, 0xce, + 0xa6, 0xbb, 0x06, 0xe5, 0xbd, 0xc0, 0x77, 0xe3, 0x20, 0x8c, 0x44, 0xd3, 0xec, 0x36, 0x59, 0x13, + 0x65, 0x58, 0x41, 0xd1, 0x15, 0x28, 0xb5, 0x13, 0x4e, 0x60, 0x4c, 0x72, 0x11, 0x8c, 0x07, 0x60, + 0x10, 0x8a, 0xd1, 0x89, 0x48, 0x28, 0x6e, 0x41, 0x85, 0x71, 0x37, 0x22, 0x21, 0x66, 0x90, 0xe4, + 0x38, 0xa5, 0x07, 0xad, 0xd8, 0x56, 0xa9, 0xe3, 0x94, 0x42, 0xb0, 0x86, 0x85, 0xea, 0x50, 0x89, + 0xd4, 0xa4, 0x0e, 0x0d, 0x3e, 0xa9, 0xe3, 0xec, 0xbc, 0x55, 0x33, 0x99, 0x10, 0x31, 0x8e, 0x81, + 0xe1, 0xbe, 0xe7, 0xed, 0x37, 0x0a, 0x80, 0xf8, 0x10, 0xfe, 0x05, 0x1b, 0xb8, 0xbb, 0xdd, 0x03, + 0x97, 0xc9, 0x79, 0xdd, 0x0e, 0x9a, 0x8e, 0x97, 0x3e, 0xc2, 0x4f, 0x6b, 0xf4, 0x7e, 0xd2, 0x02, + 0xb4, 0xe4, 0xfa, 0x2d, 0x12, 0x9e, 0x81, 0xd8, 0x71, 0xb2, 0x8b, 0xf4, 0x36, 0x4c, 0x2c, 0x79, + 0x2e, 0xf1, 0xe3, 0xd5, 0xfa, 0x52, 0xe0, 0x6f, 0xb9, 0xdb, 0xe8, 0xd3, 0x30, 0x41, 0xa5, 0xb0, + 0xa0, 0x13, 0x37, 0x48, 0x33, 0xf0, 0x19, 0xc3, 0x4a, 0x65, 0x17, 0x74, 0x74, 0x58, 0x9d, 0xd8, + 0x30, 0x20, 0x38, 0x85, 0x69, 0xff, 0x1e, 0xfd, 0xd0, 0x60, 0xaf, 0x1d, 0xf8, 0xc4, 0x8f, 0x97, + 0x02, 0xbf, 0xc5, 0x05, 0x9b, 0x4f, 0x43, 0x29, 0xa6, 0x1d, 0xe7, 0x1f, 0x79, 0x55, 0x4e, 0x2d, + 0xed, 0xee, 0xf1, 0x61, 0xf5, 0xb1, 0xee, 0x1a, 0xec, 0x83, 0x58, 0x1d, 0xf4, 0xdd, 0x30, 0x1c, + 0xc5, 0x4e, 0xdc, 0x89, 0xc4, 0x67, 0x3f, 0x25, 0x3f, 0xbb, 0xc1, 0x4a, 0x8f, 0x0f, 0xab, 0x93, + 0xaa, 0x1a, 0x2f, 0xc2, 0xa2, 0x02, 0x7a, 0x16, 0x46, 0xf6, 0x48, 0x14, 0x39, 0xdb, 0x92, 0x27, + 0x9d, 0x14, 0x75, 0x47, 0xd6, 0x78, 0x31, 0x96, 0x70, 0xf4, 0x34, 0x0c, 0x91, 0x30, 0x0c, 0x42, + 0xb1, 0xaa, 0xc6, 0x05, 0xe2, 0xd0, 0x32, 0x2d, 0xc4, 0x1c, 0x66, 0xff, 0x47, 0x0b, 0x26, 0x55, + 0x5f, 0x79, 0x5b, 0x67, 0xc0, 0x7c, 0x7c, 0x01, 0xa0, 0x29, 0x3f, 0x30, 0x62, 0xe7, 0xdd, 0xe8, + 0xf5, 0xab, 0x99, 0x57, 0x6a, 0xd7, 0x30, 0x26, 0x94, 0x55, 0x51, 0x84, 0x35, 0x6a, 0xf6, 0xbf, + 0xb2, 0xe0, 0x5c, 0xea, 0x8b, 0x6e, 0xbb, 0x51, 0x8c, 0xde, 0xe9, 0xfa, 0xaa, 0xb9, 0xc1, 0xbe, + 0x8a, 0xd6, 0x66, 0xdf, 0xa4, 0xd6, 0x9c, 0x2c, 0xd1, 0xbe, 0xe8, 0x26, 0x0c, 0xb9, 0x31, 0xd9, + 0x93, 0x1f, 0xf3, 0x74, 0xcf, 0x8f, 0xe1, 0xbd, 0x4a, 0x66, 0x64, 0x95, 0xd6, 0xc4, 0x9c, 0x80, + 0xfd, 0xe3, 0x45, 0xa8, 0xf0, 0x65, 0xbb, 0xe6, 0xb4, 0xcf, 0x60, 0x2e, 0x56, 0xa1, 0xc4, 0xa8, + 0xf3, 0x8e, 0x3f, 0x93, 0xdd, 0x71, 0xd1, 0x9d, 0x39, 0x2a, 0x59, 0x70, 0xe6, 0x45, 0x1d, 0x66, + 0xb4, 0x08, 0x33, 0x12, 0xc8, 0x01, 0xd8, 0x74, 0x7d, 0x27, 0x3c, 0xa0, 0x65, 0x33, 0x45, 0x46, + 0xf0, 0x85, 0xde, 0x04, 0x17, 0x15, 0x3e, 0x27, 0xab, 0xfa, 0x9a, 0x00, 0xb0, 0x46, 0x74, 0xf6, + 0x55, 0xa8, 0x28, 0xe4, 0x93, 0xdc, 0xca, 0xb3, 0x9f, 0x85, 0xc9, 0x54, 0x5b, 0xfd, 0xaa, 0x8f, + 0xe9, 0x97, 0xfa, 0xd7, 0xd9, 0x29, 0x20, 0x7a, 0xbd, 0xec, 0xef, 0x8b, 0xe3, 0xee, 0x7d, 0x38, + 0xef, 0x65, 0x9c, 0xb2, 0x62, 0xaa, 0x06, 0x3f, 0x95, 0x9f, 0x14, 0x9f, 0x7d, 0x3e, 0x0b, 0x8a, + 0x33, 0xdb, 0xa0, 0x17, 0x55, 0xd0, 0xa6, 0x6b, 0xde, 0xf1, 0x58, 0x7f, 0x85, 0xbc, 0x78, 0x47, + 0x94, 0x61, 0x05, 0xa5, 0x47, 0xd8, 0x79, 0xd5, 0xf9, 0x5b, 0xe4, 0xa0, 0x41, 0x3c, 0xd2, 0x8c, + 0x83, 0xf0, 0x43, 0xed, 0xfe, 0x25, 0x3e, 0xfa, 0xfc, 0x04, 0x1c, 0x15, 0x04, 0x8a, 0xb7, 0xc8, + 0x01, 0x9f, 0x0a, 0xfd, 0xeb, 0x8a, 0x3d, 0xbf, 0xee, 0x97, 0x2c, 0x18, 0x57, 0x5f, 0x77, 0x06, + 0x5b, 0x7d, 0xd1, 0xdc, 0xea, 0x97, 0x7a, 0x2e, 0xf0, 0x9c, 0x4d, 0xfe, 0x8d, 0x02, 0x5c, 0x54, + 0x38, 0x94, 0x41, 0xe5, 0x7f, 0xc4, 0xaa, 0x9a, 0x87, 0x8a, 0xaf, 0xe4, 0x5d, 0xcb, 0x14, 0x34, + 0x13, 0x69, 0x37, 0xc1, 0xa1, 0x7c, 0x86, 0x9f, 0x08, 0xa5, 0x63, 0xba, 0x22, 0x48, 0x28, 0x7d, + 0x16, 0xa1, 0xd8, 0x71, 0x5b, 0xe2, 0xce, 0xf8, 0x2e, 0x39, 0xda, 0x77, 0x57, 0x6b, 0xc7, 0x87, + 0xd5, 0xa7, 0xf2, 0x94, 0x90, 0xf4, 0xb2, 0x8a, 0xe6, 0xee, 0xae, 0xd6, 0x30, 0xad, 0x8c, 0x16, + 0x60, 0x52, 0xea, 0x59, 0xef, 0x51, 0xa6, 0x33, 0xf0, 0xc5, 0xd5, 0xa2, 0xb4, 0x39, 0xd8, 0x04, + 0xe3, 0x34, 0x3e, 0xaa, 0xc1, 0xd4, 0x6e, 0x67, 0x93, 0x78, 0x24, 0xe6, 0x1f, 0x7c, 0x8b, 0x70, + 0x5d, 0x47, 0x25, 0x11, 0x86, 0x6e, 0xa5, 0xe0, 0xb8, 0xab, 0x86, 0xfd, 0xe7, 0xec, 0x88, 0x17, + 0xa3, 0x57, 0x0f, 0x03, 0xba, 0xb0, 0x28, 0xf5, 0x0f, 0x73, 0x39, 0x0f, 0xb2, 0x2a, 0x6e, 0x91, + 0x83, 0x8d, 0x80, 0xb2, 0x87, 0xd9, 0xab, 0xc2, 0x58, 0xf3, 0xa5, 0x9e, 0x6b, 0xfe, 0x57, 0x0a, + 0x70, 0x41, 0x8d, 0x80, 0xc1, 0x80, 0xfd, 0x45, 0x1f, 0x83, 0x17, 0x61, 0xb4, 0x45, 0xb6, 0x9c, + 0x8e, 0x17, 0x2b, 0xc5, 0xdb, 0x10, 0x57, 0xbe, 0xd6, 0x92, 0x62, 0xac, 0xe3, 0x9c, 0x60, 0xd8, + 0x7e, 0x6e, 0x94, 0xdd, 0xad, 0xb1, 0x43, 0xd7, 0xb8, 0xda, 0x35, 0x56, 0xee, 0xae, 0x79, 0x1a, + 0x86, 0xdc, 0x3d, 0xca, 0x6b, 0x15, 0x4c, 0x16, 0x6a, 0x95, 0x16, 0x62, 0x0e, 0x43, 0x9f, 0x80, + 0x91, 0x66, 0xb0, 0xb7, 0xe7, 0xf8, 0x2d, 0x76, 0xe5, 0x55, 0x16, 0x47, 0x29, 0x3b, 0xb6, 0xc4, + 0x8b, 0xb0, 0x84, 0xa1, 0x27, 0xa1, 0xe4, 0x84, 0xdb, 0xd1, 0x4c, 0x89, 0xe1, 0x94, 0x69, 0x4b, + 0x0b, 0xe1, 0x76, 0x84, 0x59, 0x29, 0x95, 0x03, 0xee, 0x07, 0xe1, 0xae, 0xeb, 0x6f, 0xd7, 0xdc, + 0x50, 0x6c, 0x09, 0x75, 0x17, 0xbe, 0xad, 0x20, 0x58, 0xc3, 0x42, 0x2b, 0x30, 0xd4, 0x0e, 0xc2, + 0x38, 0x9a, 0x19, 0x66, 0xc3, 0xfd, 0x54, 0xce, 0x41, 0xc4, 0xbf, 0xb6, 0x1e, 0x84, 0x71, 0xf2, + 0x01, 0xf4, 0x5f, 0x84, 0x79, 0x75, 0xf4, 0xdd, 0x50, 0x24, 0xfe, 0xfe, 0xcc, 0x08, 0xa3, 0x32, + 0x9b, 0x45, 0x65, 0xd9, 0xdf, 0xbf, 0xe7, 0x84, 0xc9, 0x29, 0xbd, 0xec, 0xef, 0x63, 0x5a, 0x07, + 0x7d, 0x1e, 0x2a, 0x72, 0x8b, 0x47, 0x42, 0x30, 0xcf, 0x5c, 0x62, 0xf2, 0x60, 0xc0, 0xe4, 0xbd, + 0x8e, 0x1b, 0x92, 0x3d, 0xe2, 0xc7, 0x51, 0x72, 0xa6, 0x49, 0x68, 0x84, 0x13, 0x6a, 0xe8, 0xf3, + 0x52, 0x1b, 0xb4, 0x16, 0x74, 0xfc, 0x38, 0x9a, 0xa9, 0xb0, 0xee, 0x65, 0xea, 0xe9, 0xef, 0x25, + 0x78, 0x69, 0x75, 0x11, 0xaf, 0x8c, 0x0d, 0x52, 0x08, 0xc3, 0xb8, 0xe7, 0xee, 0x13, 0x9f, 0x44, + 0x51, 0x3d, 0x0c, 0x36, 0xc9, 0x0c, 0xb0, 0x9e, 0x5f, 0xcc, 0x56, 0x5f, 0x07, 0x9b, 0x64, 0x71, + 0xfa, 0xe8, 0xb0, 0x3a, 0x7e, 0x5b, 0xaf, 0x83, 0x4d, 0x12, 0xe8, 0x2e, 0x4c, 0x50, 0x01, 0xc4, + 0x4d, 0x88, 0x8e, 0xf6, 0x23, 0xca, 0xa4, 0x0f, 0x6c, 0x54, 0xc2, 0x29, 0x22, 0xe8, 0x4d, 0xa8, + 0x78, 0xee, 0x16, 0x69, 0x1e, 0x34, 0x3d, 0x32, 0x33, 0xc6, 0x28, 0x66, 0x6e, 0xab, 0xdb, 0x12, + 0x89, 0x0b, 0x78, 0xea, 0x2f, 0x4e, 0xaa, 0xa3, 0x7b, 0xf0, 0x58, 0x4c, 0xc2, 0x3d, 0xd7, 0x77, + 0xe8, 0x76, 0x10, 0xf2, 0x02, 0x7b, 0x04, 0x18, 0x67, 0xeb, 0xed, 0xb2, 0x18, 0xba, 0xc7, 0x36, + 0x32, 0xb1, 0x70, 0x4e, 0x6d, 0x74, 0x07, 0x26, 0xd9, 0x4e, 0xa8, 0x77, 0x3c, 0xaf, 0x1e, 0x78, + 0x6e, 0xf3, 0x60, 0x66, 0x82, 0x11, 0xfc, 0x84, 0xbc, 0x17, 0x56, 0x4d, 0xf0, 0xf1, 0x61, 0x15, + 0x92, 0x7f, 0x38, 0x5d, 0x1b, 0x6d, 0x32, 0xad, 0x6f, 0x27, 0x74, 0xe3, 0x03, 0xba, 0x7e, 0xc9, + 0x83, 0x78, 0x66, 0xb2, 0xa7, 0x7e, 0x40, 0x47, 0x55, 0xaa, 0x61, 0xbd, 0x10, 0xa7, 0x09, 0xd2, + 0xad, 0x1d, 0xc5, 0x2d, 0xd7, 0x9f, 0x99, 0x62, 0x27, 0x86, 0xda, 0x19, 0x0d, 0x5a, 0x88, 0x39, + 0x8c, 0x69, 0x7c, 0xe9, 0x8f, 0x3b, 0xf4, 0x04, 0x9d, 0x66, 0x88, 0x89, 0xc6, 0x57, 0x02, 0x70, + 0x82, 0x43, 0x99, 0x9a, 0x38, 0x3e, 0x98, 0x41, 0x0c, 0x55, 0x6d, 0x97, 0x8d, 0x8d, 0xcf, 0x63, + 0x5a, 0x8e, 0x6e, 0xc3, 0x08, 0xf1, 0xf7, 0x57, 0xc2, 0x60, 0x6f, 0xe6, 0x5c, 0xfe, 0x9e, 0x5d, + 0xe6, 0x28, 0xfc, 0x40, 0x4f, 0x04, 0x3c, 0x51, 0x8c, 0x25, 0x09, 0xf4, 0x00, 0x66, 0x32, 0x66, + 0x84, 0x4f, 0xc0, 0x79, 0x36, 0x01, 0x9f, 0x11, 0x75, 0x67, 0x36, 0x72, 0xf0, 0x8e, 0x7b, 0xc0, + 0x70, 0x2e, 0x75, 0xf4, 0x45, 0x18, 0xe7, 0x1b, 0x8a, 0x3f, 0x17, 0x45, 0x33, 0x17, 0xd8, 0xd7, + 0x5c, 0xc9, 0xdf, 0x9c, 0x1c, 0x71, 0xf1, 0x82, 0xe8, 0xd0, 0xb8, 0x5e, 0x1a, 0x61, 0x93, 0x9a, + 0xbd, 0x09, 0x13, 0xea, 0xdc, 0x62, 0x4b, 0x07, 0x55, 0x61, 0x88, 0x71, 0x3b, 0x42, 0x23, 0x53, + 0xa1, 0x33, 0xc5, 0x38, 0x21, 0xcc, 0xcb, 0xd9, 0x4c, 0xb9, 0xef, 0x93, 0xc5, 0x83, 0x98, 0x70, + 0xa9, 0xba, 0xa8, 0xcd, 0x94, 0x04, 0xe0, 0x04, 0xc7, 0xfe, 0x7f, 0x9c, 0x6b, 0x4c, 0x0e, 0xc7, + 0x01, 0xae, 0x83, 0xe7, 0xa1, 0xbc, 0x13, 0x44, 0x31, 0xc5, 0x66, 0x6d, 0x0c, 0x25, 0x7c, 0xe2, + 0x4d, 0x51, 0x8e, 0x15, 0x06, 0x7a, 0x1d, 0xc6, 0x9b, 0x7a, 0x03, 0xe2, 0x2e, 0x53, 0x43, 0x60, + 0xb4, 0x8e, 0x4d, 0x5c, 0xf4, 0x1a, 0x94, 0xd9, 0x63, 0x6f, 0x33, 0xf0, 0x04, 0x93, 0x25, 0x2f, + 0xe4, 0x72, 0x5d, 0x94, 0x1f, 0x6b, 0xbf, 0xb1, 0xc2, 0x46, 0x57, 0x61, 0x98, 0x76, 0x61, 0xb5, + 0x2e, 0x6e, 0x11, 0xa5, 0x53, 0xb9, 0xc9, 0x4a, 0xb1, 0x80, 0xda, 0x7f, 0xab, 0xa0, 0x8d, 0x32, + 0x95, 0x48, 0x09, 0xaa, 0xc3, 0xc8, 0x7d, 0xc7, 0x8d, 0x5d, 0x7f, 0x5b, 0xb0, 0x0b, 0xcf, 0xf6, + 0xbc, 0x52, 0x58, 0xa5, 0xb7, 0x79, 0x05, 0x7e, 0xe9, 0x89, 0x3f, 0x58, 0x92, 0xa1, 0x14, 0xc3, + 0x8e, 0xef, 0x53, 0x8a, 0x85, 0x41, 0x29, 0x62, 0x5e, 0x81, 0x53, 0x14, 0x7f, 0xb0, 0x24, 0x83, + 0xde, 0x01, 0x90, 0xcb, 0x92, 0xb4, 0xc4, 0x23, 0xeb, 0xf3, 0xfd, 0x89, 0x6e, 0xa8, 0x3a, 0x8b, + 0x13, 0xf4, 0x4a, 0x4d, 0xfe, 0x63, 0x8d, 0x9e, 0x1d, 0x33, 0xb6, 0xaa, 0xbb, 0x33, 0xe8, 0xfb, + 0xe8, 0x49, 0xe0, 0x84, 0x31, 0x69, 0x2d, 0xc4, 0x62, 0x70, 0x3e, 0x39, 0x98, 0x4c, 0xb1, 0xe1, + 0xee, 0x11, 0xfd, 0xd4, 0x10, 0x44, 0x70, 0x42, 0xcf, 0xfe, 0xb5, 0x22, 0xcc, 0xe4, 0x75, 0x97, + 0x2e, 0x3a, 0xf2, 0xc0, 0x8d, 0x97, 0x28, 0x37, 0x64, 0x99, 0x8b, 0x6e, 0x59, 0x94, 0x63, 0x85, + 0x41, 0x67, 0x3f, 0x72, 0xb7, 0xa5, 0x48, 0x38, 0x94, 0xcc, 0x7e, 0x83, 0x95, 0x62, 0x01, 0xa5, + 0x78, 0x21, 0x71, 0x22, 0xf1, 0x8a, 0xaf, 0xad, 0x12, 0xcc, 0x4a, 0xb1, 0x80, 0xea, 0xfa, 0xa6, + 0x52, 0x1f, 0x7d, 0x93, 0x31, 0x44, 0x43, 0xa7, 0x3b, 0x44, 0xe8, 0x4b, 0x00, 0x5b, 0xae, 0xef, + 0x46, 0x3b, 0x8c, 0xfa, 0xf0, 0x89, 0xa9, 0x2b, 0x5e, 0x6a, 0x45, 0x51, 0xc1, 0x1a, 0x45, 0xf4, + 0x0a, 0x8c, 0xaa, 0x0d, 0xb8, 0x5a, 0x63, 0x4f, 0x1a, 0xda, 0x13, 0x71, 0x72, 0x1a, 0xd5, 0xb0, + 0x8e, 0x67, 0xbf, 0x9b, 0x5e, 0x2f, 0x62, 0x07, 0x68, 0xe3, 0x6b, 0x0d, 0x3a, 0xbe, 0x85, 0xde, + 0xe3, 0x6b, 0xff, 0x56, 0x11, 0x26, 0x8d, 0xc6, 0x3a, 0xd1, 0x00, 0x67, 0xd6, 0x0d, 0x7a, 0xcf, + 0x39, 0x31, 0x11, 0xfb, 0xcf, 0xee, 0xbf, 0x55, 0xf4, 0xbb, 0x90, 0xee, 0x00, 0x5e, 0x1f, 0x7d, + 0x09, 0x2a, 0x9e, 0x13, 0x31, 0xdd, 0x15, 0x11, 0xfb, 0x6e, 0x10, 0x62, 0x89, 0x1c, 0xe1, 0x44, + 0xb1, 0x76, 0xd5, 0x70, 0xda, 0x09, 0x49, 0x7a, 0x21, 0x53, 0xde, 0x47, 0x9a, 0x89, 0xa8, 0x4e, + 0x50, 0x06, 0xe9, 0x00, 0x73, 0x18, 0x7a, 0x0d, 0xc6, 0x42, 0xc2, 0x56, 0xc5, 0x12, 0x65, 0xe5, + 0xd8, 0x32, 0x1b, 0x4a, 0x78, 0x3e, 0xac, 0xc1, 0xb0, 0x81, 0x99, 0xb0, 0xf2, 0xc3, 0x3d, 0x58, + 0xf9, 0x67, 0x61, 0x84, 0xfd, 0x50, 0x2b, 0x40, 0xcd, 0xc6, 0x2a, 0x2f, 0xc6, 0x12, 0x9e, 0x5e, + 0x30, 0xe5, 0x01, 0x17, 0xcc, 0x27, 0x61, 0xa2, 0xe6, 0x90, 0xbd, 0xc0, 0x5f, 0xf6, 0x5b, 0xed, + 0xc0, 0xf5, 0x63, 0x34, 0x03, 0x25, 0x76, 0x3b, 0xf0, 0xbd, 0x5d, 0xa2, 0x14, 0x70, 0x89, 0x32, + 0xe6, 0xf6, 0x36, 0x5c, 0xa8, 0x05, 0xf7, 0xfd, 0xfb, 0x4e, 0xd8, 0x5a, 0xa8, 0xaf, 0x6a, 0x72, + 0xee, 0xba, 0x94, 0xb3, 0xb8, 0xd9, 0x45, 0xe6, 0x99, 0xaa, 0xd5, 0xe4, 0x77, 0xed, 0x8a, 0xeb, + 0x91, 0x1c, 0x6d, 0xc4, 0xdf, 0x29, 0x18, 0x2d, 0x25, 0xf8, 0xea, 0x89, 0xc3, 0xca, 0x7d, 0xe2, + 0x78, 0x0b, 0xca, 0x5b, 0x2e, 0xf1, 0x5a, 0x98, 0x6c, 0x89, 0x25, 0xf6, 0x4c, 0xfe, 0x4b, 0xf2, + 0x0a, 0xc5, 0x94, 0xda, 0x27, 0x2e, 0xa5, 0xad, 0x88, 0xca, 0x58, 0x91, 0x41, 0xbb, 0x30, 0x25, + 0xc5, 0x00, 0x09, 0x15, 0x0b, 0xee, 0xd9, 0x5e, 0xb2, 0x85, 0x49, 0xfc, 0xfc, 0xd1, 0x61, 0x75, + 0x0a, 0xa7, 0xc8, 0xe0, 0x2e, 0xc2, 0x54, 0x2c, 0xdb, 0xa3, 0x47, 0x6b, 0x89, 0x0d, 0x3f, 0x13, + 0xcb, 0x98, 0x84, 0xc9, 0x4a, 0xed, 0x9f, 0xb1, 0xe0, 0xf1, 0xae, 0x91, 0x11, 0x92, 0xf6, 0x29, + 0xcf, 0x42, 0x5a, 0xf2, 0x2d, 0xf4, 0x97, 0x7c, 0xed, 0x7f, 0x6c, 0xc1, 0xf9, 0xe5, 0xbd, 0x76, + 0x7c, 0x50, 0x73, 0xcd, 0x67, 0x98, 0x57, 0x61, 0x78, 0x8f, 0xb4, 0xdc, 0xce, 0x9e, 0x98, 0xb9, + 0xaa, 0x3c, 0x7e, 0xd6, 0x58, 0xe9, 0xf1, 0x61, 0x75, 0xbc, 0x11, 0x07, 0xa1, 0xb3, 0x4d, 0x78, + 0x01, 0x16, 0xe8, 0xec, 0x10, 0x77, 0xdf, 0x27, 0xb7, 0xdd, 0x3d, 0x57, 0x5a, 0x06, 0xf4, 0xd4, + 0x9d, 0xcd, 0xc9, 0x01, 0x9d, 0x7b, 0xab, 0xe3, 0xf8, 0xb1, 0x1b, 0x1f, 0x88, 0x17, 0x26, 0x49, + 0x04, 0x27, 0xf4, 0xec, 0x6f, 0x59, 0x30, 0x29, 0xd7, 0xfd, 0x42, 0xab, 0x15, 0x92, 0x28, 0x42, + 0xb3, 0x50, 0x70, 0xdb, 0xa2, 0x97, 0x20, 0x7a, 0x59, 0x58, 0xad, 0xe3, 0x82, 0xdb, 0x46, 0x75, + 0xa8, 0x70, 0x03, 0x83, 0x64, 0x71, 0x0d, 0x64, 0xa6, 0xc0, 0x7a, 0xb0, 0x21, 0x6b, 0xe2, 0x84, + 0x88, 0xe4, 0xe0, 0xd8, 0x99, 0x59, 0x34, 0x9f, 0xa7, 0x6e, 0x8a, 0x72, 0xac, 0x30, 0xd0, 0x35, + 0x28, 0xfb, 0x41, 0x8b, 0xdb, 0x7b, 0xf0, 0xdb, 0x8f, 0x2d, 0xd9, 0x75, 0x51, 0x86, 0x15, 0xd4, + 0xfe, 0x31, 0x0b, 0xc6, 0xe4, 0x97, 0x0d, 0xc8, 0x4c, 0xd2, 0xad, 0x95, 0x30, 0x92, 0xc9, 0xd6, + 0xa2, 0xcc, 0x20, 0x83, 0x18, 0x3c, 0x60, 0xf1, 0x24, 0x3c, 0xa0, 0xfd, 0xd3, 0x05, 0x98, 0x90, + 0xdd, 0x69, 0x74, 0x36, 0x23, 0x12, 0xa3, 0x0d, 0xa8, 0x38, 0x7c, 0xc8, 0x89, 0x5c, 0xb1, 0x4f, + 0x67, 0x0b, 0x1f, 0xc6, 0xfc, 0x24, 0xd7, 0xf2, 0x82, 0xac, 0x8d, 0x13, 0x42, 0xc8, 0x83, 0x69, + 0x3f, 0x88, 0xd9, 0x11, 0xad, 0xe0, 0xbd, 0x9e, 0x40, 0xd2, 0xd4, 0x2f, 0x0a, 0xea, 0xd3, 0xeb, + 0x69, 0x2a, 0xb8, 0x9b, 0x30, 0x5a, 0x96, 0x0a, 0x8f, 0x62, 0xbe, 0xb8, 0xa1, 0xcf, 0x42, 0xb6, + 0xbe, 0xc3, 0xfe, 0x0d, 0x0b, 0x2a, 0x12, 0xed, 0x2c, 0x5e, 0xbb, 0xd6, 0x60, 0x24, 0x62, 0x93, + 0x20, 0x87, 0xc6, 0xee, 0xd5, 0x71, 0x3e, 0x5f, 0xc9, 0xcd, 0xc3, 0xff, 0x47, 0x58, 0xd2, 0x60, + 0xfa, 0x6e, 0xd5, 0xfd, 0x8f, 0x88, 0xbe, 0x5b, 0xf5, 0x27, 0xe7, 0x86, 0xf9, 0xef, 0xac, 0xcf, + 0x9a, 0x58, 0x4b, 0x19, 0xa4, 0x76, 0x48, 0xb6, 0xdc, 0x07, 0x69, 0x06, 0xa9, 0xce, 0x4a, 0xb1, + 0x80, 0xa2, 0x77, 0x60, 0xac, 0x29, 0x15, 0x9d, 0xc9, 0x31, 0x70, 0xb5, 0xa7, 0xd2, 0x5d, 0xbd, + 0xcf, 0x70, 0x5b, 0xd0, 0x25, 0xad, 0x3e, 0x36, 0xa8, 0x99, 0x36, 0x08, 0xc5, 0x7e, 0x36, 0x08, + 0x09, 0xdd, 0xdc, 0x57, 0x74, 0xfb, 0x67, 0x2d, 0x18, 0xe6, 0xea, 0xb2, 0xc1, 0xf4, 0x8b, 0xda, + 0x73, 0x55, 0x32, 0x76, 0xf7, 0x68, 0xa1, 0x78, 0x7e, 0x42, 0x6b, 0x50, 0x61, 0x3f, 0x98, 0xda, + 0xa0, 0x98, 0x6f, 0x04, 0xcb, 0x5b, 0xd5, 0x3b, 0x78, 0x4f, 0x56, 0xc3, 0x09, 0x05, 0xfb, 0x27, + 0x8a, 0xf4, 0xa8, 0x4a, 0x50, 0x8d, 0x1b, 0xdc, 0x7a, 0x74, 0x37, 0x78, 0xe1, 0x51, 0xdd, 0xe0, + 0xdb, 0x30, 0xd9, 0xd4, 0x1e, 0xb7, 0x92, 0x99, 0xbc, 0xd6, 0x73, 0x91, 0x68, 0xef, 0x60, 0x5c, + 0x65, 0xb4, 0x64, 0x12, 0xc1, 0x69, 0xaa, 0xe8, 0xfb, 0x60, 0x8c, 0xcf, 0xb3, 0x68, 0xa5, 0xc4, + 0x5a, 0xf9, 0x44, 0xfe, 0x7a, 0xd1, 0x9b, 0x60, 0x2b, 0xb1, 0xa1, 0x55, 0xc7, 0x06, 0x31, 0xfb, + 0xd7, 0xca, 0x30, 0xb4, 0xbc, 0x4f, 0xfc, 0xf8, 0x0c, 0x0e, 0xa4, 0x26, 0x4c, 0xb8, 0xfe, 0x7e, + 0xe0, 0xed, 0x93, 0x16, 0x87, 0x9f, 0xe4, 0x72, 0x7d, 0x4c, 0x90, 0x9e, 0x58, 0x35, 0x48, 0xe0, + 0x14, 0xc9, 0x47, 0x21, 0x61, 0xde, 0x80, 0x61, 0x3e, 0xf7, 0x42, 0xbc, 0xcc, 0x54, 0x06, 0xb3, + 0x41, 0x14, 0xbb, 0x20, 0x91, 0x7e, 0xb9, 0xf6, 0x59, 0x54, 0x47, 0xef, 0xc2, 0xc4, 0x96, 0x1b, + 0x46, 0x31, 0x15, 0x0d, 0xa3, 0xd8, 0xd9, 0x6b, 0x3f, 0x84, 0x44, 0xa9, 0xc6, 0x61, 0xc5, 0xa0, + 0x84, 0x53, 0x94, 0xd1, 0x36, 0x8c, 0x53, 0x21, 0x27, 0x69, 0x6a, 0xe4, 0xc4, 0x4d, 0x29, 0x95, + 0xd1, 0x6d, 0x9d, 0x10, 0x36, 0xe9, 0xd2, 0xc3, 0xa4, 0xc9, 0x84, 0xa2, 0x32, 0xe3, 0x28, 0xd4, + 0x61, 0xc2, 0xa5, 0x21, 0x0e, 0xa3, 0x67, 0x12, 0x33, 0x5b, 0xa9, 0x98, 0x67, 0x92, 0x66, 0x9c, + 0xf2, 0x65, 0xa8, 0x10, 0x3a, 0x84, 0x94, 0xb0, 0x50, 0x8c, 0xcf, 0x0f, 0xd6, 0xd7, 0x35, 0xb7, + 0x19, 0x06, 0xa6, 0x2c, 0xbf, 0x2c, 0x29, 0xe1, 0x84, 0x28, 0x5a, 0x82, 0xe1, 0x88, 0x84, 0x2e, + 0x89, 0x84, 0x8a, 0xbc, 0xc7, 0x34, 0x32, 0x34, 0x6e, 0x2d, 0xcd, 0x7f, 0x63, 0x51, 0x95, 0x2e, + 0x2f, 0x87, 0x49, 0x43, 0x4c, 0x2b, 0xae, 0x2d, 0xaf, 0x05, 0x56, 0x8a, 0x05, 0x14, 0xbd, 0x09, + 0x23, 0x21, 0xf1, 0x98, 0xb2, 0x68, 0x7c, 0xf0, 0x45, 0xce, 0x75, 0x4f, 0xbc, 0x1e, 0x96, 0x04, + 0xd0, 0x2d, 0x40, 0x21, 0xa1, 0x3c, 0x84, 0xeb, 0x6f, 0x2b, 0x63, 0x0e, 0xa1, 0xeb, 0x7e, 0x42, + 0xb4, 0x7f, 0x0e, 0x27, 0x18, 0xd2, 0x8e, 0x12, 0x67, 0x54, 0x43, 0x37, 0x60, 0x5a, 0x95, 0xae, + 0xfa, 0x51, 0xec, 0xf8, 0x4d, 0xc2, 0xd4, 0xdc, 0x95, 0x84, 0x2b, 0xc2, 0x69, 0x04, 0xdc, 0x5d, + 0xc7, 0xfe, 0x1a, 0x65, 0x67, 0xe8, 0x68, 0x9d, 0x01, 0x2f, 0xf0, 0x86, 0xc9, 0x0b, 0x5c, 0xcc, + 0x9d, 0xb9, 0x1c, 0x3e, 0xe0, 0xc8, 0x82, 0x51, 0x6d, 0x66, 0x93, 0x35, 0x6b, 0xf5, 0x58, 0xb3, + 0x1d, 0x98, 0xa2, 0x2b, 0xfd, 0xce, 0x26, 0x73, 0x1c, 0x6a, 0xb1, 0x85, 0x59, 0x78, 0xb8, 0x85, + 0xa9, 0x5e, 0x99, 0x6f, 0xa7, 0x08, 0xe2, 0xae, 0x26, 0xd0, 0xab, 0x52, 0x73, 0x52, 0x34, 0x8c, + 0xb4, 0xb8, 0x56, 0xe4, 0xf8, 0xb0, 0x3a, 0xa5, 0x7d, 0x88, 0xae, 0x29, 0xb1, 0xbf, 0x2c, 0xbf, + 0x51, 0xbd, 0xe6, 0x37, 0xd5, 0x62, 0x49, 0xbd, 0xe6, 0xab, 0xe5, 0x80, 0x13, 0x1c, 0xba, 0x47, + 0xa9, 0x08, 0x92, 0x7e, 0xcd, 0xa7, 0x02, 0x0a, 0x66, 0x10, 0xfb, 0x25, 0x80, 0xe5, 0x07, 0xa4, + 0xc9, 0x97, 0xba, 0xfe, 0x00, 0x69, 0xe5, 0x3f, 0x40, 0xda, 0xff, 0xd9, 0x82, 0x89, 0x95, 0x25, + 0x43, 0x4c, 0x9c, 0x03, 0xe0, 0xb2, 0xd1, 0xdb, 0x6f, 0xaf, 0x4b, 0xdd, 0x3a, 0x57, 0x8f, 0xaa, + 0x52, 0xac, 0x61, 0xa0, 0x8b, 0x50, 0xf4, 0x3a, 0xbe, 0x10, 0x59, 0x46, 0x8e, 0x0e, 0xab, 0xc5, + 0xdb, 0x1d, 0x1f, 0xd3, 0x32, 0xcd, 0x94, 0xaf, 0x38, 0xb0, 0x29, 0x5f, 0x5f, 0x87, 0x20, 0x54, + 0x85, 0xa1, 0xfb, 0xf7, 0xdd, 0x16, 0x37, 0xbb, 0x16, 0x7a, 0xff, 0xb7, 0xdf, 0x5e, 0xad, 0x45, + 0x98, 0x97, 0xdb, 0x5f, 0x2d, 0xc2, 0xec, 0x8a, 0x47, 0x1e, 0x7c, 0x40, 0xd3, 0xf3, 0x41, 0x0d, + 0x11, 0x4f, 0xc6, 0x2f, 0x9e, 0xd4, 0xea, 0xb2, 0xff, 0x78, 0x6c, 0xc1, 0x08, 0x7f, 0xcc, 0x96, + 0x86, 0xe8, 0xaf, 0x67, 0xb5, 0x9e, 0x3f, 0x20, 0x73, 0xfc, 0x51, 0x5c, 0x18, 0xa0, 0xab, 0x9b, + 0x56, 0x94, 0x62, 0x49, 0x7c, 0xf6, 0xd3, 0x30, 0xa6, 0x63, 0x9e, 0xc8, 0xfe, 0xf9, 0x2f, 0x17, + 0x61, 0x8a, 0xf6, 0xe0, 0x91, 0x4e, 0xc4, 0xdd, 0xee, 0x89, 0x38, 0x6d, 0x1b, 0xd8, 0xfe, 0xb3, + 0xf1, 0x4e, 0x7a, 0x36, 0x5e, 0xcc, 0x9b, 0x8d, 0xb3, 0x9e, 0x83, 0x1f, 0xb2, 0xe0, 0xdc, 0x8a, + 0x17, 0x34, 0x77, 0x53, 0xe6, 0xb9, 0xaf, 0xc0, 0x28, 0x3d, 0xc7, 0x23, 0xc3, 0xef, 0xc5, 0xf0, + 0x84, 0x12, 0x20, 0xac, 0xe3, 0x69, 0xd5, 0xee, 0xde, 0x5d, 0xad, 0x65, 0x39, 0x50, 0x09, 0x10, + 0xd6, 0xf1, 0xec, 0x6f, 0x5a, 0x70, 0xe9, 0xc6, 0xd2, 0x72, 0xb2, 0x14, 0xbb, 0x7c, 0xb8, 0xa8, + 0x14, 0xd8, 0xd2, 0xba, 0x92, 0x48, 0x81, 0x35, 0xd6, 0x0b, 0x01, 0xfd, 0xa8, 0xf8, 0x27, 0xfe, + 0x82, 0x05, 0xe7, 0x6e, 0xb8, 0x31, 0xbd, 0x96, 0xd3, 0xde, 0x44, 0xf4, 0x5e, 0x8e, 0xdc, 0x38, + 0x08, 0x0f, 0xd2, 0xde, 0x44, 0x58, 0x41, 0xb0, 0x86, 0xc5, 0x5b, 0xde, 0x77, 0x99, 0x19, 0x55, + 0xc1, 0x54, 0x45, 0x61, 0x51, 0x8e, 0x15, 0x06, 0xfd, 0xb0, 0x96, 0x1b, 0x32, 0x51, 0xe2, 0x40, + 0x9c, 0xb0, 0xea, 0xc3, 0x6a, 0x12, 0x80, 0x13, 0x1c, 0xfb, 0x67, 0x2c, 0xb8, 0x70, 0xc3, 0xeb, + 0x44, 0x31, 0x09, 0xb7, 0x22, 0xa3, 0xb3, 0x2f, 0x41, 0x85, 0x48, 0x71, 0x5d, 0xf4, 0x55, 0x31, + 0x98, 0x4a, 0x8e, 0xe7, 0xae, 0x4c, 0x0a, 0x6f, 0x00, 0x5b, 0xf7, 0x93, 0xd9, 0x68, 0xff, 0x72, + 0x01, 0xc6, 0x6f, 0x6e, 0x6c, 0xd4, 0x6f, 0x90, 0x58, 0xdc, 0x62, 0xfd, 0x55, 0xcd, 0x58, 0xd3, + 0x98, 0xf5, 0x12, 0x8a, 0x3a, 0xb1, 0xeb, 0xcd, 0x71, 0xdf, 0xd9, 0xb9, 0x55, 0x3f, 0xbe, 0x13, + 0x36, 0xe2, 0xd0, 0xf5, 0xb7, 0x33, 0x75, 0x6c, 0xf2, 0xae, 0x2d, 0xe6, 0xdd, 0xb5, 0xe8, 0x25, + 0x18, 0x66, 0xce, 0xbb, 0x52, 0x3c, 0x79, 0x42, 0xc9, 0x14, 0xac, 0xf4, 0xf8, 0xb0, 0x5a, 0xb9, + 0x8b, 0x57, 0xf9, 0x1f, 0x2c, 0x50, 0xd1, 0x5d, 0x18, 0xdd, 0x89, 0xe3, 0xf6, 0x4d, 0xe2, 0xb4, + 0x48, 0x28, 0x4f, 0x87, 0xcb, 0x59, 0xa7, 0x03, 0x1d, 0x04, 0x8e, 0x96, 0x6c, 0xa8, 0xa4, 0x2c, + 0xc2, 0x3a, 0x1d, 0xbb, 0x01, 0x90, 0xc0, 0x4e, 0x49, 0xbf, 0x60, 0xff, 0xa1, 0x05, 0x23, 0xdc, + 0x8f, 0x2a, 0x44, 0x9f, 0x81, 0x12, 0x79, 0x40, 0x9a, 0x82, 0x73, 0xcc, 0xec, 0x70, 0xc2, 0x78, + 0x70, 0x6d, 0x39, 0xfd, 0x8f, 0x59, 0x2d, 0x74, 0x13, 0x46, 0x68, 0x6f, 0x6f, 0x28, 0xa7, 0xb2, + 0xa7, 0xf2, 0xbe, 0x58, 0x4d, 0x3b, 0xe7, 0x55, 0x44, 0x11, 0x96, 0xd5, 0x99, 0xe6, 0xb7, 0xd9, + 0x6e, 0xd0, 0x03, 0x2c, 0xee, 0x75, 0xcf, 0x6e, 0x2c, 0xd5, 0x39, 0x92, 0xa0, 0xc6, 0x35, 0xbf, + 0xb2, 0x10, 0x27, 0x44, 0xec, 0x0d, 0xa8, 0xd0, 0x49, 0x5d, 0xf0, 0x5c, 0xa7, 0xb7, 0xd2, 0xf9, + 0x39, 0xa8, 0x48, 0x05, 0x70, 0x24, 0x5c, 0x71, 0x18, 0x55, 0xa9, 0x1f, 0x8e, 0x70, 0x02, 0xb7, + 0xb7, 0xe0, 0x3c, 0x7b, 0xf9, 0x77, 0xe2, 0x1d, 0x63, 0x8f, 0xf5, 0x5f, 0xcc, 0xcf, 0x0b, 0x41, + 0x8c, 0xcf, 0xcc, 0x8c, 0xe6, 0x3b, 0x30, 0x26, 0x29, 0x26, 0x42, 0x99, 0xfd, 0xc7, 0x25, 0x78, + 0x62, 0xb5, 0x91, 0xef, 0x62, 0xf7, 0x1a, 0x8c, 0x71, 0x36, 0x8d, 0x2e, 0x6d, 0xc7, 0x13, 0xed, + 0xaa, 0x77, 0xb1, 0x0d, 0x0d, 0x86, 0x0d, 0x4c, 0x74, 0x09, 0x8a, 0xee, 0x7b, 0x7e, 0xda, 0x0c, + 0x77, 0xf5, 0xad, 0x75, 0x4c, 0xcb, 0x29, 0x98, 0x72, 0x7c, 0xfc, 0x28, 0x55, 0x60, 0xc5, 0xf5, + 0xbd, 0x01, 0x13, 0x6e, 0xd4, 0x8c, 0xdc, 0x55, 0x9f, 0x9e, 0x33, 0x89, 0x7b, 0x66, 0xa2, 0x24, + 0xa0, 0x9d, 0x56, 0x50, 0x9c, 0xc2, 0xd6, 0xce, 0xf5, 0xa1, 0x81, 0xb9, 0xc6, 0xbe, 0xbe, 0x29, + 0x94, 0x21, 0x6e, 0xb3, 0xaf, 0x8b, 0x98, 0x51, 0x9b, 0x60, 0x88, 0xf9, 0x07, 0x47, 0x58, 0xc2, + 0xa8, 0x04, 0xd6, 0xdc, 0x71, 0xda, 0x0b, 0x9d, 0x78, 0xa7, 0xe6, 0x46, 0xcd, 0x60, 0x9f, 0x84, + 0x07, 0x4c, 0x78, 0x2e, 0x27, 0x12, 0x98, 0x02, 0x2c, 0xdd, 0x5c, 0xa8, 0x53, 0x4c, 0xdc, 0x5d, + 0xc7, 0xe4, 0x0a, 0xe1, 0x34, 0xb8, 0xc2, 0x05, 0x98, 0x94, 0xcd, 0x34, 0x48, 0xc4, 0xee, 0x88, + 0x51, 0xd6, 0x31, 0x65, 0x6a, 0x2b, 0x8a, 0x55, 0xb7, 0xd2, 0xf8, 0xe8, 0x55, 0x18, 0x77, 0x7d, + 0x37, 0x76, 0x9d, 0x38, 0x08, 0xd9, 0x0d, 0xcb, 0xe5, 0x64, 0x66, 0xc9, 0xb6, 0xaa, 0x03, 0xb0, + 0x89, 0x67, 0xff, 0x51, 0x09, 0xa6, 0xd9, 0xb4, 0x7d, 0x67, 0x85, 0x7d, 0x64, 0x56, 0xd8, 0xdd, + 0xee, 0x15, 0x76, 0x1a, 0xec, 0xee, 0x87, 0xb9, 0xcc, 0xde, 0x85, 0x8a, 0xb2, 0x05, 0x96, 0xce, + 0x00, 0x56, 0x8e, 0x33, 0x40, 0x7f, 0xee, 0x43, 0x3e, 0xe3, 0x16, 0x33, 0x9f, 0x71, 0xff, 0xae, + 0x05, 0x89, 0x49, 0x24, 0xba, 0x09, 0x95, 0x76, 0xc0, 0xcc, 0x0e, 0x42, 0x69, 0xcb, 0xf3, 0x44, + 0xe6, 0x45, 0xc5, 0x2f, 0x45, 0x3e, 0x7e, 0x75, 0x59, 0x03, 0x27, 0x95, 0xd1, 0x22, 0x8c, 0xb4, + 0x43, 0xd2, 0x88, 0x99, 0xd3, 0x66, 0x5f, 0x3a, 0x7c, 0x8d, 0x70, 0x7c, 0x2c, 0x2b, 0xda, 0xbf, + 0x62, 0x01, 0xf0, 0x97, 0x52, 0xc7, 0xdf, 0x26, 0x67, 0xa0, 0xfd, 0xad, 0x41, 0x29, 0x6a, 0x93, + 0x66, 0x2f, 0x83, 0x90, 0xa4, 0x3f, 0x8d, 0x36, 0x69, 0x26, 0x03, 0x4e, 0xff, 0x61, 0x56, 0xdb, + 0xfe, 0xab, 0x00, 0x13, 0x09, 0xda, 0x6a, 0x4c, 0xf6, 0xd0, 0x0b, 0x86, 0x4b, 0xdc, 0xc5, 0x94, + 0x4b, 0x5c, 0x85, 0x61, 0x6b, 0x8a, 0xc6, 0x77, 0xa1, 0xb8, 0xe7, 0x3c, 0x10, 0x9a, 0xa4, 0xe7, + 0x7a, 0x77, 0x83, 0xd2, 0x9f, 0x5b, 0x73, 0x1e, 0x70, 0x99, 0xe9, 0x39, 0xb9, 0x40, 0xd6, 0x9c, + 0x07, 0xc7, 0xdc, 0xec, 0x83, 0x1d, 0x52, 0xb7, 0xdd, 0x28, 0xfe, 0xca, 0x7f, 0x4d, 0xfe, 0xb3, + 0x65, 0x47, 0x1b, 0x61, 0x6d, 0xb9, 0xbe, 0x78, 0x37, 0x1c, 0xa8, 0x2d, 0xd7, 0x4f, 0xb7, 0xe5, + 0xfa, 0x03, 0xb4, 0xe5, 0xfa, 0xe8, 0x7d, 0x18, 0x11, 0x6f, 0xf4, 0xcc, 0xd6, 0xdb, 0xd4, 0x52, + 0xe5, 0xb5, 0x27, 0x9e, 0xf8, 0x79, 0x9b, 0xf3, 0x52, 0x26, 0x14, 0xa5, 0x7d, 0xdb, 0x95, 0x0d, + 0xa2, 0xbf, 0x6d, 0xc1, 0x84, 0xf8, 0x8d, 0xc9, 0x7b, 0x1d, 0x12, 0xc5, 0x82, 0xf7, 0xfc, 0xd4, + 0xe0, 0x7d, 0x10, 0x15, 0x79, 0x57, 0x3e, 0x25, 0x8f, 0x59, 0x13, 0xd8, 0xb7, 0x47, 0xa9, 0x5e, + 0xa0, 0x7f, 0x6a, 0xc1, 0xf9, 0x3d, 0xe7, 0x01, 0x6f, 0x91, 0x97, 0x61, 0x27, 0x76, 0x03, 0x61, + 0xbb, 0xfe, 0x99, 0xc1, 0xa6, 0xbf, 0xab, 0x3a, 0xef, 0xa4, 0x34, 0x73, 0x3d, 0x9f, 0x85, 0xd2, + 0xb7, 0xab, 0x99, 0xfd, 0x9a, 0xdd, 0x82, 0xb2, 0x5c, 0x6f, 0x19, 0x92, 0x77, 0x4d, 0x67, 0xac, + 0x4f, 0x6c, 0x22, 0xa1, 0xfb, 0xa5, 0xd1, 0x76, 0xc4, 0x5a, 0x7b, 0xa4, 0xed, 0xbc, 0x0b, 0x63, + 0xfa, 0x1a, 0x7b, 0xa4, 0x6d, 0xbd, 0x07, 0xe7, 0x32, 0xd6, 0xd2, 0x23, 0x6d, 0xf2, 0x3e, 0x5c, + 0xcc, 0x5d, 0x1f, 0x8f, 0xb2, 0x61, 0xfb, 0x97, 0x2d, 0xfd, 0x1c, 0x3c, 0x03, 0x15, 0xfc, 0x92, + 0xa9, 0x82, 0xbf, 0xdc, 0x7b, 0xe7, 0xe4, 0xe8, 0xe1, 0xdf, 0xd1, 0x3b, 0x4d, 0x4f, 0x75, 0xf4, + 0x26, 0x0c, 0x7b, 0xb4, 0x44, 0x1a, 0x87, 0xd8, 0xfd, 0x77, 0x64, 0xc2, 0x4b, 0xb1, 0xf2, 0x08, + 0x0b, 0x0a, 0xf6, 0xaf, 0x5b, 0x50, 0x3a, 0x83, 0x91, 0xc0, 0xe6, 0x48, 0xbc, 0x90, 0x4b, 0x5a, + 0x04, 0xe1, 0x9a, 0xc3, 0xce, 0xfd, 0x65, 0x19, 0x68, 0x2c, 0x67, 0x60, 0xbe, 0x1f, 0xce, 0xdd, + 0x0e, 0x9c, 0xd6, 0xa2, 0xe3, 0x39, 0x7e, 0x93, 0x84, 0xab, 0xfe, 0x76, 0x5f, 0x2b, 0x25, 0xdd, + 0xa6, 0xa8, 0xd0, 0xcf, 0xa6, 0xc8, 0xde, 0x01, 0xa4, 0x37, 0x20, 0xec, 0x38, 0x31, 0x8c, 0xb8, + 0xbc, 0x29, 0x31, 0xfc, 0xcf, 0x64, 0x73, 0x77, 0x5d, 0x3d, 0xd3, 0x2c, 0x14, 0x79, 0x01, 0x96, + 0x84, 0xec, 0xd7, 0x20, 0xd3, 0x77, 0xab, 0xbf, 0xda, 0xc0, 0x7e, 0x05, 0xa6, 0x59, 0xcd, 0x93, + 0x89, 0xb4, 0xf6, 0x8f, 0x58, 0x30, 0xb9, 0x9e, 0x8a, 0xa6, 0x70, 0x95, 0xbd, 0xf5, 0x65, 0xe8, + 0x7d, 0x1b, 0xac, 0x14, 0x0b, 0xe8, 0xa9, 0xeb, 0x97, 0xfe, 0xdc, 0x82, 0xc4, 0x55, 0xf2, 0x0c, + 0x98, 0xaa, 0x25, 0x83, 0xa9, 0xca, 0xd4, 0x7b, 0xa8, 0xee, 0xe4, 0xf1, 0x54, 0xe8, 0x96, 0x8a, + 0x0b, 0xd0, 0x43, 0xe5, 0x91, 0x90, 0xe1, 0x5e, 0xe4, 0x13, 0x66, 0xf0, 0x00, 0x19, 0x29, 0x80, + 0x99, 0x09, 0x29, 0xdc, 0x8f, 0x88, 0x99, 0x90, 0xea, 0x4f, 0xce, 0xee, 0xab, 0x6b, 0x5d, 0x66, + 0xa7, 0xd2, 0xf7, 0x30, 0xb3, 0x6f, 0xc7, 0x73, 0xdf, 0x27, 0x2a, 0x1c, 0x47, 0x55, 0x98, 0x71, + 0x8b, 0xd2, 0xe3, 0xc3, 0xea, 0xb8, 0xfa, 0xc7, 0x63, 0x36, 0x25, 0x55, 0xec, 0x9b, 0x30, 0x99, + 0x1a, 0x30, 0xf4, 0x0a, 0x0c, 0xb5, 0x77, 0x9c, 0x88, 0xa4, 0x4c, 0x23, 0x87, 0xea, 0xb4, 0xf0, + 0xf8, 0xb0, 0x3a, 0xa1, 0x2a, 0xb0, 0x12, 0xcc, 0xb1, 0xed, 0xff, 0x65, 0x41, 0x69, 0x3d, 0x68, + 0x9d, 0xc5, 0x62, 0x7a, 0xc3, 0x58, 0x4c, 0x4f, 0xe6, 0x45, 0xbc, 0xcb, 0x5d, 0x47, 0x2b, 0xa9, + 0x75, 0x74, 0x39, 0x97, 0x42, 0xef, 0x25, 0xb4, 0x07, 0xa3, 0x2c, 0x8e, 0x9e, 0x30, 0xd5, 0x7c, + 0xc9, 0xe0, 0xef, 0xab, 0x29, 0xfe, 0x7e, 0x52, 0x43, 0xd5, 0xb8, 0xfc, 0x67, 0x61, 0x44, 0x98, + 0x0b, 0xa6, 0x0d, 0xdc, 0x05, 0x2e, 0x96, 0x70, 0xfb, 0x67, 0x8b, 0x60, 0xc4, 0xed, 0x43, 0xbf, + 0x61, 0xc1, 0x5c, 0xc8, 0x3d, 0x06, 0x5b, 0xb5, 0x4e, 0xe8, 0xfa, 0xdb, 0x8d, 0xe6, 0x0e, 0x69, + 0x75, 0x3c, 0xd7, 0xdf, 0x5e, 0xdd, 0xf6, 0x03, 0x55, 0xbc, 0xfc, 0x80, 0x34, 0x3b, 0x4c, 0xe7, + 0xdf, 0x27, 0x48, 0xa0, 0x32, 0xc7, 0xb9, 0x7e, 0x74, 0x58, 0x9d, 0xc3, 0x27, 0xa2, 0x8d, 0x4f, + 0xd8, 0x17, 0xf4, 0x4d, 0x0b, 0xe6, 0x79, 0x38, 0xbb, 0xc1, 0xfb, 0xdf, 0x43, 0x1a, 0xaa, 0x4b, + 0x52, 0x09, 0x91, 0x0d, 0x12, 0xee, 0x2d, 0xbe, 0x2a, 0x06, 0x74, 0xbe, 0x7e, 0xb2, 0xb6, 0xf0, + 0x49, 0x3b, 0x67, 0xff, 0xdb, 0x22, 0x8c, 0x0b, 0x67, 0x75, 0x11, 0x05, 0xe5, 0x15, 0x63, 0x49, + 0x3c, 0x95, 0x5a, 0x12, 0xd3, 0x06, 0xf2, 0xe9, 0x04, 0x40, 0x89, 0x60, 0xda, 0x73, 0xa2, 0xf8, + 0x26, 0x71, 0xc2, 0x78, 0x93, 0x38, 0xdc, 0x4c, 0xa5, 0x78, 0x62, 0x93, 0x1a, 0xa5, 0x7e, 0xb9, + 0x9d, 0x26, 0x86, 0xbb, 0xe9, 0xa3, 0x7d, 0x40, 0xcc, 0xd6, 0x26, 0x74, 0xfc, 0x88, 0x7f, 0x8b, + 0x2b, 0xde, 0x03, 0x4e, 0xd6, 0xea, 0xac, 0x68, 0x15, 0xdd, 0xee, 0xa2, 0x86, 0x33, 0x5a, 0xd0, + 0x6c, 0xa8, 0x86, 0x06, 0xb5, 0xa1, 0x1a, 0xee, 0xe3, 0x45, 0xe2, 0xc3, 0x54, 0x57, 0xbc, 0x81, + 0x2f, 0x40, 0x45, 0xd9, 0xba, 0x89, 0x43, 0xa7, 0x77, 0xd8, 0x8e, 0x34, 0x05, 0xae, 0x22, 0x49, + 0xec, 0x2c, 0x13, 0x72, 0xf6, 0x3f, 0x2b, 0x18, 0x0d, 0xf2, 0x49, 0x5c, 0x87, 0xb2, 0x13, 0x45, + 0xee, 0xb6, 0x4f, 0x5a, 0x62, 0xc7, 0x7e, 0x3c, 0x6f, 0xc7, 0x1a, 0xcd, 0x30, 0x7b, 0xc3, 0x05, + 0x51, 0x13, 0x2b, 0x1a, 0xe8, 0x26, 0x37, 0x06, 0xda, 0x97, 0xfc, 0xfc, 0x60, 0xd4, 0x40, 0x9a, + 0x0b, 0xed, 0x13, 0x2c, 0xea, 0xa3, 0x2f, 0x72, 0x6b, 0xad, 0x5b, 0x7e, 0x70, 0xdf, 0xbf, 0x11, + 0x04, 0xd2, 0xc3, 0x6c, 0x30, 0x82, 0xd3, 0xd2, 0x46, 0x4b, 0x55, 0xc7, 0x26, 0xb5, 0xc1, 0x62, + 0xf2, 0xfc, 0x00, 0x9c, 0xa3, 0xa4, 0x4d, 0x3f, 0x91, 0x08, 0x11, 0x98, 0x14, 0x91, 0x10, 0x64, + 0x99, 0x18, 0xbb, 0x4c, 0x56, 0xdd, 0xac, 0x9d, 0x28, 0xf4, 0x6e, 0x99, 0x24, 0x70, 0x9a, 0xa6, + 0xfd, 0xf3, 0x16, 0x30, 0x0b, 0xf7, 0x33, 0x60, 0x19, 0x3e, 0x6b, 0xb2, 0x0c, 0x33, 0x79, 0x83, + 0x9c, 0xc3, 0x2d, 0xbc, 0xcc, 0x57, 0x56, 0x3d, 0x0c, 0x1e, 0x1c, 0x88, 0x97, 0xf2, 0x01, 0xb8, + 0xd4, 0xff, 0x6b, 0xf1, 0x43, 0x4c, 0x39, 0x9d, 0xa3, 0x1f, 0x84, 0x72, 0xd3, 0x69, 0x3b, 0x4d, + 0x1e, 0x64, 0x36, 0x57, 0x63, 0x63, 0x54, 0x9a, 0x5b, 0x12, 0x35, 0xb8, 0x06, 0x42, 0x46, 0xd4, + 0x28, 0xcb, 0xe2, 0xbe, 0x5a, 0x07, 0xd5, 0xe4, 0xec, 0x2e, 0x8c, 0x1b, 0xc4, 0x1e, 0xa9, 0xb8, + 0xfa, 0x83, 0xfc, 0x8a, 0x55, 0x11, 0x60, 0xf6, 0x60, 0xda, 0xd7, 0xfe, 0xd3, 0x0b, 0x45, 0x8a, + 0x20, 0x1f, 0xef, 0x77, 0x89, 0xb2, 0xdb, 0x47, 0xb3, 0xe0, 0x4f, 0x91, 0xc1, 0xdd, 0x94, 0xed, + 0xbf, 0x6f, 0xc1, 0xe3, 0x3a, 0xa2, 0x16, 0x0f, 0xa0, 0x9f, 0x0e, 0xb8, 0x06, 0xe5, 0xa0, 0x4d, + 0x42, 0x27, 0x0e, 0x42, 0x71, 0x6b, 0x5c, 0x93, 0x83, 0x7e, 0x47, 0x94, 0x1f, 0x8b, 0x68, 0x7f, + 0x92, 0xba, 0x2c, 0xc7, 0xaa, 0x26, 0xb2, 0x61, 0x98, 0x0d, 0x46, 0x24, 0x62, 0x35, 0xb0, 0x33, + 0x80, 0x3d, 0x87, 0x46, 0x58, 0x40, 0xec, 0x3f, 0xb6, 0xf8, 0xc2, 0xd2, 0xbb, 0x8e, 0xde, 0x83, + 0xa9, 0x3d, 0x27, 0x6e, 0xee, 0x2c, 0x3f, 0x68, 0x87, 0x5c, 0xf5, 0x2d, 0xc7, 0xe9, 0xb9, 0x7e, + 0xe3, 0xa4, 0x7d, 0x64, 0x62, 0x80, 0xb6, 0x96, 0x22, 0x86, 0xbb, 0xc8, 0xa3, 0x4d, 0x18, 0x65, + 0x65, 0xcc, 0xd2, 0x39, 0xea, 0xc5, 0x1a, 0xe4, 0xb5, 0xa6, 0x5e, 0x94, 0xd7, 0x12, 0x3a, 0x58, + 0x27, 0x6a, 0x7f, 0xa5, 0xc8, 0x77, 0x3b, 0xe3, 0xb6, 0x9f, 0x85, 0x91, 0x76, 0xd0, 0x5a, 0x5a, + 0xad, 0x61, 0x31, 0x0b, 0xea, 0x1a, 0xa9, 0xf3, 0x62, 0x2c, 0xe1, 0xe8, 0x75, 0x00, 0xf2, 0x20, + 0x26, 0xa1, 0xef, 0x78, 0xca, 0x20, 0x44, 0x99, 0x40, 0xd6, 0x82, 0xf5, 0x20, 0xbe, 0x1b, 0x91, + 0xef, 0x5f, 0x56, 0x28, 0x58, 0x43, 0x47, 0xd7, 0x01, 0xda, 0x61, 0xb0, 0xef, 0xb6, 0x98, 0xeb, + 0x5c, 0xd1, 0x34, 0x97, 0xa8, 0x2b, 0x08, 0xd6, 0xb0, 0xd0, 0xeb, 0x30, 0xde, 0xf1, 0x23, 0xce, + 0xa1, 0x38, 0x9b, 0x22, 0x56, 0x5e, 0x39, 0xb1, 0x5c, 0xb8, 0xab, 0x03, 0xb1, 0x89, 0x8b, 0x16, + 0x60, 0x38, 0x76, 0x98, 0xbd, 0xc3, 0x50, 0xbe, 0xdd, 0xe2, 0x06, 0xc5, 0xd0, 0x43, 0x9c, 0xd2, + 0x0a, 0x58, 0x54, 0x44, 0x5f, 0x90, 0x7e, 0x08, 0xfc, 0xac, 0x17, 0x06, 0xc3, 0x83, 0xdd, 0x0b, + 0x9a, 0x17, 0x82, 0x30, 0x44, 0x36, 0x68, 0xd9, 0xdf, 0xac, 0x00, 0x24, 0xec, 0x38, 0x7a, 0xbf, + 0xeb, 0x3c, 0x7a, 0xbe, 0x37, 0x03, 0x7f, 0x7a, 0x87, 0x11, 0xfa, 0x61, 0x0b, 0x46, 0x1d, 0xcf, + 0x0b, 0x9a, 0x4e, 0xcc, 0x46, 0xb9, 0xd0, 0xfb, 0x3c, 0x14, 0xed, 0x2f, 0x24, 0x35, 0x78, 0x17, + 0x5e, 0x92, 0x0b, 0x4f, 0x83, 0xf4, 0xed, 0x85, 0xde, 0x30, 0xfa, 0x2e, 0x29, 0xa5, 0xf1, 0xe5, + 0x31, 0x9b, 0x96, 0xd2, 0x2a, 0xec, 0xe8, 0xd7, 0x04, 0x34, 0x74, 0xd7, 0x08, 0x2a, 0x57, 0xca, + 0x8f, 0xaf, 0x60, 0x70, 0xa5, 0xfd, 0xe2, 0xc9, 0xa1, 0xba, 0xee, 0x38, 0x35, 0x94, 0x1f, 0x84, + 0x44, 0x13, 0x7f, 0xfa, 0x38, 0x4d, 0xbd, 0x0b, 0x93, 0x2d, 0xf3, 0x6e, 0x17, 0xab, 0xe9, 0x99, + 0x3c, 0xba, 0x29, 0x56, 0x20, 0xb9, 0xcd, 0x53, 0x00, 0x9c, 0x26, 0x8c, 0xea, 0xdc, 0x85, 0x6d, + 0xd5, 0xdf, 0x0a, 0x84, 0xe1, 0xb9, 0x9d, 0x3b, 0x97, 0x07, 0x51, 0x4c, 0xf6, 0x28, 0x66, 0x72, + 0x69, 0xaf, 0x8b, 0xba, 0x58, 0x51, 0x41, 0x6f, 0xc2, 0x30, 0xf3, 0x81, 0x8d, 0x66, 0xca, 0xf9, + 0x8a, 0x42, 0x33, 0x7c, 0x43, 0xb2, 0xa9, 0xd8, 0xdf, 0x08, 0x0b, 0x0a, 0xe8, 0xa6, 0x8c, 0xf1, + 0x12, 0xad, 0xfa, 0x77, 0x23, 0xc2, 0x62, 0xbc, 0x54, 0x16, 0x3f, 0x9e, 0x84, 0x6f, 0xe1, 0xe5, + 0x99, 0xc1, 0xcc, 0x8d, 0x9a, 0x94, 0x39, 0x12, 0xff, 0x65, 0x8c, 0xf4, 0x19, 0xc8, 0xef, 0x9e, + 0x19, 0x47, 0x3d, 0x19, 0xce, 0x7b, 0x26, 0x09, 0x9c, 0xa6, 0x49, 0x19, 0x4d, 0xbe, 0x73, 0x85, + 0xe9, 0x7a, 0xbf, 0xfd, 0xcf, 0xe5, 0x6b, 0x76, 0xc9, 0xf0, 0x12, 0x2c, 0xea, 0x9f, 0xe9, 0xad, + 0x3f, 0xeb, 0xc3, 0x54, 0x7a, 0x8b, 0x3e, 0x52, 0x2e, 0xe3, 0x0f, 0x4b, 0x30, 0x61, 0x2e, 0x29, + 0x34, 0x0f, 0x15, 0x41, 0x44, 0x45, 0x06, 0x55, 0xbb, 0x64, 0x4d, 0x02, 0x70, 0x82, 0xc3, 0x22, + 0xa3, 0xb2, 0xea, 0x9a, 0xc9, 0x61, 0x12, 0x19, 0x55, 0x41, 0xb0, 0x86, 0x45, 0xe5, 0xa5, 0xcd, + 0x20, 0x88, 0xd5, 0xa5, 0xa2, 0xd6, 0xdd, 0x22, 0x2b, 0xc5, 0x02, 0x4a, 0x2f, 0x93, 0x5d, 0x12, + 0xfa, 0xc4, 0x33, 0xe3, 0x98, 0xa9, 0xcb, 0xe4, 0x96, 0x0e, 0xc4, 0x26, 0x2e, 0xbd, 0x25, 0x83, + 0x88, 0x2d, 0x64, 0x21, 0x95, 0x25, 0x26, 0x9c, 0x0d, 0xee, 0x4d, 0x2e, 0xe1, 0xe8, 0xf3, 0xf0, + 0xb8, 0x72, 0xfe, 0xc6, 0x5c, 0x09, 0x2d, 0x5b, 0x1c, 0x36, 0x94, 0x28, 0x8f, 0x2f, 0x65, 0xa3, + 0xe1, 0xbc, 0xfa, 0xe8, 0x0d, 0x98, 0x10, 0x9c, 0xbb, 0xa4, 0x38, 0x62, 0xda, 0x45, 0xdc, 0x32, + 0xa0, 0x38, 0x85, 0x2d, 0x23, 0xb1, 0x31, 0xe6, 0x59, 0x52, 0x28, 0x77, 0x47, 0x62, 0xd3, 0xe1, + 0xb8, 0xab, 0x06, 0x5a, 0x80, 0x49, 0xce, 0x5a, 0xb9, 0xfe, 0x36, 0x9f, 0x13, 0xe1, 0x59, 0xa2, + 0xb6, 0xd4, 0x1d, 0x13, 0x8c, 0xd3, 0xf8, 0xe8, 0x35, 0x18, 0x73, 0xc2, 0xe6, 0x8e, 0x1b, 0x93, + 0x66, 0xdc, 0x09, 0xb9, 0xcb, 0x89, 0x66, 0x58, 0xb2, 0xa0, 0xc1, 0xb0, 0x81, 0x69, 0xbf, 0x0f, + 0xe7, 0x32, 0x9c, 0xd2, 0xe8, 0xc2, 0x71, 0xda, 0xae, 0xfc, 0xa6, 0x94, 0x31, 0xe6, 0x42, 0x7d, + 0x55, 0x7e, 0x8d, 0x86, 0x45, 0x57, 0x27, 0x73, 0x5e, 0xd3, 0x52, 0x22, 0xa8, 0xd5, 0xb9, 0x22, + 0x01, 0x38, 0xc1, 0xb1, 0xff, 0x77, 0x01, 0x26, 0x33, 0x14, 0xeb, 0x2c, 0x2c, 0x7f, 0x4a, 0xf6, + 0x48, 0xa2, 0xf0, 0x9b, 0x81, 0xfd, 0x0a, 0x27, 0x08, 0xec, 0x57, 0xec, 0x17, 0xd8, 0xaf, 0xf4, + 0x41, 0x02, 0xfb, 0x99, 0x23, 0x36, 0x34, 0xd0, 0x88, 0x65, 0x04, 0x03, 0x1c, 0x3e, 0x61, 0x30, + 0x40, 0x63, 0xd0, 0x47, 0x06, 0x18, 0xf4, 0x9f, 0x28, 0xc0, 0x54, 0xda, 0x00, 0xee, 0x0c, 0xd4, + 0xb1, 0x6f, 0x1a, 0xea, 0xd8, 0xec, 0x24, 0x17, 0x69, 0xb3, 0xbc, 0x3c, 0xd5, 0x2c, 0x4e, 0xa9, + 0x66, 0x3f, 0x39, 0x10, 0xb5, 0xde, 0x6a, 0xda, 0x7f, 0x50, 0x80, 0x0b, 0xe9, 0x2a, 0x4b, 0x9e, + 0xe3, 0xee, 0x9d, 0xc1, 0xd8, 0xdc, 0x31, 0xc6, 0xe6, 0x85, 0x41, 0xbe, 0x86, 0x75, 0x2d, 0x77, + 0x80, 0xde, 0x4e, 0x0d, 0xd0, 0xfc, 0xe0, 0x24, 0x7b, 0x8f, 0xd2, 0xb7, 0x8a, 0x70, 0x39, 0xb3, + 0x5e, 0xa2, 0xcd, 0x5c, 0x31, 0xb4, 0x99, 0xd7, 0x53, 0xda, 0x4c, 0xbb, 0x77, 0xed, 0xd3, 0x51, + 0x6f, 0x0a, 0x6f, 0x41, 0x16, 0xfc, 0xed, 0x21, 0x55, 0x9b, 0x86, 0xb7, 0xa0, 0x22, 0x84, 0x4d, + 0xba, 0xdf, 0x4e, 0x2a, 0xcd, 0xff, 0x60, 0xc1, 0xc5, 0xcc, 0xb9, 0x39, 0x03, 0x15, 0xd6, 0xba, + 0xa9, 0xc2, 0x7a, 0x76, 0xe0, 0xd5, 0x9a, 0xa3, 0xd3, 0xfa, 0xa3, 0x62, 0xce, 0xb7, 0x30, 0x01, + 0xfd, 0x0e, 0x8c, 0x3a, 0xcd, 0x26, 0x89, 0xa2, 0xb5, 0xa0, 0xa5, 0x82, 0xa1, 0xbd, 0xc0, 0xe4, + 0xac, 0xa4, 0xf8, 0xf8, 0xb0, 0x3a, 0x9b, 0x26, 0x91, 0x80, 0xb1, 0x4e, 0xc1, 0x8c, 0xdf, 0x58, + 0x38, 0xd5, 0xf8, 0x8d, 0xd7, 0x01, 0xf6, 0x15, 0xb7, 0x9e, 0x16, 0xf2, 0x35, 0x3e, 0x5e, 0xc3, + 0x42, 0x5f, 0x84, 0x72, 0x24, 0xae, 0x71, 0xb1, 0x14, 0x5f, 0x1a, 0x70, 0xae, 0x9c, 0x4d, 0xe2, + 0x99, 0x6e, 0xe9, 0x4a, 0x1f, 0xa2, 0x48, 0xa2, 0xef, 0x85, 0xa9, 0x88, 0x47, 0x3d, 0x59, 0xf2, + 0x9c, 0x88, 0xf9, 0x38, 0x88, 0x55, 0xc8, 0x7c, 0xcd, 0x1b, 0x29, 0x18, 0xee, 0xc2, 0x46, 0x2b, + 0xf2, 0xa3, 0x58, 0x88, 0x16, 0xbe, 0x30, 0xaf, 0x26, 0x1f, 0x24, 0x92, 0x02, 0x9d, 0x4f, 0x0f, + 0x3f, 0x1b, 0x78, 0xad, 0xa6, 0xfd, 0x13, 0x25, 0x78, 0xa2, 0xc7, 0x21, 0x86, 0x16, 0xcc, 0x37, + 0xca, 0xe7, 0xd2, 0xd2, 0xef, 0x6c, 0x66, 0x65, 0x43, 0x1c, 0x4e, 0xad, 0x95, 0xc2, 0x07, 0x5e, + 0x2b, 0x3f, 0x6a, 0x69, 0x7a, 0x09, 0x6e, 0x49, 0xf7, 0xd9, 0x13, 0x1e, 0xce, 0xa7, 0xa8, 0xa8, + 0xd8, 0xca, 0x90, 0xf6, 0xaf, 0x0f, 0xdc, 0x9d, 0x81, 0xc5, 0xff, 0xb3, 0xd5, 0xce, 0x7e, 0xc5, + 0x82, 0xa7, 0x32, 0xfb, 0x6b, 0xd8, 0x54, 0xcc, 0x43, 0xa5, 0x49, 0x0b, 0x35, 0xbf, 0xa9, 0xc4, + 0xa1, 0x54, 0x02, 0x70, 0x82, 0x63, 0x98, 0x4e, 0x14, 0xfa, 0x9a, 0x4e, 0xfc, 0x1b, 0x0b, 0xba, + 0x16, 0xf0, 0x19, 0x9c, 0xa4, 0xab, 0xe6, 0x49, 0xfa, 0xf1, 0x41, 0xe6, 0x32, 0xe7, 0x10, 0xfd, + 0xbd, 0x49, 0x78, 0x2c, 0xc7, 0x51, 0x62, 0x1f, 0xa6, 0xb7, 0x9b, 0xc4, 0xf4, 0x48, 0x13, 0x1f, + 0x93, 0xe9, 0xbc, 0xd7, 0xd3, 0x7d, 0x8d, 0x65, 0x73, 0x99, 0xee, 0x42, 0xc1, 0xdd, 0x4d, 0xa0, + 0xaf, 0x58, 0x70, 0xde, 0xb9, 0x1f, 0x75, 0xe5, 0xec, 0x13, 0x6b, 0xe6, 0xe5, 0x4c, 0x2d, 0x45, + 0x9f, 0x1c, 0x7f, 0x3c, 0xbd, 0x4d, 0x16, 0x16, 0xce, 0x6c, 0x0b, 0x61, 0x11, 0xbf, 0x92, 0xf2, + 0xdb, 0x3d, 0x7c, 0x26, 0xb3, 0x3c, 0x5a, 0xf8, 0x99, 0x2a, 0x21, 0x58, 0xd1, 0x41, 0xf7, 0xa0, + 0xb2, 0x2d, 0xdd, 0xcc, 0xc4, 0x99, 0x9d, 0x79, 0x09, 0x66, 0xfa, 0xa2, 0xf1, 0x77, 0x43, 0x05, + 0xc2, 0x09, 0x29, 0xf4, 0x06, 0x14, 0xfd, 0xad, 0xa8, 0x57, 0x5e, 0x98, 0x94, 0xa9, 0x11, 0xf7, + 0x47, 0x5e, 0x5f, 0x69, 0x60, 0x5a, 0x11, 0xdd, 0x84, 0x62, 0xb8, 0xd9, 0x12, 0x8a, 0xb5, 0x4c, + 0xbe, 0x14, 0x2f, 0xd6, 0xb2, 0x17, 0x09, 0xa7, 0x84, 0x17, 0x6b, 0x98, 0x92, 0x40, 0x75, 0x18, + 0x62, 0x3e, 0x05, 0x42, 0x7f, 0x96, 0xc9, 0x90, 0xf6, 0xf0, 0xcd, 0xe1, 0x4e, 0xcb, 0x0c, 0x01, + 0x73, 0x42, 0xe8, 0x4d, 0x18, 0x6e, 0xb2, 0xd4, 0x29, 0x22, 0x64, 0x72, 0x76, 0x34, 0x9b, 0xae, + 0xe4, 0x2a, 0x42, 0x8f, 0xc4, 0xca, 0xb1, 0xa0, 0x80, 0x36, 0x60, 0xb8, 0x49, 0xda, 0x3b, 0x5b, + 0x11, 0x13, 0xbc, 0x4d, 0x06, 0x3f, 0xa1, 0xd5, 0x23, 0x53, 0x90, 0xa0, 0xca, 0x30, 0xb0, 0xa0, + 0x85, 0x3e, 0x0d, 0x85, 0xad, 0xa6, 0x70, 0x34, 0xc8, 0xd4, 0xa0, 0x99, 0x8e, 0xe4, 0x8b, 0xc3, + 0x47, 0x87, 0xd5, 0xc2, 0xca, 0x12, 0x2e, 0x6c, 0x35, 0xd1, 0x3a, 0x8c, 0x6c, 0x71, 0xd7, 0x53, + 0xa1, 0x24, 0x7b, 0x26, 0xdb, 0x2b, 0xb6, 0xcb, 0x3b, 0x95, 0x1b, 0xc8, 0x0b, 0x00, 0x96, 0x44, + 0x58, 0xe8, 0x47, 0xe5, 0x42, 0x2b, 0x62, 0x20, 0xcf, 0x9d, 0xcc, 0xed, 0x99, 0x3b, 0xb5, 0x27, + 0x8e, 0xb8, 0x58, 0xa3, 0x88, 0xbe, 0x0c, 0x15, 0x47, 0xe6, 0x88, 0x13, 0x31, 0x22, 0x5e, 0xca, + 0xdc, 0x8e, 0xbd, 0xd3, 0xe7, 0xf1, 0xb5, 0xac, 0x90, 0x70, 0x42, 0x14, 0xed, 0xc2, 0xf8, 0x7e, + 0xd4, 0xde, 0x21, 0x72, 0xfb, 0xb2, 0x90, 0x11, 0x39, 0xd7, 0xd5, 0x3d, 0x81, 0xe8, 0x86, 0x71, + 0xc7, 0xf1, 0xba, 0x4e, 0x1c, 0xf6, 0xc4, 0x7c, 0x4f, 0x27, 0x86, 0x4d, 0xda, 0x74, 0xf8, 0xdf, + 0xeb, 0x04, 0x9b, 0x07, 0x31, 0x11, 0x41, 0x93, 0x33, 0x87, 0xff, 0x2d, 0x8e, 0xd2, 0x3d, 0xfc, + 0x02, 0x80, 0x25, 0x11, 0xba, 0xc1, 0x1d, 0x99, 0x7f, 0x91, 0x05, 0x4b, 0xce, 0xd9, 0xe0, 0x99, + 0x49, 0x1a, 0xb5, 0x41, 0x61, 0x27, 0x63, 0x42, 0x8a, 0x9d, 0x88, 0xed, 0x9d, 0x20, 0x0e, 0xfc, + 0xd4, 0x69, 0x3c, 0x9d, 0x7f, 0x22, 0xd6, 0x33, 0xf0, 0xbb, 0x4f, 0xc4, 0x2c, 0x2c, 0x9c, 0xd9, + 0x16, 0x6a, 0xc1, 0x44, 0x3b, 0x08, 0xe3, 0xfb, 0x41, 0x28, 0xd7, 0x17, 0xea, 0x21, 0xe4, 0x1b, + 0x98, 0xa2, 0x45, 0x16, 0xc4, 0xdb, 0x84, 0xe0, 0x14, 0x4d, 0xf4, 0x39, 0x18, 0x89, 0x9a, 0x8e, + 0x47, 0x56, 0xef, 0xcc, 0x9c, 0xcb, 0xbf, 0x6a, 0x1a, 0x1c, 0x25, 0x67, 0x75, 0xb1, 0xc9, 0x11, + 0x28, 0x58, 0x92, 0x43, 0x2b, 0x30, 0xc4, 0x22, 0xf1, 0xb3, 0x78, 0xcf, 0x39, 0xb1, 0x88, 0xba, + 0x4c, 0x39, 0xf9, 0x89, 0xc4, 0x8a, 0x31, 0xaf, 0x4e, 0xf7, 0x80, 0xe0, 0x75, 0x83, 0x68, 0xe6, + 0x42, 0xfe, 0x1e, 0x10, 0x2c, 0xf2, 0x9d, 0x46, 0xaf, 0x3d, 0xa0, 0x90, 0x70, 0x42, 0x94, 0x9e, + 0xc7, 0xf4, 0x0c, 0x7d, 0xac, 0x87, 0x75, 0x49, 0xee, 0x09, 0xca, 0xce, 0x63, 0x7a, 0x7e, 0x52, + 0x12, 0xf6, 0xef, 0x8f, 0x74, 0xf3, 0x27, 0x4c, 0x3a, 0xfa, 0x2b, 0x56, 0xd7, 0xc3, 0xd9, 0xa7, + 0x06, 0x55, 0xd6, 0x9c, 0x22, 0x67, 0xfa, 0x15, 0x0b, 0x1e, 0x6b, 0x67, 0x7e, 0x88, 0xb8, 0xec, + 0x07, 0xd3, 0xf9, 0xf0, 0x4f, 0x57, 0x31, 0xd9, 0xb3, 0xe1, 0x38, 0xa7, 0xa5, 0x34, 0xf7, 0x5f, + 0xfc, 0xc0, 0xdc, 0xff, 0x1a, 0x94, 0x19, 0x43, 0x99, 0x04, 0xbe, 0x1a, 0x28, 0x90, 0x0e, 0x63, + 0x1b, 0x96, 0x44, 0x45, 0xac, 0x48, 0xa0, 0x1f, 0xb3, 0xe0, 0x52, 0xba, 0xeb, 0x98, 0x30, 0xb0, + 0x88, 0x60, 0xce, 0x05, 0xb3, 0x15, 0xf1, 0xfd, 0x97, 0xea, 0xbd, 0x90, 0x8f, 0xfb, 0x21, 0xe0, + 0xde, 0x8d, 0xa1, 0x5a, 0x86, 0x64, 0x38, 0x6c, 0x6a, 0xc3, 0x07, 0x90, 0x0e, 0x5f, 0x86, 0xb1, + 0xbd, 0xa0, 0xe3, 0xc7, 0xc2, 0x18, 0x45, 0xb8, 0x06, 0xb2, 0xd7, 0xdf, 0x35, 0xad, 0x1c, 0x1b, + 0x58, 0x29, 0x99, 0xb2, 0xfc, 0xb0, 0x32, 0x25, 0x7a, 0x27, 0x95, 0x2f, 0xb9, 0x92, 0xcf, 0x5b, + 0x08, 0xf1, 0xfb, 0x04, 0x59, 0x93, 0xcf, 0x56, 0x0e, 0xfa, 0x9a, 0x95, 0xc1, 0xc0, 0x73, 0xc9, + 0xf8, 0x33, 0xa6, 0x64, 0x7c, 0x35, 0x2d, 0x19, 0x77, 0x69, 0x42, 0x0d, 0xa1, 0x78, 0xf0, 0x70, + 0xcb, 0x83, 0xc6, 0x2f, 0xb3, 0x3d, 0xb8, 0xd2, 0xef, 0x5a, 0x62, 0x56, 0x49, 0x2d, 0xf5, 0xee, + 0x95, 0x58, 0x25, 0xb5, 0x56, 0x6b, 0x98, 0x41, 0x06, 0x0d, 0x70, 0x61, 0xff, 0x0f, 0x0b, 0x8a, + 0xf5, 0xa0, 0x75, 0x06, 0x9a, 0xdd, 0xcf, 0x1a, 0x9a, 0xdd, 0x27, 0x72, 0xf2, 0x58, 0xe7, 0xea, + 0x71, 0x97, 0x53, 0x7a, 0xdc, 0x4b, 0x79, 0x04, 0x7a, 0x6b, 0x6d, 0x7f, 0xae, 0x08, 0x7a, 0xd6, + 0x6d, 0xf4, 0xef, 0x1e, 0xc6, 0x24, 0xb8, 0xd8, 0x2b, 0x11, 0xb7, 0xa0, 0xcc, 0x8c, 0x99, 0xa4, + 0xb7, 0xdb, 0x5f, 0x30, 0xcb, 0xe0, 0xb7, 0x89, 0xbb, 0xbd, 0x13, 0x93, 0x56, 0xfa, 0x73, 0xce, + 0xce, 0x32, 0xf8, 0xbf, 0x59, 0x30, 0x99, 0x6a, 0x1d, 0x79, 0x30, 0xee, 0xe9, 0x6a, 0x39, 0xb1, + 0x4e, 0x1f, 0x4a, 0xa3, 0x27, 0x2c, 0x2b, 0xb5, 0x22, 0x6c, 0x12, 0x47, 0x73, 0x00, 0xea, 0xd9, + 0x4c, 0x6a, 0xbb, 0x18, 0xd7, 0xaf, 0xde, 0xd5, 0x22, 0xac, 0x61, 0xa0, 0x57, 0x60, 0x34, 0x0e, + 0xda, 0x81, 0x17, 0x6c, 0x1f, 0xdc, 0x22, 0x32, 0xa4, 0x8a, 0xb2, 0x97, 0xda, 0x48, 0x40, 0x58, + 0xc7, 0xb3, 0x7f, 0xa1, 0x08, 0xe9, 0x4c, 0xed, 0xdf, 0x59, 0x93, 0x1f, 0xcd, 0x35, 0xf9, 0x2d, + 0x0b, 0xa6, 0x68, 0xeb, 0xcc, 0x76, 0x43, 0x5e, 0xb6, 0x2a, 0xed, 0x8b, 0xd5, 0x23, 0xed, 0xcb, + 0x55, 0x7a, 0x76, 0xb5, 0x82, 0x4e, 0x2c, 0xb4, 0x65, 0xda, 0xe1, 0x44, 0x4b, 0xb1, 0x80, 0x0a, + 0x3c, 0x12, 0x86, 0xc2, 0x21, 0x49, 0xc7, 0x23, 0x61, 0x88, 0x05, 0x54, 0x66, 0x85, 0x29, 0xe5, + 0x64, 0x85, 0x61, 0x01, 0xe2, 0xc4, 0x2b, 0xbf, 0x60, 0x7b, 0xb4, 0x00, 0x71, 0xf2, 0xf9, 0x3f, + 0xc1, 0xb1, 0x7f, 0xb9, 0x08, 0x63, 0xf5, 0xa0, 0x95, 0x3c, 0x5c, 0xbd, 0x6c, 0x3c, 0x5c, 0x5d, + 0x49, 0x3d, 0x5c, 0x4d, 0xe9, 0xb8, 0xdf, 0x79, 0xa6, 0xfa, 0xb0, 0x9e, 0xa9, 0xfe, 0xb5, 0xc5, + 0x66, 0xad, 0xb6, 0xde, 0x10, 0x59, 0x69, 0x5f, 0x84, 0x51, 0x76, 0x20, 0x31, 0x0f, 0x38, 0xf9, + 0x9a, 0xc3, 0x02, 0xbe, 0xaf, 0x27, 0xc5, 0x58, 0xc7, 0x41, 0xd7, 0xa0, 0x1c, 0x11, 0x27, 0x6c, + 0xee, 0xa8, 0x33, 0x4e, 0xbc, 0x75, 0xf0, 0x32, 0xac, 0xa0, 0xe8, 0xad, 0x24, 0x36, 0x59, 0x31, + 0x3f, 0xbf, 0xaa, 0xde, 0x1f, 0xbe, 0x45, 0xf2, 0x03, 0x92, 0xd9, 0x6f, 0x03, 0xea, 0xc6, 0x1f, + 0x20, 0x0a, 0x51, 0xd5, 0x8c, 0x42, 0x54, 0xe9, 0x8a, 0x40, 0xf4, 0x67, 0x16, 0x4c, 0xd4, 0x83, + 0x16, 0xdd, 0xba, 0xdf, 0x4e, 0xfb, 0x54, 0x0f, 0xcc, 0x38, 0xdc, 0x23, 0x30, 0xe3, 0x3f, 0xb4, + 0x60, 0xa4, 0x1e, 0xb4, 0xce, 0x40, 0xc7, 0xfe, 0x19, 0x53, 0xc7, 0xfe, 0x78, 0xce, 0x92, 0xc8, + 0x51, 0xab, 0xff, 0x6a, 0x11, 0xc6, 0x69, 0x3f, 0x83, 0x6d, 0x39, 0x4b, 0xc6, 0x88, 0x58, 0x03, + 0x8c, 0x08, 0x65, 0x73, 0x03, 0xcf, 0x0b, 0xee, 0xa7, 0x67, 0x6c, 0x85, 0x95, 0x62, 0x01, 0x45, + 0xcf, 0x43, 0xb9, 0x1d, 0x92, 0x7d, 0x37, 0x10, 0xfc, 0xa3, 0xf6, 0x62, 0x51, 0x17, 0xe5, 0x58, + 0x61, 0x50, 0xb9, 0x2b, 0x72, 0xfd, 0x26, 0x91, 0xc9, 0x9d, 0x4b, 0x2c, 0xff, 0x13, 0x8f, 0xb8, + 0xac, 0x95, 0x63, 0x03, 0x0b, 0xbd, 0x0d, 0x15, 0xf6, 0x9f, 0x9d, 0x28, 0x27, 0xcf, 0x57, 0x23, + 0xd2, 0x1c, 0x08, 0x02, 0x38, 0xa1, 0x85, 0xae, 0x03, 0xc4, 0x32, 0x2a, 0x6f, 0x24, 0x82, 0xc9, + 0x28, 0x5e, 0x5b, 0xc5, 0xeb, 0x8d, 0xb0, 0x86, 0x85, 0x9e, 0x83, 0x4a, 0xec, 0xb8, 0xde, 0x6d, + 0xd7, 0x27, 0x11, 0x53, 0x34, 0x17, 0x65, 0x16, 0x03, 0x51, 0x88, 0x13, 0x38, 0xe5, 0x75, 0x98, + 0xa7, 0x35, 0xcf, 0x76, 0x55, 0x66, 0xd8, 0x8c, 0xd7, 0xb9, 0xad, 0x4a, 0xb1, 0x86, 0x61, 0xbf, + 0x06, 0x17, 0xea, 0x41, 0xab, 0x1e, 0x84, 0xf1, 0x4a, 0x10, 0xde, 0x77, 0xc2, 0x96, 0x9c, 0xbf, + 0xaa, 0x0c, 0xa8, 0x4f, 0xcf, 0x9e, 0x21, 0xbe, 0x33, 0x8d, 0x50, 0xf9, 0x2f, 0x31, 0x6e, 0xe7, + 0x84, 0x1e, 0x16, 0xff, 0xa7, 0xc0, 0x0e, 0x8a, 0x54, 0x0a, 0x36, 0xf4, 0x25, 0x98, 0x88, 0xc8, + 0x6d, 0xd7, 0xef, 0x3c, 0x90, 0xf2, 0x71, 0x0f, 0xf7, 0x95, 0xc6, 0xb2, 0x8e, 0xc9, 0xb5, 0x6c, + 0x66, 0x19, 0x4e, 0x51, 0xa3, 0x43, 0x18, 0x76, 0xfc, 0x85, 0xe8, 0x6e, 0x44, 0x42, 0x91, 0x02, + 0x8c, 0x0d, 0x21, 0x96, 0x85, 0x38, 0x81, 0xd3, 0x25, 0xc3, 0xfe, 0xac, 0x07, 0x3e, 0x0e, 0x82, + 0x58, 0x2e, 0x32, 0x96, 0x44, 0x46, 0x2b, 0xc7, 0x06, 0x16, 0x5a, 0x01, 0x14, 0x75, 0xda, 0x6d, + 0x8f, 0x3d, 0x80, 0x3b, 0xde, 0x8d, 0x30, 0xe8, 0xb4, 0xf9, 0xe3, 0x63, 0x91, 0xe5, 0xeb, 0x47, + 0x8d, 0x2e, 0x28, 0xce, 0xa8, 0x41, 0x0f, 0x86, 0xad, 0x88, 0xfd, 0x66, 0x0b, 0xaf, 0x28, 0x34, + 0xdf, 0x0d, 0x56, 0x84, 0x25, 0x8c, 0xce, 0x33, 0x6b, 0x9e, 0x63, 0x0e, 0x27, 0xf3, 0x8c, 0x55, + 0x29, 0xd6, 0x30, 0xec, 0x1f, 0x64, 0x17, 0x0c, 0xcb, 0xf4, 0x14, 0x77, 0x42, 0x82, 0xf6, 0x60, + 0xbc, 0xcd, 0xae, 0x7e, 0x11, 0x87, 0x58, 0x0c, 0xf8, 0xcb, 0x03, 0x4a, 0x8a, 0xf7, 0xe9, 0xe6, + 0x55, 0x9a, 0x1c, 0xc6, 0x82, 0xd7, 0x75, 0x72, 0xd8, 0xa4, 0x6e, 0xff, 0xdc, 0x14, 0x3b, 0xc7, + 0x1a, 0x5c, 0xfc, 0x1b, 0x11, 0xb6, 0xb3, 0x82, 0xd7, 0x9d, 0xcd, 0xd7, 0x43, 0x24, 0x57, 0x8e, + 0xb0, 0xbf, 0xc5, 0xb2, 0x2e, 0x7a, 0x8b, 0xbd, 0xf2, 0xf2, 0xc3, 0xa3, 0x5f, 0xc2, 0x5d, 0x8e, + 0x65, 0x3c, 0xe8, 0x8a, 0x8a, 0x58, 0x23, 0x82, 0x6e, 0xc3, 0xb8, 0x48, 0x0c, 0x24, 0x14, 0x4d, + 0x45, 0x43, 0x91, 0x30, 0x8e, 0x75, 0xe0, 0x71, 0xba, 0x00, 0x9b, 0x95, 0xd1, 0x36, 0x5c, 0xd2, + 0xb2, 0xe4, 0xdd, 0x08, 0x1d, 0xf6, 0xf2, 0xe7, 0xb2, 0xd5, 0xaf, 0x9d, 0x45, 0x4f, 0x1d, 0x1d, + 0x56, 0x2f, 0x6d, 0xf4, 0x42, 0xc4, 0xbd, 0xe9, 0xa0, 0x3b, 0x70, 0x81, 0xbb, 0xa8, 0xd5, 0x88, + 0xd3, 0xf2, 0x5c, 0x5f, 0x1d, 0x76, 0x7c, 0x01, 0x5d, 0x3c, 0x3a, 0xac, 0x5e, 0x58, 0xc8, 0x42, + 0xc0, 0xd9, 0xf5, 0xd0, 0x67, 0xa0, 0xd2, 0xf2, 0x23, 0x31, 0x06, 0xc3, 0x46, 0x02, 0xc8, 0x4a, + 0x6d, 0xbd, 0xa1, 0xbe, 0x3f, 0xf9, 0x83, 0x93, 0x0a, 0x68, 0x9b, 0x2b, 0x9b, 0x94, 0x6c, 0x37, + 0x92, 0x9f, 0xec, 0x5b, 0x2c, 0x09, 0xc3, 0x49, 0x85, 0x6b, 0x59, 0x95, 0x91, 0xa7, 0xe1, 0xbf, + 0x62, 0x10, 0x46, 0x6f, 0x02, 0xa2, 0xcc, 0x8f, 0xdb, 0x24, 0x0b, 0x4d, 0x16, 0x0e, 0x9a, 0xe9, + 0xe6, 0xca, 0x86, 0x53, 0x00, 0x6a, 0x74, 0x61, 0xe0, 0x8c, 0x5a, 0xe8, 0x26, 0x3d, 0x81, 0xf4, + 0x52, 0x61, 0xac, 0x2a, 0x19, 0xe6, 0x99, 0x1a, 0x69, 0x87, 0xa4, 0xe9, 0xc4, 0xa4, 0x65, 0x52, + 0xc4, 0xa9, 0x7a, 0xf4, 0x7e, 0x52, 0x99, 0x61, 0xc0, 0x8c, 0xf9, 0xd0, 0x9d, 0x1d, 0x86, 0xca, + 0x9a, 0x3b, 0x41, 0x14, 0xaf, 0x93, 0xf8, 0x7e, 0x10, 0xee, 0x8a, 0x10, 0x5b, 0x49, 0xb4, 0xc7, + 0x04, 0x84, 0x75, 0x3c, 0xca, 0x5b, 0xb2, 0x67, 0xd6, 0xd5, 0x1a, 0x7b, 0xf5, 0x2a, 0x27, 0xfb, + 0xe4, 0x26, 0x2f, 0xc6, 0x12, 0x2e, 0x51, 0x57, 0xeb, 0x4b, 0xec, 0x05, 0x2b, 0x85, 0xba, 0x5a, + 0x5f, 0xc2, 0x12, 0x8e, 0x48, 0x77, 0x72, 0xcd, 0x89, 0x7c, 0x4d, 0x61, 0xf7, 0x39, 0x3e, 0x60, + 0x7e, 0x4d, 0x1f, 0xa6, 0x54, 0x5a, 0x4f, 0x1e, 0x7b, 0x2c, 0x9a, 0x99, 0x64, 0x8b, 0x64, 0xf0, + 0xc0, 0x65, 0x4a, 0xf7, 0xba, 0x9a, 0xa2, 0x84, 0xbb, 0x68, 0x1b, 0x51, 0x38, 0xa6, 0xfa, 0x66, + 0xf6, 0x99, 0x87, 0x4a, 0xd4, 0xd9, 0x6c, 0x05, 0x7b, 0x8e, 0xeb, 0xb3, 0x07, 0x27, 0x8d, 0x71, + 0x69, 0x48, 0x00, 0x4e, 0x70, 0xd0, 0x0a, 0x94, 0x1d, 0xa9, 0x58, 0x45, 0xf9, 0x6e, 0xf9, 0x4a, + 0x9d, 0xca, 0x3d, 0x55, 0xa5, 0x2a, 0x55, 0xd5, 0x45, 0xaf, 0xc3, 0xb8, 0x70, 0x4c, 0xe2, 0xc1, + 0x0a, 0xd8, 0x83, 0x90, 0x66, 0x79, 0xde, 0xd0, 0x81, 0xd8, 0xc4, 0x45, 0x5f, 0x84, 0x09, 0x4a, + 0x25, 0x39, 0xd8, 0x66, 0xce, 0x0f, 0x72, 0x22, 0x6a, 0x19, 0x1b, 0xf4, 0xca, 0x38, 0x45, 0x0c, + 0xb5, 0xe0, 0x49, 0xa7, 0x13, 0x07, 0x4c, 0x39, 0x6d, 0xae, 0xff, 0x8d, 0x60, 0x97, 0xf8, 0xec, + 0x5d, 0xa8, 0xbc, 0x78, 0xe5, 0xe8, 0xb0, 0xfa, 0xe4, 0x42, 0x0f, 0x3c, 0xdc, 0x93, 0x0a, 0xba, + 0x0b, 0xa3, 0x71, 0xe0, 0x31, 0x1b, 0x70, 0xca, 0x03, 0x3c, 0x96, 0x1f, 0xc5, 0x66, 0x43, 0xa1, + 0xe9, 0x8a, 0x19, 0x55, 0x15, 0xeb, 0x74, 0xd0, 0x06, 0xdf, 0x63, 0x2c, 0xbe, 0x27, 0x89, 0x66, + 0x1e, 0xcf, 0x1f, 0x18, 0x15, 0x06, 0xd4, 0xdc, 0x82, 0xa2, 0x26, 0xd6, 0xc9, 0xa0, 0x1b, 0x30, + 0xdd, 0x0e, 0xdd, 0x80, 0x2d, 0x6c, 0xf5, 0x30, 0x30, 0x63, 0x06, 0xe9, 0xaf, 0xa7, 0x11, 0x70, + 0x77, 0x1d, 0x2a, 0xb8, 0xc9, 0xc2, 0x99, 0x8b, 0x3c, 0xe3, 0x13, 0x67, 0x66, 0x79, 0x19, 0x56, + 0x50, 0xb4, 0xc6, 0xce, 0x65, 0x2e, 0x62, 0xcd, 0xcc, 0xe6, 0x87, 0x33, 0xd0, 0x45, 0x31, 0xce, + 0xe8, 0xa8, 0xbf, 0x38, 0xa1, 0x40, 0xef, 0x8d, 0x68, 0xc7, 0x09, 0x49, 0x3d, 0x0c, 0x9a, 0x84, + 0x77, 0x86, 0x9b, 0x9f, 0x3f, 0xc1, 0xc3, 0x10, 0xd2, 0x7b, 0xa3, 0x91, 0x85, 0x80, 0xb3, 0xeb, + 0xcd, 0x7e, 0x0f, 0x4c, 0x77, 0x9d, 0xe4, 0x27, 0x8a, 0x4d, 0xfd, 0xa7, 0x43, 0x50, 0x51, 0x8a, + 0x5f, 0x34, 0x6f, 0xea, 0xf3, 0x2f, 0xa6, 0xf5, 0xf9, 0x65, 0xca, 0x7f, 0xea, 0x2a, 0xfc, 0x0d, + 0xc3, 0xf0, 0xab, 0x90, 0x9f, 0x09, 0x4a, 0xd7, 0x7a, 0xf4, 0xf5, 0xf2, 0xd2, 0xe4, 0xf8, 0xe2, + 0xc0, 0x0f, 0x03, 0xa5, 0x9e, 0xaa, 0x81, 0x01, 0x13, 0xb1, 0x52, 0x51, 0xb7, 0x1d, 0xb4, 0x56, + 0xeb, 0xe9, 0xcc, 0x84, 0x75, 0x5a, 0x88, 0x39, 0x8c, 0x09, 0x2b, 0x94, 0xed, 0x60, 0xc2, 0xca, + 0xc8, 0x43, 0x0a, 0x2b, 0x92, 0x00, 0x4e, 0x68, 0x21, 0x0f, 0xa6, 0x9b, 0x66, 0x52, 0x49, 0xe5, + 0xd9, 0xf5, 0x74, 0xdf, 0xf4, 0x8e, 0x1d, 0x2d, 0x83, 0xd7, 0x52, 0x9a, 0x0a, 0xee, 0x26, 0x8c, + 0x5e, 0x87, 0xf2, 0x7b, 0x41, 0xc4, 0xb6, 0x85, 0xb8, 0x7b, 0xa5, 0x07, 0x4c, 0xf9, 0xad, 0x3b, + 0x0d, 0x56, 0x7e, 0x7c, 0x58, 0x1d, 0xad, 0x07, 0x2d, 0xf9, 0x17, 0xab, 0x0a, 0xe8, 0x01, 0x5c, + 0x30, 0x4e, 0x2c, 0xd5, 0x5d, 0x18, 0xbc, 0xbb, 0x97, 0x44, 0x73, 0x17, 0x56, 0xb3, 0x28, 0xe1, + 0xec, 0x06, 0xe8, 0x31, 0xe0, 0x07, 0x22, 0x21, 0xab, 0xbc, 0xdf, 0xd9, 0x35, 0x5e, 0xd1, 0xfd, + 0x9f, 0x53, 0x08, 0xb8, 0xbb, 0x8e, 0xfd, 0x75, 0xae, 0x27, 0x17, 0xda, 0x34, 0x12, 0x75, 0xbc, + 0xb3, 0xc8, 0xf7, 0xb3, 0x6c, 0x28, 0xfa, 0x1e, 0xfa, 0x2d, 0xe6, 0xb7, 0x2c, 0xf6, 0x16, 0xb3, + 0x41, 0xf6, 0xda, 0x9e, 0x13, 0x9f, 0x85, 0xe7, 0xc5, 0x5b, 0x50, 0x8e, 0x45, 0x6b, 0xbd, 0x52, + 0x14, 0x69, 0x9d, 0x62, 0xef, 0x51, 0xea, 0xe6, 0x97, 0xa5, 0x58, 0x91, 0xb1, 0xff, 0x05, 0x9f, + 0x01, 0x09, 0x39, 0x03, 0xa5, 0x4b, 0xcd, 0x54, 0xba, 0x54, 0xfb, 0x7c, 0x41, 0x8e, 0xf2, 0xe5, + 0x9f, 0x9b, 0xfd, 0x66, 0x42, 0xd6, 0x47, 0xfd, 0x11, 0xd0, 0xfe, 0x29, 0x0b, 0xce, 0x67, 0x59, + 0xcd, 0x50, 0x6e, 0x8d, 0x8b, 0x78, 0xea, 0x51, 0x54, 0x8d, 0xe0, 0x3d, 0x51, 0x8e, 0x15, 0xc6, + 0xc0, 0xd1, 0xff, 0x4f, 0x16, 0x22, 0xec, 0x0e, 0x8c, 0xd7, 0x43, 0xa2, 0xdd, 0x01, 0x6f, 0x70, + 0x57, 0x2a, 0xde, 0x9f, 0xe7, 0x4f, 0xec, 0x46, 0x65, 0xff, 0x62, 0x01, 0xce, 0xf3, 0x57, 0x8d, + 0x85, 0xfd, 0xc0, 0x6d, 0xd5, 0x83, 0x96, 0xc8, 0xdc, 0xf0, 0x05, 0x18, 0x6b, 0x6b, 0x72, 0x79, + 0xaf, 0x20, 0x45, 0xba, 0xfc, 0x9e, 0xc8, 0x47, 0x7a, 0x29, 0x36, 0x68, 0xa1, 0x16, 0x8c, 0x91, + 0x7d, 0xb7, 0xa9, 0x54, 0xe3, 0x85, 0x13, 0xdf, 0x0d, 0xaa, 0x95, 0x65, 0x8d, 0x0e, 0x36, 0xa8, + 0x3e, 0x82, 0x64, 0x5e, 0xf6, 0x4f, 0x5b, 0xf0, 0x78, 0x4e, 0x48, 0x23, 0xda, 0xdc, 0x7d, 0xf6, + 0x7e, 0x24, 0xf2, 0x02, 0xa9, 0xe6, 0xf8, 0xab, 0x12, 0x16, 0x50, 0xf4, 0x39, 0x00, 0xfe, 0x2a, + 0x44, 0xc5, 0x85, 0x7e, 0xb1, 0x5f, 0x8c, 0xb0, 0x15, 0x5a, 0xb8, 0x01, 0x59, 0x1f, 0x6b, 0xb4, + 0xec, 0x9f, 0x2f, 0xc2, 0x10, 0x7b, 0x85, 0x40, 0x2b, 0x30, 0xb2, 0xc3, 0x03, 0xf8, 0x0e, 0x12, + 0x2b, 0x38, 0x91, 0xbb, 0x78, 0x01, 0x96, 0x95, 0xd1, 0x1a, 0x9c, 0xe3, 0x01, 0x90, 0xbd, 0x1a, + 0xf1, 0x9c, 0x03, 0x29, 0xbe, 0xf3, 0x5c, 0x3a, 0x2a, 0x74, 0xc2, 0x6a, 0x37, 0x0a, 0xce, 0xaa, + 0x87, 0xde, 0x80, 0x89, 0xd8, 0xdd, 0x23, 0x41, 0x27, 0x96, 0x94, 0x78, 0xe8, 0x63, 0xc5, 0xec, + 0x6f, 0x18, 0x50, 0x9c, 0xc2, 0xa6, 0x82, 0x48, 0xbb, 0x4b, 0x51, 0xa1, 0x65, 0xa7, 0x37, 0x95, + 0x13, 0x26, 0x2e, 0x33, 0x97, 0xe9, 0x30, 0xe3, 0xa0, 0x8d, 0x9d, 0x90, 0x44, 0x3b, 0x81, 0xd7, + 0x12, 0xa9, 0x98, 0x13, 0x73, 0x99, 0x14, 0x1c, 0x77, 0xd5, 0xa0, 0x54, 0xb6, 0x1c, 0xd7, 0xeb, + 0x84, 0x24, 0xa1, 0x32, 0x6c, 0x52, 0x59, 0x49, 0xc1, 0x71, 0x57, 0x0d, 0xba, 0x8e, 0x2e, 0x88, + 0xdc, 0xc8, 0xd2, 0xa1, 0x5b, 0xd9, 0x40, 0x8d, 0x48, 0xd7, 0x96, 0x1e, 0x11, 0x4d, 0x84, 0x95, + 0x88, 0xca, 0xae, 0xac, 0x65, 0xde, 0x14, 0x4e, 0x2d, 0x92, 0xca, 0xc3, 0x64, 0xe8, 0xfd, 0x7d, + 0x0b, 0xce, 0x65, 0xd8, 0x5a, 0xf2, 0xa3, 0x6a, 0xdb, 0x8d, 0x62, 0x95, 0x2f, 0x44, 0x3b, 0xaa, + 0x78, 0x39, 0x56, 0x18, 0x74, 0x3f, 0xf0, 0xc3, 0x30, 0x7d, 0x00, 0x0a, 0x5b, 0x26, 0x01, 0x3d, + 0xd9, 0x01, 0x88, 0xae, 0x40, 0xa9, 0x13, 0x11, 0x19, 0x8b, 0x48, 0x9d, 0xdf, 0x4c, 0x55, 0xca, + 0x20, 0x94, 0x35, 0xdd, 0x56, 0x5a, 0x4a, 0x8d, 0x35, 0xe5, 0xaa, 0x47, 0x0e, 0xb3, 0xbf, 0x5a, + 0x84, 0x8b, 0xb9, 0xb6, 0xd4, 0xb4, 0x4b, 0x7b, 0x81, 0xef, 0xc6, 0x81, 0x7a, 0xe1, 0xe2, 0xd1, + 0x30, 0x48, 0x7b, 0x67, 0x4d, 0x94, 0x63, 0x85, 0x81, 0xae, 0xca, 0x2c, 0xdd, 0xe9, 0x8c, 0x28, + 0x8b, 0x35, 0x23, 0x51, 0xf7, 0xa0, 0xd9, 0xa6, 0x9e, 0x86, 0x52, 0x3b, 0x08, 0xbc, 0xf4, 0x61, + 0x44, 0xbb, 0x1b, 0x04, 0x1e, 0x66, 0x40, 0xf4, 0x09, 0x31, 0x0e, 0xa9, 0x27, 0x1d, 0xec, 0xb4, + 0x82, 0x48, 0x1b, 0x8c, 0x67, 0x61, 0x64, 0x97, 0x1c, 0x84, 0xae, 0xbf, 0x9d, 0x7e, 0xea, 0xbb, + 0xc5, 0x8b, 0xb1, 0x84, 0x9b, 0x09, 0x01, 0x46, 0x4e, 0x3b, 0x4d, 0x54, 0xb9, 0xef, 0xd5, 0xf6, + 0xa3, 0x45, 0x98, 0xc4, 0x8b, 0xb5, 0xef, 0x4c, 0xc4, 0xdd, 0xee, 0x89, 0x38, 0xed, 0x34, 0x51, + 0xfd, 0x67, 0xe3, 0x57, 0x2d, 0x98, 0x64, 0x41, 0x73, 0x45, 0x0c, 0x06, 0x37, 0xf0, 0xcf, 0x80, + 0x75, 0x7b, 0x1a, 0x86, 0x42, 0xda, 0x68, 0x3a, 0xf7, 0x0b, 0xeb, 0x09, 0xe6, 0x30, 0xf4, 0x24, + 0x94, 0x58, 0x17, 0xe8, 0xe4, 0x8d, 0xf1, 0xb0, 0xf9, 0x35, 0x27, 0x76, 0x30, 0x2b, 0x65, 0x8e, + 0xc5, 0x98, 0xb4, 0x3d, 0x97, 0x77, 0x3a, 0x51, 0xf5, 0x7f, 0x34, 0x1c, 0x8b, 0x33, 0xbb, 0xf6, + 0xc1, 0x1c, 0x8b, 0xb3, 0x49, 0xf6, 0x16, 0x8b, 0xfe, 0x67, 0x01, 0x2e, 0x67, 0xd6, 0x1b, 0xd8, + 0xb1, 0xb8, 0x77, 0xed, 0xd3, 0xb1, 0xd8, 0xc8, 0x36, 0xa4, 0x28, 0x9e, 0xa1, 0x21, 0x45, 0x69, + 0x50, 0xce, 0x71, 0x68, 0x00, 0x7f, 0xdf, 0xcc, 0x21, 0xfb, 0x88, 0xf8, 0xfb, 0x66, 0xf6, 0x2d, + 0x47, 0xac, 0xfb, 0xf3, 0x42, 0xce, 0xb7, 0x30, 0x01, 0xef, 0x1a, 0x3d, 0x67, 0x18, 0x30, 0x12, + 0x9c, 0xf0, 0x18, 0x3f, 0x63, 0x78, 0x19, 0x56, 0x50, 0xe4, 0x6a, 0x9e, 0xb3, 0x85, 0xfc, 0xcc, + 0x80, 0xb9, 0x4d, 0xcd, 0x99, 0x2f, 0x33, 0x6a, 0x08, 0x32, 0xbc, 0x68, 0xd7, 0x34, 0xa1, 0xbc, + 0x38, 0xb8, 0x50, 0x3e, 0x96, 0x2d, 0x90, 0xa3, 0x05, 0x98, 0xdc, 0x73, 0x7d, 0x96, 0xe9, 0xdd, + 0x64, 0x45, 0x55, 0x20, 0x89, 0x35, 0x13, 0x8c, 0xd3, 0xf8, 0xb3, 0xaf, 0xc3, 0xf8, 0xc3, 0xab, + 0x23, 0xbf, 0x55, 0x84, 0x27, 0x7a, 0x6c, 0x7b, 0x7e, 0xd6, 0x1b, 0x73, 0xa0, 0x9d, 0xf5, 0x5d, + 0xf3, 0x50, 0x87, 0xf3, 0x5b, 0x1d, 0xcf, 0x3b, 0x60, 0xb6, 0x8a, 0xa4, 0x25, 0x31, 0x04, 0xaf, + 0x28, 0xf3, 0xf7, 0x9f, 0x5f, 0xc9, 0xc0, 0xc1, 0x99, 0x35, 0xd1, 0x9b, 0x80, 0x02, 0x91, 0x96, + 0xf4, 0x06, 0xf1, 0x85, 0xbe, 0x9b, 0x0d, 0x7c, 0x31, 0xd9, 0x8c, 0x77, 0xba, 0x30, 0x70, 0x46, + 0x2d, 0xca, 0xf4, 0xd3, 0x5b, 0xe9, 0x40, 0x75, 0x2b, 0xc5, 0xf4, 0x63, 0x1d, 0x88, 0x4d, 0x5c, + 0x74, 0x03, 0xa6, 0x9d, 0x7d, 0xc7, 0xe5, 0x01, 0xd6, 0x24, 0x01, 0xce, 0xf5, 0x2b, 0x25, 0xd8, + 0x42, 0x1a, 0x01, 0x77, 0xd7, 0x49, 0xb9, 0xee, 0x0e, 0xe7, 0xbb, 0xee, 0xf6, 0x3e, 0x17, 0xfb, + 0xe9, 0x74, 0xed, 0xff, 0x62, 0xd1, 0xeb, 0x2b, 0x23, 0xb5, 0x38, 0x1d, 0x07, 0xa5, 0x9b, 0xd4, + 0xbc, 0x68, 0xd5, 0x38, 0x2c, 0xe9, 0x40, 0x6c, 0xe2, 0xf2, 0x05, 0x11, 0x25, 0x0e, 0x1d, 0x06, + 0xeb, 0x2e, 0xdc, 0xe4, 0x15, 0x06, 0xfa, 0x3c, 0x8c, 0xb4, 0xdc, 0x7d, 0x37, 0x0a, 0x42, 0xb1, + 0x59, 0x4e, 0x68, 0x16, 0x9f, 0x9c, 0x83, 0x35, 0x4e, 0x06, 0x4b, 0x7a, 0xf6, 0x8f, 0x16, 0x60, + 0x5c, 0xb6, 0xf8, 0x56, 0x27, 0x88, 0x9d, 0x33, 0xb8, 0x96, 0x6f, 0x18, 0xd7, 0xf2, 0x27, 0x7a, + 0xc5, 0x0a, 0x60, 0x5d, 0xca, 0xbd, 0x8e, 0xef, 0xa4, 0xae, 0xe3, 0x67, 0xfa, 0x93, 0xea, 0x7d, + 0x0d, 0xff, 0x4b, 0x0b, 0xa6, 0x0d, 0xfc, 0x33, 0xb8, 0x0d, 0x56, 0xcc, 0xdb, 0xe0, 0xa9, 0xbe, + 0xdf, 0x90, 0x73, 0x0b, 0x7c, 0xad, 0x90, 0xea, 0x3b, 0x3b, 0xfd, 0xdf, 0x83, 0xd2, 0x8e, 0x13, + 0xb6, 0x7a, 0xc5, 0x24, 0xed, 0xaa, 0x34, 0x77, 0xd3, 0x09, 0x5b, 0xfc, 0x0c, 0x7f, 0x5e, 0x25, + 0x33, 0x74, 0xc2, 0x56, 0x5f, 0xff, 0x25, 0xd6, 0x14, 0x7a, 0x0d, 0x86, 0xa3, 0x66, 0xd0, 0x56, + 0xd6, 0x85, 0x57, 0x78, 0xa2, 0x43, 0x5a, 0x72, 0x7c, 0x58, 0x45, 0x66, 0x73, 0xb4, 0x18, 0x0b, + 0xfc, 0xd9, 0x6d, 0xa8, 0xa8, 0xa6, 0x1f, 0xa9, 0x6f, 0xc8, 0x7f, 0x2a, 0xc2, 0xb9, 0x8c, 0x75, + 0x81, 0x22, 0x63, 0xb4, 0x5e, 0x1c, 0x70, 0x39, 0x7d, 0xc0, 0xf1, 0x8a, 0x98, 0xc4, 0xd2, 0x12, + 0xf3, 0x3f, 0x70, 0xa3, 0x77, 0x23, 0x92, 0x6e, 0x94, 0x16, 0xf5, 0x6f, 0x94, 0x36, 0x76, 0x66, + 0x43, 0x4d, 0x1b, 0x52, 0x3d, 0x7d, 0xa4, 0x73, 0xfa, 0x27, 0x45, 0x38, 0x9f, 0x15, 0x62, 0x04, + 0xfd, 0x40, 0x2a, 0x2b, 0xc9, 0xcb, 0x83, 0x06, 0x27, 0xe1, 0xa9, 0x4a, 0x44, 0x8e, 0xdd, 0x39, + 0x33, 0x4f, 0x49, 0xdf, 0x61, 0x16, 0x6d, 0x32, 0x87, 0xc2, 0x90, 0x67, 0x93, 0x91, 0x5b, 0xfc, + 0x53, 0x03, 0x77, 0x40, 0xa4, 0xa1, 0x89, 0x52, 0x0e, 0x85, 0xb2, 0xb8, 0xbf, 0x43, 0xa1, 0x6c, + 0x79, 0xd6, 0x85, 0x51, 0xed, 0x6b, 0x1e, 0xe9, 0x8c, 0xef, 0xd2, 0x1b, 0x45, 0xeb, 0xf7, 0x23, + 0x9d, 0xf5, 0x9f, 0xb6, 0x20, 0x65, 0xd3, 0xa7, 0x54, 0x52, 0x56, 0xae, 0x4a, 0xea, 0x0a, 0x94, + 0xc2, 0xc0, 0x23, 0xe9, 0x44, 0x21, 0x38, 0xf0, 0x08, 0x66, 0x10, 0x8a, 0x11, 0x27, 0x0a, 0x89, + 0x31, 0x5d, 0xd8, 0x12, 0x62, 0xd4, 0xd3, 0x30, 0xe4, 0x91, 0x7d, 0xe2, 0xa5, 0xa3, 0x70, 0xdf, + 0xa6, 0x85, 0x98, 0xc3, 0xec, 0x5f, 0x2d, 0xc1, 0xa5, 0x9e, 0x2e, 0xb9, 0x54, 0x64, 0xd9, 0x76, + 0x62, 0x72, 0xdf, 0x39, 0x48, 0x87, 0xcb, 0xbd, 0xc1, 0x8b, 0xb1, 0x84, 0x33, 0x0b, 0x64, 0x1e, + 0x1e, 0x2f, 0xa5, 0xc0, 0x13, 0x51, 0xf1, 0x04, 0xf4, 0x11, 0xe4, 0x17, 0xbf, 0x0e, 0x10, 0x45, + 0xde, 0xb2, 0x4f, 0x39, 0xb0, 0x96, 0x30, 0x6d, 0x4e, 0xc2, 0x28, 0x36, 0x6e, 0x0b, 0x08, 0xd6, + 0xb0, 0x50, 0x0d, 0xa6, 0xda, 0x61, 0x10, 0x73, 0x7d, 0x68, 0x8d, 0x1b, 0xc9, 0x0c, 0x99, 0xde, + 0x90, 0xf5, 0x14, 0x1c, 0x77, 0xd5, 0x40, 0xaf, 0xc0, 0xa8, 0xf0, 0x90, 0xac, 0x07, 0x81, 0x27, + 0x54, 0x35, 0xca, 0xe4, 0xa2, 0x91, 0x80, 0xb0, 0x8e, 0xa7, 0x55, 0x63, 0x4a, 0xd6, 0x91, 0xcc, + 0x6a, 0x5c, 0xd1, 0xaa, 0xe1, 0xa5, 0xc2, 0x0d, 0x95, 0x07, 0x0a, 0x37, 0x94, 0x28, 0xaf, 0x2a, + 0x03, 0xbf, 0x2b, 0x41, 0x5f, 0x75, 0xcf, 0x2f, 0x95, 0xe0, 0x9c, 0x58, 0x38, 0x8f, 0x7a, 0xb9, + 0x3c, 0xa2, 0x2c, 0xe8, 0xdf, 0x59, 0x33, 0x67, 0xbd, 0x66, 0xbe, 0x5e, 0x84, 0x61, 0x3e, 0x15, + 0x67, 0xc0, 0xc3, 0xaf, 0x08, 0xa5, 0x5f, 0x8f, 0x40, 0x3b, 0xbc, 0x2f, 0x73, 0x35, 0x27, 0x76, + 0xf8, 0xfd, 0xa5, 0x8e, 0xd1, 0x44, 0x3d, 0x88, 0xe6, 0x8c, 0x83, 0x76, 0x36, 0xa5, 0xd5, 0x02, + 0x4e, 0x43, 0x3b, 0x76, 0xbf, 0x04, 0x10, 0xb1, 0x4c, 0xdc, 0x94, 0x86, 0x08, 0xd9, 0xf4, 0xc9, + 0x1e, 0xad, 0x37, 0x14, 0x32, 0xef, 0x43, 0xb2, 0x04, 0x15, 0x00, 0x6b, 0x14, 0x67, 0x5f, 0x85, + 0x8a, 0x42, 0xee, 0xa7, 0x02, 0x18, 0xd3, 0x6f, 0xbd, 0xcf, 0xc2, 0x64, 0xaa, 0xad, 0x13, 0x69, + 0x10, 0x7e, 0xcd, 0x82, 0x49, 0xde, 0xe5, 0x65, 0x7f, 0x5f, 0x6c, 0xf6, 0xf7, 0xe1, 0xbc, 0x97, + 0xb1, 0xe9, 0xc4, 0x8c, 0x0e, 0xbe, 0x49, 0x95, 0xc6, 0x20, 0x0b, 0x8a, 0x33, 0xdb, 0x40, 0xd7, + 0xa0, 0xcc, 0x5d, 0x76, 0x1c, 0x4f, 0xb8, 0x59, 0x8c, 0xf1, 0x28, 0xf9, 0xbc, 0x0c, 0x2b, 0xa8, + 0xfd, 0xbb, 0x16, 0x4c, 0xf3, 0x9e, 0xdf, 0x22, 0x07, 0x4a, 0x3a, 0xfe, 0x30, 0xfb, 0x2e, 0x92, + 0x00, 0x14, 0x72, 0x92, 0x00, 0xe8, 0x9f, 0x56, 0xec, 0xf9, 0x69, 0xbf, 0x68, 0x81, 0x58, 0x81, + 0x67, 0x20, 0x07, 0x7e, 0x8f, 0x29, 0x07, 0xce, 0xe6, 0x2f, 0xea, 0x1c, 0x01, 0xf0, 0xcf, 0x2c, + 0x98, 0xe2, 0x08, 0xc9, 0x43, 0xe4, 0x87, 0x3a, 0x0f, 0x83, 0x64, 0xf3, 0x52, 0xe9, 0x7b, 0xb3, + 0x3f, 0xca, 0x98, 0xac, 0x52, 0xcf, 0xc9, 0x6a, 0xc9, 0x0d, 0x74, 0x82, 0x2c, 0x75, 0x27, 0x0e, + 0xa6, 0x6b, 0xff, 0xb1, 0x05, 0x88, 0x37, 0x63, 0xdc, 0xcb, 0xf4, 0xb6, 0x63, 0xa5, 0x9a, 0x26, + 0x28, 0x39, 0x6a, 0x14, 0x04, 0x6b, 0x58, 0xa7, 0x32, 0x3c, 0xa9, 0xd7, 0xe4, 0x62, 0xff, 0xd7, + 0xe4, 0x13, 0x8c, 0xe8, 0xd7, 0x4b, 0x90, 0xb6, 0xd1, 0x46, 0xf7, 0x60, 0xac, 0xe9, 0xb4, 0x9d, + 0x4d, 0xd7, 0x73, 0x63, 0x97, 0x44, 0xbd, 0xcc, 0x50, 0x96, 0x34, 0x3c, 0xf1, 0x4e, 0xa8, 0x95, + 0x60, 0x83, 0x0e, 0x9a, 0x03, 0x68, 0x87, 0xee, 0xbe, 0xeb, 0x91, 0x6d, 0x26, 0x0a, 0x33, 0xc7, + 0x2e, 0x6e, 0x5b, 0x21, 0x4b, 0xb1, 0x86, 0x91, 0xe1, 0x08, 0x54, 0x7c, 0x74, 0x8e, 0x40, 0xa5, + 0x13, 0x3a, 0x02, 0x0d, 0x0d, 0xe4, 0x08, 0x84, 0xe1, 0x31, 0x79, 0x77, 0xd3, 0xff, 0x2b, 0xae, + 0x47, 0x04, 0xc3, 0xc6, 0xdd, 0xbd, 0x66, 0x8f, 0x0e, 0xab, 0x8f, 0xe1, 0x4c, 0x0c, 0x9c, 0x53, + 0x13, 0x7d, 0x0e, 0x66, 0x1c, 0xcf, 0x0b, 0xee, 0xab, 0x51, 0x5b, 0x8e, 0x9a, 0x8e, 0xc7, 0xd5, + 0xbd, 0x23, 0x8c, 0xea, 0x93, 0x47, 0x87, 0xd5, 0x99, 0x85, 0x1c, 0x1c, 0x9c, 0x5b, 0x3b, 0xe5, + 0x47, 0x54, 0xee, 0xeb, 0x47, 0xb4, 0x0b, 0xe7, 0x1a, 0x24, 0x74, 0x59, 0x0e, 0xbd, 0x56, 0xb2, + 0x25, 0x37, 0xa0, 0x12, 0xa6, 0x0e, 0xa1, 0x81, 0x62, 0xc0, 0x68, 0x71, 0x42, 0xe5, 0xa1, 0x93, + 0x10, 0xb2, 0xff, 0xd4, 0x82, 0x11, 0x61, 0x27, 0x7e, 0x06, 0xbc, 0xcf, 0x82, 0xa1, 0xbf, 0xac, + 0x66, 0x1f, 0xd4, 0xac, 0x33, 0xb9, 0x9a, 0xcb, 0xd5, 0x94, 0xe6, 0xf2, 0xa9, 0x5e, 0x44, 0x7a, + 0xeb, 0x2c, 0x7f, 0xb2, 0x08, 0x13, 0xa6, 0x8d, 0xfc, 0x19, 0x0c, 0xc1, 0x3a, 0x8c, 0x44, 0xc2, + 0x21, 0xa3, 0x90, 0x6f, 0x38, 0x9b, 0x9e, 0xc4, 0xc4, 0x2a, 0x46, 0xb8, 0x60, 0x48, 0x22, 0x99, + 0x9e, 0x1e, 0xc5, 0x47, 0xe8, 0xe9, 0xd1, 0xcf, 0x4d, 0xa1, 0x74, 0x1a, 0x6e, 0x0a, 0xf6, 0x37, + 0xd8, 0x65, 0xa1, 0x97, 0x9f, 0x01, 0x1f, 0x71, 0xc3, 0xbc, 0x56, 0xec, 0x1e, 0x2b, 0x4b, 0x74, + 0x2a, 0x87, 0x9f, 0xf8, 0x15, 0x0b, 0x2e, 0x65, 0x7c, 0x95, 0xc6, 0x5c, 0x3c, 0x0f, 0x65, 0xa7, + 0xd3, 0x72, 0xd5, 0x5e, 0xd6, 0x5e, 0x31, 0x16, 0x44, 0x39, 0x56, 0x18, 0x68, 0x09, 0xa6, 0xc9, + 0x83, 0xb6, 0xcb, 0x9f, 0x91, 0x74, 0xd3, 0xb5, 0x22, 0x8f, 0x81, 0xb9, 0x9c, 0x06, 0xe2, 0x6e, + 0x7c, 0xe5, 0x39, 0x5a, 0xcc, 0xf5, 0x1c, 0xfd, 0x27, 0x16, 0x8c, 0x8a, 0x6e, 0x9f, 0xc1, 0x68, + 0x7f, 0xaf, 0x39, 0xda, 0x4f, 0xf4, 0x18, 0xed, 0x9c, 0x61, 0xfe, 0x7b, 0x05, 0xd5, 0xdf, 0x7a, + 0x10, 0xc6, 0x03, 0x30, 0x2d, 0xaf, 0x41, 0x99, 0x0a, 0xbd, 0x41, 0x33, 0xf0, 0x04, 0xcf, 0xf2, + 0x64, 0xe2, 0xd8, 0xcc, 0xcb, 0x8f, 0xb5, 0xdf, 0x58, 0x61, 0xb3, 0xd1, 0x0b, 0xc2, 0x58, 0xf0, + 0x09, 0xc9, 0xe8, 0x05, 0x61, 0x8c, 0x19, 0x04, 0xb5, 0x00, 0x62, 0x27, 0xdc, 0x26, 0x31, 0x2d, + 0x13, 0x31, 0x12, 0xf2, 0x0f, 0x8f, 0x4e, 0xec, 0x7a, 0x73, 0xae, 0x1f, 0x47, 0x71, 0x38, 0xb7, + 0xea, 0xc7, 0x77, 0x42, 0x2e, 0x02, 0x69, 0x9e, 0xca, 0x8a, 0x16, 0xd6, 0xe8, 0x4a, 0xd7, 0x37, + 0xd6, 0xc6, 0x90, 0xf9, 0x1e, 0xba, 0x2e, 0xca, 0xb1, 0xc2, 0xb0, 0x5f, 0x65, 0x57, 0x09, 0x1b, + 0xa0, 0x93, 0x39, 0x11, 0x7f, 0xb3, 0xac, 0x86, 0x96, 0x3d, 0x86, 0xd4, 0x74, 0x57, 0xe5, 0xde, + 0x27, 0x37, 0x6d, 0x58, 0x77, 0xa3, 0x48, 0xfc, 0x99, 0xd1, 0xf7, 0x75, 0x3d, 0x93, 0xbf, 0xd0, + 0xe7, 0x0a, 0x38, 0xc1, 0xc3, 0x38, 0x8b, 0xcb, 0xcb, 0xe2, 0x97, 0xae, 0xd6, 0xc5, 0x22, 0xd7, + 0xe2, 0xf2, 0x0a, 0x00, 0x4e, 0x70, 0xd0, 0xbc, 0x10, 0xa0, 0x4b, 0x46, 0xfa, 0x2c, 0x29, 0x40, + 0xcb, 0xcf, 0xd7, 0x24, 0xe8, 0x17, 0x61, 0x54, 0xa5, 0xd1, 0xaa, 0xf3, 0x6c, 0x44, 0x22, 0x62, + 0xc4, 0x72, 0x52, 0x8c, 0x75, 0x1c, 0xb4, 0x01, 0x93, 0x11, 0x4f, 0x28, 0xa6, 0x02, 0x83, 0x71, + 0xf5, 0xc8, 0x27, 0xe5, 0xf3, 0x7a, 0xc3, 0x04, 0x1f, 0xb3, 0x22, 0x7e, 0x74, 0x48, 0xff, 0xb5, + 0x34, 0x09, 0xf4, 0x06, 0x4c, 0x78, 0x7a, 0x32, 0xea, 0xba, 0xd0, 0x9e, 0x28, 0xeb, 0x53, 0x23, + 0x55, 0x75, 0x1d, 0xa7, 0xb0, 0x29, 0xaf, 0xa3, 0x97, 0x88, 0x60, 0x76, 0x8e, 0xbf, 0x4d, 0x22, + 0x91, 0x04, 0x88, 0xf1, 0x3a, 0xb7, 0x73, 0x70, 0x70, 0x6e, 0x6d, 0xf4, 0x1a, 0x8c, 0xc9, 0xcf, + 0xd7, 0xbc, 0x33, 0x13, 0x1b, 0x67, 0x0d, 0x86, 0x0d, 0x4c, 0x74, 0x1f, 0x2e, 0xc8, 0xff, 0x1b, + 0xa1, 0xb3, 0xb5, 0xe5, 0x36, 0x85, 0x73, 0x2c, 0x77, 0xf4, 0x58, 0x90, 0x9e, 0x23, 0xcb, 0x59, + 0x48, 0xc7, 0x87, 0xd5, 0x2b, 0x62, 0xd4, 0x32, 0xe1, 0x6c, 0x12, 0xb3, 0xe9, 0xa3, 0x35, 0x38, + 0xb7, 0x43, 0x1c, 0x2f, 0xde, 0x59, 0xda, 0x21, 0xcd, 0x5d, 0xb9, 0x89, 0x98, 0xcf, 0xa7, 0x66, + 0x19, 0x7c, 0xb3, 0x1b, 0x05, 0x67, 0xd5, 0x43, 0xef, 0xc0, 0x4c, 0xbb, 0xb3, 0xe9, 0xb9, 0xd1, + 0xce, 0x7a, 0x10, 0xb3, 0x17, 0x7d, 0x95, 0x85, 0x4a, 0x38, 0x87, 0x2a, 0x7f, 0xd7, 0x7a, 0x0e, + 0x1e, 0xce, 0xa5, 0x80, 0xde, 0x87, 0x0b, 0xa9, 0xc5, 0x20, 0x5c, 0xd5, 0x26, 0xf2, 0x43, 0x83, + 0x36, 0xb2, 0x2a, 0x08, 0xd7, 0xb3, 0x2c, 0x10, 0xce, 0x6e, 0xe2, 0x83, 0xd9, 0x79, 0xbc, 0x47, + 0x2b, 0x6b, 0x4c, 0x19, 0xfa, 0x32, 0x8c, 0xe9, 0xab, 0x48, 0x5c, 0x30, 0x57, 0xfb, 0x25, 0x5e, + 0x17, 0x2c, 0x9d, 0x5a, 0x51, 0x3a, 0x0c, 0x1b, 0x14, 0x6d, 0x02, 0xd9, 0xdf, 0x87, 0x6e, 0x43, + 0xb9, 0xe9, 0xb9, 0xc4, 0x8f, 0x57, 0xeb, 0xbd, 0x82, 0x20, 0x2c, 0x09, 0x1c, 0x31, 0x60, 0x22, + 0x96, 0x22, 0x2f, 0xc3, 0x8a, 0x82, 0xfd, 0x9b, 0x05, 0xa8, 0xf6, 0x09, 0xcc, 0x99, 0x52, 0x75, + 0x5a, 0x03, 0xa9, 0x3a, 0x17, 0x64, 0x4e, 0xad, 0xf5, 0x94, 0x98, 0x9d, 0xca, 0x97, 0x95, 0x08, + 0xdb, 0x69, 0xfc, 0x81, 0xcd, 0x43, 0x75, 0x6d, 0x69, 0xa9, 0xaf, 0xe1, 0xb2, 0xf1, 0x4a, 0x32, + 0x34, 0xb8, 0x20, 0x92, 0xab, 0xf1, 0xb6, 0xbf, 0x51, 0x80, 0x0b, 0x6a, 0x08, 0xbf, 0x7d, 0x07, + 0xee, 0x6e, 0xf7, 0xc0, 0x9d, 0xc2, 0x7b, 0x81, 0x7d, 0x07, 0x86, 0x1b, 0x07, 0x51, 0x33, 0xf6, + 0x06, 0x60, 0x80, 0x9e, 0x36, 0x83, 0x01, 0xa9, 0x6b, 0xda, 0x08, 0x08, 0xf4, 0xd7, 0x2c, 0x98, + 0xdc, 0x58, 0xaa, 0x37, 0x82, 0xe6, 0x2e, 0x89, 0x17, 0x38, 0xc3, 0x8a, 0x05, 0xff, 0x63, 0x3d, + 0x24, 0x5f, 0x93, 0xc5, 0x31, 0x5d, 0x81, 0xd2, 0x4e, 0x10, 0xc5, 0xe9, 0xc7, 0xc4, 0x9b, 0x41, + 0x14, 0x63, 0x06, 0xb1, 0x7f, 0xcf, 0x82, 0x21, 0x96, 0x09, 0xb2, 0x5f, 0x7a, 0xd2, 0x41, 0xbe, + 0x0b, 0xbd, 0x02, 0xc3, 0x64, 0x6b, 0x8b, 0x34, 0x63, 0x31, 0xab, 0xd2, 0x1b, 0x71, 0x78, 0x99, + 0x95, 0xd2, 0x4b, 0x9f, 0x35, 0xc6, 0xff, 0x62, 0x81, 0x8c, 0xde, 0x86, 0x4a, 0xec, 0xee, 0x91, + 0x85, 0x56, 0x4b, 0x3c, 0xc7, 0x3c, 0x84, 0xf3, 0xe7, 0x86, 0x24, 0x80, 0x13, 0x5a, 0xf6, 0x57, + 0x0b, 0x00, 0x89, 0x47, 0x75, 0xbf, 0x4f, 0x5c, 0xec, 0xca, 0xc0, 0x7a, 0x35, 0x23, 0x03, 0x2b, + 0x4a, 0x08, 0x66, 0xe4, 0x5f, 0x55, 0xc3, 0x54, 0x1c, 0x68, 0x98, 0x4a, 0x27, 0x19, 0xa6, 0x25, + 0x98, 0x4e, 0x3c, 0xc2, 0xcd, 0xf0, 0x18, 0x4c, 0x48, 0xd9, 0x48, 0x03, 0x71, 0x37, 0xbe, 0xfd, + 0xc3, 0x16, 0x08, 0xaf, 0x8a, 0x01, 0x16, 0xf3, 0x17, 0x64, 0xfe, 0x42, 0x23, 0xbe, 0xef, 0x95, + 0x7c, 0x37, 0x13, 0x11, 0xd5, 0x57, 0x5d, 0x1e, 0x46, 0x2c, 0x5f, 0x83, 0x96, 0xdd, 0x02, 0x01, + 0xad, 0x11, 0xa6, 0x1b, 0xe9, 0xdf, 0x9b, 0xeb, 0x00, 0x2d, 0x86, 0xab, 0x65, 0x31, 0x53, 0x47, + 0x55, 0x4d, 0x41, 0xb0, 0x86, 0x65, 0xff, 0x78, 0x01, 0x46, 0x65, 0x3c, 0xd9, 0x8e, 0x3f, 0x88, + 0x04, 0x73, 0xa2, 0x64, 0x12, 0x2c, 0xed, 0x1f, 0x25, 0x5c, 0x4f, 0x04, 0xbf, 0x24, 0xed, 0x9f, + 0x04, 0xe0, 0x04, 0x07, 0x3d, 0x0b, 0x23, 0x51, 0x67, 0x93, 0xa1, 0xa7, 0x7c, 0x05, 0x1a, 0xbc, + 0x18, 0x4b, 0x38, 0xfa, 0x1c, 0x4c, 0xf1, 0x7a, 0x61, 0xd0, 0x76, 0xb6, 0xb9, 0xa2, 0x6c, 0x48, + 0x39, 0xef, 0x4d, 0xad, 0xa5, 0x60, 0xc7, 0x87, 0xd5, 0xf3, 0xe9, 0x32, 0xa6, 0x62, 0xed, 0xa2, + 0x62, 0x7f, 0x19, 0x50, 0x77, 0x88, 0x5c, 0xf4, 0x26, 0xb7, 0x06, 0x71, 0x43, 0x95, 0xb5, 0xfc, + 0x4a, 0x3f, 0x5f, 0x33, 0x69, 0xaf, 0xcb, 0x6b, 0x61, 0x55, 0xdf, 0xfe, 0x9b, 0x45, 0x98, 0x4a, + 0x7b, 0x1e, 0xa1, 0x9b, 0x30, 0xcc, 0x0f, 0xd5, 0x5e, 0x49, 0xd1, 0xd3, 0xcf, 0x04, 0x3c, 0x7e, + 0xbf, 0x38, 0x97, 0x45, 0x7d, 0xf4, 0x0e, 0x8c, 0xb6, 0x82, 0xfb, 0xfe, 0x7d, 0x27, 0x6c, 0x2d, + 0xd4, 0x57, 0xc5, 0xba, 0xcc, 0xe4, 0xcd, 0x6a, 0x09, 0x9a, 0xee, 0x03, 0xc5, 0xd4, 0xd0, 0x09, + 0x08, 0xeb, 0xe4, 0xd0, 0x86, 0x9e, 0x2f, 0xbe, 0x87, 0xf9, 0x9e, 0x4a, 0x08, 0xaf, 0x51, 0xce, + 0xcd, 0x14, 0x8f, 0x7e, 0x00, 0xce, 0x45, 0x39, 0xea, 0x9c, 0xbc, 0x88, 0xe9, 0xbd, 0x34, 0x1c, + 0x8b, 0x8f, 0x53, 0xae, 0x39, 0x4b, 0xf1, 0x93, 0xd5, 0x8c, 0xfd, 0x95, 0x73, 0x60, 0xec, 0x46, + 0x23, 0x59, 0x86, 0x75, 0x4a, 0xc9, 0x32, 0x30, 0x94, 0xc9, 0x5e, 0x3b, 0x3e, 0xa8, 0xb9, 0x61, + 0xaf, 0x6c, 0x4b, 0xcb, 0x02, 0xa7, 0x9b, 0xa6, 0x84, 0x60, 0x45, 0x27, 0x3b, 0xa3, 0x49, 0xf1, + 0x43, 0xcc, 0x68, 0x52, 0x3a, 0xc3, 0x8c, 0x26, 0xeb, 0x30, 0xb2, 0xed, 0xc6, 0x98, 0xb4, 0x03, + 0xc1, 0xce, 0x64, 0xae, 0xc3, 0x1b, 0x1c, 0xa5, 0x3b, 0x9e, 0xbe, 0x00, 0x60, 0x49, 0x04, 0xbd, + 0xa9, 0x76, 0xe0, 0x70, 0xbe, 0x34, 0xd0, 0xfd, 0x86, 0x94, 0xb9, 0x07, 0x45, 0x06, 0x93, 0x91, + 0x87, 0xcd, 0x60, 0xb2, 0x22, 0xf3, 0x8e, 0x94, 0xf3, 0x6d, 0x6d, 0x59, 0x5a, 0x91, 0x3e, 0xd9, + 0x46, 0x8c, 0x0c, 0x2d, 0x95, 0xd3, 0xcb, 0xd0, 0xf2, 0xc3, 0x16, 0x5c, 0x68, 0x67, 0x25, 0x2b, + 0x12, 0x79, 0x43, 0x5e, 0x19, 0x38, 0x1b, 0x93, 0xd1, 0x20, 0x13, 0x0b, 0x33, 0xd1, 0x70, 0x76, + 0x73, 0x74, 0xa0, 0xc3, 0xcd, 0x96, 0x48, 0x36, 0xf2, 0x74, 0x4e, 0xaa, 0x97, 0x1e, 0x09, 0x5e, + 0x36, 0x32, 0x12, 0x8c, 0x7c, 0x3c, 0x2f, 0xc1, 0xc8, 0xc0, 0x69, 0x45, 0x92, 0x24, 0x2f, 0xe3, + 0x1f, 0x38, 0xc9, 0xcb, 0x9b, 0x2a, 0xc9, 0x4b, 0x8f, 0x50, 0x4d, 0x3c, 0x85, 0x4b, 0xdf, 0xd4, + 0x2e, 0x5a, 0x7a, 0x96, 0xc9, 0xd3, 0x49, 0xcf, 0x62, 0x5c, 0x35, 0x3c, 0x43, 0xc8, 0x73, 0x7d, + 0xae, 0x1a, 0x83, 0x6e, 0xef, 0xcb, 0x86, 0xa7, 0xa2, 0x99, 0x7e, 0xa8, 0x54, 0x34, 0xf7, 0xf4, + 0xd4, 0x2e, 0xa8, 0x4f, 0xee, 0x12, 0x8a, 0x34, 0x60, 0x42, 0x97, 0x7b, 0xfa, 0x05, 0x78, 0x2e, + 0x9f, 0xae, 0xba, 0xe7, 0xba, 0xe9, 0x66, 0x5e, 0x81, 0x5d, 0x89, 0x62, 0xce, 0x9f, 0x4d, 0xa2, + 0x98, 0x0b, 0xa7, 0x9e, 0x28, 0xe6, 0xb1, 0x33, 0x48, 0x14, 0xf3, 0xf8, 0x87, 0x9a, 0x28, 0x66, + 0xe6, 0x11, 0x24, 0x8a, 0x59, 0x4f, 0x12, 0xc5, 0x5c, 0xcc, 0x9f, 0x92, 0x0c, 0xe3, 0xc2, 0x9c, + 0xf4, 0x30, 0xf7, 0xa0, 0xd2, 0x96, 0xae, 0xf1, 0x22, 0x96, 0x54, 0x76, 0x86, 0xca, 0x2c, 0xff, + 0x79, 0x3e, 0x25, 0x0a, 0x84, 0x13, 0x52, 0x94, 0x6e, 0x92, 0x2e, 0xe6, 0x89, 0x1e, 0x8a, 0xbf, + 0x2c, 0x95, 0x4a, 0x7e, 0x92, 0x18, 0xfb, 0xaf, 0x17, 0xe0, 0x72, 0xef, 0x75, 0x9d, 0xe8, 0x63, + 0xea, 0xc9, 0xfb, 0x41, 0x4a, 0x1f, 0xc3, 0x85, 0x9c, 0x04, 0x6b, 0xe0, 0xf8, 0x21, 0x37, 0x60, + 0x5a, 0x59, 0x15, 0x7a, 0x6e, 0xf3, 0x40, 0xcb, 0x5c, 0xa9, 0x3c, 0x9c, 0x1a, 0x69, 0x04, 0xdc, + 0x5d, 0x07, 0x2d, 0xc0, 0xa4, 0x51, 0xb8, 0x5a, 0x13, 0xc2, 0x8c, 0x52, 0x00, 0x35, 0x4c, 0x30, + 0x4e, 0xe3, 0xdb, 0x5f, 0xb3, 0xe0, 0xf1, 0x9c, 0x18, 0xea, 0x03, 0x87, 0xc7, 0xd8, 0x82, 0xc9, + 0xb6, 0x59, 0xb5, 0x4f, 0x14, 0x1d, 0x23, 0x52, 0xbb, 0xea, 0x6b, 0x0a, 0x80, 0xd3, 0x44, 0x17, + 0xaf, 0xfd, 0xf6, 0x1f, 0x5c, 0xfe, 0xd8, 0xef, 0xfc, 0xc1, 0xe5, 0x8f, 0xfd, 0xee, 0x1f, 0x5c, + 0xfe, 0xd8, 0x5f, 0x3a, 0xba, 0x6c, 0xfd, 0xf6, 0xd1, 0x65, 0xeb, 0x77, 0x8e, 0x2e, 0x5b, 0xbf, + 0x7b, 0x74, 0xd9, 0xfa, 0xfd, 0xa3, 0xcb, 0xd6, 0x57, 0xff, 0xf0, 0xf2, 0xc7, 0xbe, 0x50, 0xd8, + 0x7f, 0xf1, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x30, 0xb0, 0xa9, 0x66, 0x94, 0xe0, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/core/v1/generated.proto b/vendor/k8s.io/api/core/v1/generated.proto index c1f260c659..fcdba32143 100644 --- a/vendor/k8s.io/api/core/v1/generated.proto +++ b/vendor/k8s.io/api/core/v1/generated.proto @@ -450,15 +450,12 @@ message ConfigMapNodeConfigSource { optional string name = 2; // UID is the metadata.UID of the referenced ConfigMap. - // This field is currently reqired in Node.Spec. - // TODO(#61643): This field will be forbidden in Node.Spec when #61643 is resolved. - // TODO(#56896): This field will be required in Node.Status when #56896 is resolved. + // This field is forbidden in Node.Spec, and required in Node.Status. // +optional optional string uid = 3; // ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. - // This field is forbidden in Node.Spec. - // TODO(#56896): This field will be required in Node.Status when #56896 is resolved. + // This field is forbidden in Node.Spec, and required in Node.Status. // +optional optional string resourceVersion = 4; @@ -3989,6 +3986,32 @@ message ServiceAccountList { repeated ServiceAccount items = 2; } +// ServiceAccountTokenProjection represents a projected service account token +// volume. This projection can be used to insert a service account token into +// the pods runtime filesystem for use against APIs (Kubernetes API Server or +// otherwise). +message ServiceAccountTokenProjection { + // Audience is the intended audience of the token. A recipient of a token + // must identify itself with an identifier specified in the audience of the + // token, and otherwise should reject the token. The audience defaults to the + // identifier of the apiserver. + // +optional + optional string audience = 1; + + // ExpirationSeconds is the requested duration of validity of the service + // account token. As the token approaches expiration, the kubelet volume + // plugin will proactively rotate the service account token. The kubelet will + // start trying to rotate the token if the token is older than 80 percent of + // its time to live or if the token is older than 24 hours.Defaults to 1 hour + // and must be at least 10 minutes. + // +optional + optional int64 expirationSeconds = 2; + + // Path is the path relative to the mount point of the file to project the + // token into. + optional string path = 3; +} + // ServiceList holds a list of services. message ServiceList { // Standard list metadata. @@ -4375,13 +4398,20 @@ message VolumeNodeAffinity { // Projection that may be projected along with other supported volume types message VolumeProjection { // information about the secret data to project + // +optional optional SecretProjection secret = 1; // information about the downwardAPI data to project + // +optional optional DownwardAPIProjection downwardAPI = 2; // information about the configMap data to project + // +optional optional ConfigMapProjection configMap = 3; + + // information about the serviceAccountToken data to project + // +optional + optional ServiceAccountTokenProjection serviceAccountToken = 4; } // Represents the source of a volume to mount. diff --git a/vendor/k8s.io/api/core/v1/types.go b/vendor/k8s.io/api/core/v1/types.go index 47344bb049..c08a38d88b 100644 --- a/vendor/k8s.io/api/core/v1/types.go +++ b/vendor/k8s.io/api/core/v1/types.go @@ -1466,6 +1466,30 @@ type ConfigMapProjection struct { Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"` } +// ServiceAccountTokenProjection represents a projected service account token +// volume. This projection can be used to insert a service account token into +// the pods runtime filesystem for use against APIs (Kubernetes API Server or +// otherwise). +type ServiceAccountTokenProjection struct { + // Audience is the intended audience of the token. A recipient of a token + // must identify itself with an identifier specified in the audience of the + // token, and otherwise should reject the token. The audience defaults to the + // identifier of the apiserver. + //+optional + Audience string `json:"audience,omitempty" protobuf:"bytes,1,rep,name=audience"` + // ExpirationSeconds is the requested duration of validity of the service + // account token. As the token approaches expiration, the kubelet volume + // plugin will proactively rotate the service account token. The kubelet will + // start trying to rotate the token if the token is older than 80 percent of + // its time to live or if the token is older than 24 hours.Defaults to 1 hour + // and must be at least 10 minutes. + //+optional + ExpirationSeconds *int64 `json:"expirationSeconds,omitempty" protobuf:"varint,2,opt,name=expirationSeconds"` + // Path is the path relative to the mount point of the file to project the + // token into. + Path string `json:"path" protobuf:"bytes,3,opt,name=path"` +} + // Represents a projected volume source type ProjectedVolumeSource struct { // list of volume projections @@ -1484,11 +1508,17 @@ type VolumeProjection struct { // all types below are the supported types for projection into the same volume // information about the secret data to project + // +optional Secret *SecretProjection `json:"secret,omitempty" protobuf:"bytes,1,opt,name=secret"` // information about the downwardAPI data to project + // +optional DownwardAPI *DownwardAPIProjection `json:"downwardAPI,omitempty" protobuf:"bytes,2,opt,name=downwardAPI"` // information about the configMap data to project + // +optional ConfigMap *ConfigMapProjection `json:"configMap,omitempty" protobuf:"bytes,3,opt,name=configMap"` + // information about the serviceAccountToken data to project + // +optional + ServiceAccountToken *ServiceAccountTokenProjection `json:"serviceAccountToken,omitempty" protobuf:"bytes,4,opt,name=serviceAccountToken"` } const ( @@ -3666,15 +3696,12 @@ type ConfigMapNodeConfigSource struct { Name string `json:"name" protobuf:"bytes,2,opt,name=name"` // UID is the metadata.UID of the referenced ConfigMap. - // This field is currently reqired in Node.Spec. - // TODO(#61643): This field will be forbidden in Node.Spec when #61643 is resolved. - // TODO(#56896): This field will be required in Node.Status when #56896 is resolved. + // This field is forbidden in Node.Spec, and required in Node.Status. // +optional UID types.UID `json:"uid,omitempty" protobuf:"bytes,3,opt,name=uid"` // ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. - // This field is forbidden in Node.Spec. - // TODO(#56896): This field will be required in Node.Status when #56896 is resolved. + // This field is forbidden in Node.Spec, and required in Node.Status. // +optional ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,4,opt,name=resourceVersion"` diff --git a/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go index 6316816abc..3df3461c20 100644 --- a/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go +++ b/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go @@ -266,8 +266,8 @@ var map_ConfigMapNodeConfigSource = map[string]string{ "": "ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.", "namespace": "Namespace is the metadata.namespace of the referenced ConfigMap. This field is required in all cases.", "name": "Name is the metadata.name of the referenced ConfigMap. This field is required in all cases.", - "uid": "UID is the metadata.UID of the referenced ConfigMap. This field is currently reqired in Node.Spec.", - "resourceVersion": "ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec.", + "uid": "UID is the metadata.UID of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.", + "resourceVersion": "ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. This field is forbidden in Node.Spec, and required in Node.Status.", "kubeletConfigKey": "KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure This field is required in all cases.", } @@ -1988,6 +1988,17 @@ func (ServiceAccountList) SwaggerDoc() map[string]string { return map_ServiceAccountList } +var map_ServiceAccountTokenProjection = map[string]string{ + "": "ServiceAccountTokenProjection represents a projected service account token volume. This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise).", + "audience": "Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver.", + "expirationSeconds": "ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes.", + "path": "Path is the path relative to the mount point of the file to project the token into.", +} + +func (ServiceAccountTokenProjection) SwaggerDoc() map[string]string { + return map_ServiceAccountTokenProjection +} + var map_ServiceList = map[string]string{ "": "ServiceList holds a list of services.", "metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds", @@ -2172,10 +2183,11 @@ func (VolumeNodeAffinity) SwaggerDoc() map[string]string { } var map_VolumeProjection = map[string]string{ - "": "Projection that may be projected along with other supported volume types", - "secret": "information about the secret data to project", - "downwardAPI": "information about the downwardAPI data to project", - "configMap": "information about the configMap data to project", + "": "Projection that may be projected along with other supported volume types", + "secret": "information about the secret data to project", + "downwardAPI": "information about the downwardAPI data to project", + "configMap": "information about the configMap data to project", + "serviceAccountToken": "information about the serviceAccountToken data to project", } func (VolumeProjection) SwaggerDoc() map[string]string { diff --git a/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go index 0fbcc9a7f3..907dcccea1 100644 --- a/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go @@ -5159,6 +5159,31 @@ func (in *ServiceAccountList) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountTokenProjection) DeepCopyInto(out *ServiceAccountTokenProjection) { + *out = *in + if in.ExpirationSeconds != nil { + in, out := &in.ExpirationSeconds, &out.ExpirationSeconds + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountTokenProjection. +func (in *ServiceAccountTokenProjection) DeepCopy() *ServiceAccountTokenProjection { + if in == nil { + return nil + } + out := new(ServiceAccountTokenProjection) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ServiceList) DeepCopyInto(out *ServiceList) { *out = *in @@ -5568,6 +5593,15 @@ func (in *VolumeProjection) DeepCopyInto(out *VolumeProjection) { (*in).DeepCopyInto(*out) } } + if in.ServiceAccountToken != nil { + in, out := &in.ServiceAccountToken, &out.ServiceAccountToken + if *in == nil { + *out = nil + } else { + *out = new(ServiceAccountTokenProjection) + (*in).DeepCopyInto(*out) + } + } return } diff --git a/vendor/k8s.io/kubernetes/pkg/apis/core/types.go b/vendor/k8s.io/kubernetes/pkg/apis/core/types.go index 4284fbd2d4..a8786cf7ba 100644 --- a/vendor/k8s.io/kubernetes/pkg/apis/core/types.go +++ b/vendor/k8s.io/kubernetes/pkg/apis/core/types.go @@ -1391,6 +1391,28 @@ type ConfigMapProjection struct { Optional *bool } +// ServiceAccountTokenProjection represents a projected service account token +// volume. This projection can be used to insert a service account token into +// the pods runtime filesystem for use against APIs (Kubernetes API Server or +// otherwise). +type ServiceAccountTokenProjection struct { + // Audience is the intended audience of the token. A recipient of a token + // must identify itself with an identifier specified in the audience of the + // token, and otherwise should reject the token. The audience defaults to the + // identifier of the apiserver. + Audience string + // ExpirationSeconds is the requested duration of validity of the service + // account token. As the token approaches expiration, the kubelet volume + // plugin will proactively rotate the service account token. The kubelet will + // start trying to rotate the token if the token is older than 80 percent of + // its time to live or if the token is older than 24 hours.Defaults to 1 hour + // and must be at least 10 minutes. + ExpirationSeconds int64 + // Path is the path relative to the mount point of the file to project the + // token into. + Path string +} + // Represents a projected volume source type ProjectedVolumeSource struct { // list of volume projections @@ -1414,6 +1436,8 @@ type VolumeProjection struct { DownwardAPI *DownwardAPIProjection // information about the configMap data to project ConfigMap *ConfigMapProjection + // information about the serviceAccountToken data to project + ServiceAccountToken *ServiceAccountTokenProjection } // Maps a string key to a path within a volume. @@ -3269,27 +3293,12 @@ type ConfigMapNodeConfigSource struct { Name string // UID is the metadata.UID of the referenced ConfigMap. - // This field is currently reqired in Node.Spec. - // TODO(#61643): This field will be forbidden in Node.Spec when #61643 is resolved. - // #61643 changes the behavior of dynamic Kubelet config to respect - // ConfigMap updates, and thus removes the ability to pin the Spec to a given UID. - // TODO(#56896): This field will be required in Node.Status when #56896 is resolved. - // #63314 (the PR that resolves #56896) adds a structured status to the Node - // object for reporting information about the config. This status requires UID - // and ResourceVersion, so that it represents a fully-explicit description of - // the configuration in use, while (see previous TODO) the Spec will be - // restricted to namespace/name in #61643. + // This field is forbidden in Node.Spec, and required in Node.Status. // +optional UID types.UID // ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap. - // This field is forbidden in Node.Spec. - // TODO(#56896): This field will be required in Node.Status when #56896 is resolved. - // #63314 (the PR that resolves #56896) adds a structured status to the Node - // object for reporting information about the config. This status requires UID - // and ResourceVersion, so that it represents a fully-explicit description of - // the configuration in use, while (see previous TODO) the Spec will be - // restricted to namespace/name in #61643. + // This field is forbidden in Node.Spec, and required in Node.Status. // +optional ResourceVersion string diff --git a/vendor/k8s.io/kubernetes/pkg/apis/core/v1/defaults.go b/vendor/k8s.io/kubernetes/pkg/apis/core/v1/defaults.go index 09ee8f3feb..110ef54df1 100644 --- a/vendor/k8s.io/kubernetes/pkg/apis/core/v1/defaults.go +++ b/vendor/k8s.io/kubernetes/pkg/apis/core/v1/defaults.go @@ -17,6 +17,8 @@ limitations under the License. package v1 import ( + "time" + "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/intstr" @@ -223,6 +225,12 @@ func SetDefaults_ProjectedVolumeSource(obj *v1.ProjectedVolumeSource) { obj.DefaultMode = &perm } } +func SetDefaults_ServiceAccountTokenProjection(obj *v1.ServiceAccountTokenProjection) { + hour := int64(time.Hour.Seconds()) + if obj.ExpirationSeconds == nil { + obj.ExpirationSeconds = &hour + } +} func SetDefaults_PersistentVolume(obj *v1.PersistentVolume) { if obj.Status.Phase == "" { obj.Status.Phase = v1.VolumePending diff --git a/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.conversion.go b/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.conversion.go index 3106ad1770..80bf9bc921 100644 --- a/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.conversion.go +++ b/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.conversion.go @@ -374,6 +374,8 @@ func RegisterConversions(scheme *runtime.Scheme) error { Convert_core_ServiceAccount_To_v1_ServiceAccount, Convert_v1_ServiceAccountList_To_core_ServiceAccountList, Convert_core_ServiceAccountList_To_v1_ServiceAccountList, + Convert_v1_ServiceAccountTokenProjection_To_core_ServiceAccountTokenProjection, + Convert_core_ServiceAccountTokenProjection_To_v1_ServiceAccountTokenProjection, Convert_v1_ServiceList_To_core_ServiceList, Convert_core_ServiceList_To_v1_ServiceList, Convert_v1_ServicePort_To_core_ServicePort, @@ -4175,7 +4177,17 @@ func Convert_core_Probe_To_v1_Probe(in *core.Probe, out *v1.Probe, s conversion. } func autoConvert_v1_ProjectedVolumeSource_To_core_ProjectedVolumeSource(in *v1.ProjectedVolumeSource, out *core.ProjectedVolumeSource, s conversion.Scope) error { - out.Sources = *(*[]core.VolumeProjection)(unsafe.Pointer(&in.Sources)) + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]core.VolumeProjection, len(*in)) + for i := range *in { + if err := Convert_v1_VolumeProjection_To_core_VolumeProjection(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Sources = nil + } out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode)) return nil } @@ -4186,7 +4198,17 @@ func Convert_v1_ProjectedVolumeSource_To_core_ProjectedVolumeSource(in *v1.Proje } func autoConvert_core_ProjectedVolumeSource_To_v1_ProjectedVolumeSource(in *core.ProjectedVolumeSource, out *v1.ProjectedVolumeSource, s conversion.Scope) error { - out.Sources = *(*[]v1.VolumeProjection)(unsafe.Pointer(&in.Sources)) + if in.Sources != nil { + in, out := &in.Sources, &out.Sources + *out = make([]v1.VolumeProjection, len(*in)) + for i := range *in { + if err := Convert_core_VolumeProjection_To_v1_VolumeProjection(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Sources = nil + } out.DefaultMode = (*int32)(unsafe.Pointer(in.DefaultMode)) return nil } @@ -5055,6 +5077,34 @@ func Convert_core_ServiceAccountList_To_v1_ServiceAccountList(in *core.ServiceAc return autoConvert_core_ServiceAccountList_To_v1_ServiceAccountList(in, out, s) } +func autoConvert_v1_ServiceAccountTokenProjection_To_core_ServiceAccountTokenProjection(in *v1.ServiceAccountTokenProjection, out *core.ServiceAccountTokenProjection, s conversion.Scope) error { + out.Audience = in.Audience + if err := meta_v1.Convert_Pointer_int64_To_int64(&in.ExpirationSeconds, &out.ExpirationSeconds, s); err != nil { + return err + } + out.Path = in.Path + return nil +} + +// Convert_v1_ServiceAccountTokenProjection_To_core_ServiceAccountTokenProjection is an autogenerated conversion function. +func Convert_v1_ServiceAccountTokenProjection_To_core_ServiceAccountTokenProjection(in *v1.ServiceAccountTokenProjection, out *core.ServiceAccountTokenProjection, s conversion.Scope) error { + return autoConvert_v1_ServiceAccountTokenProjection_To_core_ServiceAccountTokenProjection(in, out, s) +} + +func autoConvert_core_ServiceAccountTokenProjection_To_v1_ServiceAccountTokenProjection(in *core.ServiceAccountTokenProjection, out *v1.ServiceAccountTokenProjection, s conversion.Scope) error { + out.Audience = in.Audience + if err := meta_v1.Convert_int64_To_Pointer_int64(&in.ExpirationSeconds, &out.ExpirationSeconds, s); err != nil { + return err + } + out.Path = in.Path + return nil +} + +// Convert_core_ServiceAccountTokenProjection_To_v1_ServiceAccountTokenProjection is an autogenerated conversion function. +func Convert_core_ServiceAccountTokenProjection_To_v1_ServiceAccountTokenProjection(in *core.ServiceAccountTokenProjection, out *v1.ServiceAccountTokenProjection, s conversion.Scope) error { + return autoConvert_core_ServiceAccountTokenProjection_To_v1_ServiceAccountTokenProjection(in, out, s) +} + func autoConvert_v1_ServiceList_To_core_ServiceList(in *v1.ServiceList, out *core.ServiceList, s conversion.Scope) error { out.ListMeta = in.ListMeta if in.Items != nil { @@ -5487,6 +5537,15 @@ func autoConvert_v1_VolumeProjection_To_core_VolumeProjection(in *v1.VolumeProje out.Secret = (*core.SecretProjection)(unsafe.Pointer(in.Secret)) out.DownwardAPI = (*core.DownwardAPIProjection)(unsafe.Pointer(in.DownwardAPI)) out.ConfigMap = (*core.ConfigMapProjection)(unsafe.Pointer(in.ConfigMap)) + if in.ServiceAccountToken != nil { + in, out := &in.ServiceAccountToken, &out.ServiceAccountToken + *out = new(core.ServiceAccountTokenProjection) + if err := Convert_v1_ServiceAccountTokenProjection_To_core_ServiceAccountTokenProjection(*in, *out, s); err != nil { + return err + } + } else { + out.ServiceAccountToken = nil + } return nil } @@ -5499,6 +5558,15 @@ func autoConvert_core_VolumeProjection_To_v1_VolumeProjection(in *core.VolumePro out.Secret = (*v1.SecretProjection)(unsafe.Pointer(in.Secret)) out.DownwardAPI = (*v1.DownwardAPIProjection)(unsafe.Pointer(in.DownwardAPI)) out.ConfigMap = (*v1.ConfigMapProjection)(unsafe.Pointer(in.ConfigMap)) + if in.ServiceAccountToken != nil { + in, out := &in.ServiceAccountToken, &out.ServiceAccountToken + *out = new(v1.ServiceAccountTokenProjection) + if err := Convert_core_ServiceAccountTokenProjection_To_v1_ServiceAccountTokenProjection(*in, *out, s); err != nil { + return err + } + } else { + out.ServiceAccountToken = nil + } return nil } @@ -5531,7 +5599,15 @@ func autoConvert_v1_VolumeSource_To_core_VolumeSource(in *v1.VolumeSource, out * out.Quobyte = (*core.QuobyteVolumeSource)(unsafe.Pointer(in.Quobyte)) out.AzureDisk = (*core.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk)) out.PhotonPersistentDisk = (*core.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk)) - out.Projected = (*core.ProjectedVolumeSource)(unsafe.Pointer(in.Projected)) + if in.Projected != nil { + in, out := &in.Projected, &out.Projected + *out = new(core.ProjectedVolumeSource) + if err := Convert_v1_ProjectedVolumeSource_To_core_ProjectedVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Projected = nil + } out.PortworxVolume = (*core.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume)) out.ScaleIO = (*core.ScaleIOVolumeSource)(unsafe.Pointer(in.ScaleIO)) out.StorageOS = (*core.StorageOSVolumeSource)(unsafe.Pointer(in.StorageOS)) @@ -5567,7 +5643,15 @@ func autoConvert_core_VolumeSource_To_v1_VolumeSource(in *core.VolumeSource, out out.VsphereVolume = (*v1.VsphereVirtualDiskVolumeSource)(unsafe.Pointer(in.VsphereVolume)) out.AzureDisk = (*v1.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk)) out.PhotonPersistentDisk = (*v1.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk)) - out.Projected = (*v1.ProjectedVolumeSource)(unsafe.Pointer(in.Projected)) + if in.Projected != nil { + in, out := &in.Projected, &out.Projected + *out = new(v1.ProjectedVolumeSource) + if err := Convert_core_ProjectedVolumeSource_To_v1_ProjectedVolumeSource(*in, *out, s); err != nil { + return err + } + } else { + out.Projected = nil + } out.PortworxVolume = (*v1.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume)) out.ScaleIO = (*v1.ScaleIOVolumeSource)(unsafe.Pointer(in.ScaleIO)) out.StorageOS = (*v1.StorageOSVolumeSource)(unsafe.Pointer(in.StorageOS)) diff --git a/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.defaults.go b/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.defaults.go index 3c4dc5e17c..00e0b384aa 100644 --- a/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.defaults.go +++ b/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.defaults.go @@ -213,6 +213,9 @@ func SetObjectDefaults_Pod(in *v1.Pod) { } } } + if b.ServiceAccountToken != nil { + SetDefaults_ServiceAccountTokenProjection(b.ServiceAccountToken) + } } } if a.VolumeSource.ScaleIO != nil { @@ -356,6 +359,9 @@ func SetObjectDefaults_PodTemplate(in *v1.PodTemplate) { } } } + if b.ServiceAccountToken != nil { + SetDefaults_ServiceAccountTokenProjection(b.ServiceAccountToken) + } } } if a.VolumeSource.ScaleIO != nil { @@ -501,6 +507,9 @@ func SetObjectDefaults_ReplicationController(in *v1.ReplicationController) { } } } + if b.ServiceAccountToken != nil { + SetDefaults_ServiceAccountTokenProjection(b.ServiceAccountToken) + } } } if a.VolumeSource.ScaleIO != nil { diff --git a/vendor/k8s.io/kubernetes/pkg/apis/core/validation/validation.go b/vendor/k8s.io/kubernetes/pkg/apis/core/validation/validation.go index 6f0e3eaea7..139d9bc29d 100644 --- a/vendor/k8s.io/kubernetes/pkg/apis/core/validation/validation.go +++ b/vendor/k8s.io/kubernetes/pkg/apis/core/validation/validation.go @@ -1039,6 +1039,21 @@ func validateProjectionSources(projection *core.ProjectedVolumeSource, projectio } } } + if projPath := fldPath.Child("serviceAccountToken"); source.ServiceAccountToken != nil { + numSources++ + if !utilfeature.DefaultFeatureGate.Enabled(features.TokenRequestProjection) { + allErrs = append(allErrs, field.Forbidden(projPath, "TokenRequestProjection feature is not enabled")) + } + if source.ServiceAccountToken.ExpirationSeconds < 10*60 { + allErrs = append(allErrs, field.Invalid(projPath.Child("expirationSeconds"), source.ServiceAccountToken.ExpirationSeconds, "may not specify a duration less than 10 minutes")) + } + if source.ServiceAccountToken.ExpirationSeconds > 1<<32 { + allErrs = append(allErrs, field.Invalid(projPath.Child("expirationSeconds"), source.ServiceAccountToken.ExpirationSeconds, "may not specify a duration larger than 2^32 seconds")) + } + if source.ServiceAccountToken.Path == "" { + allErrs = append(allErrs, field.Required(fldPath.Child("path"), "")) + } + } if numSources > 1 { allErrs = append(allErrs, field.Forbidden(srcPath, "may not specify more than 1 volume type")) } @@ -2749,7 +2764,7 @@ func validateTaintEffect(effect *core.TaintEffect, allowEmpty bool, fldPath *fie // TODO: Uncomment this block when implement TaintEffectNoScheduleNoAdmit. // string(core.TaintEffectNoScheduleNoAdmit), } - allErrors = append(allErrors, field.NotSupported(fldPath, effect, validValues)) + allErrors = append(allErrors, field.NotSupported(fldPath, *effect, validValues)) } return allErrors } @@ -4150,11 +4165,10 @@ func validateNodeConfigSourceSpec(source *core.NodeConfigSource, fldPath *field. // validation specific to Node.Spec.ConfigSource.ConfigMap func validateConfigMapNodeConfigSourceSpec(source *core.ConfigMapNodeConfigSource, fldPath *field.Path) field.ErrorList { allErrs := field.ErrorList{} - // TODO(#61643): Prevent ref.UID from being set here when we switch from requiring UID to respecting all ConfigMap updates - if string(source.UID) == "" { - allErrs = append(allErrs, field.Required(fldPath.Child("uid"), "uid must be set in spec")) + // uid and resourceVersion must not be set in spec + if string(source.UID) != "" { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("uid"), "uid must not be set in spec")) } - // resourceVersion must not be set in spec if source.ResourceVersion != "" { allErrs = append(allErrs, field.Forbidden(fldPath.Child("resourceVersion"), "resourceVersion must not be set in spec")) } @@ -4196,12 +4210,13 @@ func validateNodeConfigSourceStatus(source *core.NodeConfigSource, fldPath *fiel // validation specific to Node.Status.Config.(Active|Assigned|LastKnownGood).ConfigMap func validateConfigMapNodeConfigSourceStatus(source *core.ConfigMapNodeConfigSource, fldPath *field.Path) field.ErrorList { allErrs := field.ErrorList{} - + // uid and resourceVersion must be set in status if string(source.UID) == "" { allErrs = append(allErrs, field.Required(fldPath.Child("uid"), "uid must be set in status")) } - // TODO(#63221): require ResourceVersion in status when we start respecting ConfigMap mutations (the Kubelet isn't tracking it internally until - // that PR, which makes it difficult to report for now). + if source.ResourceVersion == "" { + allErrs = append(allErrs, field.Required(fldPath.Child("resourceVersion"), "resourceVersion must be set in status")) + } return append(allErrs, validateConfigMapNodeConfigSource(source, fldPath)...) } diff --git a/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go b/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go index f4e79ce13b..b066b5cae8 100644 --- a/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go +++ b/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go @@ -5147,6 +5147,22 @@ func (in *ServiceAccountList) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ServiceAccountTokenProjection) DeepCopyInto(out *ServiceAccountTokenProjection) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAccountTokenProjection. +func (in *ServiceAccountTokenProjection) DeepCopy() *ServiceAccountTokenProjection { + if in == nil { + return nil + } + out := new(ServiceAccountTokenProjection) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ServiceList) DeepCopyInto(out *ServiceList) { *out = *in @@ -5556,6 +5572,15 @@ func (in *VolumeProjection) DeepCopyInto(out *VolumeProjection) { (*in).DeepCopyInto(*out) } } + if in.ServiceAccountToken != nil { + in, out := &in.ServiceAccountToken, &out.ServiceAccountToken + if *in == nil { + *out = nil + } else { + *out = new(ServiceAccountTokenProjection) + **out = **in + } + } return } diff --git a/vendor/k8s.io/kubernetes/pkg/cloudprovider/cloud.go b/vendor/k8s.io/kubernetes/pkg/cloudprovider/cloud.go index 530475799d..0358890bcd 100644 --- a/vendor/k8s.io/kubernetes/pkg/cloudprovider/cloud.go +++ b/vendor/k8s.io/kubernetes/pkg/cloudprovider/cloud.go @@ -131,6 +131,7 @@ type Instances interface { // services cannot be used in this method to obtain nodeaddresses NodeAddressesByProviderID(ctx context.Context, providerID string) ([]v1.NodeAddress, error) // InstanceID returns the cloud provider ID of the node with the specified NodeName. + // Note that if the instance does not exist or is no longer running, we must return ("", cloudprovider.InstanceNotFound) InstanceID(ctx context.Context, nodeName types.NodeName) (string, error) // InstanceType returns the type of the specified instance. InstanceType(ctx context.Context, name types.NodeName) (string, error) diff --git a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/BUILD b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/BUILD index 86b2c9e6c6..a3315db2fb 100644 --- a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/BUILD +++ b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/BUILD @@ -13,7 +13,6 @@ go_library( "gce.go", "gce_address_manager.go", "gce_addresses.go", - "gce_addresses_fakes.go", "gce_alpha.go", "gce_annotations.go", "gce_backendservice.go", @@ -34,6 +33,7 @@ go_library( "gce_networkendpointgroup.go", "gce_op.go", "gce_routes.go", + "gce_securitypolicy.go", "gce_targetpool.go", "gce_targetproxy.go", "gce_tpu.go", diff --git a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/gen.go b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/gen.go index 2dff8a8f4b..f84a4bda32 100644 --- a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/gen.go +++ b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/gen.go @@ -3420,6 +3420,7 @@ type AlphaBackendServices interface { List(ctx context.Context, fl *filter.F) ([]*alpha.BackendService, error) Insert(ctx context.Context, key *meta.Key, obj *alpha.BackendService) error Delete(ctx context.Context, key *meta.Key) error + SetSecurityPolicy(context.Context, *meta.Key, *alpha.SecurityPolicyReference) error Update(context.Context, *meta.Key, *alpha.BackendService) error } @@ -3456,11 +3457,12 @@ type MockAlphaBackendServices struct { // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. - GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaBackendServices) (bool, *alpha.BackendService, error) - ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaBackendServices) (bool, []*alpha.BackendService, error) - InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.BackendService, m *MockAlphaBackendServices) (bool, error) - DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaBackendServices) (bool, error) - UpdateHook func(context.Context, *meta.Key, *alpha.BackendService, *MockAlphaBackendServices) error + GetHook func(ctx context.Context, key *meta.Key, m *MockAlphaBackendServices) (bool, *alpha.BackendService, error) + ListHook func(ctx context.Context, fl *filter.F, m *MockAlphaBackendServices) (bool, []*alpha.BackendService, error) + InsertHook func(ctx context.Context, key *meta.Key, obj *alpha.BackendService, m *MockAlphaBackendServices) (bool, error) + DeleteHook func(ctx context.Context, key *meta.Key, m *MockAlphaBackendServices) (bool, error) + SetSecurityPolicyHook func(context.Context, *meta.Key, *alpha.SecurityPolicyReference, *MockAlphaBackendServices) error + UpdateHook func(context.Context, *meta.Key, *alpha.BackendService, *MockAlphaBackendServices) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. @@ -3606,6 +3608,14 @@ func (m *MockAlphaBackendServices) Obj(o *alpha.BackendService) *MockBackendServ return &MockBackendServicesObj{o} } +// SetSecurityPolicy is a mock for the corresponding method. +func (m *MockAlphaBackendServices) SetSecurityPolicy(ctx context.Context, key *meta.Key, arg0 *alpha.SecurityPolicyReference) error { + if m.SetSecurityPolicyHook != nil { + return m.SetSecurityPolicyHook(ctx, key, arg0, m) + } + return nil +} + // Update is a mock for the corresponding method. func (m *MockAlphaBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *alpha.BackendService) error { if m.UpdateHook != nil { @@ -3756,6 +3766,39 @@ func (g *GCEAlphaBackendServices) Delete(ctx context.Context, key *meta.Key) err return err } +// SetSecurityPolicy is a method on GCEAlphaBackendServices. +func (g *GCEAlphaBackendServices) SetSecurityPolicy(ctx context.Context, key *meta.Key, arg0 *alpha.SecurityPolicyReference) error { + glog.V(5).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...): called", ctx, key) + + if !key.Valid() { + glog.V(2).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...): key is invalid (%#v)", ctx, key, key) + return fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "alpha", "BackendServices") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "SetSecurityPolicy", + Version: meta.Version("alpha"), + Service: "BackendServices", + } + glog.V(5).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) + + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...): RateLimiter error: %v", ctx, key, err) + return err + } + call := g.s.Alpha.BackendServices.SetSecurityPolicy(projectID, key.Name, arg0) + call.Context(ctx) + op, err := call.Do() + if err != nil { + glog.V(4).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...) = %+v", ctx, key, err) + return err + } + err = g.s.WaitForCompletion(ctx, op) + glog.V(4).Infof("GCEAlphaBackendServices.SetSecurityPolicy(%v, %v, ...) = %+v", ctx, key, err) + return err +} + // Update is a method on GCEAlphaBackendServices. func (g *GCEAlphaBackendServices) Update(ctx context.Context, key *meta.Key, arg0 *alpha.BackendService) error { glog.V(5).Infof("GCEAlphaBackendServices.Update(%v, %v, ...): called", ctx, key) @@ -11535,6 +11578,11 @@ type BetaSecurityPolicies interface { List(ctx context.Context, fl *filter.F) ([]*beta.SecurityPolicy, error) Insert(ctx context.Context, key *meta.Key, obj *beta.SecurityPolicy) error Delete(ctx context.Context, key *meta.Key) error + AddRule(context.Context, *meta.Key, *beta.SecurityPolicyRule) error + GetRule(context.Context, *meta.Key) (*beta.SecurityPolicyRule, error) + Patch(context.Context, *meta.Key, *beta.SecurityPolicy) error + PatchRule(context.Context, *meta.Key, *beta.SecurityPolicyRule) error + RemoveRule(context.Context, *meta.Key) error } // NewMockBetaSecurityPolicies returns a new mock for SecurityPolicies. @@ -11570,10 +11618,15 @@ type MockBetaSecurityPolicies struct { // order to add your own logic. Return (true, _, _) to prevent the normal // execution flow of the mock. Return (false, nil, nil) to continue with // normal mock behavior/ after the hook function executes. - GetHook func(ctx context.Context, key *meta.Key, m *MockBetaSecurityPolicies) (bool, *beta.SecurityPolicy, error) - ListHook func(ctx context.Context, fl *filter.F, m *MockBetaSecurityPolicies) (bool, []*beta.SecurityPolicy, error) - InsertHook func(ctx context.Context, key *meta.Key, obj *beta.SecurityPolicy, m *MockBetaSecurityPolicies) (bool, error) - DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaSecurityPolicies) (bool, error) + GetHook func(ctx context.Context, key *meta.Key, m *MockBetaSecurityPolicies) (bool, *beta.SecurityPolicy, error) + ListHook func(ctx context.Context, fl *filter.F, m *MockBetaSecurityPolicies) (bool, []*beta.SecurityPolicy, error) + InsertHook func(ctx context.Context, key *meta.Key, obj *beta.SecurityPolicy, m *MockBetaSecurityPolicies) (bool, error) + DeleteHook func(ctx context.Context, key *meta.Key, m *MockBetaSecurityPolicies) (bool, error) + AddRuleHook func(context.Context, *meta.Key, *beta.SecurityPolicyRule, *MockBetaSecurityPolicies) error + GetRuleHook func(context.Context, *meta.Key, *MockBetaSecurityPolicies) (*beta.SecurityPolicyRule, error) + PatchHook func(context.Context, *meta.Key, *beta.SecurityPolicy, *MockBetaSecurityPolicies) error + PatchRuleHook func(context.Context, *meta.Key, *beta.SecurityPolicyRule, *MockBetaSecurityPolicies) error + RemoveRuleHook func(context.Context, *meta.Key, *MockBetaSecurityPolicies) error // X is extra state that can be used as part of the mock. Generated code // will not use this field. @@ -11719,6 +11772,46 @@ func (m *MockBetaSecurityPolicies) Obj(o *beta.SecurityPolicy) *MockSecurityPoli return &MockSecurityPoliciesObj{o} } +// AddRule is a mock for the corresponding method. +func (m *MockBetaSecurityPolicies) AddRule(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyRule) error { + if m.AddRuleHook != nil { + return m.AddRuleHook(ctx, key, arg0, m) + } + return nil +} + +// GetRule is a mock for the corresponding method. +func (m *MockBetaSecurityPolicies) GetRule(ctx context.Context, key *meta.Key) (*beta.SecurityPolicyRule, error) { + if m.GetRuleHook != nil { + return m.GetRuleHook(ctx, key, m) + } + return nil, fmt.Errorf("GetRuleHook must be set") +} + +// Patch is a mock for the corresponding method. +func (m *MockBetaSecurityPolicies) Patch(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicy) error { + if m.PatchHook != nil { + return m.PatchHook(ctx, key, arg0, m) + } + return nil +} + +// PatchRule is a mock for the corresponding method. +func (m *MockBetaSecurityPolicies) PatchRule(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyRule) error { + if m.PatchRuleHook != nil { + return m.PatchRuleHook(ctx, key, arg0, m) + } + return nil +} + +// RemoveRule is a mock for the corresponding method. +func (m *MockBetaSecurityPolicies) RemoveRule(ctx context.Context, key *meta.Key) error { + if m.RemoveRuleHook != nil { + return m.RemoveRuleHook(ctx, key, m) + } + return nil +} + // GCEBetaSecurityPolicies is a simplifying adapter for the GCE SecurityPolicies. type GCEBetaSecurityPolicies struct { s *Service @@ -11861,6 +11954,166 @@ func (g *GCEBetaSecurityPolicies) Delete(ctx context.Context, key *meta.Key) err return err } +// AddRule is a method on GCEBetaSecurityPolicies. +func (g *GCEBetaSecurityPolicies) AddRule(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyRule) error { + glog.V(5).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...): called", ctx, key) + + if !key.Valid() { + glog.V(2).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...): key is invalid (%#v)", ctx, key, key) + return fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "AddRule", + Version: meta.Version("beta"), + Service: "SecurityPolicies", + } + glog.V(5).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) + + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...): RateLimiter error: %v", ctx, key, err) + return err + } + call := g.s.Beta.SecurityPolicies.AddRule(projectID, key.Name, arg0) + call.Context(ctx) + op, err := call.Do() + if err != nil { + glog.V(4).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...) = %+v", ctx, key, err) + return err + } + err = g.s.WaitForCompletion(ctx, op) + glog.V(4).Infof("GCEBetaSecurityPolicies.AddRule(%v, %v, ...) = %+v", ctx, key, err) + return err +} + +// GetRule is a method on GCEBetaSecurityPolicies. +func (g *GCEBetaSecurityPolicies) GetRule(ctx context.Context, key *meta.Key) (*beta.SecurityPolicyRule, error) { + glog.V(5).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...): called", ctx, key) + + if !key.Valid() { + glog.V(2).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...): key is invalid (%#v)", ctx, key, key) + return nil, fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "GetRule", + Version: meta.Version("beta"), + Service: "SecurityPolicies", + } + glog.V(5).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) + + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...): RateLimiter error: %v", ctx, key, err) + return nil, err + } + call := g.s.Beta.SecurityPolicies.GetRule(projectID, key.Name) + call.Context(ctx) + v, err := call.Do() + glog.V(4).Infof("GCEBetaSecurityPolicies.GetRule(%v, %v, ...) = %+v, %v", ctx, key, v, err) + return v, err +} + +// Patch is a method on GCEBetaSecurityPolicies. +func (g *GCEBetaSecurityPolicies) Patch(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicy) error { + glog.V(5).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...): called", ctx, key) + + if !key.Valid() { + glog.V(2).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...): key is invalid (%#v)", ctx, key, key) + return fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "Patch", + Version: meta.Version("beta"), + Service: "SecurityPolicies", + } + glog.V(5).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) + + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...): RateLimiter error: %v", ctx, key, err) + return err + } + call := g.s.Beta.SecurityPolicies.Patch(projectID, key.Name, arg0) + call.Context(ctx) + op, err := call.Do() + if err != nil { + glog.V(4).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...) = %+v", ctx, key, err) + return err + } + err = g.s.WaitForCompletion(ctx, op) + glog.V(4).Infof("GCEBetaSecurityPolicies.Patch(%v, %v, ...) = %+v", ctx, key, err) + return err +} + +// PatchRule is a method on GCEBetaSecurityPolicies. +func (g *GCEBetaSecurityPolicies) PatchRule(ctx context.Context, key *meta.Key, arg0 *beta.SecurityPolicyRule) error { + glog.V(5).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...): called", ctx, key) + + if !key.Valid() { + glog.V(2).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...): key is invalid (%#v)", ctx, key, key) + return fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "PatchRule", + Version: meta.Version("beta"), + Service: "SecurityPolicies", + } + glog.V(5).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) + + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...): RateLimiter error: %v", ctx, key, err) + return err + } + call := g.s.Beta.SecurityPolicies.PatchRule(projectID, key.Name, arg0) + call.Context(ctx) + op, err := call.Do() + if err != nil { + glog.V(4).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...) = %+v", ctx, key, err) + return err + } + err = g.s.WaitForCompletion(ctx, op) + glog.V(4).Infof("GCEBetaSecurityPolicies.PatchRule(%v, %v, ...) = %+v", ctx, key, err) + return err +} + +// RemoveRule is a method on GCEBetaSecurityPolicies. +func (g *GCEBetaSecurityPolicies) RemoveRule(ctx context.Context, key *meta.Key) error { + glog.V(5).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...): called", ctx, key) + + if !key.Valid() { + glog.V(2).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...): key is invalid (%#v)", ctx, key, key) + return fmt.Errorf("invalid GCE key (%+v)", key) + } + projectID := g.s.ProjectRouter.ProjectID(ctx, "beta", "SecurityPolicies") + rk := &RateLimitKey{ + ProjectID: projectID, + Operation: "RemoveRule", + Version: meta.Version("beta"), + Service: "SecurityPolicies", + } + glog.V(5).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...): projectID = %v, rk = %+v", ctx, key, projectID, rk) + + if err := g.s.RateLimiter.Accept(ctx, rk); err != nil { + glog.V(4).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...): RateLimiter error: %v", ctx, key, err) + return err + } + call := g.s.Beta.SecurityPolicies.RemoveRule(projectID, key.Name) + call.Context(ctx) + op, err := call.Do() + if err != nil { + glog.V(4).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...) = %+v", ctx, key, err) + return err + } + err = g.s.WaitForCompletion(ctx, op) + glog.V(4).Infof("GCEBetaSecurityPolicies.RemoveRule(%v, %v, ...) = %+v", ctx, key, err) + return err +} + // SslCertificates is an interface that allows for mocking of SslCertificates. type SslCertificates interface { Get(ctx context.Context, key *meta.Key) (*ga.SslCertificate, error) diff --git a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta/meta.go b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta/meta.go index 3fe5e393a4..0a2f725391 100644 --- a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta/meta.go +++ b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta/meta.go @@ -119,13 +119,16 @@ var AllServices = []*ServiceInfo{ }, }, { - Object: "BackendService", - Service: "BackendServices", - Resource: "backendServices", - version: VersionAlpha, - keyType: Global, - serviceType: reflect.TypeOf(&alpha.BackendServicesService{}), - additionalMethods: []string{"Update"}, + Object: "BackendService", + Service: "BackendServices", + Resource: "backendServices", + version: VersionAlpha, + keyType: Global, + serviceType: reflect.TypeOf(&alpha.BackendServicesService{}), + additionalMethods: []string{ + "Update", + "SetSecurityPolicy", + }, }, { Object: "BackendService", @@ -345,6 +348,13 @@ var AllServices = []*ServiceInfo{ version: VersionBeta, keyType: Global, serviceType: reflect.TypeOf(&beta.SecurityPoliciesService{}), + additionalMethods: []string{ + "AddRule", + "GetRule", + "Patch", + "PatchRule", + "RemoveRule", + }, }, { Object: "SslCertificate", diff --git a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_addresses_fakes.go b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_addresses_fakes.go deleted file mode 100644 index 75dfa571c9..0000000000 --- a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_addresses_fakes.go +++ /dev/null @@ -1,239 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package gce - -import ( - "bytes" - "encoding/json" - "fmt" - "net/http" - - computealpha "google.golang.org/api/compute/v0.alpha" - computebeta "google.golang.org/api/compute/v0.beta" - compute "google.golang.org/api/compute/v1" - - "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud" -) - -// test - -type FakeCloudAddressService struct { - count int - // reservedAddrs tracks usage of IP addresses - // Key is the IP address as a string - reservedAddrs map[string]bool - // addrsByRegionAndName - // Outer key is for region string; inner key is for address name. - addrsByRegionAndName map[string]map[string]*computealpha.Address -} - -// FakeCloudAddressService Implements CloudAddressService -var _ CloudAddressService = &FakeCloudAddressService{} - -func NewFakeCloudAddressService() *FakeCloudAddressService { - return &FakeCloudAddressService{ - reservedAddrs: make(map[string]bool), - addrsByRegionAndName: make(map[string]map[string]*computealpha.Address), - } -} - -// SetRegionalAddresses sets the addresses of there region. This is used for -// setting the test environment. -func (cas *FakeCloudAddressService) SetRegionalAddresses(region string, addrs []*computealpha.Address) { - // Reset addresses in the region. - cas.addrsByRegionAndName[region] = make(map[string]*computealpha.Address) - - for _, addr := range addrs { - cas.reservedAddrs[addr.Address] = true - cas.addrsByRegionAndName[region][addr.Name] = addr - } -} - -func (cas *FakeCloudAddressService) ReserveAlphaRegionAddress(addr *computealpha.Address, region string) error { - if addr.Address == "" { - addr.Address = fmt.Sprintf("1.2.3.%d", cas.count) - cas.count++ - } - - if addr.AddressType == "" { - addr.AddressType = string(cloud.SchemeExternal) - } - - if cas.reservedAddrs[addr.Address] { - msg := "IP in use" - // When the IP is already in use, this call returns an error code based - // on the type (internal vs external) of the address. This is to be - // consistent with actual GCE API. - switch cloud.LbScheme(addr.AddressType) { - case cloud.SchemeExternal: - return makeGoogleAPIError(http.StatusBadRequest, msg) - default: - return makeGoogleAPIError(http.StatusConflict, msg) - } - } - - if _, exists := cas.addrsByRegionAndName[region]; !exists { - cas.addrsByRegionAndName[region] = make(map[string]*computealpha.Address) - } - - if _, exists := cas.addrsByRegionAndName[region][addr.Name]; exists { - return makeGoogleAPIError(http.StatusConflict, "name in use") - } - - cas.addrsByRegionAndName[region][addr.Name] = addr - cas.reservedAddrs[addr.Address] = true - return nil -} - -func (cas *FakeCloudAddressService) ReserveBetaRegionAddress(addr *computebeta.Address, region string) error { - alphaAddr := convertToAlphaAddress(addr) - return cas.ReserveAlphaRegionAddress(alphaAddr, region) -} - -func (cas *FakeCloudAddressService) ReserveRegionAddress(addr *compute.Address, region string) error { - alphaAddr := convertToAlphaAddress(addr) - return cas.ReserveAlphaRegionAddress(alphaAddr, region) -} - -func (cas *FakeCloudAddressService) GetAlphaRegionAddress(name, region string) (*computealpha.Address, error) { - if _, exists := cas.addrsByRegionAndName[region]; !exists { - return nil, makeGoogleAPINotFoundError("") - } - - if addr, exists := cas.addrsByRegionAndName[region][name]; !exists { - return nil, makeGoogleAPINotFoundError("") - } else { - return addr, nil - } -} - -func (cas *FakeCloudAddressService) GetBetaRegionAddress(name, region string) (*computebeta.Address, error) { - addr, err := cas.GetAlphaRegionAddress(name, region) - if addr != nil { - return convertToBetaAddress(addr), err - } - return nil, err -} - -func (cas *FakeCloudAddressService) GetRegionAddress(name, region string) (*compute.Address, error) { - addr, err := cas.GetAlphaRegionAddress(name, region) - if addr != nil { - return convertToV1Address(addr), err - } - return nil, err -} - -func (cas *FakeCloudAddressService) DeleteRegionAddress(name, region string) error { - if _, exists := cas.addrsByRegionAndName[region]; !exists { - return makeGoogleAPINotFoundError("") - } - - addr, exists := cas.addrsByRegionAndName[region][name] - if !exists { - return makeGoogleAPINotFoundError("") - } - - delete(cas.reservedAddrs, addr.Address) - delete(cas.addrsByRegionAndName[region], name) - return nil -} - -func (cas *FakeCloudAddressService) GetAlphaRegionAddressByIP(region, ipAddress string) (*computealpha.Address, error) { - if _, exists := cas.addrsByRegionAndName[region]; !exists { - return nil, makeGoogleAPINotFoundError("") - } - - for _, addr := range cas.addrsByRegionAndName[region] { - if addr.Address == ipAddress { - return addr, nil - } - } - return nil, makeGoogleAPINotFoundError("") -} - -func (cas *FakeCloudAddressService) GetBetaRegionAddressByIP(name, region string) (*computebeta.Address, error) { - addr, err := cas.GetAlphaRegionAddressByIP(name, region) - if addr != nil { - return convertToBetaAddress(addr), nil - } - return nil, err -} - -func (cas *FakeCloudAddressService) GetRegionAddressByIP(name, region string) (*compute.Address, error) { - addr, err := cas.GetAlphaRegionAddressByIP(name, region) - if addr != nil { - return convertToV1Address(addr), nil - } - return nil, err -} - -func (cas *FakeCloudAddressService) getNetworkTierFromAddress(name, region string) (string, error) { - addr, err := cas.GetAlphaRegionAddress(name, region) - if err != nil { - return "", err - } - return addr.NetworkTier, nil -} - -func convertToV1Address(object gceObject) *compute.Address { - enc, err := object.MarshalJSON() - if err != nil { - panic(fmt.Sprintf("Failed to encode to json: %v", err)) - } - var addr compute.Address - if err := json.Unmarshal(enc, &addr); err != nil { - panic(fmt.Sprintf("Failed to convert GCE apiObject %v to v1 address: %v", object, err)) - } - return &addr -} - -func convertToAlphaAddress(object gceObject) *computealpha.Address { - enc, err := object.MarshalJSON() - if err != nil { - panic(fmt.Sprintf("Failed to encode to json: %v", err)) - } - var addr computealpha.Address - if err := json.Unmarshal(enc, &addr); err != nil { - panic(fmt.Sprintf("Failed to convert GCE apiObject %v to alpha address: %v", object, err)) - } - // Set the default values for the Alpha fields. - addr.NetworkTier = cloud.NetworkTierDefault.ToGCEValue() - return &addr -} - -func convertToBetaAddress(object gceObject) *computebeta.Address { - enc, err := object.MarshalJSON() - if err != nil { - panic(fmt.Sprintf("Failed to encode to json: %v", err)) - } - var addr computebeta.Address - if err := json.Unmarshal(enc, &addr); err != nil { - panic(fmt.Sprintf("Failed to convert GCE apiObject %v to beta address: %v", object, err)) - } - return &addr -} - -func (cas *FakeCloudAddressService) String() string { - var b bytes.Buffer - for region, regAddresses := range cas.addrsByRegionAndName { - b.WriteString(fmt.Sprintf("%v:\n", region)) - for name, addr := range regAddresses { - b.WriteString(fmt.Sprintf(" %v: %v\n", name, addr.Address)) - } - } - return b.String() -} diff --git a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_backendservice.go b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_backendservice.go index a059b2c9ba..d63728038e 100644 --- a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_backendservice.go +++ b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_backendservice.go @@ -42,6 +42,13 @@ func (gce *GCECloud) GetGlobalBackendService(name string) (*compute.BackendServi return v, mc.Observe(err) } +// GetBetaGlobalBackendService retrieves beta backend by name. +func (gce *GCECloud) GetBetaGlobalBackendService(name string) (*computebeta.BackendService, error) { + mc := newBackendServiceMetricContextWithVersion("get", "", computeBetaVersion) + v, err := gce.c.BetaBackendServices().Get(context.Background(), meta.GlobalKey(name)) + return v, mc.Observe(err) +} + // GetAlphaGlobalBackendService retrieves alpha backend by name. func (gce *GCECloud) GetAlphaGlobalBackendService(name string) (*computealpha.BackendService, error) { mc := newBackendServiceMetricContextWithVersion("get", "", computeAlphaVersion) @@ -147,3 +154,10 @@ func (gce *GCECloud) SetSecurityPolicyForBetaGlobalBackendService(backendService mc := newBackendServiceMetricContextWithVersion("set_security_policy", "", computeBetaVersion) return mc.Observe(gce.c.BetaBackendServices().SetSecurityPolicy(context.Background(), meta.GlobalKey(backendServiceName), securityPolicyReference)) } + +// SetSecurityPolicyForAlphaGlobalBackendService sets the given +// SecurityPolicyReference for the BackendService identified by the given name. +func (gce *GCECloud) SetSecurityPolicyForAlphaGlobalBackendService(backendServiceName string, securityPolicyReference *computealpha.SecurityPolicyReference) error { + mc := newBackendServiceMetricContextWithVersion("set_security_policy", "", computeAlphaVersion) + return mc.Observe(gce.c.AlphaBackendServices().SetSecurityPolicy(context.Background(), meta.GlobalKey(backendServiceName), securityPolicyReference)) +} diff --git a/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_securitypolicy.go b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_securitypolicy.go new file mode 100644 index 0000000000..bec23a644f --- /dev/null +++ b/vendor/k8s.io/kubernetes/pkg/cloudprovider/providers/gce/gce_securitypolicy.go @@ -0,0 +1,90 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package gce + +import ( + "context" + + computebeta "google.golang.org/api/compute/v0.beta" + + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter" + "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta" +) + +func newSecurityPolicyMetricContextWithVersion(request, version string) *metricContext { + return newGenericMetricContext("securitypolicy", request, "", unusedMetricLabel, version) +} + +// GetBetaSecurityPolicy retrieves a security policy. +func (gce *GCECloud) GetBetaSecurityPolicy(name string) (*computebeta.SecurityPolicy, error) { + mc := newSecurityPolicyMetricContextWithVersion("get", computeBetaVersion) + v, err := gce.c.BetaSecurityPolicies().Get(context.Background(), meta.GlobalKey(name)) + return v, mc.Observe(err) +} + +// ListBetaSecurityPolicy lists all security policies in the project. +func (gce *GCECloud) ListBetaSecurityPolicy() ([]*computebeta.SecurityPolicy, error) { + mc := newSecurityPolicyMetricContextWithVersion("list", computeBetaVersion) + v, err := gce.c.BetaSecurityPolicies().List(context.Background(), filter.None) + return v, mc.Observe(err) +} + +// CreateBetaSecurityPolicy creates the given security policy. +func (gce *GCECloud) CreateBetaSecurityPolicy(sp *computebeta.SecurityPolicy) error { + mc := newSecurityPolicyMetricContextWithVersion("create", computeBetaVersion) + return mc.Observe(gce.c.BetaSecurityPolicies().Insert(context.Background(), meta.GlobalKey(sp.Name), sp)) +} + +// DeleteBetaSecurityPolicy deletes the given security policy. +func (gce *GCECloud) DeleteBetaSecurityPolicy(name string) error { + mc := newSecurityPolicyMetricContextWithVersion("delete", computeBetaVersion) + return mc.Observe(gce.c.BetaSecurityPolicies().Delete(context.Background(), meta.GlobalKey(name))) +} + +// PatchBetaSecurityPolicy applies the given security policy as a +// patch to an existing security policy. +func (gce *GCECloud) PatchBetaSecurityPolicy(sp *computebeta.SecurityPolicy) error { + mc := newSecurityPolicyMetricContextWithVersion("patch", computeBetaVersion) + return mc.Observe(gce.c.BetaSecurityPolicies().Patch(context.Background(), meta.GlobalKey(sp.Name), sp)) +} + +// GetRuleForBetaSecurityPolicy gets rule from a security policy. +func (gce *GCECloud) GetRuleForBetaSecurityPolicy(name string) (*computebeta.SecurityPolicyRule, error) { + mc := newSecurityPolicyMetricContextWithVersion("get_rule", computeBetaVersion) + v, err := gce.c.BetaSecurityPolicies().GetRule(context.Background(), meta.GlobalKey(name)) + return v, mc.Observe(err) +} + +// AddRuletoBetaSecurityPolicy adds the given security policy rule to +// a security policy. +func (gce *GCECloud) AddRuletoBetaSecurityPolicy(name string, spr *computebeta.SecurityPolicyRule) error { + mc := newSecurityPolicyMetricContextWithVersion("add_rule", computeBetaVersion) + return mc.Observe(gce.c.BetaSecurityPolicies().AddRule(context.Background(), meta.GlobalKey(name), spr)) +} + +// PatchRuleForBetaSecurityPolicy patches the given security policy +// rule to a security policy. +func (gce *GCECloud) PatchRuleForBetaSecurityPolicy(name string, spr *computebeta.SecurityPolicyRule) error { + mc := newSecurityPolicyMetricContextWithVersion("patch_rule", computeBetaVersion) + return mc.Observe(gce.c.BetaSecurityPolicies().PatchRule(context.Background(), meta.GlobalKey(name), spr)) +} + +// RemoveRuleFromBetaSecurityPolicy removes rule from a security policy. +func (gce *GCECloud) RemoveRuleFromBetaSecurityPolicy(name string) error { + mc := newSecurityPolicyMetricContextWithVersion("remove_rule", computeBetaVersion) + return mc.Observe(gce.c.BetaSecurityPolicies().RemoveRule(context.Background(), meta.GlobalKey(name))) +} diff --git a/vendor/k8s.io/kubernetes/pkg/controller/BUILD b/vendor/k8s.io/kubernetes/pkg/controller/BUILD index 3c9438c63f..d2d5ed451f 100644 --- a/vendor/k8s.io/kubernetes/pkg/controller/BUILD +++ b/vendor/k8s.io/kubernetes/pkg/controller/BUILD @@ -19,8 +19,8 @@ go_test( "//pkg/controller/testutil:go_default_library", "//pkg/securitycontext:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", + "//vendor/k8s.io/api/apps/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/labels:go_default_library", @@ -64,7 +64,6 @@ go_library( "//vendor/k8s.io/api/apps/v1:go_default_library", "//vendor/k8s.io/api/authentication/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", - "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", diff --git a/vendor/k8s.io/kubernetes/pkg/controller/controller_ref_manager.go b/vendor/k8s.io/kubernetes/pkg/controller/controller_ref_manager.go index 21d7aa302e..6cf2ac1894 100644 --- a/vendor/k8s.io/kubernetes/pkg/controller/controller_ref_manager.go +++ b/vendor/k8s.io/kubernetes/pkg/controller/controller_ref_manager.go @@ -23,7 +23,6 @@ import ( "github.com/golang/glog" apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" - extensions "k8s.io/api/extensions/v1beta1" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" @@ -301,18 +300,18 @@ func NewReplicaSetControllerRefManager( // If the error is nil, either the reconciliation succeeded, or no // reconciliation was necessary. The list of ReplicaSets that you now own is // returned. -func (m *ReplicaSetControllerRefManager) ClaimReplicaSets(sets []*extensions.ReplicaSet) ([]*extensions.ReplicaSet, error) { - var claimed []*extensions.ReplicaSet +func (m *ReplicaSetControllerRefManager) ClaimReplicaSets(sets []*apps.ReplicaSet) ([]*apps.ReplicaSet, error) { + var claimed []*apps.ReplicaSet var errlist []error match := func(obj metav1.Object) bool { return m.Selector.Matches(labels.Set(obj.GetLabels())) } adopt := func(obj metav1.Object) error { - return m.AdoptReplicaSet(obj.(*extensions.ReplicaSet)) + return m.AdoptReplicaSet(obj.(*apps.ReplicaSet)) } release := func(obj metav1.Object) error { - return m.ReleaseReplicaSet(obj.(*extensions.ReplicaSet)) + return m.ReleaseReplicaSet(obj.(*apps.ReplicaSet)) } for _, rs := range sets { @@ -330,7 +329,7 @@ func (m *ReplicaSetControllerRefManager) ClaimReplicaSets(sets []*extensions.Rep // AdoptReplicaSet sends a patch to take control of the ReplicaSet. It returns // the error if the patching fails. -func (m *ReplicaSetControllerRefManager) AdoptReplicaSet(rs *extensions.ReplicaSet) error { +func (m *ReplicaSetControllerRefManager) AdoptReplicaSet(rs *apps.ReplicaSet) error { if err := m.CanAdopt(); err != nil { return fmt.Errorf("can't adopt ReplicaSet %v/%v (%v): %v", rs.Namespace, rs.Name, rs.UID, err) } @@ -345,7 +344,7 @@ func (m *ReplicaSetControllerRefManager) AdoptReplicaSet(rs *extensions.ReplicaS // ReleaseReplicaSet sends a patch to free the ReplicaSet from the control of the Deployment controller. // It returns the error if the patching fails. 404 and 422 errors are ignored. -func (m *ReplicaSetControllerRefManager) ReleaseReplicaSet(replicaSet *extensions.ReplicaSet) error { +func (m *ReplicaSetControllerRefManager) ReleaseReplicaSet(replicaSet *apps.ReplicaSet) error { glog.V(2).Infof("patching ReplicaSet %s_%s to remove its controllerRef to %s/%s:%s", replicaSet.Namespace, replicaSet.Name, m.controllerKind.GroupVersion(), m.controllerKind.Kind, m.Controller.GetName()) deleteOwnerRefPatch := fmt.Sprintf(`{"metadata":{"ownerReferences":[{"$patch":"delete","uid":"%s"}],"uid":"%s"}}`, m.Controller.GetUID(), replicaSet.UID) diff --git a/vendor/k8s.io/kubernetes/pkg/controller/controller_utils.go b/vendor/k8s.io/kubernetes/pkg/controller/controller_utils.go index cc3f582800..fb00a7567a 100644 --- a/vendor/k8s.io/kubernetes/pkg/controller/controller_utils.go +++ b/vendor/k8s.io/kubernetes/pkg/controller/controller_utils.go @@ -25,8 +25,8 @@ import ( "sync/atomic" "time" + apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" - extensions "k8s.io/api/extensions/v1beta1" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" @@ -818,18 +818,18 @@ func IsPodActive(p *v1.Pod) bool { } // FilterActiveReplicaSets returns replica sets that have (or at least ought to have) pods. -func FilterActiveReplicaSets(replicaSets []*extensions.ReplicaSet) []*extensions.ReplicaSet { - activeFilter := func(rs *extensions.ReplicaSet) bool { +func FilterActiveReplicaSets(replicaSets []*apps.ReplicaSet) []*apps.ReplicaSet { + activeFilter := func(rs *apps.ReplicaSet) bool { return rs != nil && *(rs.Spec.Replicas) > 0 } return FilterReplicaSets(replicaSets, activeFilter) } -type filterRS func(rs *extensions.ReplicaSet) bool +type filterRS func(rs *apps.ReplicaSet) bool // FilterReplicaSets returns replica sets that are filtered by filterFn (all returned ones should match filterFn). -func FilterReplicaSets(RSes []*extensions.ReplicaSet, filterFn filterRS) []*extensions.ReplicaSet { - var filtered []*extensions.ReplicaSet +func FilterReplicaSets(RSes []*apps.ReplicaSet, filterFn filterRS) []*apps.ReplicaSet { + var filtered []*apps.ReplicaSet for i := range RSes { if filterFn(RSes[i]) { filtered = append(filtered, RSes[i]) @@ -859,7 +859,7 @@ func (o ControllersByCreationTimestamp) Less(i, j int) bool { } // ReplicaSetsByCreationTimestamp sorts a list of ReplicaSet by creation timestamp, using their names as a tie breaker. -type ReplicaSetsByCreationTimestamp []*extensions.ReplicaSet +type ReplicaSetsByCreationTimestamp []*apps.ReplicaSet func (o ReplicaSetsByCreationTimestamp) Len() int { return len(o) } func (o ReplicaSetsByCreationTimestamp) Swap(i, j int) { o[i], o[j] = o[j], o[i] } @@ -872,7 +872,7 @@ func (o ReplicaSetsByCreationTimestamp) Less(i, j int) bool { // ReplicaSetsBySizeOlder sorts a list of ReplicaSet by size in descending order, using their creation timestamp or name as a tie breaker. // By using the creation timestamp, this sorts from old to new replica sets. -type ReplicaSetsBySizeOlder []*extensions.ReplicaSet +type ReplicaSetsBySizeOlder []*apps.ReplicaSet func (o ReplicaSetsBySizeOlder) Len() int { return len(o) } func (o ReplicaSetsBySizeOlder) Swap(i, j int) { o[i], o[j] = o[j], o[i] } @@ -885,7 +885,7 @@ func (o ReplicaSetsBySizeOlder) Less(i, j int) bool { // ReplicaSetsBySizeNewer sorts a list of ReplicaSet by size in descending order, using their creation timestamp or name as a tie breaker. // By using the creation timestamp, this sorts from new to old replica sets. -type ReplicaSetsBySizeNewer []*extensions.ReplicaSet +type ReplicaSetsBySizeNewer []*apps.ReplicaSet func (o ReplicaSetsBySizeNewer) Len() int { return len(o) } func (o ReplicaSetsBySizeNewer) Swap(i, j int) { o[i], o[j] = o[j], o[i] } diff --git a/vendor/k8s.io/kubernetes/pkg/features/kube_features.go b/vendor/k8s.io/kubernetes/pkg/features/kube_features.go index 3e4c6f269f..63965511ef 100644 --- a/vendor/k8s.io/kubernetes/pkg/features/kube_features.go +++ b/vendor/k8s.io/kubernetes/pkg/features/kube_features.go @@ -35,6 +35,7 @@ const ( // owner: @mtaufen // alpha: v1.4 + // beta: v1.11 DynamicKubeletConfig utilfeature.Feature = "DynamicKubeletConfig" // owner: @pweil- @@ -94,7 +95,7 @@ const ( LocalStorageCapacityIsolation utilfeature.Feature = "LocalStorageCapacityIsolation" // owner: @gnufied - // alpha: v1.8 + // beta: v1.11 // Ability to Expand persistent volumes ExpandPersistentVolumes utilfeature.Feature = "ExpandPersistentVolumes" @@ -211,7 +212,7 @@ const ( ResourceLimitsPriorityFunction utilfeature.Feature = "ResourceLimitsPriorityFunction" // owner: @m1093782566 - // beta: v1.9 + // GA: v1.11 // // Implement IPVS-based in-cluster service load balancing SupportIPVSProxyMode utilfeature.Feature = "SupportIPVSProxyMode" @@ -247,8 +248,14 @@ const ( // Implement TokenRequest endpoint on service account resources. TokenRequest utilfeature.Feature = "TokenRequest" + // owner: @mikedanese + // alpha: v1.11 + // + // Enable ServiceAccountTokenVolumeProjection support in ProjectedVolumes. + TokenRequestProjection utilfeature.Feature = "TokenRequestProjection" + // owner: @Random-Liu - // alpha: v1.10 + // beta: v1.11 // // Enable container log rotation for cri container runtime CRIContainerLogRotation utilfeature.Feature = "CRIContainerLogRotation" @@ -279,6 +286,19 @@ const ( // A node which has closer cpu,memory utilization and volume count is favoured by scheduler // while making decisions. BalanceAttachedNodeVolumes utilfeature.Feature = "BalanceAttachedNodeVolumes" + + // owner: @lichuqiang + // alpha: v1.11 + // + // Extend the default scheduler to be aware of volume topology and handle PV provisioning + DynamicProvisioningScheduling utilfeature.Feature = "DynamicProvisioningScheduling" + + // owner: @kevtaylor + // alpha: v1.11 + // + // Allow subpath environment variable substitution + // Only applicable if the VolumeSubpath feature is also enabled + VolumeSubpathEnvExpansion utilfeature.Feature = "VolumeSubpathEnvExpansion" ) func init() { @@ -290,7 +310,7 @@ func init() { // available throughout Kubernetes binaries. var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureSpec{ AppArmor: {Default: true, PreRelease: utilfeature.Beta}, - DynamicKubeletConfig: {Default: false, PreRelease: utilfeature.Alpha}, + DynamicKubeletConfig: {Default: true, PreRelease: utilfeature.Beta}, ExperimentalHostUserNamespaceDefaultingGate: {Default: false, PreRelease: utilfeature.Beta}, ExperimentalCriticalPodAnnotation: {Default: false, PreRelease: utilfeature.Alpha}, DevicePlugins: {Default: true, PreRelease: utilfeature.Beta}, @@ -307,7 +327,7 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS TaintNodesByCondition: {Default: false, PreRelease: utilfeature.Alpha}, MountPropagation: {Default: true, PreRelease: utilfeature.Beta}, QOSReserved: {Default: false, PreRelease: utilfeature.Alpha}, - ExpandPersistentVolumes: {Default: false, PreRelease: utilfeature.Alpha}, + ExpandPersistentVolumes: {Default: true, PreRelease: utilfeature.Beta}, CPUManager: {Default: true, PreRelease: utilfeature.Beta}, ServiceNodeExclusion: {Default: false, PreRelease: utilfeature.Alpha}, MountContainers: {Default: false, PreRelease: utilfeature.Alpha}, @@ -317,16 +337,19 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS BlockVolume: {Default: false, PreRelease: utilfeature.Alpha}, StorageObjectInUseProtection: {Default: true, PreRelease: utilfeature.GA}, ResourceLimitsPriorityFunction: {Default: false, PreRelease: utilfeature.Alpha}, - SupportIPVSProxyMode: {Default: true, PreRelease: utilfeature.Beta}, + SupportIPVSProxyMode: {Default: true, PreRelease: utilfeature.GA}, SupportPodPidsLimit: {Default: false, PreRelease: utilfeature.Alpha}, HyperVContainer: {Default: false, PreRelease: utilfeature.Alpha}, ScheduleDaemonSetPods: {Default: false, PreRelease: utilfeature.Alpha}, TokenRequest: {Default: false, PreRelease: utilfeature.Alpha}, - CRIContainerLogRotation: {Default: false, PreRelease: utilfeature.Alpha}, + TokenRequestProjection: {Default: false, PreRelease: utilfeature.Alpha}, + CRIContainerLogRotation: {Default: true, PreRelease: utilfeature.Beta}, GCERegionalPersistentDisk: {Default: true, PreRelease: utilfeature.Beta}, RunAsGroup: {Default: false, PreRelease: utilfeature.Alpha}, VolumeSubpath: {Default: true, PreRelease: utilfeature.GA}, BalanceAttachedNodeVolumes: {Default: false, PreRelease: utilfeature.Alpha}, + DynamicProvisioningScheduling: {Default: false, PreRelease: utilfeature.Alpha}, + VolumeSubpathEnvExpansion: {Default: false, PreRelease: utilfeature.Alpha}, // inherited features from generic apiserver, relisted here to get a conflict if it is changed // unintentionally on either side: @@ -339,7 +362,7 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS // inherited features from apiextensions-apiserver, relisted here to get a conflict if it is changed // unintentionally on either side: apiextensionsfeatures.CustomResourceValidation: {Default: true, PreRelease: utilfeature.Beta}, - apiextensionsfeatures.CustomResourceSubresources: {Default: false, PreRelease: utilfeature.Alpha}, + apiextensionsfeatures.CustomResourceSubresources: {Default: true, PreRelease: utilfeature.Beta}, // features that enable backwards compatibility but are scheduled to be removed ServiceProxyAllowExternalIPs: {Default: false, PreRelease: utilfeature.Deprecated}, diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/apis/BUILD b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/BUILD index 47cb8184cc..2a22e48121 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/apis/BUILD +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/apis/BUILD @@ -41,6 +41,7 @@ filegroup( "//pkg/kubelet/apis/deviceplugin/v1alpha:all-srcs", "//pkg/kubelet/apis/deviceplugin/v1beta1:all-srcs", "//pkg/kubelet/apis/kubeletconfig:all-srcs", + "//pkg/kubelet/apis/pluginregistration/v1alpha1:all-srcs", "//pkg/kubelet/apis/stats/v1alpha1:all-srcs", ], tags = ["automanaged"], diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/types/BUILD b/vendor/k8s.io/kubernetes/pkg/kubelet/types/BUILD index c362d096de..b1d5ffd1ae 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/types/BUILD +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/types/BUILD @@ -12,6 +12,7 @@ go_library( "constants.go", "doc.go", "labels.go", + "pod_status.go", "pod_update.go", "types.go", ], @@ -29,6 +30,7 @@ go_test( name = "go_default_test", srcs = [ "labels_test.go", + "pod_status_test.go", "pod_update_test.go", "types_test.go", ], diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_status.go b/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_status.go new file mode 100644 index 0000000000..a7756382b3 --- /dev/null +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_status.go @@ -0,0 +1,39 @@ +/* +Copyright 2018 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package types + +import ( + "k8s.io/api/core/v1" +) + +// PodConditionsByKubelet is the list of pod conditions owned by kubelet +var PodConditionsByKubelet = []v1.PodConditionType{ + v1.PodScheduled, + v1.PodReady, + v1.PodInitialized, + v1.PodReasonUnschedulable, +} + +// PodConditionByKubelet returns if the pod condition type is owned by kubelet +func PodConditionByKubelet(conditionType v1.PodConditionType) bool { + for _, c := range PodConditionsByKubelet { + if c == conditionType { + return true + } + } + return false +} diff --git a/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_update.go b/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_update.go index 64083315b9..f13d8fc27c 100644 --- a/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_update.go +++ b/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_update.go @@ -141,7 +141,7 @@ func (sp SyncPodType) String() string { } // IsCriticalPod returns true if the pod bears the critical pod annotation key or if pod's priority is greater than -// or equal to SystemCriticalPriority. Both the rescheduler(deprecated in 1.10) and the kubelet use this function +// or equal to SystemCriticalPriority. Both the default scheduler and the kubelet use this function // to make admission and scheduling decisions. func IsCriticalPod(pod *v1.Pod) bool { return IsCritical(pod.Namespace, pod.Annotations) || (pod.Spec.Priority != nil && IsCriticalPodBasedOnPriority(*pod.Spec.Priority)) diff --git a/vendor/k8s.io/kubernetes/pkg/scheduler/schedulercache/node_info.go b/vendor/k8s.io/kubernetes/pkg/scheduler/schedulercache/node_info.go index 2773437327..3fbcbce8ea 100644 --- a/vendor/k8s.io/kubernetes/pkg/scheduler/schedulercache/node_info.go +++ b/vendor/k8s.io/kubernetes/pkg/scheduler/schedulercache/node_info.go @@ -293,8 +293,8 @@ func (n *NodeInfo) UsedPorts() util.HostPortInfo { return n.usedPorts } -// Images returns the image size information on this node. -func (n *NodeInfo) Images() map[string]int64 { +// ImageSizes returns the image size information on this node. +func (n *NodeInfo) ImageSizes() map[string]int64 { if n == nil { return nil } @@ -603,18 +603,18 @@ func (n *NodeInfo) FilterOutPods(pods []*v1.Pod) []*v1.Pod { } filtered := make([]*v1.Pod, 0, len(pods)) for _, p := range pods { - if p.Spec.NodeName == node.Name { - // If pod is on the given node, add it to 'filtered' only if it is present in nodeInfo. - podKey, _ := getPodKey(p) - for _, np := range n.Pods() { - npodkey, _ := getPodKey(np) - if npodkey == podKey { - filtered = append(filtered, p) - break - } - } - } else { + if p.Spec.NodeName != node.Name { filtered = append(filtered, p) + continue + } + // If pod is on the given node, add it to 'filtered' only if it is present in nodeInfo. + podKey, _ := getPodKey(p) + for _, np := range n.Pods() { + npodkey, _ := getPodKey(np) + if npodkey == podKey { + filtered = append(filtered, p) + break + } } } return filtered diff --git a/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount.go b/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount.go index 3145d71dd5..fcb948aa34 100644 --- a/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount.go +++ b/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount.go @@ -159,3 +159,7 @@ func (m *execMounter) GetMountRefs(pathname string) ([]string, error) { func (m *execMounter) GetFSGroup(pathname string) (int64, error) { return m.wrappedMounter.GetFSGroup(pathname) } + +func (m *execMounter) GetSELinuxSupport(pathname string) (bool, error) { + return m.wrappedMounter.GetSELinuxSupport(pathname) +} diff --git a/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount_unsupported.go b/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount_unsupported.go index 5274a3938a..cbb5bbc159 100644 --- a/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount_unsupported.go +++ b/vendor/k8s.io/kubernetes/pkg/util/mount/exec_mount_unsupported.go @@ -106,3 +106,7 @@ func (mounter *execMounter) GetMountRefs(pathname string) ([]string, error) { func (mounter *execMounter) GetFSGroup(pathname string) (int64, error) { return -1, errors.New("not implemented") } + +func (mounter *execMounter) GetSELinuxSupport(pathname string) (bool, error) { + return false, errors.New("not implemented") +} diff --git a/vendor/k8s.io/kubernetes/pkg/util/mount/fake.go b/vendor/k8s.io/kubernetes/pkg/util/mount/fake.go index ef79e73195..f82f669b2e 100644 --- a/vendor/k8s.io/kubernetes/pkg/util/mount/fake.go +++ b/vendor/k8s.io/kubernetes/pkg/util/mount/fake.go @@ -228,3 +228,7 @@ func (f *FakeMounter) GetMountRefs(pathname string) ([]string, error) { func (f *FakeMounter) GetFSGroup(pathname string) (int64, error) { return -1, errors.New("GetFSGroup not implemented") } + +func (f *FakeMounter) GetSELinuxSupport(pathname string) (bool, error) { + return false, errors.New("GetSELinuxSupport not implemented") +} diff --git a/vendor/k8s.io/kubernetes/pkg/util/mount/mount.go b/vendor/k8s.io/kubernetes/pkg/util/mount/mount.go index a7a08fa82f..0c59ca9ebb 100644 --- a/vendor/k8s.io/kubernetes/pkg/util/mount/mount.go +++ b/vendor/k8s.io/kubernetes/pkg/util/mount/mount.go @@ -114,6 +114,9 @@ type Interface interface { GetMountRefs(pathname string) ([]string, error) // GetFSGroup returns FSGroup of the path. GetFSGroup(pathname string) (int64, error) + // GetSELinuxSupport returns true if given path is on a mount that supports + // SELinux. + GetSELinuxSupport(pathname string) (bool, error) } type Subpath struct { diff --git a/vendor/k8s.io/kubernetes/pkg/util/mount/mount_linux.go b/vendor/k8s.io/kubernetes/pkg/util/mount/mount_linux.go index 05bf54dae8..d60d6527e8 100644 --- a/vendor/k8s.io/kubernetes/pkg/util/mount/mount_linux.go +++ b/vendor/k8s.io/kubernetes/pkg/util/mount/mount_linux.go @@ -42,6 +42,8 @@ const ( maxListTries = 3 // Number of fields per line in /proc/mounts as per the fstab man page. expectedNumFieldsPerLine = 6 + // At least number of fields per line in /proc//mountinfo. + expectedAtLeastNumFieldsPerMountInfo = 10 // Location of the mount file to use procMountsPath = "/proc/mounts" // Location of the mountinfo file @@ -511,7 +513,11 @@ func (mounter *SafeFormatAndMount) formatAndMount(source string, target string, } if fstype == "ext4" || fstype == "ext3" { - args = []string{"-F", source} + args = []string{ + "-F", // Force flag + "-m0", // Zero blocks reserved for super-user + source, + } } glog.Infof("Disk %q appears to be unformatted, attempting to format as type: %q with options: %v", source, fstype, args) _, err := mounter.Exec.Run("mkfs."+fstype, args...) @@ -591,27 +597,14 @@ func (mounter *SafeFormatAndMount) GetDiskFormat(disk string) (string, error) { // isShared returns true, if given path is on a mount point that has shared // mount propagation. -func isShared(path string, filename string) (bool, error) { - infos, err := parseMountInfo(filename) +func isShared(mount string, mountInfoPath string) (bool, error) { + info, err := findMountInfo(mount, mountInfoPath) if err != nil { return false, err } - // process /proc/xxx/mountinfo in backward order and find the first mount - // point that is prefix of 'path' - that's the mount where path resides - var info *mountInfo - for i := len(infos) - 1; i >= 0; i-- { - if strings.HasPrefix(path, infos[i].mountPoint) { - info = &infos[i] - break - } - } - if info == nil { - return false, fmt.Errorf("cannot find mount point for %q", path) - } - // parse optional parameters - for _, opt := range info.optional { + for _, opt := range info.optionalFields { if strings.HasPrefix(opt, "shared:") { return true, nil } @@ -619,11 +612,28 @@ func isShared(path string, filename string) (bool, error) { return false, nil } +// This represents a single line in /proc//mountinfo. type mountInfo struct { - // Path of the mount point + // Unique ID for the mount (maybe reused after umount). + id int + // The ID of the parent mount (or of self for the root of this mount namespace's mount tree). + parentID int + // The value of `st_dev` for files on this filesystem. + majorMinor string + // The pathname of the directory in the filesystem which forms the root of this mount. + root string + // Mount source, filesystem-specific information. e.g. device, tmpfs name. + source string + // Mount point, the pathname of the mount point. mountPoint string - // list of "optional parameters", mount propagation is one of them - optional []string + // Optional fieds, zero or more fields of the form "tag[:value]". + optionalFields []string + // The filesystem type in the form "type[.subtype]". + fsType string + // Per-mount options. + mountOptions []string + // Per-superblock options. + superOptions []string } // parseMountInfo parses /proc/xxx/mountinfo. @@ -642,22 +652,64 @@ func parseMountInfo(filename string) ([]mountInfo, error) { } // See `man proc` for authoritative description of format of the file. fields := strings.Fields(line) - if len(fields) < 7 { - return nil, fmt.Errorf("wrong number of fields in (expected %d, got %d): %s", 8, len(fields), line) + if len(fields) < expectedAtLeastNumFieldsPerMountInfo { + return nil, fmt.Errorf("wrong number of fields in (expected at least %d, got %d): %s", expectedAtLeastNumFieldsPerMountInfo, len(fields), line) + } + id, err := strconv.Atoi(fields[0]) + if err != nil { + return nil, err + } + parentID, err := strconv.Atoi(fields[1]) + if err != nil { + return nil, err } info := mountInfo{ - mountPoint: fields[4], - optional: []string{}, + id: id, + parentID: parentID, + majorMinor: fields[2], + root: fields[3], + mountPoint: fields[4], + mountOptions: strings.Split(fields[5], ","), } // All fields until "-" are "optional fields". - for i := 6; i < len(fields) && fields[i] != "-"; i++ { - info.optional = append(info.optional, fields[i]) + i := 6 + for ; i < len(fields) && fields[i] != "-"; i++ { + info.optionalFields = append(info.optionalFields, fields[i]) + } + // Parse the rest 3 fields. + i += 1 + if len(fields)-i < 3 { + return nil, fmt.Errorf("expect 3 fields in %s, got %d", line, len(fields)-i) } + info.fsType = fields[i] + info.source = fields[i+1] + info.superOptions = strings.Split(fields[i+2], ",") infos = append(infos, info) } return infos, nil } +func findMountInfo(path, mountInfoPath string) (mountInfo, error) { + infos, err := parseMountInfo(mountInfoPath) + if err != nil { + return mountInfo{}, err + } + + // process /proc/xxx/mountinfo in backward order and find the first mount + // point that is prefix of 'path' - that's the mount where path resides + var info *mountInfo + for i := len(infos) - 1; i >= 0; i-- { + if pathWithinBase(path, infos[i].mountPoint) { + info = &infos[i] + break + } + } + if info == nil { + return mountInfo{}, fmt.Errorf("cannot find mount point for %q", path) + } + return *info, nil +} + // doMakeRShared is common implementation of MakeRShared on Linux. It checks if // path is shared and bind-mounts it as rshared if needed. mountCmd and // mountArgs are expected to contain mount-like command, doMakeRShared will add @@ -686,6 +738,27 @@ func doMakeRShared(path string, mountInfoFilename string) error { return nil } +// getSELinuxSupport is common implementation of GetSELinuxSupport on Linux. +func getSELinuxSupport(path string, mountInfoFilename string) (bool, error) { + info, err := findMountInfo(path, mountInfoFilename) + if err != nil { + return false, err + } + + // "seclabel" can be both in mount options and super options. + for _, opt := range info.superOptions { + if opt == "seclabel" { + return true, nil + } + } + for _, opt := range info.mountOptions { + if opt == "seclabel" { + return true, nil + } + } + return false, nil +} + func (mounter *Mounter) PrepareSafeSubpath(subPath Subpath) (newHostPath string, cleanupAction func(), err error) { newHostPath, err = doBindSubPath(mounter, subPath, os.Getpid()) // There is no action when the container starts. Bind-mount will be cleaned @@ -931,7 +1004,11 @@ func (mounter *Mounter) GetMountRefs(pathname string) ([]string, error) { if err != nil { return nil, err } - return getMountRefsByDev(mounter, realpath) + return searchMountPoints(realpath, procMountInfoPath) +} + +func (mounter *Mounter) GetSELinuxSupport(pathname string) (bool, error) { + return getSELinuxSupport(pathname, procMountInfoPath) } func (mounter *Mounter) GetFSGroup(pathname string) (int64, error) { @@ -1176,3 +1253,51 @@ func doSafeOpen(pathname string, base string) (int, error) { return finalFD, nil } + +// searchMountPoints finds all mount references to the source, returns a list of +// mountpoints. +// This function assumes source cannot be device. +// Some filesystems may share a source name, e.g. tmpfs. And for bind mounting, +// it's possible to mount a non-root path of a filesystem, so we need to use +// root path and major:minor to represent mount source uniquely. +// This implementation is shared between Linux and NsEnterMounter +func searchMountPoints(hostSource, mountInfoPath string) ([]string, error) { + mis, err := parseMountInfo(mountInfoPath) + if err != nil { + return nil, err + } + + mountID := 0 + rootPath := "" + majorMinor := "" + + // Finding the underlying root path and major:minor if possible. + // We need search in backward order because it's possible for later mounts + // to overlap earlier mounts. + for i := len(mis) - 1; i >= 0; i-- { + if hostSource == mis[i].mountPoint || pathWithinBase(hostSource, mis[i].mountPoint) { + // If it's a mount point or path under a mount point. + mountID = mis[i].id + rootPath = filepath.Join(mis[i].root, strings.TrimPrefix(hostSource, mis[i].mountPoint)) + majorMinor = mis[i].majorMinor + break + } + } + + if rootPath == "" || majorMinor == "" { + return nil, fmt.Errorf("failed to get root path and major:minor for %s", hostSource) + } + + var refs []string + for i := range mis { + if mis[i].id == mountID { + // Ignore mount entry for mount source itself. + continue + } + if mis[i].root == rootPath && mis[i].majorMinor == majorMinor { + refs = append(refs, mis[i].mountPoint) + } + } + + return refs, nil +} diff --git a/vendor/k8s.io/kubernetes/pkg/util/mount/mount_unsupported.go b/vendor/k8s.io/kubernetes/pkg/util/mount/mount_unsupported.go index 87b8e33482..6e268e0f43 100644 --- a/vendor/k8s.io/kubernetes/pkg/util/mount/mount_unsupported.go +++ b/vendor/k8s.io/kubernetes/pkg/util/mount/mount_unsupported.go @@ -134,3 +134,7 @@ func (mounter *Mounter) GetMountRefs(pathname string) ([]string, error) { func (mounter *Mounter) GetFSGroup(pathname string) (int64, error) { return -1, errors.New("not implemented") } + +func (mounter *Mounter) GetSELinuxSupport(pathname string) (bool, error) { + return false, errors.New("not implemented") +} diff --git a/vendor/k8s.io/kubernetes/pkg/util/mount/mount_windows.go b/vendor/k8s.io/kubernetes/pkg/util/mount/mount_windows.go index 0c10733e9d..f31f99bd66 100644 --- a/vendor/k8s.io/kubernetes/pkg/util/mount/mount_windows.go +++ b/vendor/k8s.io/kubernetes/pkg/util/mount/mount_windows.go @@ -456,6 +456,11 @@ func (mounter *Mounter) GetFSGroup(pathname string) (int64, error) { return 0, nil } +func (mounter *Mounter) GetSELinuxSupport(pathname string) (bool, error) { + // Windows does not support SELinux. + return false, nil +} + // SafeMakeDir makes sure that the created directory does not escape given base directory mis-using symlinks. func (mounter *Mounter) SafeMakeDir(pathname string, base string, perm os.FileMode) error { return doSafeMakeDir(pathname, base, perm) diff --git a/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount.go b/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount.go index 17d730bf75..a5ca17ff5f 100644 --- a/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount.go +++ b/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount.go @@ -333,7 +333,7 @@ func (mounter *NsenterMounter) GetMountRefs(pathname string) ([]string, error) { if err != nil { return nil, err } - return getMountRefsByDev(mounter, hostpath) + return searchMountPoints(hostpath, hostProcMountinfoPath) } func (mounter *NsenterMounter) GetFSGroup(pathname string) (int64, error) { @@ -343,3 +343,7 @@ func (mounter *NsenterMounter) GetFSGroup(pathname string) (int64, error) { } return getFSGroup(kubeletpath) } + +func (mounter *NsenterMounter) GetSELinuxSupport(pathname string) (bool, error) { + return getSELinuxSupport(pathname, hostProcMountsPath) +} diff --git a/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount_unsupported.go b/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount_unsupported.go index 787ba6b719..8cf79de472 100644 --- a/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount_unsupported.go +++ b/vendor/k8s.io/kubernetes/pkg/util/mount/nsenter_mount_unsupported.go @@ -106,3 +106,7 @@ func (*NsenterMounter) GetMountRefs(pathname string) ([]string, error) { func (*NsenterMounter) GetFSGroup(pathname string) (int64, error) { return -1, errors.New("not implemented") } + +func (*NsenterMounter) GetSELinuxSupport(pathname string) (bool, error) { + return false, errors.New("not implemented") +} diff --git a/vendor/k8s.io/kubernetes/pkg/volume/util/util.go b/vendor/k8s.io/kubernetes/pkg/volume/util/util.go index a89260a728..663d8d6294 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/util/util.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/util/util.go @@ -278,18 +278,11 @@ func checkVolumeNodeAffinity(pv *v1.PersistentVolume, nodeLabels map[string]stri if pv.Spec.NodeAffinity.Required != nil { terms := pv.Spec.NodeAffinity.Required.NodeSelectorTerms glog.V(10).Infof("Match for Required node selector terms %+v", terms) - for _, term := range terms { - selector, err := v1helper.NodeSelectorRequirementsAsSelector(term.MatchExpressions) - if err != nil { - return fmt.Errorf("Failed to parse MatchExpressions: %v", err) - } - if selector.Matches(labels.Set(nodeLabels)) { - // Terms are ORed, so only one needs to match - return nil - } + if !v1helper.MatchNodeSelectorTerms(terms, labels.Set(nodeLabels), nil) { + return fmt.Errorf("No matching NodeSelectorTerms") } - return fmt.Errorf("No matching NodeSelectorTerms") } + return nil } diff --git a/vendor/k8s.io/kubernetes/pkg/volume/volume.go b/vendor/k8s.io/kubernetes/pkg/volume/volume.go index 471963556a..161d84faf4 100644 --- a/vendor/k8s.io/kubernetes/pkg/volume/volume.go +++ b/vendor/k8s.io/kubernetes/pkg/volume/volume.go @@ -131,6 +131,7 @@ type Mounter interface { // idempotent. SetUpAt(dir string, fsGroup *int64) error // GetAttributes returns the attributes of the mounter. + // This function is called after SetUp()/SetUpAt(). GetAttributes() Attributes }