From 3fb3cc712205de883abb8247de931d8869b3030c Mon Sep 17 00:00:00 2001 From: Vladimir Vivien Date: Fri, 13 Oct 2017 22:57:37 -0400 Subject: [PATCH 1/2] ScaleIO - API source code update This commit tracks all human-generated code for API source updates. --- pkg/api/fuzzer/fuzzer.go | 14 +-- pkg/api/persistentvolume/util.go | 10 +- pkg/api/persistentvolume/util_test.go | 12 ++- pkg/api/types.go | 44 +++++++- pkg/api/v1/defaults.go | 11 +- pkg/api/validation/validation.go | 16 ++- pkg/printers/internalversion/describe.go | 22 +++- pkg/volume/scaleio/sio_mgr_test.go | 2 +- pkg/volume/scaleio/sio_plugin.go | 87 ++++++++++------ pkg/volume/scaleio/sio_util.go | 125 ++++++++++++++++++----- pkg/volume/scaleio/sio_util_test.go | 20 ++-- pkg/volume/scaleio/sio_volume.go | 79 +++++++------- pkg/volume/scaleio/sio_volume_test.go | 124 +++++++++++++++++----- staging/src/k8s.io/api/core/v1/types.go | 43 +++++++- 14 files changed, 455 insertions(+), 154 deletions(-) diff --git a/pkg/api/fuzzer/fuzzer.go b/pkg/api/fuzzer/fuzzer.go index 45575fc90e6..9163cee41e7 100644 --- a/pkg/api/fuzzer/fuzzer.go +++ b/pkg/api/fuzzer/fuzzer.go @@ -410,14 +410,16 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} { } }, func(sio *api.ScaleIOVolumeSource, c fuzz.Continue) { - sio.ProtectionDomain = c.RandString() - if sio.ProtectionDomain == "" { - sio.ProtectionDomain = "default" + sio.StorageMode = c.RandString() + if sio.StorageMode == "" { + sio.StorageMode = "ThinProvisioned" } - sio.StoragePool = c.RandString() - if sio.StoragePool == "" { - sio.StoragePool = "default" + sio.FSType = c.RandString() + if sio.FSType == "" { + sio.FSType = "xfs" } + }, + func(sio *api.ScaleIOPersistentVolumeSource, c fuzz.Continue) { sio.StorageMode = c.RandString() if sio.StorageMode == "" { sio.StorageMode = "ThinProvisioned" diff --git a/pkg/api/persistentvolume/util.go b/pkg/api/persistentvolume/util.go index f05d8cf1b92..c1156156137 100644 --- a/pkg/api/persistentvolume/util.go +++ b/pkg/api/persistentvolume/util.go @@ -76,8 +76,14 @@ func VisitPVSecretNames(pv *api.PersistentVolume, visitor Visitor) bool { } } case source.ScaleIO != nil: - if source.ScaleIO.SecretRef != nil && !visitor(getClaimRefNamespace(pv), source.ScaleIO.SecretRef.Name) { - return false + if source.ScaleIO.SecretRef != nil { + ns := getClaimRefNamespace(pv) + if source.ScaleIO.SecretRef != nil && len(source.ScaleIO.SecretRef.Namespace) > 0 { + ns = source.ScaleIO.SecretRef.Namespace + } + if !visitor(ns, source.ScaleIO.SecretRef.Name) { + return false + } } case source.ISCSI != nil: if source.ISCSI.SecretRef != nil && !visitor(getClaimRefNamespace(pv), source.ISCSI.SecretRef.Name) { diff --git a/pkg/api/persistentvolume/util_test.go b/pkg/api/persistentvolume/util_test.go index b4e0a736212..d3554a96c51 100644 --- a/pkg/api/persistentvolume/util_test.go +++ b/pkg/api/persistentvolume/util_test.go @@ -78,9 +78,16 @@ func TestPVSecrets(t *testing.T) { {Spec: api.PersistentVolumeSpec{ ClaimRef: &api.ObjectReference{Namespace: "claimrefns", Name: "claimrefname"}, PersistentVolumeSource: api.PersistentVolumeSource{ - ScaleIO: &api.ScaleIOVolumeSource{ - SecretRef: &api.LocalObjectReference{ + ScaleIO: &api.ScaleIOPersistentVolumeSource{ + SecretRef: &api.SecretReference{ Name: "Spec.PersistentVolumeSource.ScaleIO.SecretRef"}}}}}, + {Spec: api.PersistentVolumeSpec{ + ClaimRef: &api.ObjectReference{Namespace: "claimrefns", Name: "claimrefname"}, + PersistentVolumeSource: api.PersistentVolumeSource{ + ScaleIO: &api.ScaleIOPersistentVolumeSource{ + SecretRef: &api.SecretReference{ + Name: "Spec.PersistentVolumeSource.ScaleIO.SecretRef", + Namespace: "scaleions"}}}}}, {Spec: api.PersistentVolumeSpec{ ClaimRef: &api.ObjectReference{Namespace: "claimrefns", Name: "claimrefname"}, PersistentVolumeSource: api.PersistentVolumeSource{ @@ -150,6 +157,7 @@ func TestPVSecrets(t *testing.T) { "claimrefns/Spec.PersistentVolumeSource.RBD.SecretRef", "rbdns/Spec.PersistentVolumeSource.RBD.SecretRef", "claimrefns/Spec.PersistentVolumeSource.ScaleIO.SecretRef", + "scaleions/Spec.PersistentVolumeSource.ScaleIO.SecretRef", "claimrefns/Spec.PersistentVolumeSource.ISCSI.SecretRef", "storageosns/Spec.PersistentVolumeSource.StorageOS.SecretRef", ) diff --git a/pkg/api/types.go b/pkg/api/types.go index 2fbcf5d37ba..f6d7aa89e80 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -383,7 +383,7 @@ type PersistentVolumeSource struct { PortworxVolume *PortworxVolumeSource // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. // +optional - ScaleIO *ScaleIOVolumeSource + ScaleIO *ScaleIOPersistentVolumeSource // Local represents directly-attached storage with node affinity // +optional Local *LocalVolumeSource @@ -1285,13 +1285,13 @@ type ScaleIOVolumeSource struct { // Flag to enable/disable SSL communication with Gateway, default false // +optional SSLEnabled bool - // The name of the Protection Domain for the configured storage (defaults to "default"). + // The name of the ScaleIO Protection Domain for the configured storage. // +optional ProtectionDomain string - // The Storage Pool associated with the protection domain (defaults to "default"). + // The ScaleIO Storage Pool associated with the protection domain. // +optional StoragePool string - // Indicates whether the storage for a volume should be thick or thin (defaults to "thin"). + // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. // +optional StorageMode string // The name of a volume already created in the ScaleIO system @@ -1308,6 +1308,42 @@ type ScaleIOVolumeSource struct { ReadOnly bool } +// ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume that can be defined +// by a an admin via a storage class, for instance. +type ScaleIOPersistentVolumeSource struct { + // The host address of the ScaleIO API Gateway. + Gateway string + // The name of the storage system as configured in ScaleIO. + System string + // SecretRef references to the secret for ScaleIO user and other + // sensitive information. If this is not provided, Login operation will fail. + SecretRef *SecretReference + // Flag to enable/disable SSL communication with Gateway, default false + // +optional + SSLEnabled bool + // The name of the ScaleIO Protection Domain for the configured storage. + // +optional + ProtectionDomain string + // The ScaleIO Storage Pool associated with the protection domain. + // +optional + StoragePool string + // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. + // +optional + StorageMode string + // The name of a volume created in the ScaleIO system + // that is associated with this volume source. + VolumeName string + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType string + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool +} + // Represents a StorageOS persistent volume resource. type StorageOSVolumeSource struct { // VolumeName is the human-readable name of the StorageOS volume. Volume diff --git a/pkg/api/v1/defaults.go b/pkg/api/v1/defaults.go index 8b57b76f1c2..02b1832d63d 100644 --- a/pkg/api/v1/defaults.go +++ b/pkg/api/v1/defaults.go @@ -381,12 +381,15 @@ func SetDefaults_RBDPersistentVolumeSource(obj *v1.RBDPersistentVolumeSource) { } func SetDefaults_ScaleIOVolumeSource(obj *v1.ScaleIOVolumeSource) { - if obj.ProtectionDomain == "" { - obj.ProtectionDomain = "default" + if obj.StorageMode == "" { + obj.StorageMode = "ThinProvisioned" } - if obj.StoragePool == "" { - obj.StoragePool = "default" + if obj.FSType == "" { + obj.FSType = "xfs" } +} + +func SetDefaults_ScaleIOPersistentVolumeSource(obj *v1.ScaleIOPersistentVolumeSource) { if obj.StorageMode == "" { obj.StorageMode = "ThinProvisioned" } diff --git a/pkg/api/validation/validation.go b/pkg/api/validation/validation.go index 73645c8db19..f8cb15e6f06 100644 --- a/pkg/api/validation/validation.go +++ b/pkg/api/validation/validation.go @@ -1245,6 +1245,20 @@ func validateScaleIOVolumeSource(sio *api.ScaleIOVolumeSource, fldPath *field.Pa return allErrs } +func validateScaleIOPersistentVolumeSource(sio *api.ScaleIOPersistentVolumeSource, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + if sio.Gateway == "" { + allErrs = append(allErrs, field.Required(fldPath.Child("gateway"), "")) + } + if sio.System == "" { + allErrs = append(allErrs, field.Required(fldPath.Child("system"), "")) + } + if sio.VolumeName == "" { + allErrs = append(allErrs, field.Required(fldPath.Child("volumeName"), "")) + } + return allErrs +} + func validateLocalVolumeSource(ls *api.LocalVolumeSource, fldPath *field.Path) field.ErrorList { allErrs := field.ErrorList{} if ls.Path == "" { @@ -1489,7 +1503,7 @@ func ValidatePersistentVolume(pv *api.PersistentVolume) field.ErrorList { allErrs = append(allErrs, field.Forbidden(specPath.Child("scaleIO"), "may not specify more than 1 volume type")) } else { numVolumes++ - allErrs = append(allErrs, validateScaleIOVolumeSource(pv.Spec.ScaleIO, specPath.Child("scaleIO"))...) + allErrs = append(allErrs, validateScaleIOPersistentVolumeSource(pv.Spec.ScaleIO, specPath.Child("scaleIO"))...) } } if pv.Spec.Local != nil { diff --git a/pkg/printers/internalversion/describe.go b/pkg/printers/internalversion/describe.go index 18d54e9cb3b..c6f7e274866 100644 --- a/pkg/printers/internalversion/describe.go +++ b/pkg/printers/internalversion/describe.go @@ -970,6 +970,26 @@ func printScaleIOVolumeSource(sio *api.ScaleIOVolumeSource, w PrefixWriter) { sio.Gateway, sio.System, sio.ProtectionDomain, sio.StoragePool, sio.StorageMode, sio.VolumeName, sio.FSType, sio.ReadOnly) } +func printScaleIOPersistentVolumeSource(sio *api.ScaleIOPersistentVolumeSource, w PrefixWriter) { + var secretNS, secretName string + if sio.SecretRef != nil { + secretName = sio.SecretRef.Name + secretNS = sio.SecretRef.Namespace + } + w.Write(LEVEL_2, "Type:\tScaleIO (a persistent volume backed by a block device in ScaleIO)\n"+ + " Gateway:\t%v\n"+ + " System:\t%v\n"+ + " Protection Domain:\t%v\n"+ + " Storage Pool:\t%v\n"+ + " Storage Mode:\t%v\n"+ + " VolumeName:\t%v\n"+ + " SecretName:\t%v\n"+ + " SecretNamespace:\t%v\n"+ + " FSType:\t%v\n"+ + " ReadOnly:\t%v\n", + sio.Gateway, sio.System, sio.ProtectionDomain, sio.StoragePool, sio.StorageMode, sio.VolumeName, secretName, secretNS, sio.FSType, sio.ReadOnly) +} + func printLocalVolumeSource(ls *api.LocalVolumeSource, w PrefixWriter) { w.Write(LEVEL_2, "Type:\tLocalVolume (a persistent volume backed by local storage on a node)\n"+ " Path:\t%v\n", @@ -1135,7 +1155,7 @@ func describePersistentVolume(pv *api.PersistentVolume, events *api.EventList) ( case pv.Spec.PortworxVolume != nil: printPortworxVolumeSource(pv.Spec.PortworxVolume, w) case pv.Spec.ScaleIO != nil: - printScaleIOVolumeSource(pv.Spec.ScaleIO, w) + printScaleIOPersistentVolumeSource(pv.Spec.ScaleIO, w) case pv.Spec.Local != nil: printLocalVolumeSource(pv.Spec.Local, w) case pv.Spec.CephFS != nil: diff --git a/pkg/volume/scaleio/sio_mgr_test.go b/pkg/volume/scaleio/sio_mgr_test.go index e2fe5c2002b..49ff5d05a81 100644 --- a/pkg/volume/scaleio/sio_mgr_test.go +++ b/pkg/volume/scaleio/sio_mgr_test.go @@ -37,7 +37,7 @@ var ( confKey.sslEnabled: "false", confKey.system: "scaleio", confKey.volumeName: "sio-0001", - confKey.secretRef: "sio-secret", + confKey.secretName: "sio-secret", confKey.username: "c2lvdXNlcgo=", // siouser confKey.password: "c2lvcGFzc3dvcmQK", // siopassword } diff --git a/pkg/volume/scaleio/sio_plugin.go b/pkg/volume/scaleio/sio_plugin.go index d7758756216..babd840c6b7 100644 --- a/pkg/volume/scaleio/sio_plugin.go +++ b/pkg/volume/scaleio/sio_plugin.go @@ -60,12 +60,11 @@ func (p *sioPlugin) GetPluginName() string { } func (p *sioPlugin) GetVolumeName(spec *volume.Spec) (string, error) { - source, err := getVolumeSourceFromSpec(spec) + attribs, err := getVolumeSourceAttribs(spec) if err != nil { return "", err } - - return source.VolumeName, nil + return attribs.volName, nil } func (p *sioPlugin) CanSupport(spec *volume.Spec) bool { @@ -81,29 +80,33 @@ func (p *sioPlugin) NewMounter( spec *volume.Spec, pod *api.Pod, _ volume.VolumeOptions) (volume.Mounter, error) { - sioSource, err := getVolumeSourceFromSpec(spec) + + // extract source info from either ScaleIOVolumeSource or ScaleIOPersistentVolumeSource type + attribs, err := getVolumeSourceAttribs(spec) if err != nil { - glog.Error(log("failed to extract ScaleIOVolumeSource from spec: %v", err)) - return nil, err + return nil, errors.New(log("mounter failed to extract volume attributes from spec: %v", err)) + } + + secretName, secretNS, err := getSecretAndNamespaceFromSpec(spec, pod) + if err != nil { + return nil, errors.New(log("failed to get secret name or secretNamespace: %v", err)) } return &sioVolume{ - pod: pod, - spec: spec, - source: sioSource, - namespace: pod.Namespace, - volSpecName: spec.Name(), - volName: sioSource.VolumeName, - podUID: pod.UID, - readOnly: sioSource.ReadOnly, - fsType: sioSource.FSType, - plugin: p, + pod: pod, + spec: spec, + secretName: secretName, + secretNamespace: secretNS, + volSpecName: spec.Name(), + volName: attribs.volName, + podUID: pod.UID, + readOnly: attribs.readOnly, + fsType: attribs.fsType, + plugin: p, }, nil } // NewUnmounter creates a representation of the volume to unmount -// The specName param can be used to carry the namespace value (if needed) using format: -// specName = [nsSep] where the specname is pre-pended with the namespace func (p *sioPlugin) NewUnmounter(specName string, podUID types.UID) (volume.Unmounter, error) { glog.V(4).Info(log("Unmounter for %s", specName)) @@ -156,22 +159,25 @@ func (p *sioPlugin) GetAccessModes() []api.PersistentVolumeAccessMode { var _ volume.DeletableVolumePlugin = &sioPlugin{} func (p *sioPlugin) NewDeleter(spec *volume.Spec) (volume.Deleter, error) { - sioSource, err := getVolumeSourceFromSpec(spec) + attribs, err := getVolumeSourceAttribs(spec) if err != nil { - glog.Error(log("deleter failed to extract source from spec: %v", err)) + glog.Error(log("deleter failed to extract volume attributes from spec: %v", err)) return nil, err } - namespace := spec.PersistentVolume.Spec.ClaimRef.Namespace + secretName, secretNS, err := getSecretAndNamespaceFromSpec(spec, nil) + if err != nil { + return nil, errors.New(log("failed to get secret name or secretNamespace: %v", err)) + } return &sioVolume{ - spec: spec, - source: sioSource, - namespace: namespace, - volSpecName: spec.Name(), - volName: sioSource.VolumeName, - plugin: p, - readOnly: sioSource.ReadOnly, + spec: spec, + secretName: secretName, + secretNamespace: secretNS, + volSpecName: spec.Name(), + volName: attribs.volName, + plugin: p, + readOnly: attribs.readOnly, }, nil } @@ -189,13 +195,26 @@ func (p *sioPlugin) NewProvisioner(options volume.VolumeOptions) (volume.Provisi return nil, errors.New("option parameters missing") } - namespace := options.PVC.Namespace + // Supports ref of name of secret a couple of ways: + // options.Parameters["secretRef"] for backward compat, or + // options.Parameters["secretName"] + secretName := configData[confKey.secretName] + if secretName == "" { + secretName = configData["secretName"] + configData[confKey.secretName] = secretName + } + + secretNS := configData[confKey.secretNamespace] + if secretNS == "" { + secretNS = options.PVC.Namespace + } return &sioVolume{ - configData: configData, - plugin: p, - options: options, - namespace: namespace, - volSpecName: options.PVName, + configData: configData, + plugin: p, + options: options, + secretName: secretName, + secretNamespace: secretNS, + volSpecName: options.PVName, }, nil } diff --git a/pkg/volume/scaleio/sio_util.go b/pkg/volume/scaleio/sio_util.go index 3c2f13a3405..de0c5811665 100644 --- a/pkg/volume/scaleio/sio_util.go +++ b/pkg/volume/scaleio/sio_util.go @@ -31,11 +31,17 @@ import ( volutil "k8s.io/kubernetes/pkg/volume/util" ) +type volSourceAttribs struct { + volName, + fsType string + readOnly bool +} + var ( confKey = struct { gateway, sslEnabled, - secretRef, + secretName, system, protectionDomain, storagePool, @@ -47,12 +53,13 @@ var ( readOnly, username, password, - namespace, + secretNamespace, sdcGuid string }{ gateway: "gateway", sslEnabled: "sslEnabled", - secretRef: "secretRef", + secretName: "secretRef", + secretNamespace: "secretNamespace", system: "system", protectionDomain: "protectionDomain", storagePool: "storagePool", @@ -64,7 +71,6 @@ var ( readOnly: "readOnly", username: "username", password: "password", - namespace: "namespace", sdcGuid: "sdcGuid", } sdcGuidLabelName = "scaleio.sdcGuid" @@ -79,23 +85,32 @@ var ( protectionDomainNotProvidedErr = errors.New("ScaleIO protection domain not provided") ) -// mapScaleIOVolumeSource maps attributes from a ScaleIOVolumeSource to config -func mapVolumeSource(config map[string]string, source *api.ScaleIOVolumeSource) { - config[confKey.gateway] = source.Gateway - config[confKey.secretRef] = func() string { - if source.SecretRef != nil { - return string(source.SecretRef.Name) - } - return "" - }() - config[confKey.system] = source.System - config[confKey.volumeName] = source.VolumeName - config[confKey.sslEnabled] = strconv.FormatBool(source.SSLEnabled) - config[confKey.protectionDomain] = source.ProtectionDomain - config[confKey.storagePool] = source.StoragePool - config[confKey.storageMode] = source.StorageMode - config[confKey.fsType] = source.FSType - config[confKey.readOnly] = strconv.FormatBool(source.ReadOnly) +// mapVolumeSpec maps attributes from either ScaleIOVolumeSource or ScaleIOPersistentVolumeSource to config +func mapVolumeSpec(config map[string]string, spec *volume.Spec) { + + if source, err := getScaleIOPersistentVolumeSourceFromSpec(spec); err == nil { + config[confKey.gateway] = source.Gateway + config[confKey.system] = source.System + config[confKey.volumeName] = source.VolumeName + config[confKey.sslEnabled] = strconv.FormatBool(source.SSLEnabled) + config[confKey.protectionDomain] = source.ProtectionDomain + config[confKey.storagePool] = source.StoragePool + config[confKey.storageMode] = source.StorageMode + config[confKey.fsType] = source.FSType + config[confKey.readOnly] = strconv.FormatBool(source.ReadOnly) + } + + if source, err := getScaleIOVolumeSourceFromSpec(spec); err == nil { + config[confKey.gateway] = source.Gateway + config[confKey.system] = source.System + config[confKey.volumeName] = source.VolumeName + config[confKey.sslEnabled] = strconv.FormatBool(source.SSLEnabled) + config[confKey.protectionDomain] = source.ProtectionDomain + config[confKey.storagePool] = source.StoragePool + config[confKey.storageMode] = source.StorageMode + config[confKey.fsType] = source.FSType + config[confKey.readOnly] = strconv.FormatBool(source.ReadOnly) + } //optionals applyConfigDefaults(config) @@ -105,7 +120,7 @@ func validateConfigs(config map[string]string) error { if config[confKey.gateway] == "" { return gatewayNotProvidedErr } - if config[confKey.secretRef] == "" { + if config[confKey.secretName] == "" { return secretRefNotProvidedErr } if config[confKey.system] == "" { @@ -202,7 +217,7 @@ func saveConfig(configName string, data map[string]string) error { // attachSecret loads secret object and attaches to configData func attachSecret(plug *sioPlugin, namespace string, configData map[string]string) error { // load secret - secretRefName := configData[confKey.secretRef] + secretRefName := configData[confKey.secretName] kubeClient := plug.host.GetKubeClient() secretMap, err := volutil.GetSecretForPV(namespace, secretRefName, sioPluginName, kubeClient) if err != nil { @@ -244,8 +259,8 @@ func getSdcGuidLabel(plug *sioPlugin) (string, error) { return label, nil } -// getVolumeSourceFromSpec safely extracts ScaleIOVolumeSource from spec -func getVolumeSourceFromSpec(spec *volume.Spec) (*api.ScaleIOVolumeSource, error) { +// getVolumeSourceFromSpec safely extracts ScaleIOVolumeSource or ScaleIOPersistentVolumeSource from spec +func getVolumeSourceFromSpec(spec *volume.Spec) (interface{}, error) { if spec.Volume != nil && spec.Volume.ScaleIO != nil { return spec.Volume.ScaleIO, nil } @@ -257,6 +272,66 @@ func getVolumeSourceFromSpec(spec *volume.Spec) (*api.ScaleIOVolumeSource, error return nil, fmt.Errorf("ScaleIO not defined in spec") } +func getVolumeSourceAttribs(spec *volume.Spec) (*volSourceAttribs, error) { + attribs := new(volSourceAttribs) + if pvSource, err := getScaleIOPersistentVolumeSourceFromSpec(spec); err == nil { + attribs.volName = pvSource.VolumeName + attribs.fsType = pvSource.FSType + attribs.readOnly = pvSource.ReadOnly + } else if pSource, err := getScaleIOVolumeSourceFromSpec(spec); err == nil { + attribs.volName = pSource.VolumeName + attribs.fsType = pSource.FSType + attribs.readOnly = pSource.ReadOnly + } else { + msg := log("failed to get ScaleIOVolumeSource or ScaleIOPersistentVolumeSource from spec") + glog.Error(msg) + return nil, errors.New(msg) + } + return attribs, nil +} + +func getScaleIOPersistentVolumeSourceFromSpec(spec *volume.Spec) (*api.ScaleIOPersistentVolumeSource, error) { + source, err := getVolumeSourceFromSpec(spec) + if err != nil { + return nil, err + } + if val, ok := source.(*api.ScaleIOPersistentVolumeSource); ok { + return val, nil + } + return nil, fmt.Errorf("spec is not a valid ScaleIOPersistentVolume type") +} + +func getScaleIOVolumeSourceFromSpec(spec *volume.Spec) (*api.ScaleIOVolumeSource, error) { + source, err := getVolumeSourceFromSpec(spec) + if err != nil { + return nil, err + } + if val, ok := source.(*api.ScaleIOVolumeSource); ok { + return val, nil + } + return nil, fmt.Errorf("spec is not a valid ScaleIOVolume type") +} + +func getSecretAndNamespaceFromSpec(spec *volume.Spec, pod *api.Pod) (secretName string, secretNS string, err error) { + if source, err := getScaleIOVolumeSourceFromSpec(spec); err == nil { + secretName = source.SecretRef.Name + if pod != nil { + secretNS = pod.Namespace + } + } else if source, err := getScaleIOPersistentVolumeSourceFromSpec(spec); err == nil { + if source.SecretRef != nil { + secretName = source.SecretRef.Name + secretNS = source.SecretRef.Namespace + if secretNS == "" && pod != nil { + secretNS = pod.Namespace + } + } + } else { + return "", "", errors.New("failed to get ScaleIOVolumeSource or ScaleIOPersistentVolumeSource") + } + return secretName, secretNS, nil +} + func log(msg string, parts ...interface{}) string { return fmt.Sprintf(fmt.Sprintf("scaleio: %s", msg), parts...) } diff --git a/pkg/volume/scaleio/sio_util_test.go b/pkg/volume/scaleio/sio_util_test.go index 360b67e3fac..4be4bd75fe9 100644 --- a/pkg/volume/scaleio/sio_util_test.go +++ b/pkg/volume/scaleio/sio_util_test.go @@ -25,6 +25,7 @@ import ( api "k8s.io/api/core/v1" utiltesting "k8s.io/client-go/util/testing" + "k8s.io/kubernetes/pkg/volume" ) var ( @@ -48,7 +49,7 @@ var ( confKey.gateway: "http://sio/", confKey.volSpecName: testSioVolName, confKey.volumeName: "sio-vol", - confKey.secretRef: "sio-secret", + confKey.secretName: "sio-secret", confKey.protectionDomain: "defaultPD", confKey.storagePool: "deraultSP", confKey.fsType: "xfs", @@ -60,7 +61,7 @@ var ( func TestUtilMapVolumeSource(t *testing.T) { data := make(map[string]string) - mapVolumeSource(data, vol.VolumeSource.ScaleIO) + mapVolumeSpec(data, volume.NewSpecFromVolume(vol)) if data[confKey.gateway] != "http://test.scaleio:1111" { t.Error("Unexpected gateway value") } @@ -79,9 +80,6 @@ func TestUtilMapVolumeSource(t *testing.T) { if data[confKey.fsType] != "ext4" { t.Error("Unexpected fstype value") } - if data[confKey.secretRef] != "test-secret" { - t.Error("Unexpected secret ref value") - } if data[confKey.sslEnabled] != "false" { t.Error("Unexpected sslEnabled value") } @@ -92,8 +90,8 @@ func TestUtilMapVolumeSource(t *testing.T) { func TestUtilValidateConfigs(t *testing.T) { data := map[string]string{ - confKey.secretRef: "sio-secret", - confKey.system: "sio", + confKey.secretName: "sio-secret", + confKey.system: "sio", } if err := validateConfigs(data); err != gatewayNotProvidedErr { t.Error("Expecting error for missing gateway, but did not get it") @@ -105,7 +103,7 @@ func TestUtilApplyConfigDefaults(t *testing.T) { confKey.system: "sio", confKey.gateway: "http://sio/", confKey.volumeName: "sio-vol", - confKey.secretRef: "test-secret", + confKey.secretName: "test-secret", } applyConfigDefaults(data) @@ -130,7 +128,7 @@ func TestUtilApplyConfigDefaults(t *testing.T) { if data[confKey.storageMode] != "ThinProvisioned" { t.Error("Unexpected storage mode value") } - if data[confKey.secretRef] != "test-secret" { + if data[confKey.secretName] != "test-secret" { t.Error("Unexpected secret ref value") } if data[confKey.sslEnabled] != "false" { @@ -157,7 +155,7 @@ func TestUtilSaveConfig(t *testing.T) { config := path.Join(tmpDir, testConfigFile) data := map[string]string{ confKey.gateway: "https://test-gateway/", - confKey.secretRef: "sio-secret", + confKey.secretName: "sio-secret", confKey.sslEnabled: "false", } if err := saveConfig(config, data); err != nil { @@ -178,7 +176,7 @@ func TestUtilSaveConfig(t *testing.T) { } func TestUtilAttachSecret(t *testing.T) { - plugMgr, tmpDir := newPluginMgr(t) + plugMgr, tmpDir := newPluginMgr(t, makeScaleIOSecret(testSecret, testns)) defer os.RemoveAll(tmpDir) plug, err := plugMgr.FindPluginByName(sioPluginName) diff --git a/pkg/volume/scaleio/sio_volume.go b/pkg/volume/scaleio/sio_volume.go index 85e7fb0b43f..0d0d35608bd 100644 --- a/pkg/volume/scaleio/sio_volume.go +++ b/pkg/volume/scaleio/sio_volume.go @@ -37,19 +37,19 @@ import ( ) type sioVolume struct { - sioMgr *sioMgr - plugin *sioPlugin - pod *api.Pod - podUID types.UID - spec *volume.Spec - source *api.ScaleIOVolumeSource - namespace string - volSpecName string - volName string - readOnly bool - fsType string - options volume.VolumeOptions - configData map[string]string + sioMgr *sioMgr + plugin *sioPlugin + pod *api.Pod + podUID types.UID + spec *volume.Spec + secretName string + secretNamespace string + volSpecName string + volName string + readOnly bool + fsType string + options volume.VolumeOptions + configData map[string]string volume.MetricsNil } @@ -59,7 +59,6 @@ type sioVolume struct { var _ volume.Volume = &sioVolume{} // GetPath returns the path where the volume will be mounted. -// The volumeName is prefixed with the pod's namespace a - func (v *sioVolume) GetPath() string { return v.plugin.host.GetPodVolumeDir( v.podUID, @@ -128,11 +127,11 @@ func (v *sioVolume) SetUpAt(dir string, fsGroup *int64) error { switch { default: options = append(options, "rw") - case isROM && !v.source.ReadOnly: + case isROM && !v.readOnly: options = append(options, "rw") case isROM: options = append(options, "ro") - case v.source.ReadOnly: + case v.readOnly: options = append(options, "ro") } @@ -327,10 +326,10 @@ func (v *sioVolume) Provision() (*api.PersistentVolume, error) { ), }, PersistentVolumeSource: api.PersistentVolumeSource{ - ScaleIO: &api.ScaleIOVolumeSource{ + ScaleIO: &api.ScaleIOPersistentVolumeSource{ Gateway: v.configData[confKey.gateway], SSLEnabled: sslEnabled, - SecretRef: &api.LocalObjectReference{Name: v.configData[confKey.secretRef]}, + SecretRef: &api.SecretReference{Name: v.secretName, Namespace: v.secretNamespace}, System: v.configData[confKey.system], ProtectionDomain: v.configData[confKey.protectionDomain], StoragePool: v.configData[confKey.storagePool], @@ -366,13 +365,17 @@ func (v *sioVolume) setSioMgr() error { glog.V(4).Info(log("previous config file not found, creating new one")) // prepare config data configData = make(map[string]string) - mapVolumeSource(configData, v.source) + mapVolumeSpec(configData, v.spec) + + // additional config data + configData[confKey.secretNamespace] = v.secretNamespace + configData[confKey.secretName] = v.secretName + configData[confKey.volSpecName] = v.volSpecName + if err := validateConfigs(configData); err != nil { glog.Error(log("config setup failed: %s", err)) return err } - configData[confKey.namespace] = v.namespace - configData[confKey.volSpecName] = v.volSpecName // persist config if err := saveConfig(configName, configData); err != nil { @@ -381,7 +384,7 @@ func (v *sioVolume) setSioMgr() error { } } // merge in secret - if err := attachSecret(v.plugin, v.namespace, configData); err != nil { + if err := attachSecret(v.plugin, v.secretNamespace, configData); err != nil { glog.Error(log("failed to load secret: %v", err)) return err } @@ -414,12 +417,13 @@ func (v *sioVolume) resetSioMgr() error { glog.Error(log("failed to load config data: %v", err)) return err } - v.namespace = configData[confKey.namespace] + v.secretName = configData[confKey.secretName] + v.secretNamespace = configData[confKey.secretNamespace] v.volName = configData[confKey.volumeName] v.volSpecName = configData[confKey.volSpecName] // attach secret - if err := attachSecret(v.plugin, v.namespace, configData); err != nil { + if err := attachSecret(v.plugin, v.secretNamespace, configData); err != nil { glog.Error(log("failed to load secret: %v", err)) return err } @@ -446,21 +450,22 @@ func (v *sioVolume) resetSioMgr() error { func (v *sioVolume) setSioMgrFromConfig() error { glog.V(4).Info(log("setting scaleio mgr from available config")) if v.sioMgr == nil { - configData := v.configData - applyConfigDefaults(configData) - if err := validateConfigs(configData); err != nil { + applyConfigDefaults(v.configData) + + v.configData[confKey.volSpecName] = v.volSpecName + + if err := validateConfigs(v.configData); err != nil { glog.Error(log("config data setup failed: %s", err)) return err } - configData[confKey.namespace] = v.namespace - configData[confKey.volSpecName] = v.volSpecName // copy config and attach secret data := map[string]string{} - for k, v := range configData { + for k, v := range v.configData { data[k] = v } - if err := attachSecret(v.plugin, v.namespace, data); err != nil { + + if err := attachSecret(v.plugin, v.secretNamespace, data); err != nil { glog.Error(log("failed to load secret: %v", err)) return err } @@ -483,16 +488,20 @@ func (v *sioVolume) setSioMgrFromSpec() error { if v.sioMgr == nil { // get config data form spec volume source configData := map[string]string{} - mapVolumeSource(configData, v.source) + mapVolumeSpec(configData, v.spec) + + // additional config + configData[confKey.secretNamespace] = v.secretNamespace + configData[confKey.secretName] = v.secretName + configData[confKey.volSpecName] = v.volSpecName + if err := validateConfigs(configData); err != nil { glog.Error(log("config setup failed: %s", err)) return err } - configData[confKey.namespace] = v.namespace - configData[confKey.volSpecName] = v.volSpecName // attach secret object to config data - if err := attachSecret(v.plugin, v.namespace, configData); err != nil { + if err := attachSecret(v.plugin, v.secretNamespace, configData); err != nil { glog.Error(log("failed to load secret: %v", err)) return err } diff --git a/pkg/volume/scaleio/sio_volume_test.go b/pkg/volume/scaleio/sio_volume_test.go index ad2f75475b8..8912ae870e0 100644 --- a/pkg/volume/scaleio/sio_volume_test.go +++ b/pkg/volume/scaleio/sio_volume_test.go @@ -27,6 +27,7 @@ import ( api "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" fakeclient "k8s.io/client-go/kubernetes/fake" utiltesting "k8s.io/client-go/util/testing" @@ -39,29 +40,18 @@ var ( testSioPD = "default" testSioVol = "vol-0001" testns = "default" + testSecret = "sio-secret" testSioVolName = fmt.Sprintf("%s%s%s", testns, "-", testSioVol) podUID = types.UID("sio-pod") ) -func newPluginMgr(t *testing.T) (*volume.VolumePluginMgr, string) { +func newPluginMgr(t *testing.T, apiObject runtime.Object) (*volume.VolumePluginMgr, string) { tmpDir, err := utiltesting.MkTmpdir("scaleio-test") if err != nil { t.Fatalf("can't make a temp dir: %v", err) } - config := &api.Secret{ - ObjectMeta: meta.ObjectMeta{ - Name: "sio-secret", - Namespace: testns, - UID: "1234567890", - }, - Type: api.SecretType("kubernetes.io/scaleio"), - Data: map[string][]byte{ - "username": []byte("username"), - "password": []byte("password"), - }, - } - fakeClient := fakeclient.NewSimpleClientset(config) + fakeClient := fakeclient.NewSimpleClientset(apiObject) host := volumetest.NewFakeVolumeHostWithNodeLabels( tmpDir, fakeClient, @@ -74,8 +64,23 @@ func newPluginMgr(t *testing.T) (*volume.VolumePluginMgr, string) { return plugMgr, tmpDir } +func makeScaleIOSecret(name, namespace string) *api.Secret { + return &api.Secret{ + ObjectMeta: meta.ObjectMeta{ + Name: name, + Namespace: namespace, + UID: "1234567890", + }, + Type: api.SecretType("kubernetes.io/scaleio"), + Data: map[string][]byte{ + "username": []byte("username"), + "password": []byte("password"), + }, + } +} + func TestVolumeCanSupport(t *testing.T) { - plugMgr, tmpDir := newPluginMgr(t) + plugMgr, tmpDir := newPluginMgr(t, makeScaleIOSecret(testSecret, testns)) defer os.RemoveAll(tmpDir) plug, err := plugMgr.FindPluginByName(sioPluginName) if err != nil { @@ -100,7 +105,7 @@ func TestVolumeCanSupport(t *testing.T) { PersistentVolume: &api.PersistentVolume{ Spec: api.PersistentVolumeSpec{ PersistentVolumeSource: api.PersistentVolumeSource{ - ScaleIO: &api.ScaleIOVolumeSource{}, + ScaleIO: &api.ScaleIOPersistentVolumeSource{}, }, }, }, @@ -111,7 +116,7 @@ func TestVolumeCanSupport(t *testing.T) { } func TestVolumeGetAccessModes(t *testing.T) { - plugMgr, tmpDir := newPluginMgr(t) + plugMgr, tmpDir := newPluginMgr(t, makeScaleIOSecret(testSecret, testns)) defer os.RemoveAll(tmpDir) plug, err := plugMgr.FindPersistentPluginByName(sioPluginName) if err != nil { @@ -131,7 +136,7 @@ func containsMode(modes []api.PersistentVolumeAccessMode, mode api.PersistentVol } func TestVolumeMounterUnmounter(t *testing.T) { - plugMgr, tmpDir := newPluginMgr(t) + plugMgr, tmpDir := newPluginMgr(t, makeScaleIOSecret(testSecret, testns)) defer os.RemoveAll(tmpDir) plug, err := plugMgr.FindPluginByName(sioPluginName) @@ -153,7 +158,7 @@ func TestVolumeMounterUnmounter(t *testing.T) { StoragePool: "default", VolumeName: testSioVol, FSType: "ext4", - SecretRef: &api.LocalObjectReference{Name: "sio-secret"}, + SecretRef: &api.LocalObjectReference{Name: testSecret}, ReadOnly: false, }, }, @@ -245,7 +250,7 @@ func TestVolumeMounterUnmounter(t *testing.T) { } func TestVolumeProvisioner(t *testing.T) { - plugMgr, tmpDir := newPluginMgr(t) + plugMgr, tmpDir := newPluginMgr(t, makeScaleIOSecret(testSecret, testns)) defer os.RemoveAll(tmpDir) plug, err := plugMgr.FindPluginByName(sioPluginName) @@ -274,7 +279,7 @@ func TestVolumeProvisioner(t *testing.T) { confKey.system: "sio", confKey.protectionDomain: testSioPD, confKey.storagePool: "default", - confKey.secretRef: "sio-secret", + confKey.secretName: testSecret, } provisioner, err := sioPlug.NewProvisioner(options) @@ -296,6 +301,17 @@ func TestVolumeProvisioner(t *testing.T) { t.Fatalf("call to Provision() failed: %v", err) } + if spec.Namespace != testns { + t.Fatalf("unexpected namespace %v", spec.Namespace) + } + if spec.Spec.ScaleIO.SecretRef == nil { + t.Fatalf("unexpected nil value for spec.SecretRef") + } + if spec.Spec.ScaleIO.SecretRef.Name != testSecret || + spec.Spec.ScaleIO.SecretRef.Namespace != testns { + t.Fatalf("spec.SecretRef is not being set properly") + } + spec.Spec.ClaimRef = &api.ObjectReference{Namespace: testns} // validate provision @@ -379,7 +395,7 @@ func TestVolumeProvisioner(t *testing.T) { } func TestVolumeProvisionerWithIncompleteConfig(t *testing.T) { - plugMgr, tmpDir := newPluginMgr(t) + plugMgr, tmpDir := newPluginMgr(t, makeScaleIOSecret(testSecret, testns)) defer os.RemoveAll(tmpDir) plug, err := plugMgr.FindPluginByName(sioPluginName) @@ -411,7 +427,7 @@ func TestVolumeProvisionerWithIncompleteConfig(t *testing.T) { } func TestVolumeProvisionerWithZeroCapacity(t *testing.T) { - plugMgr, tmpDir := newPluginMgr(t) + plugMgr, tmpDir := newPluginMgr(t, makeScaleIOSecret(testSecret, testns)) defer os.RemoveAll(tmpDir) plug, err := plugMgr.FindPluginByName(sioPluginName) @@ -440,7 +456,7 @@ func TestVolumeProvisionerWithZeroCapacity(t *testing.T) { confKey.system: "sio", confKey.protectionDomain: testSioPD, confKey.storagePool: "default", - confKey.secretRef: "sio-secret", + confKey.secretName: "sio-secret", } provisioner, _ := sioPlug.NewProvisioner(options) @@ -457,3 +473,63 @@ func TestVolumeProvisionerWithZeroCapacity(t *testing.T) { } } + +func TestVolumeProvisionerWithSecretNamespace(t *testing.T) { + plugMgr, tmpDir := newPluginMgr(t, makeScaleIOSecret("sio-sec", "sio-ns")) + defer os.RemoveAll(tmpDir) + + plug, err := plugMgr.FindPluginByName(sioPluginName) + if err != nil { + t.Fatalf("Can't find the plugin %v", sioPluginName) + } + sioPlug, ok := plug.(*sioPlugin) + if !ok { + t.Fatal("Cannot assert plugin to be type sioPlugin") + } + + options := volume.VolumeOptions{ + ClusterName: "testcluster", + PVName: "pvc-sio-dynamic-vol", + PVC: volumetest.CreateTestPVC("100Mi", []api.PersistentVolumeAccessMode{api.ReadWriteOnce}), + PersistentVolumeReclaimPolicy: api.PersistentVolumeReclaimDelete, + } + + options.PVC.Spec.AccessModes = []api.PersistentVolumeAccessMode{ + api.ReadWriteOnce, + } + + options.PVC.Namespace = "pvc-ns" + options.Parameters = map[string]string{ + confKey.gateway: "http://test.scaleio:11111", + confKey.system: "sio", + confKey.protectionDomain: testSioPD, + confKey.storagePool: "default", + confKey.secretName: "sio-sec", + confKey.secretNamespace: "sio-ns", + } + + provisioner, _ := sioPlug.NewProvisioner(options) + sio := newFakeSio() + sioVol := provisioner.(*sioVolume) + if err := sioVol.setSioMgrFromConfig(); err != nil { + t.Fatalf("failed to create scaleio mgr from config: %v", err) + } + sioVol.sioMgr.client = sio + + spec, err := sioVol.Provision() + if err != nil { + t.Fatalf("call to Provision() failed: %v", err) + } + + if spec.GetObjectMeta().GetNamespace() != "pvc-ns" { + t.Fatalf("unexpected spec.namespace %s", spec.GetObjectMeta().GetNamespace()) + } + + if spec.Spec.ScaleIO.SecretRef.Name != "sio-sec" { + t.Fatalf("unexpected spec.ScaleIOPersistentVolume.SecretRef.Name %v", spec.Spec.ScaleIO.SecretRef.Name) + } + + if spec.Spec.ScaleIO.SecretRef.Namespace != "sio-ns" { + t.Fatalf("unexpected spec.ScaleIOPersistentVolume.SecretRef.Namespace %v", spec.Spec.ScaleIO.SecretRef.Namespace) + } +} diff --git a/staging/src/k8s.io/api/core/v1/types.go b/staging/src/k8s.io/api/core/v1/types.go index 02088d9c4cf..8e3e433de83 100644 --- a/staging/src/k8s.io/api/core/v1/types.go +++ b/staging/src/k8s.io/api/core/v1/types.go @@ -440,7 +440,7 @@ type PersistentVolumeSource struct { PortworxVolume *PortworxVolumeSource `json:"portworxVolume,omitempty" protobuf:"bytes,18,opt,name=portworxVolume"` // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. // +optional - ScaleIO *ScaleIOVolumeSource `json:"scaleIO,omitempty" protobuf:"bytes,19,opt,name=scaleIO"` + ScaleIO *ScaleIOPersistentVolumeSource `json:"scaleIO,omitempty" protobuf:"bytes,19,opt,name=scaleIO"` // Local represents directly-attached storage with node affinity // +optional Local *LocalVolumeSource `json:"local,omitempty" protobuf:"bytes,20,opt,name=local"` @@ -1396,13 +1396,48 @@ type ScaleIOVolumeSource struct { // Flag to enable/disable SSL communication with Gateway, default false // +optional SSLEnabled bool `json:"sslEnabled,omitempty" protobuf:"varint,4,opt,name=sslEnabled"` - // The name of the Protection Domain for the configured storage (defaults to "default"). + // The name of the ScaleIO Protection Domain for the configured storage. // +optional ProtectionDomain string `json:"protectionDomain,omitempty" protobuf:"bytes,5,opt,name=protectionDomain"` - // The Storage Pool associated with the protection domain (defaults to "default"). + // The ScaleIO Storage Pool associated with the protection domain. // +optional StoragePool string `json:"storagePool,omitempty" protobuf:"bytes,6,opt,name=storagePool"` - // Indicates whether the storage for a volume should be thick or thin (defaults to "thin"). + // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. + // +optional + StorageMode string `json:"storageMode,omitempty" protobuf:"bytes,7,opt,name=storageMode"` + // The name of a volume already created in the ScaleIO system + // that is associated with this volume source. + VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,8,opt,name=volumeName"` + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + FSType string `json:"fsType,omitempty" protobuf:"bytes,9,opt,name=fsType"` + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,10,opt,name=readOnly"` +} + +// ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume +type ScaleIOPersistentVolumeSource struct { + // The host address of the ScaleIO API Gateway. + Gateway string `json:"gateway" protobuf:"bytes,1,opt,name=gateway"` + // The name of the storage system as configured in ScaleIO. + System string `json:"system" protobuf:"bytes,2,opt,name=system"` + // SecretRef references to the secret for ScaleIO user and other + // sensitive information. If this is not provided, Login operation will fail. + SecretRef *SecretReference `json:"secretRef" protobuf:"bytes,3,opt,name=secretRef"` + // Flag to enable/disable SSL communication with Gateway, default false + // +optional + SSLEnabled bool `json:"sslEnabled,omitempty" protobuf:"varint,4,opt,name=sslEnabled"` + // The name of the ScaleIO Protection Domain for the configured storage. + // +optional + ProtectionDomain string `json:"protectionDomain,omitempty" protobuf:"bytes,5,opt,name=protectionDomain"` + // The ScaleIO Storage Pool associated with the protection domain. + // +optional + StoragePool string `json:"storagePool,omitempty" protobuf:"bytes,6,opt,name=storagePool"` + // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. // +optional StorageMode string `json:"storageMode,omitempty" protobuf:"bytes,7,opt,name=storageMode"` // The name of a volume already created in the ScaleIO system From 1c9aff8e5855e9dff6ddd3d757f9a626656e261f Mon Sep 17 00:00:00 2001 From: Vladimir Vivien Date: Mon, 16 Oct 2017 17:50:39 -0400 Subject: [PATCH 2/2] ScaleIO - Generated files --- api/openapi-spec/swagger.json | 58 +- api/swagger-spec/apps_v1.json | 6 +- api/swagger-spec/apps_v1beta1.json | 6 +- api/swagger-spec/apps_v1beta2.json | 6 +- api/swagger-spec/batch_v1.json | 6 +- api/swagger-spec/batch_v1beta1.json | 6 +- api/swagger-spec/batch_v2alpha1.json | 6 +- api/swagger-spec/extensions_v1beta1.json | 6 +- .../settings.k8s.io_v1alpha1.json | 6 +- api/swagger-spec/v1.json | 67 +- docs/api-reference/apps/v1/definitions.html | 6 +- .../apps/v1beta1/definitions.html | 6 +- .../apps/v1beta2/definitions.html | 6 +- docs/api-reference/batch/v1/definitions.html | 6 +- .../batch/v1beta1/definitions.html | 6 +- .../batch/v2alpha1/definitions.html | 6 +- .../extensions/v1beta1/definitions.html | 6 +- .../settings.k8s.io/v1alpha1/definitions.html | 6 +- docs/api-reference/v1/definitions.html | 187 +- federation/apis/openapi-spec/swagger.json | 6 +- .../apis/swagger-spec/extensions_v1beta1.json | 6 +- .../extensions/v1beta1/definitions.html | 6 +- pkg/api/v1/zz_generated.conversion.go | 44 +- pkg/api/v1/zz_generated.defaults.go | 2 +- pkg/api/zz_generated.deepcopy.go | 31 +- pkg/volume/scaleio/BUILD | 1 + .../src/k8s.io/api/core/v1/generated.pb.go | 2321 ++++++++++------- .../src/k8s.io/api/core/v1/generated.proto | 52 +- .../core/v1/types_swagger_doc_generated.go | 24 +- .../api/core/v1/zz_generated.deepcopy.go | 31 +- 30 files changed, 1872 insertions(+), 1060 deletions(-) diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 0ab8c7eb30e..91d5f8eb23c 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -68785,7 +68785,7 @@ }, "scaleIO": { "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.", - "$ref": "#/definitions/io.k8s.api.core.v1.ScaleIOVolumeSource" + "$ref": "#/definitions/io.k8s.api.core.v1.ScaleIOPersistentVolumeSource" }, "storageClassName": { "description": "Name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.", @@ -69839,6 +69839,56 @@ } } }, + "io.k8s.api.core.v1.ScaleIOPersistentVolumeSource": { + "description": "ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume", + "required": [ + "gateway", + "system", + "secretRef" + ], + "properties": { + "fsType": { + "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "type": "string" + }, + "gateway": { + "description": "The host address of the ScaleIO API Gateway.", + "type": "string" + }, + "protectionDomain": { + "description": "The name of the ScaleIO Protection Domain for the configured storage.", + "type": "string" + }, + "readOnly": { + "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", + "type": "boolean" + }, + "secretRef": { + "description": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.", + "$ref": "#/definitions/io.k8s.api.core.v1.SecretReference" + }, + "sslEnabled": { + "description": "Flag to enable/disable SSL communication with Gateway, default false", + "type": "boolean" + }, + "storageMode": { + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.", + "type": "string" + }, + "storagePool": { + "description": "The ScaleIO Storage Pool associated with the protection domain.", + "type": "string" + }, + "system": { + "description": "The name of the storage system as configured in ScaleIO.", + "type": "string" + }, + "volumeName": { + "description": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", + "type": "string" + } + } + }, "io.k8s.api.core.v1.ScaleIOVolumeSource": { "description": "ScaleIOVolumeSource represents a persistent ScaleIO volume", "required": [ @@ -69856,7 +69906,7 @@ "type": "string" }, "protectionDomain": { - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\").", + "description": "The name of the ScaleIO Protection Domain for the configured storage.", "type": "string" }, "readOnly": { @@ -69872,11 +69922,11 @@ "type": "boolean" }, "storageMode": { - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\").", + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.", "type": "string" }, "storagePool": { - "description": "The Storage Pool associated with the protection domain (defaults to \"default\").", + "description": "The ScaleIO Storage Pool associated with the protection domain.", "type": "string" }, "system": { diff --git a/api/swagger-spec/apps_v1.json b/api/swagger-spec/apps_v1.json index f6ade39fbab..5ddcfc8d693 100644 --- a/api/swagger-spec/apps_v1.json +++ b/api/swagger-spec/apps_v1.json @@ -2674,15 +2674,15 @@ }, "protectionDomain": { "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." + "description": "The name of the ScaleIO Protection Domain for the configured storage." }, "storagePool": { "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." + "description": "The ScaleIO Storage Pool associated with the protection domain." }, "storageMode": { "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned." }, "volumeName": { "type": "string", diff --git a/api/swagger-spec/apps_v1beta1.json b/api/swagger-spec/apps_v1beta1.json index 8d14224fd69..1ac0c46b5dd 100644 --- a/api/swagger-spec/apps_v1beta1.json +++ b/api/swagger-spec/apps_v1beta1.json @@ -5344,15 +5344,15 @@ }, "protectionDomain": { "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." + "description": "The name of the ScaleIO Protection Domain for the configured storage." }, "storagePool": { "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." + "description": "The ScaleIO Storage Pool associated with the protection domain." }, "storageMode": { "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned." }, "volumeName": { "type": "string", diff --git a/api/swagger-spec/apps_v1beta2.json b/api/swagger-spec/apps_v1beta2.json index 21c25ce4a87..8e90440d1d4 100644 --- a/api/swagger-spec/apps_v1beta2.json +++ b/api/swagger-spec/apps_v1beta2.json @@ -7709,15 +7709,15 @@ }, "protectionDomain": { "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." + "description": "The name of the ScaleIO Protection Domain for the configured storage." }, "storagePool": { "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." + "description": "The ScaleIO Storage Pool associated with the protection domain." }, "storageMode": { "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned." }, "volumeName": { "type": "string", diff --git a/api/swagger-spec/batch_v1.json b/api/swagger-spec/batch_v1.json index db710771fac..b920ff60fcd 100644 --- a/api/swagger-spec/batch_v1.json +++ b/api/swagger-spec/batch_v1.json @@ -2684,15 +2684,15 @@ }, "protectionDomain": { "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." + "description": "The name of the ScaleIO Protection Domain for the configured storage." }, "storagePool": { "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." + "description": "The ScaleIO Storage Pool associated with the protection domain." }, "storageMode": { "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned." }, "volumeName": { "type": "string", diff --git a/api/swagger-spec/batch_v1beta1.json b/api/swagger-spec/batch_v1beta1.json index d1895140622..01c2a81ec1a 100644 --- a/api/swagger-spec/batch_v1beta1.json +++ b/api/swagger-spec/batch_v1beta1.json @@ -2739,15 +2739,15 @@ }, "protectionDomain": { "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." + "description": "The name of the ScaleIO Protection Domain for the configured storage." }, "storagePool": { "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." + "description": "The ScaleIO Storage Pool associated with the protection domain." }, "storageMode": { "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned." }, "volumeName": { "type": "string", diff --git a/api/swagger-spec/batch_v2alpha1.json b/api/swagger-spec/batch_v2alpha1.json index 1dc6de74d31..82f04816849 100644 --- a/api/swagger-spec/batch_v2alpha1.json +++ b/api/swagger-spec/batch_v2alpha1.json @@ -2739,15 +2739,15 @@ }, "protectionDomain": { "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." + "description": "The name of the ScaleIO Protection Domain for the configured storage." }, "storagePool": { "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." + "description": "The ScaleIO Storage Pool associated with the protection domain." }, "storageMode": { "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned." }, "volumeName": { "type": "string", diff --git a/api/swagger-spec/extensions_v1beta1.json b/api/swagger-spec/extensions_v1beta1.json index 807a63c6bfb..1c1b3223776 100644 --- a/api/swagger-spec/extensions_v1beta1.json +++ b/api/swagger-spec/extensions_v1beta1.json @@ -8352,15 +8352,15 @@ }, "protectionDomain": { "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." + "description": "The name of the ScaleIO Protection Domain for the configured storage." }, "storagePool": { "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." + "description": "The ScaleIO Storage Pool associated with the protection domain." }, "storageMode": { "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned." }, "volumeName": { "type": "string", diff --git a/api/swagger-spec/settings.k8s.io_v1alpha1.json b/api/swagger-spec/settings.k8s.io_v1alpha1.json index c7290358a32..736446d8ff2 100644 --- a/api/swagger-spec/settings.k8s.io_v1alpha1.json +++ b/api/swagger-spec/settings.k8s.io_v1alpha1.json @@ -2492,15 +2492,15 @@ }, "protectionDomain": { "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." + "description": "The name of the ScaleIO Protection Domain for the configured storage." }, "storagePool": { "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." + "description": "The ScaleIO Storage Pool associated with the protection domain." }, "storageMode": { "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned." }, "volumeName": { "type": "string", diff --git a/api/swagger-spec/v1.json b/api/swagger-spec/v1.json index 25736020e7b..8c923678dd8 100644 --- a/api/swagger-spec/v1.json +++ b/api/swagger-spec/v1.json @@ -20581,7 +20581,7 @@ "description": "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine" }, "scaleIO": { - "$ref": "v1.ScaleIOVolumeSource", + "$ref": "v1.ScaleIOPersistentVolumeSource", "description": "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes." }, "local": { @@ -21160,9 +21160,9 @@ } } }, - "v1.ScaleIOVolumeSource": { - "id": "v1.ScaleIOVolumeSource", - "description": "ScaleIOVolumeSource represents a persistent ScaleIO volume", + "v1.ScaleIOPersistentVolumeSource": { + "id": "v1.ScaleIOPersistentVolumeSource", + "description": "ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume", "required": [ "gateway", "system", @@ -21178,7 +21178,7 @@ "description": "The name of the storage system as configured in ScaleIO." }, "secretRef": { - "$ref": "v1.LocalObjectReference", + "$ref": "v1.SecretReference", "description": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail." }, "sslEnabled": { @@ -21187,15 +21187,15 @@ }, "protectionDomain": { "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." + "description": "The name of the ScaleIO Protection Domain for the configured storage." }, "storagePool": { "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." + "description": "The ScaleIO Storage Pool associated with the protection domain." }, "storageMode": { "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned." }, "volumeName": { "type": "string", @@ -21979,6 +21979,57 @@ } } }, + "v1.ScaleIOVolumeSource": { + "id": "v1.ScaleIOVolumeSource", + "description": "ScaleIOVolumeSource represents a persistent ScaleIO volume", + "required": [ + "gateway", + "system", + "secretRef" + ], + "properties": { + "gateway": { + "type": "string", + "description": "The host address of the ScaleIO API Gateway." + }, + "system": { + "type": "string", + "description": "The name of the storage system as configured in ScaleIO." + }, + "secretRef": { + "$ref": "v1.LocalObjectReference", + "description": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail." + }, + "sslEnabled": { + "type": "boolean", + "description": "Flag to enable/disable SSL communication with Gateway, default false" + }, + "protectionDomain": { + "type": "string", + "description": "The name of the ScaleIO Protection Domain for the configured storage." + }, + "storagePool": { + "type": "string", + "description": "The ScaleIO Storage Pool associated with the protection domain." + }, + "storageMode": { + "type": "string", + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned." + }, + "volumeName": { + "type": "string", + "description": "The name of a volume already created in the ScaleIO system that is associated with this volume source." + }, + "fsType": { + "type": "string", + "description": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." + }, + "readOnly": { + "type": "boolean", + "description": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." + } + } + }, "v1.StorageOSVolumeSource": { "id": "v1.StorageOSVolumeSource", "description": "Represents a StorageOS persistent volume resource.", diff --git a/docs/api-reference/apps/v1/definitions.html b/docs/api-reference/apps/v1/definitions.html index a5fb1f37053..6d95c37ff66 100755 --- a/docs/api-reference/apps/v1/definitions.html +++ b/docs/api-reference/apps/v1/definitions.html @@ -3826,21 +3826,21 @@ Examples:

protectionDomain

-

The name of the Protection Domain for the configured storage (defaults to "default").

+

The name of the ScaleIO Protection Domain for the configured storage.

false

string

storagePool

-

The Storage Pool associated with the protection domain (defaults to "default").

+

The ScaleIO Storage Pool associated with the protection domain.

false

string

storageMode

-

Indicates whether the storage for a volume should be thick or thin (defaults to "thin").

+

Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.

false

string

diff --git a/docs/api-reference/apps/v1beta1/definitions.html b/docs/api-reference/apps/v1beta1/definitions.html index 32cf7285565..cd12b80b31e 100755 --- a/docs/api-reference/apps/v1beta1/definitions.html +++ b/docs/api-reference/apps/v1beta1/definitions.html @@ -4639,21 +4639,21 @@ Examples:

protectionDomain

-

The name of the Protection Domain for the configured storage (defaults to "default").

+

The name of the ScaleIO Protection Domain for the configured storage.

false

string

storagePool

-

The Storage Pool associated with the protection domain (defaults to "default").

+

The ScaleIO Storage Pool associated with the protection domain.

false

string

storageMode

-

Indicates whether the storage for a volume should be thick or thin (defaults to "thin").

+

Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.

false

string

diff --git a/docs/api-reference/apps/v1beta2/definitions.html b/docs/api-reference/apps/v1beta2/definitions.html index 3ec28753cbf..4bf538b4424 100755 --- a/docs/api-reference/apps/v1beta2/definitions.html +++ b/docs/api-reference/apps/v1beta2/definitions.html @@ -5000,21 +5000,21 @@ Examples:

protectionDomain

-

The name of the Protection Domain for the configured storage (defaults to "default").

+

The name of the ScaleIO Protection Domain for the configured storage.

false

string

storagePool

-

The Storage Pool associated with the protection domain (defaults to "default").

+

The ScaleIO Storage Pool associated with the protection domain.

false

string

storageMode

-

Indicates whether the storage for a volume should be thick or thin (defaults to "thin").

+

Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.

false

string

diff --git a/docs/api-reference/batch/v1/definitions.html b/docs/api-reference/batch/v1/definitions.html index f708c1db858..6533776c43b 100755 --- a/docs/api-reference/batch/v1/definitions.html +++ b/docs/api-reference/batch/v1/definitions.html @@ -3813,21 +3813,21 @@ Examples:

protectionDomain

-

The name of the Protection Domain for the configured storage (defaults to "default").

+

The name of the ScaleIO Protection Domain for the configured storage.

false

string

storagePool

-

The Storage Pool associated with the protection domain (defaults to "default").

+

The ScaleIO Storage Pool associated with the protection domain.

false

string

storageMode

-

Indicates whether the storage for a volume should be thick or thin (defaults to "thin").

+

Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.

false

string

diff --git a/docs/api-reference/batch/v1beta1/definitions.html b/docs/api-reference/batch/v1beta1/definitions.html index f0d9566d63f..ba2f5f60c97 100755 --- a/docs/api-reference/batch/v1beta1/definitions.html +++ b/docs/api-reference/batch/v1beta1/definitions.html @@ -3923,21 +3923,21 @@ Examples:

protectionDomain

-

The name of the Protection Domain for the configured storage (defaults to "default").

+

The name of the ScaleIO Protection Domain for the configured storage.

false

string

storagePool

-

The Storage Pool associated with the protection domain (defaults to "default").

+

The ScaleIO Storage Pool associated with the protection domain.

false

string

storageMode

-

Indicates whether the storage for a volume should be thick or thin (defaults to "thin").

+

Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.

false

string

diff --git a/docs/api-reference/batch/v2alpha1/definitions.html b/docs/api-reference/batch/v2alpha1/definitions.html index b0a534ba99e..db3d23c9243 100755 --- a/docs/api-reference/batch/v2alpha1/definitions.html +++ b/docs/api-reference/batch/v2alpha1/definitions.html @@ -3820,21 +3820,21 @@ Examples:

protectionDomain

-

The name of the Protection Domain for the configured storage (defaults to "default").

+

The name of the ScaleIO Protection Domain for the configured storage.

false

string

storagePool

-

The Storage Pool associated with the protection domain (defaults to "default").

+

The ScaleIO Storage Pool associated with the protection domain.

false

string

storageMode

-

Indicates whether the storage for a volume should be thick or thin (defaults to "thin").

+

Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.

false

string

diff --git a/docs/api-reference/extensions/v1beta1/definitions.html b/docs/api-reference/extensions/v1beta1/definitions.html index fea14958cbf..e719d86fa5c 100755 --- a/docs/api-reference/extensions/v1beta1/definitions.html +++ b/docs/api-reference/extensions/v1beta1/definitions.html @@ -5268,21 +5268,21 @@ Examples:

protectionDomain

-

The name of the Protection Domain for the configured storage (defaults to "default").

+

The name of the ScaleIO Protection Domain for the configured storage.

false

string

storagePool

-

The Storage Pool associated with the protection domain (defaults to "default").

+

The ScaleIO Storage Pool associated with the protection domain.

false

string

storageMode

-

Indicates whether the storage for a volume should be thick or thin (defaults to "thin").

+

Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.

false

string

diff --git a/docs/api-reference/settings.k8s.io/v1alpha1/definitions.html b/docs/api-reference/settings.k8s.io/v1alpha1/definitions.html index bd68f9c62ea..a1455e58545 100755 --- a/docs/api-reference/settings.k8s.io/v1alpha1/definitions.html +++ b/docs/api-reference/settings.k8s.io/v1alpha1/definitions.html @@ -541,21 +541,21 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

protectionDomain

-

The name of the Protection Domain for the configured storage (defaults to "default").

+

The name of the ScaleIO Protection Domain for the configured storage.

false

string

storagePool

-

The Storage Pool associated with the protection domain (defaults to "default").

+

The ScaleIO Storage Pool associated with the protection domain.

false

string

storageMode

-

Indicates whether the storage for a volume should be thick or thin (defaults to "thin").

+

Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.

false

string

diff --git a/docs/api-reference/v1/definitions.html b/docs/api-reference/v1/definitions.html index f458e1865b9..40532c0c4cc 100755 --- a/docs/api-reference/v1/definitions.html +++ b/docs/api-reference/v1/definitions.html @@ -6475,47 +6475,6 @@ Examples:
- -
-

v1.PhotonPersistentDiskVolumeSource

-
-

Represents a Photon Controller persistent disk resource.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescriptionRequiredSchemaDefault

pdID

ID that identifies Photon Controller persistent disk

true

string

fsType

Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.

false

string

-

v1.ScaleIOVolumeSource

@@ -6570,21 +6529,21 @@ Examples:

protectionDomain

-

The name of the Protection Domain for the configured storage (defaults to "default").

+

The name of the ScaleIO Protection Domain for the configured storage.

false

string

storagePool

-

The Storage Pool associated with the protection domain (defaults to "default").

+

The ScaleIO Storage Pool associated with the protection domain.

false

string

storageMode

-

Indicates whether the storage for a volume should be thick or thin (defaults to "thin").

+

Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.

false

string

@@ -6613,6 +6572,47 @@ Examples:
+
+
+

v1.PhotonPersistentDiskVolumeSource

+
+

Represents a Photon Controller persistent disk resource.

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

pdID

ID that identifies Photon Controller persistent disk

true

string

fsType

Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.

false

string

+

v1.HostPathType

@@ -7727,7 +7727,7 @@ Examples:

scaleIO

ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.

false

-

v1.ScaleIOVolumeSource

+

v1.ScaleIOPersistentVolumeSource

@@ -10382,6 +10382,103 @@ Examples:
+
+
+

v1.ScaleIOPersistentVolumeSource

+
+

ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume

+
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionRequiredSchemaDefault

gateway

The host address of the ScaleIO API Gateway.

true

string

system

The name of the storage system as configured in ScaleIO.

true

string

secretRef

SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.

true

v1.SecretReference

sslEnabled

Flag to enable/disable SSL communication with Gateway, default false

false

boolean

false

protectionDomain

The name of the ScaleIO Protection Domain for the configured storage.

false

string

storagePool

The ScaleIO Storage Pool associated with the protection domain.

false

string

storageMode

Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.

false

string

volumeName

The name of a volume already created in the ScaleIO system that is associated with this volume source.

false

string

fsType

Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.

false

string

readOnly

Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.

false

boolean

false

+

v1.ServiceSpec

diff --git a/federation/apis/openapi-spec/swagger.json b/federation/apis/openapi-spec/swagger.json index ba06aec0add..5f1317459bf 100644 --- a/federation/apis/openapi-spec/swagger.json +++ b/federation/apis/openapi-spec/swagger.json @@ -12525,7 +12525,7 @@ "type": "string" }, "protectionDomain": { - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\").", + "description": "The name of the ScaleIO Protection Domain for the configured storage.", "type": "string" }, "readOnly": { @@ -12541,11 +12541,11 @@ "type": "boolean" }, "storageMode": { - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\").", + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.", "type": "string" }, "storagePool": { - "description": "The Storage Pool associated with the protection domain (defaults to \"default\").", + "description": "The ScaleIO Storage Pool associated with the protection domain.", "type": "string" }, "system": { diff --git a/federation/apis/swagger-spec/extensions_v1beta1.json b/federation/apis/swagger-spec/extensions_v1beta1.json index 85287a984dd..d2cbb276615 100644 --- a/federation/apis/swagger-spec/extensions_v1beta1.json +++ b/federation/apis/swagger-spec/extensions_v1beta1.json @@ -6516,15 +6516,15 @@ }, "protectionDomain": { "type": "string", - "description": "The name of the Protection Domain for the configured storage (defaults to \"default\")." + "description": "The name of the ScaleIO Protection Domain for the configured storage." }, "storagePool": { "type": "string", - "description": "The Storage Pool associated with the protection domain (defaults to \"default\")." + "description": "The ScaleIO Storage Pool associated with the protection domain." }, "storageMode": { "type": "string", - "description": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\")." + "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned." }, "volumeName": { "type": "string", diff --git a/federation/docs/api-reference/extensions/v1beta1/definitions.html b/federation/docs/api-reference/extensions/v1beta1/definitions.html index 2851195abd2..6814d8e9384 100755 --- a/federation/docs/api-reference/extensions/v1beta1/definitions.html +++ b/federation/docs/api-reference/extensions/v1beta1/definitions.html @@ -4850,21 +4850,21 @@ Examples:

protectionDomain

-

The name of the Protection Domain for the configured storage (defaults to "default").

+

The name of the ScaleIO Protection Domain for the configured storage.

false

string

storagePool

-

The Storage Pool associated with the protection domain (defaults to "default").

+

The ScaleIO Storage Pool associated with the protection domain.

false

string

storageMode

-

Indicates whether the storage for a volume should be thick or thin (defaults to "thin").

+

Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.

false

string

diff --git a/pkg/api/v1/zz_generated.conversion.go b/pkg/api/v1/zz_generated.conversion.go index be9341c50a4..e16af3ad217 100644 --- a/pkg/api/v1/zz_generated.conversion.go +++ b/pkg/api/v1/zz_generated.conversion.go @@ -335,6 +335,8 @@ func RegisterConversions(scheme *runtime.Scheme) error { Convert_api_ResourceRequirements_To_v1_ResourceRequirements, Convert_v1_SELinuxOptions_To_api_SELinuxOptions, Convert_api_SELinuxOptions_To_v1_SELinuxOptions, + Convert_v1_ScaleIOPersistentVolumeSource_To_api_ScaleIOPersistentVolumeSource, + Convert_api_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource, Convert_v1_ScaleIOVolumeSource_To_api_ScaleIOVolumeSource, Convert_api_ScaleIOVolumeSource_To_v1_ScaleIOVolumeSource, Convert_v1_Secret_To_api_Secret, @@ -3139,7 +3141,7 @@ func autoConvert_v1_PersistentVolumeSource_To_api_PersistentVolumeSource(in *v1. out.AzureDisk = (*api.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk)) out.PhotonPersistentDisk = (*api.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk)) out.PortworxVolume = (*api.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume)) - out.ScaleIO = (*api.ScaleIOVolumeSource)(unsafe.Pointer(in.ScaleIO)) + out.ScaleIO = (*api.ScaleIOPersistentVolumeSource)(unsafe.Pointer(in.ScaleIO)) out.Local = (*api.LocalVolumeSource)(unsafe.Pointer(in.Local)) out.StorageOS = (*api.StorageOSPersistentVolumeSource)(unsafe.Pointer(in.StorageOS)) return nil @@ -3169,7 +3171,7 @@ func autoConvert_api_PersistentVolumeSource_To_v1_PersistentVolumeSource(in *api out.AzureDisk = (*v1.AzureDiskVolumeSource)(unsafe.Pointer(in.AzureDisk)) out.PhotonPersistentDisk = (*v1.PhotonPersistentDiskVolumeSource)(unsafe.Pointer(in.PhotonPersistentDisk)) out.PortworxVolume = (*v1.PortworxVolumeSource)(unsafe.Pointer(in.PortworxVolume)) - out.ScaleIO = (*v1.ScaleIOVolumeSource)(unsafe.Pointer(in.ScaleIO)) + out.ScaleIO = (*v1.ScaleIOPersistentVolumeSource)(unsafe.Pointer(in.ScaleIO)) out.Local = (*v1.LocalVolumeSource)(unsafe.Pointer(in.Local)) out.StorageOS = (*v1.StorageOSPersistentVolumeSource)(unsafe.Pointer(in.StorageOS)) return nil @@ -4494,6 +4496,44 @@ func Convert_api_SELinuxOptions_To_v1_SELinuxOptions(in *api.SELinuxOptions, out return autoConvert_api_SELinuxOptions_To_v1_SELinuxOptions(in, out, s) } +func autoConvert_v1_ScaleIOPersistentVolumeSource_To_api_ScaleIOPersistentVolumeSource(in *v1.ScaleIOPersistentVolumeSource, out *api.ScaleIOPersistentVolumeSource, s conversion.Scope) error { + out.Gateway = in.Gateway + out.System = in.System + out.SecretRef = (*api.SecretReference)(unsafe.Pointer(in.SecretRef)) + out.SSLEnabled = in.SSLEnabled + out.ProtectionDomain = in.ProtectionDomain + out.StoragePool = in.StoragePool + out.StorageMode = in.StorageMode + out.VolumeName = in.VolumeName + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_v1_ScaleIOPersistentVolumeSource_To_api_ScaleIOPersistentVolumeSource is an autogenerated conversion function. +func Convert_v1_ScaleIOPersistentVolumeSource_To_api_ScaleIOPersistentVolumeSource(in *v1.ScaleIOPersistentVolumeSource, out *api.ScaleIOPersistentVolumeSource, s conversion.Scope) error { + return autoConvert_v1_ScaleIOPersistentVolumeSource_To_api_ScaleIOPersistentVolumeSource(in, out, s) +} + +func autoConvert_api_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource(in *api.ScaleIOPersistentVolumeSource, out *v1.ScaleIOPersistentVolumeSource, s conversion.Scope) error { + out.Gateway = in.Gateway + out.System = in.System + out.SecretRef = (*v1.SecretReference)(unsafe.Pointer(in.SecretRef)) + out.SSLEnabled = in.SSLEnabled + out.ProtectionDomain = in.ProtectionDomain + out.StoragePool = in.StoragePool + out.StorageMode = in.StorageMode + out.VolumeName = in.VolumeName + out.FSType = in.FSType + out.ReadOnly = in.ReadOnly + return nil +} + +// Convert_api_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource is an autogenerated conversion function. +func Convert_api_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource(in *api.ScaleIOPersistentVolumeSource, out *v1.ScaleIOPersistentVolumeSource, s conversion.Scope) error { + return autoConvert_api_ScaleIOPersistentVolumeSource_To_v1_ScaleIOPersistentVolumeSource(in, out, s) +} + func autoConvert_v1_ScaleIOVolumeSource_To_api_ScaleIOVolumeSource(in *v1.ScaleIOVolumeSource, out *api.ScaleIOVolumeSource, s conversion.Scope) error { out.Gateway = in.Gateway out.System = in.System diff --git a/pkg/api/v1/zz_generated.defaults.go b/pkg/api/v1/zz_generated.defaults.go index 43c5ff4a716..9779d2a1aa9 100644 --- a/pkg/api/v1/zz_generated.defaults.go +++ b/pkg/api/v1/zz_generated.defaults.go @@ -146,7 +146,7 @@ func SetObjectDefaults_PersistentVolume(in *v1.PersistentVolume) { SetDefaults_AzureDiskVolumeSource(in.Spec.PersistentVolumeSource.AzureDisk) } if in.Spec.PersistentVolumeSource.ScaleIO != nil { - SetDefaults_ScaleIOVolumeSource(in.Spec.PersistentVolumeSource.ScaleIO) + SetDefaults_ScaleIOPersistentVolumeSource(in.Spec.PersistentVolumeSource.ScaleIO) } } diff --git a/pkg/api/zz_generated.deepcopy.go b/pkg/api/zz_generated.deepcopy.go index 859341fe19c..1b5c796241d 100644 --- a/pkg/api/zz_generated.deepcopy.go +++ b/pkg/api/zz_generated.deepcopy.go @@ -631,6 +631,10 @@ func RegisterDeepCopies(scheme *runtime.Scheme) error { in.(*SELinuxOptions).DeepCopyInto(out.(*SELinuxOptions)) return nil }, InType: reflect.TypeOf(&SELinuxOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ScaleIOPersistentVolumeSource).DeepCopyInto(out.(*ScaleIOPersistentVolumeSource)) + return nil + }, InType: reflect.TypeOf(&ScaleIOPersistentVolumeSource{})}, conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { in.(*ScaleIOVolumeSource).DeepCopyInto(out.(*ScaleIOVolumeSource)) return nil @@ -3868,7 +3872,7 @@ func (in *PersistentVolumeSource) DeepCopyInto(out *PersistentVolumeSource) { if *in == nil { *out = nil } else { - *out = new(ScaleIOVolumeSource) + *out = new(ScaleIOPersistentVolumeSource) (*in).DeepCopyInto(*out) } } @@ -5230,6 +5234,31 @@ func (in *SELinuxOptions) DeepCopy() *SELinuxOptions { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScaleIOPersistentVolumeSource) DeepCopyInto(out *ScaleIOPersistentVolumeSource) { + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleIOPersistentVolumeSource. +func (in *ScaleIOPersistentVolumeSource) DeepCopy() *ScaleIOPersistentVolumeSource { + if in == nil { + return nil + } + out := new(ScaleIOPersistentVolumeSource) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ScaleIOVolumeSource) DeepCopyInto(out *ScaleIOVolumeSource) { *out = *in diff --git a/pkg/volume/scaleio/BUILD b/pkg/volume/scaleio/BUILD index 9077321da13..5c103e6e268 100644 --- a/pkg/volume/scaleio/BUILD +++ b/pkg/volume/scaleio/BUILD @@ -23,6 +23,7 @@ go_test( "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", "//vendor/k8s.io/client-go/util/testing:go_default_library", diff --git a/staging/src/k8s.io/api/core/v1/generated.pb.go b/staging/src/k8s.io/api/core/v1/generated.pb.go index 2d032b7b646..1cd0bdc71de 100644 --- a/staging/src/k8s.io/api/core/v1/generated.pb.go +++ b/staging/src/k8s.io/api/core/v1/generated.pb.go @@ -173,6 +173,7 @@ limitations under the License. ResourceQuotaStatus ResourceRequirements SELinuxOptions + ScaleIOPersistentVolumeSource ScaleIOVolumeSource Secret SecretEnvSource @@ -869,134 +870,140 @@ func (m *SELinuxOptions) Reset() { *m = SELinuxOptions{} } func (*SELinuxOptions) ProtoMessage() {} func (*SELinuxOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{147} } +func (m *ScaleIOPersistentVolumeSource) Reset() { *m = ScaleIOPersistentVolumeSource{} } +func (*ScaleIOPersistentVolumeSource) ProtoMessage() {} +func (*ScaleIOPersistentVolumeSource) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{148} +} + func (m *ScaleIOVolumeSource) Reset() { *m = ScaleIOVolumeSource{} } func (*ScaleIOVolumeSource) ProtoMessage() {} -func (*ScaleIOVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{148} } +func (*ScaleIOVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{149} } func (m *Secret) Reset() { *m = Secret{} } func (*Secret) ProtoMessage() {} -func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{149} } +func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{150} } func (m *SecretEnvSource) Reset() { *m = SecretEnvSource{} } func (*SecretEnvSource) ProtoMessage() {} -func (*SecretEnvSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{150} } +func (*SecretEnvSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{151} } func (m *SecretKeySelector) Reset() { *m = SecretKeySelector{} } func (*SecretKeySelector) ProtoMessage() {} -func (*SecretKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{151} } +func (*SecretKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{152} } func (m *SecretList) Reset() { *m = SecretList{} } func (*SecretList) ProtoMessage() {} -func (*SecretList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{152} } +func (*SecretList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{153} } func (m *SecretProjection) Reset() { *m = SecretProjection{} } func (*SecretProjection) ProtoMessage() {} -func (*SecretProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{153} } +func (*SecretProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{154} } func (m *SecretReference) Reset() { *m = SecretReference{} } func (*SecretReference) ProtoMessage() {} -func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{154} } +func (*SecretReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{155} } func (m *SecretVolumeSource) Reset() { *m = SecretVolumeSource{} } func (*SecretVolumeSource) ProtoMessage() {} -func (*SecretVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{155} } +func (*SecretVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{156} } func (m *SecurityContext) Reset() { *m = SecurityContext{} } func (*SecurityContext) ProtoMessage() {} -func (*SecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{156} } +func (*SecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{157} } func (m *SerializedReference) Reset() { *m = SerializedReference{} } func (*SerializedReference) ProtoMessage() {} -func (*SerializedReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{157} } +func (*SerializedReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{158} } func (m *Service) Reset() { *m = Service{} } func (*Service) ProtoMessage() {} -func (*Service) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{158} } +func (*Service) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{159} } func (m *ServiceAccount) Reset() { *m = ServiceAccount{} } func (*ServiceAccount) ProtoMessage() {} -func (*ServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{159} } +func (*ServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{160} } func (m *ServiceAccountList) Reset() { *m = ServiceAccountList{} } func (*ServiceAccountList) ProtoMessage() {} -func (*ServiceAccountList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{160} } +func (*ServiceAccountList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{161} } func (m *ServiceList) Reset() { *m = ServiceList{} } func (*ServiceList) ProtoMessage() {} -func (*ServiceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{161} } +func (*ServiceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{162} } func (m *ServicePort) Reset() { *m = ServicePort{} } func (*ServicePort) ProtoMessage() {} -func (*ServicePort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{162} } +func (*ServicePort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{163} } func (m *ServiceProxyOptions) Reset() { *m = ServiceProxyOptions{} } func (*ServiceProxyOptions) ProtoMessage() {} -func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{163} } +func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{164} } func (m *ServiceSpec) Reset() { *m = ServiceSpec{} } func (*ServiceSpec) ProtoMessage() {} -func (*ServiceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{164} } +func (*ServiceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{165} } func (m *ServiceStatus) Reset() { *m = ServiceStatus{} } func (*ServiceStatus) ProtoMessage() {} -func (*ServiceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{165} } +func (*ServiceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{166} } func (m *SessionAffinityConfig) Reset() { *m = SessionAffinityConfig{} } func (*SessionAffinityConfig) ProtoMessage() {} -func (*SessionAffinityConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{166} } +func (*SessionAffinityConfig) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{167} } func (m *StorageOSPersistentVolumeSource) Reset() { *m = StorageOSPersistentVolumeSource{} } func (*StorageOSPersistentVolumeSource) ProtoMessage() {} func (*StorageOSPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{167} + return fileDescriptorGenerated, []int{168} } func (m *StorageOSVolumeSource) Reset() { *m = StorageOSVolumeSource{} } func (*StorageOSVolumeSource) ProtoMessage() {} -func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{168} } +func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{169} } func (m *Sysctl) Reset() { *m = Sysctl{} } func (*Sysctl) ProtoMessage() {} -func (*Sysctl) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{169} } +func (*Sysctl) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{170} } func (m *TCPSocketAction) Reset() { *m = TCPSocketAction{} } func (*TCPSocketAction) ProtoMessage() {} -func (*TCPSocketAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{170} } +func (*TCPSocketAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{171} } func (m *Taint) Reset() { *m = Taint{} } func (*Taint) ProtoMessage() {} -func (*Taint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{171} } +func (*Taint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{172} } func (m *Toleration) Reset() { *m = Toleration{} } func (*Toleration) ProtoMessage() {} -func (*Toleration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{172} } +func (*Toleration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{173} } func (m *Volume) Reset() { *m = Volume{} } func (*Volume) ProtoMessage() {} -func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{173} } +func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{174} } func (m *VolumeMount) Reset() { *m = VolumeMount{} } func (*VolumeMount) ProtoMessage() {} -func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{174} } +func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{175} } func (m *VolumeProjection) Reset() { *m = VolumeProjection{} } func (*VolumeProjection) ProtoMessage() {} -func (*VolumeProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{175} } +func (*VolumeProjection) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{176} } func (m *VolumeSource) Reset() { *m = VolumeSource{} } func (*VolumeSource) ProtoMessage() {} -func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{176} } +func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{177} } func (m *VsphereVirtualDiskVolumeSource) Reset() { *m = VsphereVirtualDiskVolumeSource{} } func (*VsphereVirtualDiskVolumeSource) ProtoMessage() {} func (*VsphereVirtualDiskVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{177} + return fileDescriptorGenerated, []int{178} } func (m *WeightedPodAffinityTerm) Reset() { *m = WeightedPodAffinityTerm{} } func (*WeightedPodAffinityTerm) ProtoMessage() {} func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{178} + return fileDescriptorGenerated, []int{179} } func init() { @@ -1148,6 +1155,7 @@ func init() { proto.RegisterType((*ResourceQuotaStatus)(nil), "k8s.io.api.core.v1.ResourceQuotaStatus") proto.RegisterType((*ResourceRequirements)(nil), "k8s.io.api.core.v1.ResourceRequirements") proto.RegisterType((*SELinuxOptions)(nil), "k8s.io.api.core.v1.SELinuxOptions") + proto.RegisterType((*ScaleIOPersistentVolumeSource)(nil), "k8s.io.api.core.v1.ScaleIOPersistentVolumeSource") proto.RegisterType((*ScaleIOVolumeSource)(nil), "k8s.io.api.core.v1.ScaleIOVolumeSource") proto.RegisterType((*Secret)(nil), "k8s.io.api.core.v1.Secret") proto.RegisterType((*SecretEnvSource)(nil), "k8s.io.api.core.v1.SecretEnvSource") @@ -8324,7 +8332,7 @@ func (m *SELinuxOptions) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func (m *ScaleIOVolumeSource) Marshal() (dAtA []byte, err error) { +func (m *ScaleIOPersistentVolumeSource) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalTo(dAtA) @@ -8334,7 +8342,7 @@ func (m *ScaleIOVolumeSource) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *ScaleIOVolumeSource) MarshalTo(dAtA []byte) (int, error) { +func (m *ScaleIOPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { var i int _ = i var l int @@ -8396,6 +8404,78 @@ func (m *ScaleIOVolumeSource) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *ScaleIOVolumeSource) 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 *ScaleIOVolumeSource) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + dAtA[i] = 0xa + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Gateway))) + i += copy(dAtA[i:], m.Gateway) + dAtA[i] = 0x12 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.System))) + i += copy(dAtA[i:], m.System) + if m.SecretRef != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) + n169, err := m.SecretRef.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n169 + } + dAtA[i] = 0x20 + i++ + if m.SSLEnabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + dAtA[i] = 0x2a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.ProtectionDomain))) + i += copy(dAtA[i:], m.ProtectionDomain) + dAtA[i] = 0x32 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.StoragePool))) + i += copy(dAtA[i:], m.StoragePool) + dAtA[i] = 0x3a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.StorageMode))) + i += copy(dAtA[i:], m.StorageMode) + dAtA[i] = 0x42 + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.VolumeName))) + i += copy(dAtA[i:], m.VolumeName) + dAtA[i] = 0x4a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(len(m.FSType))) + i += copy(dAtA[i:], m.FSType) + dAtA[i] = 0x50 + i++ + if m.ReadOnly { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + return i, nil +} + func (m *Secret) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -8414,11 +8494,11 @@ func (m *Secret) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n169, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n170, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n169 + i += n170 if len(m.Data) > 0 { keysForData := make([]string, 0, len(m.Data)) for k := range m.Data { @@ -8494,11 +8574,11 @@ func (m *SecretEnvSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) - n170, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + n171, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n170 + i += n171 if m.Optional != nil { dAtA[i] = 0x10 i++ @@ -8530,11 +8610,11 @@ func (m *SecretKeySelector) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) - n171, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + n172, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n171 + i += n172 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Key))) @@ -8570,11 +8650,11 @@ func (m *SecretList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n172, err := m.ListMeta.MarshalTo(dAtA[i:]) + n173, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n172 + i += n173 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -8608,11 +8688,11 @@ func (m *SecretProjection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LocalObjectReference.Size())) - n173, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) + n174, err := m.LocalObjectReference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n173 + i += n174 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -8732,11 +8812,11 @@ func (m *SecurityContext) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Capabilities.Size())) - n174, err := m.Capabilities.MarshalTo(dAtA[i:]) + n175, err := m.Capabilities.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n174 + i += n175 } if m.Privileged != nil { dAtA[i] = 0x10 @@ -8752,11 +8832,11 @@ func (m *SecurityContext) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SELinuxOptions.Size())) - n175, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) + n176, err := m.SELinuxOptions.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n175 + i += n176 } if m.RunAsUser != nil { dAtA[i] = 0x20 @@ -8814,11 +8894,11 @@ func (m *SerializedReference) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Reference.Size())) - n176, err := m.Reference.MarshalTo(dAtA[i:]) + n177, err := m.Reference.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n176 + i += n177 return i, nil } @@ -8840,27 +8920,27 @@ func (m *Service) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n177, err := m.ObjectMeta.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n177 - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) - n178, err := m.Spec.MarshalTo(dAtA[i:]) + n178, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n178 - dAtA[i] = 0x1a + dAtA[i] = 0x12 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) - n179, err := m.Status.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size())) + n179, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n179 + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size())) + n180, err := m.Status.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n180 return i, nil } @@ -8882,11 +8962,11 @@ func (m *ServiceAccount) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size())) - n180, err := m.ObjectMeta.MarshalTo(dAtA[i:]) + n181, err := m.ObjectMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n180 + i += n181 if len(m.Secrets) > 0 { for _, msg := range m.Secrets { dAtA[i] = 0x12 @@ -8942,11 +9022,11 @@ func (m *ServiceAccountList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n181, err := m.ListMeta.MarshalTo(dAtA[i:]) + n182, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n181 + i += n182 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -8980,11 +9060,11 @@ func (m *ServiceList) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ListMeta.Size())) - n182, err := m.ListMeta.MarshalTo(dAtA[i:]) + n183, err := m.ListMeta.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n182 + i += n183 if len(m.Items) > 0 { for _, msg := range m.Items { dAtA[i] = 0x12 @@ -9029,11 +9109,11 @@ func (m *ServicePort) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.TargetPort.Size())) - n183, err := m.TargetPort.MarshalTo(dAtA[i:]) + n184, err := m.TargetPort.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n183 + i += n184 dAtA[i] = 0x28 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.NodePort)) @@ -9180,11 +9260,11 @@ func (m *ServiceSpec) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x72 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SessionAffinityConfig.Size())) - n184, err := m.SessionAffinityConfig.MarshalTo(dAtA[i:]) + n185, err := m.SessionAffinityConfig.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n184 + i += n185 } return i, nil } @@ -9207,11 +9287,11 @@ func (m *ServiceStatus) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.LoadBalancer.Size())) - n185, err := m.LoadBalancer.MarshalTo(dAtA[i:]) + n186, err := m.LoadBalancer.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n185 + i += n186 return i, nil } @@ -9234,11 +9314,11 @@ func (m *SessionAffinityConfig) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ClientIP.Size())) - n186, err := m.ClientIP.MarshalTo(dAtA[i:]) + n187, err := m.ClientIP.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n186 + i += n187 } return i, nil } @@ -9282,11 +9362,11 @@ func (m *StorageOSPersistentVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n187, err := m.SecretRef.MarshalTo(dAtA[i:]) + n188, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n187 + i += n188 } return i, nil } @@ -9330,11 +9410,11 @@ func (m *StorageOSVolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintGenerated(dAtA, i, uint64(m.SecretRef.Size())) - n188, err := m.SecretRef.MarshalTo(dAtA[i:]) + n189, err := m.SecretRef.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n188 + i += n189 } return i, nil } @@ -9383,11 +9463,11 @@ func (m *TCPSocketAction) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Port.Size())) - n189, err := m.Port.MarshalTo(dAtA[i:]) + n190, err := m.Port.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n189 + i += n190 dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(len(m.Host))) @@ -9426,11 +9506,11 @@ func (m *Taint) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.TimeAdded.Size())) - n190, err := m.TimeAdded.MarshalTo(dAtA[i:]) + n191, err := m.TimeAdded.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n190 + i += n191 } return i, nil } @@ -9496,11 +9576,11 @@ func (m *Volume) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.VolumeSource.Size())) - n191, err := m.VolumeSource.MarshalTo(dAtA[i:]) + n192, err := m.VolumeSource.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n191 + i += n192 return i, nil } @@ -9567,32 +9647,32 @@ func (m *VolumeProjection) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) - n192, err := m.Secret.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n192 - } - if m.DownwardAPI != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) - n193, err := m.DownwardAPI.MarshalTo(dAtA[i:]) + n193, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n193 } - if m.ConfigMap != nil { - dAtA[i] = 0x1a + if m.DownwardAPI != nil { + dAtA[i] = 0x12 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) - n194, err := m.ConfigMap.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) + n194, err := m.DownwardAPI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n194 } + if m.ConfigMap != nil { + dAtA[i] = 0x1a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) + n195, err := m.ConfigMap.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n195 + } return i, nil } @@ -9615,163 +9695,163 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintGenerated(dAtA, i, uint64(m.HostPath.Size())) - n195, err := m.HostPath.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n195 - } - if m.EmptyDir != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.EmptyDir.Size())) - n196, err := m.EmptyDir.MarshalTo(dAtA[i:]) + n196, err := m.HostPath.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n196 } - if m.GCEPersistentDisk != nil { - dAtA[i] = 0x1a + if m.EmptyDir != nil { + dAtA[i] = 0x12 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.GCEPersistentDisk.Size())) - n197, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.EmptyDir.Size())) + n197, err := m.EmptyDir.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n197 } - if m.AWSElasticBlockStore != nil { - dAtA[i] = 0x22 + if m.GCEPersistentDisk != nil { + dAtA[i] = 0x1a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) - n198, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.GCEPersistentDisk.Size())) + n198, err := m.GCEPersistentDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n198 } - if m.GitRepo != nil { - dAtA[i] = 0x2a + if m.AWSElasticBlockStore != nil { + dAtA[i] = 0x22 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.GitRepo.Size())) - n199, err := m.GitRepo.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.AWSElasticBlockStore.Size())) + n199, err := m.AWSElasticBlockStore.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n199 } - if m.Secret != nil { - dAtA[i] = 0x32 + if m.GitRepo != nil { + dAtA[i] = 0x2a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) - n200, err := m.Secret.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.GitRepo.Size())) + n200, err := m.GitRepo.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n200 } - if m.NFS != nil { - dAtA[i] = 0x3a + if m.Secret != nil { + dAtA[i] = 0x32 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) - n201, err := m.NFS.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Secret.Size())) + n201, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n201 } - if m.ISCSI != nil { - dAtA[i] = 0x42 + if m.NFS != nil { + dAtA[i] = 0x3a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) - n202, err := m.ISCSI.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.NFS.Size())) + n202, err := m.NFS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n202 } - if m.Glusterfs != nil { - dAtA[i] = 0x4a + if m.ISCSI != nil { + dAtA[i] = 0x42 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) - n203, err := m.Glusterfs.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.ISCSI.Size())) + n203, err := m.ISCSI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n203 } - if m.PersistentVolumeClaim != nil { - dAtA[i] = 0x52 + if m.Glusterfs != nil { + dAtA[i] = 0x4a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeClaim.Size())) - n204, err := m.PersistentVolumeClaim.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Glusterfs.Size())) + n204, err := m.Glusterfs.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n204 } - if m.RBD != nil { - dAtA[i] = 0x5a + if m.PersistentVolumeClaim != nil { + dAtA[i] = 0x52 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) - n205, err := m.RBD.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.PersistentVolumeClaim.Size())) + n205, err := m.PersistentVolumeClaim.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n205 } - if m.FlexVolume != nil { - dAtA[i] = 0x62 + if m.RBD != nil { + dAtA[i] = 0x5a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) - n206, err := m.FlexVolume.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.RBD.Size())) + n206, err := m.RBD.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n206 } - if m.Cinder != nil { - dAtA[i] = 0x6a + if m.FlexVolume != nil { + dAtA[i] = 0x62 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) - n207, err := m.Cinder.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.FlexVolume.Size())) + n207, err := m.FlexVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n207 } - if m.CephFS != nil { - dAtA[i] = 0x72 + if m.Cinder != nil { + dAtA[i] = 0x6a i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) - n208, err := m.CephFS.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.Cinder.Size())) + n208, err := m.Cinder.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n208 } - if m.Flocker != nil { - dAtA[i] = 0x7a + if m.CephFS != nil { + dAtA[i] = 0x72 i++ - i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) - n209, err := m.Flocker.MarshalTo(dAtA[i:]) + i = encodeVarintGenerated(dAtA, i, uint64(m.CephFS.Size())) + n209, err := m.CephFS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } i += n209 } + if m.Flocker != nil { + dAtA[i] = 0x7a + i++ + i = encodeVarintGenerated(dAtA, i, uint64(m.Flocker.Size())) + n210, err := m.Flocker.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n210 + } if m.DownwardAPI != nil { dAtA[i] = 0x82 i++ dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.DownwardAPI.Size())) - n210, err := m.DownwardAPI.MarshalTo(dAtA[i:]) + n211, err := m.DownwardAPI.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n210 + i += n211 } if m.FC != nil { dAtA[i] = 0x8a @@ -9779,11 +9859,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.FC.Size())) - n211, err := m.FC.MarshalTo(dAtA[i:]) + n212, err := m.FC.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n211 + i += n212 } if m.AzureFile != nil { dAtA[i] = 0x92 @@ -9791,11 +9871,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.AzureFile.Size())) - n212, err := m.AzureFile.MarshalTo(dAtA[i:]) + n213, err := m.AzureFile.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n212 + i += n213 } if m.ConfigMap != nil { dAtA[i] = 0x9a @@ -9803,11 +9883,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ConfigMap.Size())) - n213, err := m.ConfigMap.MarshalTo(dAtA[i:]) + n214, err := m.ConfigMap.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n213 + i += n214 } if m.VsphereVolume != nil { dAtA[i] = 0xa2 @@ -9815,11 +9895,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.VsphereVolume.Size())) - n214, err := m.VsphereVolume.MarshalTo(dAtA[i:]) + n215, err := m.VsphereVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n214 + i += n215 } if m.Quobyte != nil { dAtA[i] = 0xaa @@ -9827,11 +9907,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Quobyte.Size())) - n215, err := m.Quobyte.MarshalTo(dAtA[i:]) + n216, err := m.Quobyte.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n215 + i += n216 } if m.AzureDisk != nil { dAtA[i] = 0xb2 @@ -9839,11 +9919,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.AzureDisk.Size())) - n216, err := m.AzureDisk.MarshalTo(dAtA[i:]) + n217, err := m.AzureDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n216 + i += n217 } if m.PhotonPersistentDisk != nil { dAtA[i] = 0xba @@ -9851,11 +9931,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PhotonPersistentDisk.Size())) - n217, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) + n218, err := m.PhotonPersistentDisk.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n217 + i += n218 } if m.PortworxVolume != nil { dAtA[i] = 0xc2 @@ -9863,11 +9943,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PortworxVolume.Size())) - n218, err := m.PortworxVolume.MarshalTo(dAtA[i:]) + n219, err := m.PortworxVolume.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n218 + i += n219 } if m.ScaleIO != nil { dAtA[i] = 0xca @@ -9875,11 +9955,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.ScaleIO.Size())) - n219, err := m.ScaleIO.MarshalTo(dAtA[i:]) + n220, err := m.ScaleIO.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n219 + i += n220 } if m.Projected != nil { dAtA[i] = 0xd2 @@ -9887,11 +9967,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.Projected.Size())) - n220, err := m.Projected.MarshalTo(dAtA[i:]) + n221, err := m.Projected.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n220 + i += n221 } if m.StorageOS != nil { dAtA[i] = 0xda @@ -9899,11 +9979,11 @@ func (m *VolumeSource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.StorageOS.Size())) - n221, err := m.StorageOS.MarshalTo(dAtA[i:]) + n222, err := m.StorageOS.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n221 + i += n222 } return i, nil } @@ -9963,11 +10043,11 @@ func (m *WeightedPodAffinityTerm) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintGenerated(dAtA, i, uint64(m.PodAffinityTerm.Size())) - n222, err := m.PodAffinityTerm.MarshalTo(dAtA[i:]) + n223, err := m.PodAffinityTerm.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n222 + i += n223 return i, nil } @@ -12591,6 +12671,32 @@ func (m *SELinuxOptions) Size() (n int) { return n } +func (m *ScaleIOPersistentVolumeSource) Size() (n int) { + var l int + _ = l + l = len(m.Gateway) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.System) + n += 1 + l + sovGenerated(uint64(l)) + if m.SecretRef != nil { + l = m.SecretRef.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 2 + l = len(m.ProtectionDomain) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.StoragePool) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.StorageMode) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.VolumeName) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.FSType) + n += 1 + l + sovGenerated(uint64(l)) + n += 2 + return n +} + func (m *ScaleIOVolumeSource) Size() (n int) { var l int _ = l @@ -14639,7 +14745,7 @@ func (this *PersistentVolumeSource) String() string { `AzureDisk:` + strings.Replace(fmt.Sprintf("%v", this.AzureDisk), "AzureDiskVolumeSource", "AzureDiskVolumeSource", 1) + `,`, `PhotonPersistentDisk:` + strings.Replace(fmt.Sprintf("%v", this.PhotonPersistentDisk), "PhotonPersistentDiskVolumeSource", "PhotonPersistentDiskVolumeSource", 1) + `,`, `PortworxVolume:` + strings.Replace(fmt.Sprintf("%v", this.PortworxVolume), "PortworxVolumeSource", "PortworxVolumeSource", 1) + `,`, - `ScaleIO:` + strings.Replace(fmt.Sprintf("%v", this.ScaleIO), "ScaleIOVolumeSource", "ScaleIOVolumeSource", 1) + `,`, + `ScaleIO:` + strings.Replace(fmt.Sprintf("%v", this.ScaleIO), "ScaleIOPersistentVolumeSource", "ScaleIOPersistentVolumeSource", 1) + `,`, `Local:` + strings.Replace(fmt.Sprintf("%v", this.Local), "LocalVolumeSource", "LocalVolumeSource", 1) + `,`, `StorageOS:` + strings.Replace(fmt.Sprintf("%v", this.StorageOS), "StorageOSPersistentVolumeSource", "StorageOSPersistentVolumeSource", 1) + `,`, `}`, @@ -15302,6 +15408,25 @@ func (this *SELinuxOptions) String() string { }, "") return s } +func (this *ScaleIOPersistentVolumeSource) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ScaleIOPersistentVolumeSource{`, + `Gateway:` + fmt.Sprintf("%v", this.Gateway) + `,`, + `System:` + fmt.Sprintf("%v", this.System) + `,`, + `SecretRef:` + strings.Replace(fmt.Sprintf("%v", this.SecretRef), "SecretReference", "SecretReference", 1) + `,`, + `SSLEnabled:` + fmt.Sprintf("%v", this.SSLEnabled) + `,`, + `ProtectionDomain:` + fmt.Sprintf("%v", this.ProtectionDomain) + `,`, + `StoragePool:` + fmt.Sprintf("%v", this.StoragePool) + `,`, + `StorageMode:` + fmt.Sprintf("%v", this.StorageMode) + `,`, + `VolumeName:` + fmt.Sprintf("%v", this.VolumeName) + `,`, + `FSType:` + fmt.Sprintf("%v", this.FSType) + `,`, + `ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, + `}`, + }, "") + return s +} func (this *ScaleIOVolumeSource) String() string { if this == nil { return "nil" @@ -32854,7 +32979,7 @@ func (m *PersistentVolumeSource) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.ScaleIO == nil { - m.ScaleIO = &ScaleIOVolumeSource{} + m.ScaleIO = &ScaleIOPersistentVolumeSource{} } if err := m.ScaleIO.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -40885,6 +41010,332 @@ func (m *SELinuxOptions) Unmarshal(dAtA []byte) error { } return nil } +func (m *ScaleIOPersistentVolumeSource) 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: ScaleIOPersistentVolumeSource: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScaleIOPersistentVolumeSource: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Gateway", 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.Gateway = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field System", 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.System = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SecretRef", 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.SecretRef == nil { + m.SecretRef = &SecretReference{} + } + if err := m.SecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SSLEnabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.SSLEnabled = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProtectionDomain", 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.ProtectionDomain = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoragePool", 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.StoragePool = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageMode", 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.StorageMode = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeName", 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.VolumeName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FSType", 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.FSType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReadOnly", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.ReadOnly = bool(v != 0) + 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 *ScaleIOVolumeSource) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -46744,747 +47195,749 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 11864 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x70, 0x24, 0xc7, - 0x75, 0x98, 0x66, 0x17, 0x5f, 0xfb, 0xf0, 0xdd, 0x87, 0x23, 0xf7, 0x40, 0xf2, 0x70, 0x1c, 0x4a, - 0xe4, 0xf1, 0x0b, 0x10, 0x8f, 0xa4, 0x48, 0x89, 0x14, 0x25, 0x00, 0x0b, 0xdc, 0x81, 0x77, 0xb8, - 0x5b, 0xf6, 0xe2, 0xee, 0x44, 0x8a, 0x66, 0x34, 0xd8, 0x6d, 0x2c, 0x86, 0x18, 0xcc, 0x2c, 0x67, - 0x66, 0x71, 0x07, 0x96, 0x55, 0x95, 0x28, 0xb2, 0xf2, 0x21, 0xff, 0x50, 0x25, 0xaa, 0xc4, 0xb1, - 0x54, 0x4e, 0x55, 0x3e, 0xca, 0x56, 0x9c, 0xa4, 0xe2, 0xc8, 0xb1, 0x1d, 0xc9, 0xa9, 0x38, 0xce, - 0x47, 0xc9, 0x7f, 0x14, 0x3b, 0x7f, 0xa4, 0x2a, 0x57, 0x10, 0xeb, 0x94, 0x4a, 0x2a, 0x3f, 0x92, - 0x4a, 0xa2, 0x5f, 0x46, 0x9c, 0x28, 0xd5, 0x9f, 0xd3, 0x3d, 0x3b, 0xb3, 0xbb, 0x38, 0xe2, 0x40, - 0x4a, 0xa5, 0x7f, 0xbb, 0xef, 0xbd, 0x7e, 0xdd, 0xd3, 0x1f, 0xaf, 0x5f, 0xbf, 0x7e, 0xef, 0x35, - 0xbc, 0xb4, 0xf3, 0x62, 0x34, 0xef, 0x06, 0x0b, 0x3b, 0xed, 0x4d, 0x12, 0xfa, 0x24, 0x26, 0xd1, - 0xc2, 0x1e, 0xf1, 0x1b, 0x41, 0xb8, 0x20, 0x10, 0x4e, 0xcb, 0x5d, 0xa8, 0x07, 0x21, 0x59, 0xd8, - 0x7b, 0x66, 0xa1, 0x49, 0x7c, 0x12, 0x3a, 0x31, 0x69, 0xcc, 0xb7, 0xc2, 0x20, 0x0e, 0x10, 0xe2, - 0x34, 0xf3, 0x4e, 0xcb, 0x9d, 0xa7, 0x34, 0xf3, 0x7b, 0xcf, 0xcc, 0x3e, 0xdd, 0x74, 0xe3, 0xed, - 0xf6, 0xe6, 0x7c, 0x3d, 0xd8, 0x5d, 0x68, 0x06, 0xcd, 0x60, 0x81, 0x91, 0x6e, 0xb6, 0xb7, 0xd8, - 0x3f, 0xf6, 0x87, 0xfd, 0xe2, 0x2c, 0x66, 0xd7, 0x93, 0x6a, 0xc8, 0xed, 0x98, 0xf8, 0x91, 0x1b, - 0xf8, 0xd1, 0xd3, 0x4e, 0xcb, 0x8d, 0x48, 0xb8, 0x47, 0xc2, 0x85, 0xd6, 0x4e, 0x93, 0xe2, 0x22, - 0x93, 0x60, 0x61, 0xef, 0x99, 0x4d, 0x12, 0x3b, 0x1d, 0x2d, 0x9a, 0x7d, 0x2e, 0x61, 0xb7, 0xeb, - 0xd4, 0xb7, 0x5d, 0x9f, 0x84, 0xfb, 0x92, 0xc7, 0x42, 0x48, 0xa2, 0xa0, 0x1d, 0xd6, 0xc9, 0x91, - 0x4a, 0x45, 0x0b, 0xbb, 0x24, 0x76, 0x32, 0xbe, 0x7e, 0x76, 0x21, 0xaf, 0x54, 0xd8, 0xf6, 0x63, - 0x77, 0xb7, 0xb3, 0x9a, 0x8f, 0xf5, 0x2a, 0x10, 0xd5, 0xb7, 0xc9, 0xae, 0xd3, 0x51, 0xee, 0xd9, - 0xbc, 0x72, 0xed, 0xd8, 0xf5, 0x16, 0x5c, 0x3f, 0x8e, 0xe2, 0x30, 0x5d, 0xc8, 0xfe, 0x9e, 0x05, - 0xe7, 0x16, 0x6f, 0xd6, 0x56, 0x3c, 0x27, 0x8a, 0xdd, 0xfa, 0x92, 0x17, 0xd4, 0x77, 0x6a, 0x71, - 0x10, 0x92, 0x1b, 0x81, 0xd7, 0xde, 0x25, 0x35, 0xd6, 0x11, 0xe8, 0x29, 0x18, 0xd9, 0x63, 0xff, - 0xd7, 0x2a, 0x65, 0xeb, 0x9c, 0x75, 0xbe, 0xb4, 0x34, 0xf5, 0x9d, 0x83, 0xb9, 0x0f, 0xdd, 0x39, - 0x98, 0x1b, 0xb9, 0x21, 0xe0, 0x58, 0x51, 0xa0, 0x47, 0x61, 0x68, 0x2b, 0xda, 0xd8, 0x6f, 0x91, - 0x72, 0x81, 0xd1, 0x4e, 0x08, 0xda, 0xa1, 0xd5, 0x1a, 0x85, 0x62, 0x81, 0x45, 0x0b, 0x50, 0x6a, - 0x39, 0x61, 0xec, 0xc6, 0x6e, 0xe0, 0x97, 0x8b, 0xe7, 0xac, 0xf3, 0x83, 0x4b, 0xd3, 0x82, 0xb4, - 0x54, 0x95, 0x08, 0x9c, 0xd0, 0xd0, 0x66, 0x84, 0xc4, 0x69, 0x5c, 0xf3, 0xbd, 0xfd, 0xf2, 0xc0, - 0x39, 0xeb, 0xfc, 0x48, 0xd2, 0x0c, 0x2c, 0xe0, 0x58, 0x51, 0xd8, 0xbf, 0x5c, 0x80, 0x91, 0xc5, - 0xad, 0x2d, 0xd7, 0x77, 0xe3, 0x7d, 0x74, 0x03, 0xc6, 0xfc, 0xa0, 0x41, 0xe4, 0x7f, 0xf6, 0x15, - 0xa3, 0x17, 0xce, 0xcd, 0x77, 0xce, 0xcc, 0xf9, 0xab, 0x1a, 0xdd, 0xd2, 0xd4, 0x9d, 0x83, 0xb9, - 0x31, 0x1d, 0x82, 0x0d, 0x3e, 0x08, 0xc3, 0x68, 0x2b, 0x68, 0x28, 0xb6, 0x05, 0xc6, 0x76, 0x2e, - 0x8b, 0x6d, 0x35, 0x21, 0x5b, 0x9a, 0xbc, 0x73, 0x30, 0x37, 0xaa, 0x01, 0xb0, 0xce, 0x04, 0x6d, - 0xc2, 0x24, 0xfd, 0xeb, 0xc7, 0xae, 0xe2, 0x5b, 0x64, 0x7c, 0x1f, 0xc9, 0xe3, 0xab, 0x91, 0x2e, - 0x9d, 0xba, 0x73, 0x30, 0x37, 0x99, 0x02, 0xe2, 0x34, 0x43, 0xfb, 0x5d, 0x98, 0x58, 0x8c, 0x63, - 0xa7, 0xbe, 0x4d, 0x1a, 0x7c, 0x04, 0xd1, 0x73, 0x30, 0xe0, 0x3b, 0xbb, 0x44, 0x8c, 0xef, 0x39, - 0xd1, 0xb1, 0x03, 0x57, 0x9d, 0x5d, 0x72, 0x78, 0x30, 0x37, 0x75, 0xdd, 0x77, 0xdf, 0x69, 0x8b, - 0x59, 0x41, 0x61, 0x98, 0x51, 0xa3, 0x0b, 0x00, 0x0d, 0xb2, 0xe7, 0xd6, 0x49, 0xd5, 0x89, 0xb7, - 0xc5, 0x78, 0x23, 0x51, 0x16, 0x2a, 0x0a, 0x83, 0x35, 0x2a, 0xfb, 0x36, 0x94, 0x16, 0xf7, 0x02, - 0xb7, 0x51, 0x0d, 0x1a, 0x11, 0xda, 0x81, 0xc9, 0x56, 0x48, 0xb6, 0x48, 0xa8, 0x40, 0x65, 0xeb, - 0x5c, 0xf1, 0xfc, 0xe8, 0x85, 0xf3, 0x99, 0x1f, 0x6b, 0x92, 0xae, 0xf8, 0x71, 0xb8, 0xbf, 0x74, - 0xbf, 0xa8, 0x6f, 0x32, 0x85, 0xc5, 0x69, 0xce, 0xf6, 0xbf, 0x29, 0xc0, 0xe9, 0xc5, 0x77, 0xdb, - 0x21, 0xa9, 0xb8, 0xd1, 0x4e, 0x7a, 0x86, 0x37, 0xdc, 0x68, 0xe7, 0x6a, 0xd2, 0x03, 0x6a, 0x6a, - 0x55, 0x04, 0x1c, 0x2b, 0x0a, 0xf4, 0x34, 0x0c, 0xd3, 0xdf, 0xd7, 0xf1, 0x9a, 0xf8, 0xe4, 0x53, - 0x82, 0x78, 0xb4, 0xe2, 0xc4, 0x4e, 0x85, 0xa3, 0xb0, 0xa4, 0x41, 0xeb, 0x30, 0x5a, 0x67, 0x0b, - 0xb2, 0xb9, 0x1e, 0x34, 0x08, 0x1b, 0xcc, 0xd2, 0xd2, 0x93, 0x94, 0x7c, 0x39, 0x01, 0x1f, 0x1e, - 0xcc, 0x95, 0x79, 0xdb, 0x04, 0x0b, 0x0d, 0x87, 0xf5, 0xf2, 0xc8, 0x56, 0xeb, 0x6b, 0x80, 0x71, - 0x82, 0x8c, 0xb5, 0x75, 0x5e, 0x5b, 0x2a, 0x83, 0x6c, 0xa9, 0x8c, 0x65, 0x2f, 0x13, 0xf4, 0x0c, - 0x0c, 0xec, 0xb8, 0x7e, 0xa3, 0x3c, 0xc4, 0x78, 0x3d, 0x44, 0xc7, 0xfc, 0xb2, 0xeb, 0x37, 0x0e, - 0x0f, 0xe6, 0xa6, 0x8d, 0xe6, 0x50, 0x20, 0x66, 0xa4, 0xf6, 0x8f, 0x2c, 0x98, 0x63, 0xb8, 0x55, - 0xd7, 0x23, 0x55, 0x12, 0x46, 0x6e, 0x14, 0x13, 0x3f, 0x36, 0x3a, 0xf4, 0x02, 0x40, 0x44, 0xea, - 0x21, 0x89, 0xb5, 0x2e, 0x55, 0x13, 0xa3, 0xa6, 0x30, 0x58, 0xa3, 0xa2, 0x02, 0x21, 0xda, 0x76, - 0x42, 0x36, 0xbf, 0x44, 0xc7, 0x2a, 0x81, 0x50, 0x93, 0x08, 0x9c, 0xd0, 0x18, 0x02, 0xa1, 0xd8, - 0x4b, 0x20, 0xa0, 0x4f, 0xc2, 0x64, 0x52, 0x59, 0xd4, 0x72, 0xea, 0xb2, 0x03, 0xd9, 0x92, 0xa9, - 0x99, 0x28, 0x9c, 0xa6, 0xb5, 0xff, 0x81, 0x25, 0x26, 0x0f, 0xfd, 0xea, 0x0f, 0xf8, 0xb7, 0xda, - 0xbf, 0x63, 0xc1, 0xf0, 0x92, 0xeb, 0x37, 0x5c, 0xbf, 0x89, 0x3e, 0x07, 0x23, 0x74, 0x6f, 0x6a, - 0x38, 0xb1, 0x23, 0xe4, 0xde, 0x47, 0xb5, 0xb5, 0xa5, 0xb6, 0x8a, 0xf9, 0xd6, 0x4e, 0x93, 0x02, - 0xa2, 0x79, 0x4a, 0x4d, 0x57, 0xdb, 0xb5, 0xcd, 0xb7, 0x49, 0x3d, 0x5e, 0x27, 0xb1, 0x93, 0x7c, - 0x4e, 0x02, 0xc3, 0x8a, 0x2b, 0xba, 0x0c, 0x43, 0xb1, 0x13, 0x36, 0x49, 0x2c, 0x04, 0x60, 0xa6, - 0xa0, 0xe2, 0x25, 0x31, 0x5d, 0x91, 0xc4, 0xaf, 0x93, 0x64, 0x5b, 0xd8, 0x60, 0x45, 0xb1, 0x60, - 0x61, 0xd7, 0x61, 0x6c, 0xd9, 0x69, 0x39, 0x9b, 0xae, 0xe7, 0xc6, 0x2e, 0x89, 0xd0, 0x63, 0x50, - 0x74, 0x1a, 0x0d, 0x26, 0x15, 0x4a, 0x4b, 0xa7, 0xef, 0x1c, 0xcc, 0x15, 0x17, 0x1b, 0x74, 0x7a, - 0x82, 0xa2, 0xda, 0xc7, 0x94, 0x02, 0x3d, 0x01, 0x03, 0x8d, 0x30, 0x68, 0x95, 0x0b, 0x8c, 0xf2, - 0x3e, 0x3a, 0x93, 0x2b, 0x61, 0xd0, 0x4a, 0x91, 0x32, 0x1a, 0xfb, 0xf7, 0x0a, 0xf0, 0xe0, 0x32, - 0x69, 0x6d, 0xaf, 0xd6, 0x72, 0xe6, 0xef, 0x79, 0x18, 0xd9, 0x0d, 0x7c, 0x37, 0x0e, 0xc2, 0x48, - 0x54, 0xcd, 0x16, 0xd0, 0xba, 0x80, 0x61, 0x85, 0x45, 0xe7, 0x60, 0xa0, 0x95, 0x08, 0xbf, 0x31, - 0x29, 0x38, 0x99, 0xd8, 0x63, 0x18, 0x4a, 0xd1, 0x8e, 0x48, 0x28, 0x16, 0xbe, 0xa2, 0xb8, 0x1e, - 0x91, 0x10, 0x33, 0x4c, 0x32, 0x83, 0xe8, 0xdc, 0x12, 0xb3, 0x32, 0x35, 0x83, 0x28, 0x06, 0x6b, - 0x54, 0xa8, 0x0a, 0x25, 0xfe, 0x0f, 0x93, 0x2d, 0xb6, 0xc6, 0x73, 0xfa, 0xbd, 0x26, 0x89, 0x44, - 0xbf, 0x8f, 0xb3, 0x29, 0x26, 0x81, 0x38, 0x61, 0x62, 0x4c, 0xb1, 0xa1, 0x9e, 0x53, 0xec, 0xdb, - 0x05, 0x40, 0xbc, 0x0b, 0x7f, 0xc2, 0x3a, 0xee, 0x7a, 0x67, 0xc7, 0x65, 0x6e, 0x36, 0x57, 0x82, - 0xba, 0xe3, 0xa5, 0x67, 0xed, 0x71, 0xf5, 0xde, 0x2f, 0x59, 0x80, 0x96, 0x5d, 0xbf, 0x41, 0xc2, - 0x13, 0xd0, 0xb4, 0x8e, 0x26, 0x3b, 0xae, 0xc0, 0xc4, 0xb2, 0xe7, 0x12, 0x3f, 0x5e, 0xab, 0x2e, - 0x07, 0xfe, 0x96, 0xdb, 0x44, 0x9f, 0x80, 0x09, 0xaa, 0x78, 0x06, 0xed, 0xb8, 0x46, 0xea, 0x81, - 0xcf, 0xf6, 0x68, 0xaa, 0xae, 0xa1, 0x3b, 0x07, 0x73, 0x13, 0x1b, 0x06, 0x06, 0xa7, 0x28, 0xed, - 0x3f, 0xa6, 0x1f, 0x1a, 0xec, 0xb6, 0x02, 0x9f, 0xf8, 0xf1, 0x72, 0xe0, 0x37, 0xb8, 0x2e, 0xf7, - 0x09, 0x18, 0x88, 0x69, 0xc3, 0xf9, 0x47, 0x3e, 0x2a, 0x87, 0x96, 0x36, 0xf7, 0xf0, 0x60, 0xee, - 0xbe, 0xce, 0x12, 0xec, 0x83, 0x58, 0x19, 0xf4, 0x71, 0x18, 0x8a, 0x62, 0x27, 0x6e, 0x47, 0xe2, - 0xb3, 0x1f, 0x96, 0x9f, 0x5d, 0x63, 0xd0, 0xc3, 0x83, 0xb9, 0x49, 0x55, 0x8c, 0x83, 0xb0, 0x28, - 0x80, 0x1e, 0x87, 0xe1, 0x5d, 0x12, 0x45, 0x4e, 0x53, 0x6e, 0xc3, 0x93, 0xa2, 0xec, 0xf0, 0x3a, - 0x07, 0x63, 0x89, 0x47, 0x8f, 0xc0, 0x20, 0x09, 0xc3, 0x20, 0x14, 0xb3, 0x6a, 0x5c, 0x10, 0x0e, - 0xae, 0x50, 0x20, 0xe6, 0x38, 0xfb, 0xdf, 0x5b, 0x30, 0xa9, 0xda, 0xca, 0xeb, 0x3a, 0x01, 0x79, - 0xfb, 0x06, 0x40, 0x5d, 0x7e, 0x60, 0xc4, 0xe4, 0xdd, 0xe8, 0x85, 0x47, 0xb3, 0xa6, 0x70, 0x67, - 0x37, 0x26, 0x9c, 0x15, 0x28, 0xc2, 0x1a, 0x37, 0xfb, 0x5f, 0x58, 0x70, 0x2a, 0xf5, 0x45, 0x57, - 0xdc, 0x28, 0x46, 0x6f, 0x76, 0x7c, 0xd5, 0x7c, 0x7f, 0x5f, 0x45, 0x4b, 0xb3, 0x6f, 0x52, 0x73, - 0x4e, 0x42, 0xb4, 0x2f, 0xba, 0x04, 0x83, 0x6e, 0x4c, 0x76, 0xe5, 0xc7, 0x3c, 0xd2, 0xf5, 0x63, - 0x78, 0xab, 0x92, 0x11, 0x59, 0xa3, 0x25, 0x31, 0x67, 0x60, 0xff, 0x2f, 0x0b, 0x4a, 0x7c, 0xda, - 0xae, 0x3b, 0xad, 0x13, 0x18, 0x8b, 0x35, 0x18, 0x60, 0xdc, 0x79, 0xc3, 0x1f, 0xcb, 0x6e, 0xb8, - 0x68, 0xce, 0x3c, 0x55, 0xa6, 0xb8, 0xd2, 0xaa, 0x84, 0x19, 0x05, 0x61, 0xc6, 0x62, 0xf6, 0x05, - 0x28, 0x29, 0x02, 0x34, 0x05, 0xc5, 0x1d, 0xc2, 0x0f, 0x2a, 0x25, 0x4c, 0x7f, 0xa2, 0x19, 0x18, - 0xdc, 0x73, 0xbc, 0xb6, 0x58, 0xec, 0x98, 0xff, 0xf9, 0x44, 0xe1, 0x45, 0xcb, 0xfe, 0x16, 0x5b, - 0x63, 0xa2, 0x92, 0x15, 0x7f, 0x4f, 0x08, 0x93, 0x77, 0x61, 0xc6, 0xcb, 0x90, 0x61, 0xa2, 0x23, - 0xfa, 0x97, 0x79, 0x0f, 0x8a, 0xb6, 0xce, 0x64, 0x61, 0x71, 0x66, 0x1d, 0x74, 0x1b, 0x08, 0x5a, - 0x74, 0x46, 0x39, 0x1e, 0x6b, 0xaf, 0x50, 0x40, 0xaf, 0x09, 0x18, 0x56, 0x58, 0x2a, 0x20, 0x66, - 0x54, 0xe3, 0x2f, 0x93, 0xfd, 0x1a, 0xf1, 0x48, 0x3d, 0x0e, 0xc2, 0xf7, 0xb5, 0xf9, 0x0f, 0xf1, - 0xde, 0xe7, 0xf2, 0x65, 0x54, 0x30, 0x28, 0x5e, 0x26, 0xfb, 0x7c, 0x28, 0xf4, 0xaf, 0x2b, 0x76, - 0xfd, 0xba, 0xdf, 0xb0, 0x60, 0x5c, 0x7d, 0xdd, 0x09, 0x2c, 0xa4, 0x25, 0x73, 0x21, 0x3d, 0xd4, - 0x75, 0x3e, 0xe6, 0x2c, 0xa1, 0x1f, 0x33, 0x11, 0x20, 0x68, 0xaa, 0x61, 0x40, 0xbb, 0x86, 0xca, - 0xec, 0xf7, 0x73, 0x40, 0xfa, 0xf9, 0xae, 0xcb, 0x64, 0x7f, 0x23, 0xa0, 0xea, 0x43, 0xf6, 0x77, - 0x19, 0xa3, 0x36, 0xd0, 0x75, 0xd4, 0x7e, 0xb3, 0x00, 0xa7, 0x55, 0x0f, 0x18, 0x1b, 0xf4, 0x4f, - 0x7a, 0x1f, 0x3c, 0x03, 0xa3, 0x0d, 0xb2, 0xe5, 0xb4, 0xbd, 0x58, 0x9d, 0x45, 0x07, 0xb9, 0x3d, - 0xa2, 0x92, 0x80, 0xb1, 0x4e, 0x73, 0x84, 0x6e, 0xfb, 0xb7, 0xc0, 0x64, 0x6f, 0xec, 0xd0, 0x19, - 0x4c, 0xb5, 0x37, 0xcd, 0xa2, 0x30, 0xa6, 0x5b, 0x14, 0x84, 0xf5, 0xe0, 0x11, 0x18, 0x74, 0x77, - 0xe9, 0x5e, 0x5c, 0x30, 0xb7, 0xd8, 0x35, 0x0a, 0xc4, 0x1c, 0x87, 0x3e, 0x02, 0xc3, 0xf5, 0x60, - 0x77, 0xd7, 0xf1, 0x1b, 0xe5, 0x22, 0xd3, 0x27, 0x47, 0xe9, 0x76, 0xbd, 0xcc, 0x41, 0x58, 0xe2, - 0xd0, 0x83, 0x30, 0xe0, 0x84, 0xcd, 0xa8, 0x3c, 0xc0, 0x68, 0x46, 0x68, 0x4d, 0x8b, 0x61, 0x33, - 0xc2, 0x0c, 0x4a, 0xf5, 0xc4, 0x5b, 0x41, 0xb8, 0xe3, 0xfa, 0xcd, 0x8a, 0x1b, 0x32, 0xa5, 0x4f, - 0xd3, 0x13, 0x6f, 0x2a, 0x0c, 0xd6, 0xa8, 0xd0, 0x2a, 0x0c, 0xb6, 0x82, 0x30, 0x8e, 0xca, 0x43, - 0xac, 0xbb, 0x1f, 0xce, 0x59, 0x4a, 0xfc, 0x6b, 0xab, 0x41, 0x18, 0x27, 0x1f, 0x40, 0xff, 0x45, - 0x98, 0x17, 0x47, 0x1f, 0x87, 0x22, 0xf1, 0xf7, 0xca, 0xc3, 0x8c, 0xcb, 0x6c, 0x16, 0x97, 0x15, - 0x7f, 0xef, 0x86, 0x13, 0x26, 0x72, 0x66, 0xc5, 0xdf, 0xc3, 0xb4, 0x0c, 0x7a, 0x1d, 0x4a, 0xd2, - 0x1a, 0x19, 0x95, 0x47, 0xf2, 0xa7, 0x18, 0x16, 0x44, 0x98, 0xbc, 0xd3, 0x76, 0x43, 0xb2, 0x4b, - 0xfc, 0x38, 0x4a, 0xce, 0x93, 0x12, 0x1b, 0xe1, 0x84, 0x1b, 0x7a, 0x1d, 0xc6, 0xb8, 0x1e, 0xb9, - 0x1e, 0xb4, 0xfd, 0x38, 0x2a, 0x97, 0x58, 0xf3, 0x32, 0x4d, 0x57, 0x37, 0x12, 0xba, 0xa5, 0x19, - 0xc1, 0x74, 0x4c, 0x03, 0x46, 0xd8, 0x60, 0x85, 0x30, 0x8c, 0x7b, 0xee, 0x1e, 0xf1, 0x49, 0x14, - 0x55, 0xc3, 0x60, 0x93, 0x94, 0x81, 0xb5, 0xfc, 0x4c, 0xb6, 0x45, 0x27, 0xd8, 0x24, 0x4b, 0xd3, - 0x77, 0x0e, 0xe6, 0xc6, 0xaf, 0xe8, 0x65, 0xb0, 0xc9, 0x02, 0x5d, 0x87, 0x09, 0xaa, 0xa0, 0xba, - 0x09, 0xd3, 0xd1, 0x5e, 0x4c, 0x99, 0x76, 0x8a, 0x8d, 0x42, 0x38, 0xc5, 0x04, 0xbd, 0x0a, 0x25, - 0xcf, 0xdd, 0x22, 0xf5, 0xfd, 0xba, 0x47, 0xca, 0x63, 0x8c, 0x63, 0xe6, 0xb2, 0xba, 0x22, 0x89, - 0xf8, 0x01, 0x40, 0xfd, 0xc5, 0x49, 0x71, 0x74, 0x03, 0xee, 0x8b, 0x49, 0xb8, 0xeb, 0xfa, 0x0e, - 0x5d, 0x0e, 0x42, 0x9f, 0x64, 0x76, 0xb1, 0x71, 0x36, 0xdf, 0xce, 0x8a, 0xae, 0xbb, 0x6f, 0x23, - 0x93, 0x0a, 0xe7, 0x94, 0x46, 0xd7, 0x60, 0x92, 0xad, 0x84, 0x6a, 0xdb, 0xf3, 0xaa, 0x81, 0xe7, - 0xd6, 0xf7, 0xcb, 0x13, 0x8c, 0xe1, 0x47, 0xa4, 0xe1, 0x6b, 0xcd, 0x44, 0xd3, 0x13, 0x6f, 0xf2, - 0x0f, 0xa7, 0x4b, 0xa3, 0x4d, 0x66, 0x08, 0x69, 0x87, 0x6e, 0xbc, 0x4f, 0xe7, 0x2f, 0xb9, 0x1d, - 0x97, 0x27, 0xbb, 0x9e, 0x1f, 0x75, 0x52, 0x65, 0x2d, 0xd1, 0x81, 0x38, 0xcd, 0x90, 0x2e, 0xed, - 0x28, 0x6e, 0xb8, 0x7e, 0x79, 0x8a, 0x49, 0x0c, 0xb5, 0x32, 0x6a, 0x14, 0x88, 0x39, 0x8e, 0x19, - 0x41, 0xe8, 0x8f, 0x6b, 0x54, 0x82, 0x4e, 0x33, 0xc2, 0xc4, 0x08, 0x22, 0x11, 0x38, 0xa1, 0xa1, - 0xdb, 0x72, 0x1c, 0xef, 0x97, 0x11, 0x23, 0x55, 0xcb, 0x65, 0x63, 0xe3, 0x75, 0x4c, 0xe1, 0xe8, - 0x0a, 0x0c, 0x13, 0x7f, 0x6f, 0x35, 0x0c, 0x76, 0xcb, 0xa7, 0xf2, 0xd7, 0xec, 0x0a, 0x27, 0xe1, - 0x02, 0x3d, 0x39, 0x00, 0x08, 0x30, 0x96, 0x2c, 0xd0, 0x6d, 0x28, 0x67, 0x8c, 0x08, 0x1f, 0x80, - 0x19, 0x36, 0x00, 0x2f, 0x8b, 0xb2, 0xe5, 0x8d, 0x1c, 0xba, 0xc3, 0x2e, 0x38, 0x9c, 0xcb, 0xdd, - 0xde, 0x84, 0x09, 0x25, 0x58, 0xd8, 0xd8, 0xa2, 0x39, 0x18, 0xa4, 0x12, 0x53, 0x1e, 0xa9, 0x4b, - 0xb4, 0x2b, 0x99, 0x69, 0x0a, 0x73, 0x38, 0xeb, 0x4a, 0xf7, 0x5d, 0xb2, 0xb4, 0x1f, 0x13, 0x7e, - 0x2c, 0x2a, 0x6a, 0x5d, 0x29, 0x11, 0x38, 0xa1, 0xb1, 0xff, 0x1f, 0x57, 0x4c, 0x12, 0xe9, 0xd5, - 0x87, 0xbc, 0x7e, 0x0a, 0x46, 0xb6, 0x83, 0x28, 0xa6, 0xd4, 0xac, 0x8e, 0xc1, 0x44, 0x15, 0xb9, - 0x24, 0xe0, 0x58, 0x51, 0xa0, 0x97, 0x60, 0xbc, 0xae, 0x57, 0x20, 0x36, 0x9b, 0xd3, 0xa2, 0x88, - 0x59, 0x3b, 0x36, 0x69, 0xd1, 0x8b, 0x30, 0xc2, 0x2e, 0x28, 0xea, 0x81, 0x27, 0x0e, 0x60, 0x72, - 0xc7, 0x1c, 0xa9, 0x0a, 0xf8, 0xa1, 0xf6, 0x1b, 0x2b, 0x6a, 0x7a, 0x28, 0xa6, 0x4d, 0x58, 0xab, - 0x0a, 0x31, 0xaf, 0x0e, 0xc5, 0x97, 0x18, 0x14, 0x0b, 0xac, 0xfd, 0xd7, 0x0a, 0x5a, 0x2f, 0xd3, - 0x23, 0x05, 0x41, 0x55, 0x18, 0xbe, 0xe5, 0xb8, 0xb1, 0xeb, 0x37, 0xc5, 0x7e, 0xfe, 0x78, 0x57, - 0x99, 0xcf, 0x0a, 0xdd, 0xe4, 0x05, 0xf8, 0xae, 0x24, 0xfe, 0x60, 0xc9, 0x86, 0x72, 0x0c, 0xdb, - 0xbe, 0x4f, 0x39, 0x16, 0xfa, 0xe5, 0x88, 0x79, 0x01, 0xce, 0x51, 0xfc, 0xc1, 0x92, 0x0d, 0x7a, - 0x13, 0x40, 0xce, 0x1b, 0xd2, 0x10, 0x17, 0x03, 0x4f, 0xf5, 0x66, 0xba, 0xa1, 0xca, 0x2c, 0x4d, - 0xd0, 0x3d, 0x2f, 0xf9, 0x8f, 0x35, 0x7e, 0x76, 0xcc, 0xf4, 0x9e, 0xce, 0xc6, 0xa0, 0xcf, 0xd2, - 0xa5, 0xea, 0x84, 0x31, 0x69, 0x2c, 0xc6, 0xa2, 0x73, 0x9e, 0xe8, 0x4f, 0x6d, 0xdd, 0x70, 0x77, - 0x89, 0xbe, 0xac, 0x05, 0x13, 0x9c, 0xf0, 0xb3, 0x7f, 0xbb, 0x08, 0xe5, 0xbc, 0xe6, 0xd2, 0x49, - 0x47, 0x6e, 0xbb, 0xf1, 0x32, 0x55, 0x57, 0x2c, 0x73, 0xd2, 0xad, 0x08, 0x38, 0x56, 0x14, 0x74, - 0xf4, 0x23, 0xb7, 0x29, 0x4f, 0x1d, 0x83, 0xc9, 0xe8, 0xd7, 0x18, 0x14, 0x0b, 0x2c, 0xa5, 0x0b, - 0x89, 0x13, 0x89, 0x9b, 0x27, 0x6d, 0x96, 0x60, 0x06, 0xc5, 0x02, 0xab, 0x1b, 0x0c, 0x06, 0x7a, - 0x18, 0x0c, 0x8c, 0x2e, 0x1a, 0x3c, 0xde, 0x2e, 0x42, 0x6f, 0x01, 0x6c, 0xb9, 0xbe, 0x1b, 0x6d, - 0x33, 0xee, 0x43, 0x47, 0xe6, 0xae, 0x94, 0x9d, 0x55, 0xc5, 0x05, 0x6b, 0x1c, 0xd1, 0xf3, 0x30, - 0xaa, 0x16, 0xe0, 0x5a, 0xa5, 0x3c, 0x6c, 0x5e, 0x6b, 0x24, 0xd2, 0xa8, 0x82, 0x75, 0x3a, 0xfb, - 0xed, 0xf4, 0x7c, 0x11, 0x2b, 0x40, 0xeb, 0x5f, 0xab, 0xdf, 0xfe, 0x2d, 0x74, 0xef, 0x5f, 0xfb, - 0xf7, 0x8b, 0x30, 0x69, 0x54, 0xd6, 0x8e, 0xfa, 0x90, 0x59, 0x17, 0xe9, 0x46, 0xe4, 0xc4, 0x44, - 0xac, 0x3f, 0xbb, 0xf7, 0x52, 0xd1, 0x37, 0x2b, 0xba, 0x02, 0x78, 0x79, 0xf4, 0x16, 0x94, 0x3c, - 0x27, 0x62, 0xc6, 0x07, 0x22, 0xd6, 0x5d, 0x3f, 0xcc, 0x12, 0x45, 0xdf, 0x89, 0x62, 0x6d, 0x2f, - 0xe0, 0xbc, 0x13, 0x96, 0x74, 0xc7, 0xa4, 0xca, 0x89, 0xbc, 0xda, 0x54, 0x8d, 0xa0, 0x1a, 0xcc, - 0x3e, 0xe6, 0x38, 0xf4, 0x22, 0x8c, 0x85, 0x84, 0xcd, 0x8a, 0x65, 0xaa, 0x6b, 0xb1, 0x69, 0x36, - 0x98, 0x28, 0x65, 0x58, 0xc3, 0x61, 0x83, 0x32, 0xd1, 0xb5, 0x87, 0xba, 0xe8, 0xda, 0x8f, 0xc3, - 0x30, 0xfb, 0xa1, 0x66, 0x80, 0x1a, 0x8d, 0x35, 0x0e, 0xc6, 0x12, 0x9f, 0x9e, 0x30, 0x23, 0x7d, - 0x4e, 0x98, 0x27, 0x60, 0xa2, 0xe2, 0x90, 0xdd, 0xc0, 0x5f, 0xf1, 0x1b, 0xad, 0xc0, 0xf5, 0x63, - 0x54, 0x86, 0x01, 0xb6, 0x3b, 0xf0, 0xb5, 0x3d, 0x40, 0x39, 0xe0, 0x01, 0xaa, 0x39, 0xdb, 0x7f, - 0x54, 0x80, 0xf1, 0x0a, 0xf1, 0x48, 0x4c, 0xf8, 0x59, 0x23, 0x42, 0xab, 0x80, 0x9a, 0xa1, 0x53, - 0x27, 0x55, 0x12, 0xba, 0x41, 0x43, 0x37, 0x46, 0x16, 0x99, 0xc1, 0x1f, 0x5d, 0xec, 0xc0, 0xe2, - 0x8c, 0x12, 0xe8, 0x0d, 0x18, 0x6f, 0x85, 0xc4, 0xb0, 0xa1, 0x59, 0x79, 0xea, 0x42, 0x55, 0x27, - 0xe4, 0x9a, 0xaa, 0x01, 0xc2, 0x26, 0x2b, 0xf4, 0x69, 0x98, 0x0a, 0xc2, 0xd6, 0xb6, 0xe3, 0x57, - 0x48, 0x8b, 0xf8, 0x0d, 0xaa, 0x8a, 0x0b, 0x1b, 0xc1, 0xcc, 0x9d, 0x83, 0xb9, 0xa9, 0x6b, 0x29, - 0x1c, 0xee, 0xa0, 0x46, 0x6f, 0xc0, 0x74, 0x2b, 0x0c, 0x5a, 0x4e, 0x93, 0x4d, 0x14, 0xa1, 0x71, - 0x70, 0xe9, 0xf3, 0xd4, 0x9d, 0x83, 0xb9, 0xe9, 0x6a, 0x1a, 0x79, 0x78, 0x30, 0x77, 0x8a, 0x75, - 0x14, 0x85, 0x24, 0x48, 0xdc, 0xc9, 0xc6, 0x6e, 0xc2, 0xe9, 0x4a, 0x70, 0xcb, 0xbf, 0xe5, 0x84, - 0x8d, 0xc5, 0xea, 0x9a, 0x76, 0xb8, 0xbf, 0x2a, 0x0f, 0x97, 0xfc, 0xfa, 0x35, 0x73, 0x9f, 0xd2, - 0x4a, 0x72, 0xf5, 0x7f, 0xd5, 0xf5, 0x48, 0x8e, 0x11, 0xe1, 0x6f, 0x16, 0x8c, 0x9a, 0x12, 0x7a, - 0x65, 0xf7, 0xb7, 0x72, 0xed, 0xfe, 0xaf, 0xc1, 0xc8, 0x96, 0x4b, 0xbc, 0x06, 0x26, 0x5b, 0x62, - 0x64, 0x1e, 0xcb, 0xbf, 0x51, 0x5a, 0xa5, 0x94, 0xd2, 0x68, 0xc4, 0x8f, 0xa6, 0xab, 0xa2, 0x30, - 0x56, 0x6c, 0xd0, 0x0e, 0x4c, 0xc9, 0xb3, 0x8f, 0xc4, 0x8a, 0x45, 0xfc, 0x78, 0xb7, 0x03, 0x95, - 0xc9, 0x9c, 0x0d, 0x20, 0x4e, 0xb1, 0xc1, 0x1d, 0x8c, 0xe9, 0x59, 0x74, 0x97, 0x6e, 0x57, 0x03, - 0x6c, 0x4a, 0xb3, 0xb3, 0x28, 0x3b, 0x56, 0x33, 0xa8, 0xfd, 0x75, 0x0b, 0xee, 0xef, 0xe8, 0x19, - 0x61, 0x5e, 0x38, 0xe6, 0x51, 0x48, 0x1f, 0xf7, 0x0b, 0xbd, 0x8f, 0xfb, 0xf6, 0x3f, 0xb4, 0x60, - 0x66, 0x65, 0xb7, 0x15, 0xef, 0x57, 0x5c, 0xf3, 0x6e, 0xe2, 0x05, 0x18, 0xda, 0x25, 0x0d, 0xb7, - 0xbd, 0x2b, 0x46, 0x6e, 0x4e, 0x8a, 0xf4, 0x75, 0x06, 0x3d, 0x3c, 0x98, 0x1b, 0xaf, 0xc5, 0x41, - 0xe8, 0x34, 0x09, 0x07, 0x60, 0x41, 0xce, 0x36, 0x46, 0xf7, 0x5d, 0x72, 0xc5, 0xdd, 0x75, 0xe5, - 0x0d, 0x61, 0x57, 0x93, 0xd7, 0xbc, 0xec, 0xd0, 0xf9, 0xd7, 0xda, 0x8e, 0x1f, 0xbb, 0xf1, 0xbe, - 0xb8, 0x76, 0x91, 0x4c, 0x70, 0xc2, 0xcf, 0xfe, 0x9e, 0x05, 0x93, 0x52, 0x96, 0x2c, 0x36, 0x1a, - 0x21, 0x89, 0x22, 0x34, 0x0b, 0x05, 0xb7, 0x25, 0x5a, 0x09, 0xa2, 0x95, 0x85, 0xb5, 0x2a, 0x2e, - 0xb8, 0x2d, 0x54, 0x85, 0x12, 0xbf, 0x68, 0x4c, 0x26, 0x57, 0x5f, 0xd7, 0x95, 0xac, 0x05, 0x1b, - 0xb2, 0x24, 0x4e, 0x98, 0x48, 0xad, 0x98, 0xed, 0x43, 0x45, 0xf3, 0xce, 0xe6, 0x92, 0x80, 0x63, - 0x45, 0x81, 0xce, 0xc3, 0x88, 0x1f, 0x34, 0xf8, 0xbd, 0x2f, 0x5f, 0xd3, 0x6c, 0xca, 0x5e, 0x15, - 0x30, 0xac, 0xb0, 0xf6, 0x2f, 0x5a, 0x30, 0x26, 0xbf, 0xac, 0x4f, 0x05, 0x9d, 0x2e, 0xad, 0x44, - 0x39, 0x4f, 0x96, 0x16, 0x55, 0xb0, 0x19, 0xc6, 0xd0, 0xab, 0x8b, 0x47, 0xd1, 0xab, 0xed, 0xaf, - 0x15, 0x60, 0x42, 0x36, 0xa7, 0xd6, 0xde, 0x8c, 0x48, 0x8c, 0x36, 0xa0, 0xe4, 0xf0, 0x2e, 0x27, - 0x72, 0xc6, 0x3e, 0x92, 0x7d, 0xe2, 0x32, 0xc6, 0x27, 0x51, 0x75, 0x16, 0x65, 0x69, 0x9c, 0x30, - 0x42, 0x1e, 0x4c, 0xfb, 0x41, 0xcc, 0xb6, 0x3d, 0x85, 0xef, 0x76, 0x2f, 0x90, 0xe6, 0x7e, 0x46, - 0x70, 0x9f, 0xbe, 0x9a, 0xe6, 0x82, 0x3b, 0x19, 0xa3, 0x15, 0x69, 0xe5, 0x29, 0xb2, 0x1a, 0xce, - 0x75, 0xab, 0x21, 0xdf, 0xc8, 0x63, 0xff, 0xae, 0x05, 0x25, 0x49, 0x76, 0x12, 0x57, 0x40, 0xeb, - 0x30, 0x1c, 0xb1, 0x41, 0x90, 0x5d, 0x63, 0x77, 0x6b, 0x38, 0x1f, 0xaf, 0x64, 0x37, 0xe7, 0xff, - 0x23, 0x2c, 0x79, 0x30, 0x33, 0xb5, 0x6a, 0xfe, 0x07, 0xc4, 0x4c, 0xad, 0xda, 0x93, 0xb3, 0xc3, - 0xfc, 0x57, 0xd6, 0x66, 0xed, 0x2c, 0x4f, 0x95, 0xce, 0x56, 0x48, 0xb6, 0xdc, 0xdb, 0x69, 0xa5, - 0xb3, 0xca, 0xa0, 0x58, 0x60, 0xd1, 0x9b, 0x30, 0x56, 0x97, 0xd6, 0xdd, 0x44, 0x0c, 0x3c, 0xda, - 0xd5, 0x56, 0xae, 0xae, 0x55, 0xb8, 0x4f, 0xd8, 0xb2, 0x56, 0x1e, 0x1b, 0xdc, 0xcc, 0x8b, 0xf9, - 0x62, 0xaf, 0x8b, 0xf9, 0x84, 0x6f, 0xee, 0xd5, 0xb2, 0xfd, 0x2b, 0x16, 0x0c, 0x71, 0x1b, 0x61, - 0x7f, 0x46, 0x55, 0xed, 0x9a, 0x28, 0xe9, 0xbb, 0x1b, 0x14, 0x28, 0x6e, 0x8d, 0xd0, 0x3a, 0x94, - 0xd8, 0x0f, 0x66, 0x2b, 0x29, 0xe6, 0x3b, 0xc3, 0xf1, 0x5a, 0xf5, 0x06, 0xde, 0x90, 0xc5, 0x70, - 0xc2, 0xc1, 0xfe, 0x6a, 0x91, 0x8a, 0xaa, 0x84, 0xd4, 0xd8, 0xc1, 0xad, 0x7b, 0xb7, 0x83, 0x17, - 0xee, 0xd5, 0x0e, 0xde, 0x84, 0xc9, 0xba, 0x76, 0x27, 0x95, 0x8c, 0xe4, 0xf9, 0xae, 0x93, 0x44, - 0xbb, 0xbe, 0xe2, 0x76, 0xb2, 0x65, 0x93, 0x09, 0x4e, 0x73, 0x45, 0x9f, 0x85, 0x31, 0x3e, 0xce, - 0xa2, 0x96, 0x01, 0x56, 0xcb, 0x47, 0xf2, 0xe7, 0x8b, 0x5e, 0x05, 0x9b, 0x89, 0x35, 0xad, 0x38, - 0x36, 0x98, 0xd9, 0x5f, 0x1a, 0x84, 0xc1, 0x95, 0x3d, 0xe2, 0xc7, 0x27, 0x20, 0x90, 0xea, 0x30, - 0xe1, 0xfa, 0x7b, 0x81, 0xb7, 0x47, 0x1a, 0x1c, 0x7f, 0x94, 0xcd, 0xf5, 0x3e, 0xc1, 0x7a, 0x62, - 0xcd, 0x60, 0x81, 0x53, 0x2c, 0xef, 0xc5, 0xa9, 0xfd, 0x22, 0x0c, 0xf1, 0xb1, 0x17, 0x47, 0xf6, - 0x4c, 0x0b, 0x38, 0xeb, 0x44, 0xb1, 0x0a, 0x12, 0x8b, 0x02, 0x37, 0xb9, 0x8b, 0xe2, 0xe8, 0x6d, - 0x98, 0xd8, 0x72, 0xc3, 0x28, 0xa6, 0xc7, 0xed, 0x28, 0x76, 0x76, 0x5b, 0x77, 0x71, 0x4a, 0x57, - 0xfd, 0xb0, 0x6a, 0x70, 0xc2, 0x29, 0xce, 0xa8, 0x09, 0xe3, 0xf4, 0xe0, 0x98, 0x54, 0x35, 0x7c, - 0xe4, 0xaa, 0x94, 0x19, 0xee, 0x8a, 0xce, 0x08, 0x9b, 0x7c, 0xa9, 0x30, 0xa9, 0xb3, 0x83, 0xe6, - 0x08, 0xd3, 0x28, 0x94, 0x30, 0xe1, 0x27, 0x4c, 0x8e, 0xa3, 0x32, 0x89, 0xf9, 0x72, 0x94, 0x4c, - 0x99, 0x94, 0x78, 0x6c, 0xd8, 0xdf, 0xa0, 0xbb, 0x23, 0xed, 0xc3, 0x13, 0xd8, 0x5a, 0x5e, 0x31, - 0xb7, 0x96, 0x33, 0xb9, 0xe3, 0x99, 0xb3, 0xad, 0x7c, 0x0e, 0x46, 0xb5, 0xe1, 0x46, 0x0b, 0x50, - 0xaa, 0x4b, 0xc7, 0x03, 0x21, 0x75, 0x95, 0xfa, 0xa2, 0x3c, 0x12, 0x70, 0x42, 0x43, 0x7b, 0x83, - 0x2a, 0x7b, 0x69, 0xb7, 0x26, 0xaa, 0x0a, 0x62, 0x86, 0xb1, 0x9f, 0x05, 0x58, 0xb9, 0x4d, 0xea, - 0x8b, 0xfc, 0xe0, 0xa5, 0xdd, 0x6f, 0x59, 0xf9, 0xf7, 0x5b, 0xf6, 0x7f, 0xb0, 0x60, 0x62, 0x75, - 0xd9, 0x50, 0xc8, 0xe7, 0x01, 0xb8, 0x16, 0x7a, 0xf3, 0xe6, 0x55, 0x69, 0x19, 0xe6, 0xc6, 0x3d, - 0x05, 0xc5, 0x1a, 0x05, 0x3a, 0x03, 0x45, 0xaf, 0xed, 0x0b, 0xe5, 0x70, 0xf8, 0xce, 0xc1, 0x5c, - 0xf1, 0x4a, 0xdb, 0xc7, 0x14, 0xa6, 0x79, 0x12, 0x15, 0xfb, 0xf6, 0x24, 0xea, 0xe9, 0x82, 0x8d, - 0xe6, 0x60, 0xf0, 0xd6, 0x2d, 0xb7, 0x11, 0x95, 0x07, 0x13, 0xab, 0xf5, 0xcd, 0x9b, 0x6b, 0x95, - 0x08, 0x73, 0xb8, 0xfd, 0x17, 0x8a, 0x30, 0xb5, 0xea, 0x91, 0xdb, 0xc6, 0x67, 0x3d, 0x0a, 0x43, - 0x8d, 0xd0, 0xdd, 0x23, 0x61, 0x7a, 0x17, 0xaf, 0x30, 0x28, 0x16, 0xd8, 0xbe, 0xbd, 0x9f, 0xae, - 0x77, 0xee, 0xc7, 0xc7, 0xed, 0xef, 0xd5, 0xbb, 0x2b, 0xde, 0x84, 0x61, 0x7e, 0x4d, 0xca, 0x3b, - 0x63, 0xf4, 0xc2, 0x33, 0x59, 0x4d, 0x48, 0xf7, 0xc5, 0xbc, 0x30, 0x7c, 0x70, 0x9f, 0x11, 0x25, - 0xc4, 0x04, 0x14, 0x4b, 0x96, 0xb3, 0x9f, 0x80, 0x31, 0x9d, 0xf2, 0x48, 0xce, 0x23, 0x7f, 0xd1, - 0x82, 0x53, 0xab, 0x5e, 0x50, 0xdf, 0x49, 0xb9, 0xa2, 0x3d, 0x0f, 0xa3, 0x74, 0x3d, 0x45, 0x86, - 0x5b, 0xab, 0xe1, 0xe8, 0x2c, 0x50, 0x58, 0xa7, 0xd3, 0x8a, 0x5d, 0xbf, 0xbe, 0x56, 0xc9, 0xf2, - 0x8f, 0x16, 0x28, 0xac, 0xd3, 0xd9, 0xdf, 0xb5, 0xe0, 0xa1, 0x8b, 0xcb, 0x2b, 0x89, 0x37, 0x66, - 0x87, 0x8b, 0x36, 0x55, 0xee, 0x1a, 0x5a, 0x53, 0x12, 0xe5, 0xae, 0xc2, 0x5a, 0x21, 0xb0, 0x1f, - 0x94, 0xf0, 0x83, 0x5f, 0xb3, 0xe0, 0xd4, 0x45, 0x37, 0xc6, 0xa4, 0x15, 0xa4, 0x9d, 0x85, 0x43, - 0xd2, 0x0a, 0x22, 0x37, 0x0e, 0xc2, 0xfd, 0xb4, 0xb3, 0x30, 0x56, 0x18, 0xac, 0x51, 0xf1, 0x9a, - 0xf7, 0xdc, 0x88, 0xb6, 0xb4, 0x60, 0x9e, 0x30, 0xb1, 0x80, 0x63, 0x45, 0x41, 0x3f, 0xac, 0xe1, - 0x86, 0x4c, 0x43, 0xd8, 0x17, 0xcb, 0x59, 0x7d, 0x58, 0x45, 0x22, 0x70, 0x42, 0x63, 0x7f, 0xdd, - 0x82, 0xd3, 0x17, 0xbd, 0x76, 0x14, 0x93, 0x70, 0x2b, 0x32, 0x1a, 0xfb, 0x2c, 0x94, 0x88, 0xd4, - 0xc2, 0x45, 0x5b, 0xd5, 0xbe, 0xa1, 0xd4, 0x73, 0xee, 0xa9, 0xac, 0xe8, 0xfa, 0xf0, 0xeb, 0x3c, - 0x9a, 0x3f, 0xe2, 0x37, 0x0b, 0x30, 0x7e, 0x69, 0x63, 0xa3, 0x7a, 0x91, 0xc4, 0x42, 0x64, 0xf6, - 0xb6, 0x20, 0x61, 0xed, 0x20, 0xdc, 0x4d, 0xd7, 0x69, 0xc7, 0xae, 0x37, 0xcf, 0x43, 0x63, 0xe6, - 0xd7, 0xfc, 0xf8, 0x5a, 0x58, 0x8b, 0x43, 0xd7, 0x6f, 0x66, 0x1e, 0x9d, 0xa5, 0x60, 0x2f, 0xe6, - 0x09, 0x76, 0xf4, 0x2c, 0x0c, 0xb1, 0xd8, 0x1c, 0xa9, 0x75, 0x3c, 0xa0, 0x54, 0x05, 0x06, 0x3d, - 0x3c, 0x98, 0x2b, 0x5d, 0xc7, 0x6b, 0xfc, 0x0f, 0x16, 0xa4, 0xe8, 0x3a, 0x8c, 0x6e, 0xc7, 0x71, - 0xeb, 0x12, 0x71, 0x1a, 0x24, 0x94, 0xd2, 0xe1, 0x6c, 0x96, 0x74, 0xa0, 0x9d, 0xc0, 0xc9, 0x92, - 0x05, 0x95, 0xc0, 0x22, 0xac, 0xf3, 0xb1, 0x6b, 0x00, 0x09, 0xee, 0x98, 0x8e, 0x0d, 0xf6, 0x0f, - 0x2d, 0x18, 0xbe, 0xe4, 0xf8, 0x0d, 0x8f, 0x84, 0xe8, 0x65, 0x18, 0x20, 0xb7, 0x49, 0x5d, 0xec, - 0xe0, 0x99, 0x0d, 0x4e, 0x76, 0x39, 0x6e, 0x04, 0xa3, 0xff, 0x31, 0x2b, 0x85, 0x2e, 0xc1, 0x30, - 0x6d, 0xed, 0x45, 0xe5, 0x33, 0xfe, 0x70, 0xde, 0x17, 0xab, 0x61, 0xe7, 0x1b, 0xa3, 0x00, 0x61, - 0x59, 0x9c, 0x19, 0x74, 0xea, 0xad, 0x1a, 0x15, 0x60, 0x71, 0xb7, 0xe3, 0xd6, 0xc6, 0x72, 0x95, - 0x13, 0x09, 0x6e, 0xdc, 0xa0, 0x23, 0x81, 0x38, 0x61, 0x62, 0x6f, 0x40, 0x89, 0x0e, 0xea, 0xa2, - 0xe7, 0x3a, 0xdd, 0x6d, 0x49, 0x4f, 0x42, 0x49, 0xda, 0x75, 0x22, 0xe1, 0x76, 0xce, 0xb8, 0x4a, - 0xb3, 0x4f, 0x84, 0x13, 0xbc, 0xbd, 0x05, 0x33, 0xec, 0x92, 0xd4, 0x89, 0xb7, 0x8d, 0x35, 0xd6, - 0x7b, 0x32, 0x3f, 0x25, 0xf4, 0x2b, 0x3e, 0x32, 0x65, 0xcd, 0x4f, 0x76, 0x4c, 0x72, 0xd4, 0x74, - 0xad, 0xff, 0x3c, 0x00, 0xd3, 0x6b, 0xb5, 0xe5, 0x9a, 0x69, 0x58, 0x7c, 0x11, 0xc6, 0xb8, 0x26, - 0x40, 0x27, 0xb4, 0xe3, 0x89, 0xda, 0xd4, 0xc5, 0xc1, 0x86, 0x86, 0xc3, 0x06, 0x25, 0x7a, 0x08, - 0x8a, 0xee, 0x3b, 0x7e, 0xda, 0x15, 0x6e, 0xed, 0xb5, 0xab, 0x98, 0xc2, 0x29, 0x9a, 0x2a, 0x15, - 0x5c, 0x80, 0x2a, 0xb4, 0x52, 0x2c, 0x5e, 0x81, 0x09, 0x37, 0xaa, 0x47, 0xee, 0x9a, 0x4f, 0xa5, - 0x4b, 0x12, 0x73, 0x91, 0x68, 0xfc, 0xb4, 0xa9, 0x0a, 0x8b, 0x53, 0xd4, 0x9a, 0x34, 0x1f, 0xec, - 0x5b, 0x31, 0xe9, 0xe9, 0x7d, 0x4d, 0x75, 0xae, 0x16, 0xfb, 0xba, 0x88, 0xb9, 0xe5, 0x08, 0x9d, - 0x8b, 0x7f, 0x70, 0x84, 0x25, 0x0e, 0x5d, 0x84, 0xe9, 0xfa, 0xb6, 0xd3, 0x5a, 0x6c, 0xc7, 0xdb, - 0x15, 0x37, 0xaa, 0x07, 0x7b, 0x24, 0xdc, 0x67, 0x9a, 0xf0, 0x48, 0x62, 0x64, 0x52, 0x88, 0xe5, - 0x4b, 0x8b, 0x55, 0x4a, 0x89, 0x3b, 0xcb, 0x98, 0x2a, 0x08, 0x1c, 0x9b, 0x0a, 0xb2, 0x08, 0x93, - 0xb2, 0xae, 0x1a, 0x89, 0xd8, 0xf6, 0x30, 0xca, 0x5a, 0xa7, 0x42, 0xa2, 0x04, 0x58, 0xb5, 0x2d, - 0x4d, 0x8f, 0x5e, 0x80, 0x71, 0xd7, 0x77, 0x63, 0xd7, 0x89, 0x83, 0x90, 0x6d, 0xae, 0x63, 0x7c, - 0xc3, 0xa0, 0x12, 0x7e, 0x4d, 0x47, 0x60, 0x93, 0xce, 0x7e, 0x1b, 0x4a, 0xca, 0xd7, 0x4c, 0xba, - 0x4b, 0x5a, 0x39, 0xee, 0x92, 0xbd, 0x77, 0x04, 0x69, 0x31, 0x2f, 0x66, 0x5a, 0xcc, 0xff, 0x96, - 0x05, 0x89, 0xcb, 0x0d, 0xba, 0x04, 0xa5, 0x56, 0xc0, 0x6e, 0xcd, 0x42, 0x79, 0x15, 0xfd, 0x40, - 0xa6, 0xf0, 0xe0, 0x82, 0x8a, 0xf7, 0x5f, 0x55, 0x96, 0xc0, 0x49, 0x61, 0xb4, 0x04, 0xc3, 0xad, - 0x90, 0xd4, 0x62, 0x16, 0x34, 0xd2, 0x93, 0x0f, 0x9f, 0x23, 0x9c, 0x1e, 0xcb, 0x82, 0xf6, 0x6f, - 0x5a, 0x00, 0xdc, 0x28, 0xed, 0xf8, 0x4d, 0x72, 0x02, 0x07, 0xed, 0x0a, 0x0c, 0x44, 0x2d, 0x52, - 0xef, 0x76, 0x9f, 0x99, 0xb4, 0xa7, 0xd6, 0x22, 0xf5, 0xa4, 0xc3, 0xe9, 0x3f, 0xcc, 0x4a, 0xdb, - 0xbf, 0x00, 0x30, 0x91, 0x90, 0xd1, 0x03, 0x10, 0x7a, 0xda, 0x70, 0xc9, 0x3f, 0x93, 0x72, 0xc9, - 0x2f, 0x31, 0x6a, 0xcd, 0x0b, 0xff, 0x6d, 0x28, 0xee, 0x3a, 0xb7, 0xc5, 0x29, 0xeb, 0xc9, 0xee, - 0xcd, 0xa0, 0xfc, 0xe7, 0xd7, 0x9d, 0xdb, 0x5c, 0x8f, 0x7d, 0x52, 0x4e, 0x90, 0x75, 0xe7, 0xf6, - 0x21, 0xbf, 0xb5, 0x64, 0x42, 0x8a, 0x1e, 0xe6, 0xbe, 0xf0, 0x9f, 0x92, 0xff, 0x6c, 0xda, 0xd1, - 0x4a, 0x58, 0x5d, 0xae, 0x2f, 0x4c, 0xb4, 0x7d, 0xd5, 0xe5, 0xfa, 0xe9, 0xba, 0x5c, 0xbf, 0x8f, - 0xba, 0x5c, 0x1f, 0xbd, 0x0b, 0xc3, 0xe2, 0x3a, 0x84, 0xf9, 0x12, 0x8e, 0x5e, 0x58, 0xe8, 0xa3, - 0x3e, 0x71, 0x9b, 0xc2, 0xeb, 0x5c, 0x90, 0x7a, 0xba, 0x80, 0xf6, 0xac, 0x57, 0x56, 0x88, 0xfe, - 0x86, 0x05, 0x13, 0xe2, 0x37, 0x26, 0xef, 0xb4, 0x49, 0x14, 0x0b, 0x7d, 0xe0, 0x63, 0xfd, 0xb7, - 0x41, 0x14, 0xe4, 0x4d, 0xf9, 0x98, 0x14, 0xb3, 0x26, 0xb2, 0x67, 0x8b, 0x52, 0xad, 0x40, 0xff, - 0xd8, 0x82, 0x99, 0x5d, 0xe7, 0x36, 0xaf, 0x91, 0xc3, 0xb0, 0x13, 0xbb, 0x81, 0xf0, 0x8d, 0x7c, - 0xb9, 0xbf, 0xe1, 0xef, 0x28, 0xce, 0x1b, 0x29, 0xdd, 0xa8, 0x66, 0xb2, 0x48, 0x7a, 0x36, 0x35, - 0xb3, 0x5d, 0xb3, 0x5b, 0x30, 0x22, 0xe7, 0x5b, 0xc6, 0x69, 0xa8, 0xa2, 0x2b, 0x3b, 0x47, 0xbe, - 0x8d, 0xd2, 0x4e, 0x4f, 0xac, 0x1e, 0x31, 0xd7, 0xee, 0x69, 0x3d, 0x6f, 0xc3, 0x98, 0x3e, 0xc7, - 0xee, 0x69, 0x5d, 0xef, 0xc0, 0xa9, 0x8c, 0xb9, 0x74, 0x4f, 0xab, 0xbc, 0x05, 0x67, 0x72, 0xe7, - 0xc7, 0xbd, 0xac, 0xd8, 0xfe, 0xa6, 0xa5, 0xcb, 0xc1, 0x13, 0x30, 0x4f, 0x2d, 0x9b, 0xe6, 0xa9, - 0xb3, 0xdd, 0x57, 0x4e, 0x8e, 0x8d, 0xea, 0x4d, 0xbd, 0xd1, 0x54, 0xaa, 0xa3, 0x57, 0x61, 0xc8, - 0xa3, 0x10, 0x79, 0x0f, 0x67, 0xf7, 0x5e, 0x91, 0x89, 0x2e, 0xc5, 0xe0, 0x11, 0x16, 0x1c, 0xec, - 0xdf, 0xb1, 0x60, 0xe0, 0x04, 0x7a, 0x02, 0x9b, 0x3d, 0xf1, 0x74, 0x2e, 0x6b, 0x91, 0xf7, 0x60, - 0x1e, 0x3b, 0xb7, 0x56, 0x64, 0x6e, 0x87, 0x9c, 0x8e, 0xf9, 0xbf, 0x05, 0x18, 0xa5, 0x55, 0x49, - 0x87, 0x91, 0x97, 0x60, 0xdc, 0x73, 0x36, 0x89, 0x27, 0x4d, 0xe6, 0xe9, 0x43, 0xec, 0x15, 0x1d, - 0x89, 0x4d, 0x5a, 0x5a, 0x78, 0x4b, 0xbf, 0x3d, 0x10, 0xfa, 0x8b, 0x2a, 0x6c, 0x5c, 0x2d, 0x60, - 0x93, 0x96, 0x9e, 0xa7, 0x6e, 0x39, 0x71, 0x7d, 0x5b, 0x1c, 0x70, 0x55, 0x73, 0x6f, 0x52, 0x20, - 0xe6, 0x38, 0xaa, 0xc0, 0xc9, 0xd9, 0x79, 0x83, 0x84, 0x4c, 0x81, 0xe3, 0xea, 0xb1, 0x52, 0xe0, - 0xb0, 0x89, 0xc6, 0x69, 0xfa, 0x8c, 0xd8, 0xbc, 0x41, 0xe6, 0x0e, 0xd3, 0x47, 0x6c, 0x1e, 0xaa, - 0xc2, 0x8c, 0xeb, 0xd7, 0xbd, 0x76, 0x83, 0x5c, 0xf7, 0xb9, 0x76, 0xe7, 0xb9, 0xef, 0x92, 0x86, - 0x50, 0xa0, 0x95, 0xe7, 0xd2, 0x5a, 0x06, 0x0d, 0xce, 0x2c, 0x69, 0xff, 0x39, 0x38, 0x75, 0x25, - 0x70, 0x1a, 0x4b, 0x8e, 0xe7, 0xf8, 0x75, 0x12, 0xae, 0xf9, 0xcd, 0x9e, 0x17, 0xf2, 0xfa, 0xf5, - 0x79, 0xa1, 0xd7, 0xf5, 0xb9, 0xbd, 0x0d, 0x48, 0xaf, 0x40, 0xb8, 0x81, 0x61, 0x18, 0x76, 0x79, - 0x55, 0x62, 0xfa, 0x3f, 0x96, 0xad, 0x5d, 0x77, 0xb4, 0x4c, 0x73, 0x70, 0xe2, 0x00, 0x2c, 0x19, - 0xd9, 0x2f, 0x42, 0x66, 0x6c, 0x46, 0xef, 0xa3, 0xb4, 0xfd, 0x3c, 0x4c, 0xb3, 0x92, 0x47, 0x3b, - 0xe6, 0xd9, 0x7f, 0xc5, 0x82, 0xc9, 0xab, 0xa9, 0x68, 0xda, 0x47, 0x61, 0x88, 0x67, 0x38, 0x49, - 0x1b, 0xbd, 0x6a, 0x0c, 0x8a, 0x05, 0xf6, 0xd8, 0x6d, 0x2e, 0x3f, 0xb6, 0xa0, 0xa4, 0x42, 0xdf, - 0x4f, 0x40, 0xa9, 0x5d, 0x36, 0x94, 0xda, 0x4c, 0x5b, 0x80, 0x6a, 0x4e, 0x9e, 0x4e, 0x8b, 0x2e, - 0xab, 0xb8, 0xd0, 0x2e, 0x66, 0x80, 0x84, 0x0d, 0x8f, 0x22, 0x9c, 0x30, 0x83, 0x47, 0x65, 0xa4, - 0x28, 0xbb, 0x11, 0x57, 0xb4, 0x1f, 0x90, 0x1b, 0x71, 0xd5, 0x9e, 0x1c, 0xe9, 0x57, 0xd5, 0x9a, - 0xcc, 0x76, 0x85, 0x4f, 0x31, 0xaf, 0x51, 0xb6, 0x36, 0x55, 0x38, 0xf6, 0x9c, 0xf0, 0x02, 0x15, - 0xd0, 0x43, 0x26, 0xc8, 0xc4, 0x3f, 0x9e, 0xa6, 0x20, 0x29, 0x62, 0x5f, 0x82, 0xc9, 0x54, 0x87, - 0xa1, 0xe7, 0x61, 0xb0, 0xb5, 0xed, 0x44, 0x24, 0xe5, 0x05, 0x34, 0x58, 0xa5, 0xc0, 0xc3, 0x83, - 0xb9, 0x09, 0x55, 0x80, 0x41, 0x30, 0xa7, 0xb6, 0xff, 0xa7, 0x05, 0x03, 0x57, 0x83, 0xc6, 0x49, - 0x4c, 0xa6, 0x57, 0x8c, 0xc9, 0xf4, 0x60, 0x5e, 0x92, 0x97, 0xdc, 0x79, 0xb4, 0x9a, 0x9a, 0x47, - 0x67, 0x73, 0x39, 0x74, 0x9f, 0x42, 0xbb, 0x30, 0xca, 0x52, 0xc7, 0x08, 0xaf, 0xa4, 0x67, 0x8d, - 0xf3, 0xd5, 0x5c, 0xea, 0x7c, 0x35, 0xa9, 0x91, 0x6a, 0xa7, 0xac, 0xc7, 0x61, 0x58, 0x78, 0xc6, - 0xa4, 0xfd, 0x63, 0x05, 0x2d, 0x96, 0x78, 0xfb, 0x57, 0x8a, 0x60, 0xa4, 0xaa, 0x41, 0xbf, 0x6b, - 0xc1, 0x7c, 0xc8, 0x23, 0x82, 0x1a, 0x95, 0x76, 0xe8, 0xfa, 0xcd, 0x5a, 0x7d, 0x9b, 0x34, 0xda, - 0x9e, 0xeb, 0x37, 0xd7, 0x9a, 0x7e, 0xa0, 0xc0, 0x2b, 0xb7, 0x49, 0xbd, 0xcd, 0xec, 0xe0, 0x3d, - 0xf2, 0xe2, 0xa8, 0x9b, 0xe7, 0x0b, 0x77, 0x0e, 0xe6, 0xe6, 0xf1, 0x91, 0x78, 0xe3, 0x23, 0xb6, - 0x05, 0x7d, 0xd7, 0x82, 0x05, 0x9e, 0xc1, 0xa5, 0xff, 0xf6, 0x77, 0x39, 0x8d, 0x56, 0x25, 0xab, - 0x84, 0xc9, 0x06, 0x09, 0x77, 0x97, 0x5e, 0x10, 0x1d, 0xba, 0x50, 0x3d, 0x5a, 0x5d, 0xf8, 0xa8, - 0x8d, 0xb3, 0xff, 0x55, 0x11, 0xc6, 0x69, 0x2f, 0x26, 0x51, 0xf0, 0xcf, 0x1b, 0x53, 0xe2, 0xe1, - 0xd4, 0x94, 0x98, 0x36, 0x88, 0x8f, 0x27, 0x00, 0x3e, 0x82, 0x69, 0xcf, 0x89, 0xe2, 0x4b, 0xc4, - 0x09, 0xe3, 0x4d, 0xe2, 0xb0, 0xab, 0x5e, 0x31, 0xcd, 0x8f, 0x72, 0x7b, 0xac, 0xcc, 0x5f, 0x57, - 0xd2, 0xcc, 0x70, 0x27, 0x7f, 0xb4, 0x07, 0x88, 0x5d, 0x2b, 0x87, 0x8e, 0x1f, 0xf1, 0x6f, 0x71, - 0x85, 0x8d, 0xfc, 0x68, 0xb5, 0xce, 0x8a, 0x5a, 0xd1, 0x95, 0x0e, 0x6e, 0x38, 0xa3, 0x06, 0xcd, - 0x5d, 0x60, 0xb0, 0x5f, 0x77, 0x81, 0xa1, 0x1e, 0x4e, 0xe8, 0xbb, 0x30, 0x25, 0x46, 0x65, 0xcb, - 0x6d, 0x8a, 0x4d, 0xfa, 0xf5, 0x94, 0x3b, 0x91, 0xd5, 0xbf, 0xe3, 0x43, 0x0f, 0x5f, 0x22, 0xfb, - 0xe7, 0xe1, 0x14, 0xad, 0xce, 0x74, 0x99, 0x8e, 0x10, 0x81, 0xc9, 0x9d, 0xf6, 0x26, 0xf1, 0x48, - 0x2c, 0x61, 0xa2, 0xd2, 0x4c, 0xb5, 0xdf, 0x2c, 0x9d, 0xe8, 0x96, 0x97, 0x4d, 0x16, 0x38, 0xcd, - 0xd3, 0xfe, 0x55, 0x0b, 0x98, 0x63, 0xe2, 0x09, 0x6c, 0x7f, 0x9f, 0x34, 0xb7, 0xbf, 0x72, 0x9e, - 0x04, 0xca, 0xd9, 0xf9, 0x9e, 0xe3, 0xc3, 0x52, 0x0d, 0x83, 0xdb, 0xfb, 0x52, 0xf7, 0xef, 0xad, - 0x71, 0xfd, 0x1f, 0x8b, 0x2f, 0x48, 0x15, 0x20, 0x89, 0x3e, 0x0f, 0x23, 0x75, 0xa7, 0xe5, 0xd4, - 0x79, 0x8e, 0xb0, 0x5c, 0xeb, 0x8f, 0x51, 0x68, 0x7e, 0x59, 0x94, 0xe0, 0xd6, 0x8c, 0x8f, 0xca, - 0xaf, 0x94, 0xe0, 0x9e, 0x16, 0x0c, 0x55, 0xe5, 0xec, 0x0e, 0x8c, 0x1b, 0xcc, 0xee, 0xe9, 0xd1, - 0xf7, 0xf3, 0x7c, 0xbb, 0x50, 0x27, 0x96, 0x5d, 0x98, 0xf6, 0xb5, 0xff, 0x54, 0x38, 0x4a, 0x75, - 0xfa, 0xc3, 0xbd, 0x36, 0x04, 0x26, 0x49, 0x35, 0xc7, 0xcb, 0x14, 0x1b, 0xdc, 0xc9, 0xd9, 0xfe, - 0x3b, 0x16, 0xdc, 0xaf, 0x13, 0x6a, 0xb1, 0xab, 0xbd, 0xec, 0xc9, 0x15, 0x18, 0x09, 0x5a, 0x24, - 0x74, 0x92, 0x33, 0xd9, 0x79, 0xd9, 0xe9, 0xd7, 0x04, 0xfc, 0xf0, 0x60, 0x6e, 0x46, 0xe7, 0x2e, - 0xe1, 0x58, 0x95, 0x44, 0x36, 0x0c, 0xb1, 0xce, 0x88, 0x44, 0x5c, 0x31, 0xcb, 0xa3, 0xc5, 0xae, - 0xbb, 0x22, 0x2c, 0x30, 0xf6, 0x2f, 0x58, 0x7c, 0x62, 0xe9, 0x4d, 0x47, 0xef, 0xc0, 0xd4, 0x2e, - 0x3d, 0xbe, 0xad, 0xdc, 0x6e, 0x85, 0xdc, 0x8c, 0x2e, 0xfb, 0xe9, 0xc9, 0x5e, 0xfd, 0xa4, 0x7d, - 0xe4, 0x52, 0x59, 0xb4, 0x79, 0x6a, 0x3d, 0xc5, 0x0c, 0x77, 0xb0, 0xb7, 0xff, 0xb4, 0xc0, 0x57, - 0x22, 0xd3, 0xea, 0x1e, 0x87, 0xe1, 0x56, 0xd0, 0x58, 0x5e, 0xab, 0x60, 0xd1, 0x43, 0x4a, 0x5c, - 0x55, 0x39, 0x18, 0x4b, 0x3c, 0xba, 0x00, 0x40, 0x6e, 0xc7, 0x24, 0xf4, 0x1d, 0x4f, 0x5d, 0xc6, - 0x2b, 0xe5, 0x69, 0x45, 0x61, 0xb0, 0x46, 0x45, 0xcb, 0xb4, 0xc2, 0x60, 0xcf, 0x6d, 0xb0, 0xc0, - 0x8e, 0xa2, 0x59, 0xa6, 0xaa, 0x30, 0x58, 0xa3, 0xa2, 0x47, 0xe5, 0xb6, 0x1f, 0xf1, 0x0d, 0xd0, - 0xd9, 0x14, 0xa9, 0x78, 0x46, 0x92, 0xa3, 0xf2, 0x75, 0x1d, 0x89, 0x4d, 0x5a, 0xb4, 0x08, 0x43, - 0xb1, 0xc3, 0xae, 0x98, 0x07, 0xf3, 0x5d, 0x76, 0x36, 0x28, 0x85, 0x9e, 0x34, 0x8a, 0x16, 0xc0, - 0xa2, 0x20, 0x7a, 0x43, 0x8a, 0x60, 0x2e, 0x92, 0x85, 0xeb, 0x55, 0xee, 0xb4, 0xd5, 0xc5, 0xb7, - 0x2e, 0x83, 0x85, 0x4b, 0x97, 0xc1, 0xcb, 0xfe, 0x62, 0x09, 0x20, 0xd1, 0xf6, 0xd0, 0xbb, 0x1d, - 0x22, 0xe2, 0xa9, 0xee, 0xfa, 0xe1, 0xf1, 0xc9, 0x07, 0xf4, 0x25, 0x0b, 0x46, 0x1d, 0xcf, 0x0b, - 0xea, 0x4e, 0xcc, 0x7a, 0xb9, 0xd0, 0x5d, 0x44, 0x89, 0xfa, 0x17, 0x93, 0x12, 0xbc, 0x09, 0xcf, - 0xca, 0xdb, 0x63, 0x0d, 0xd3, 0xb3, 0x15, 0x7a, 0xc5, 0xe8, 0xa3, 0xf2, 0x10, 0xc0, 0xa7, 0xc7, - 0x6c, 0xfa, 0x10, 0x50, 0x62, 0xd2, 0x58, 0xd3, 0xff, 0xd1, 0x75, 0x23, 0x67, 0xcd, 0x40, 0x7e, - 0x78, 0xae, 0xa1, 0xf4, 0xf4, 0x4a, 0x57, 0x83, 0xaa, 0xba, 0x0b, 0xfa, 0x60, 0x7e, 0x0c, 0xbb, - 0xa6, 0x5d, 0xf7, 0x70, 0x3f, 0x7f, 0x1b, 0x26, 0x1b, 0xe6, 0x76, 0x2b, 0x66, 0xd3, 0x63, 0x79, - 0x7c, 0x53, 0xbb, 0x73, 0xb2, 0xc1, 0xa6, 0x10, 0x38, 0xcd, 0x18, 0x55, 0x79, 0x30, 0xc0, 0x9a, - 0xbf, 0x15, 0x08, 0x17, 0x3e, 0x3b, 0x77, 0x2c, 0xf7, 0xa3, 0x98, 0xec, 0x52, 0xca, 0x64, 0x1f, - 0xbd, 0x2a, 0xca, 0x62, 0xc5, 0x05, 0xbd, 0x0a, 0x43, 0x2c, 0x42, 0x2b, 0x2a, 0x8f, 0xe4, 0xdb, - 0x01, 0xcd, 0xe0, 0xe2, 0x64, 0x51, 0xb1, 0xbf, 0x11, 0x16, 0x1c, 0xd0, 0x25, 0x99, 0x22, 0x20, - 0x5a, 0xf3, 0xaf, 0x47, 0x84, 0xa5, 0x08, 0x28, 0x2d, 0x7d, 0x38, 0x89, 0xfe, 0xe7, 0xf0, 0xcc, - 0xf4, 0x90, 0x46, 0x49, 0xaa, 0xaf, 0x88, 0xff, 0x32, 0xeb, 0x64, 0x19, 0xf2, 0x9b, 0x67, 0x66, - 0xa6, 0x4c, 0xba, 0xf3, 0x86, 0xc9, 0x02, 0xa7, 0x79, 0x9e, 0xe8, 0xf6, 0x39, 0xeb, 0xc3, 0x54, - 0x7a, 0x61, 0xdd, 0xd3, 0xed, 0xfa, 0x87, 0x03, 0x30, 0x61, 0x4e, 0x04, 0xb4, 0x00, 0x25, 0xc1, - 0x44, 0xa5, 0x0b, 0x53, 0x73, 0x7b, 0x5d, 0x22, 0x70, 0x42, 0xc3, 0xd2, 0xa5, 0xb1, 0xe2, 0x9a, - 0x6f, 0x56, 0x92, 0x2e, 0x4d, 0x61, 0xb0, 0x46, 0x45, 0x95, 0xe8, 0xcd, 0x20, 0x88, 0xd5, 0x56, - 0xa0, 0x66, 0xcb, 0x12, 0x83, 0x62, 0x81, 0xa5, 0x5b, 0xc0, 0x0e, 0x09, 0x7d, 0xe2, 0x99, 0x96, - 0x4c, 0xb5, 0x05, 0x5c, 0xd6, 0x91, 0xd8, 0xa4, 0xa5, 0x5b, 0x5a, 0x10, 0xb1, 0xe9, 0x27, 0x54, - 0xf5, 0xc4, 0xd7, 0xad, 0xc6, 0x23, 0x14, 0x25, 0x1e, 0xbd, 0x0e, 0xf7, 0xab, 0x80, 0x42, 0xcc, - 0x2d, 0xc3, 0xb2, 0xc6, 0x21, 0xe3, 0x64, 0x7d, 0xff, 0x72, 0x36, 0x19, 0xce, 0x2b, 0x8f, 0x5e, - 0x81, 0x09, 0xa1, 0x02, 0x4b, 0x8e, 0xc3, 0xa6, 0xb3, 0xc2, 0x65, 0x03, 0x8b, 0x53, 0xd4, 0xa8, - 0x02, 0x53, 0x14, 0xc2, 0xb4, 0x50, 0xc9, 0x81, 0x07, 0x46, 0xaa, 0xbd, 0xfe, 0x72, 0x0a, 0x8f, - 0x3b, 0x4a, 0xa0, 0x45, 0x98, 0xe4, 0x3a, 0x0a, 0x3d, 0x53, 0xb2, 0x71, 0x10, 0x9e, 0xb5, 0x6a, - 0x21, 0x5c, 0x33, 0xd1, 0x38, 0x4d, 0x8f, 0x5e, 0x84, 0x31, 0x27, 0xac, 0x6f, 0xbb, 0x31, 0xa9, - 0xc7, 0xed, 0x90, 0x27, 0xe0, 0xd0, 0xbc, 0x3d, 0x16, 0x35, 0x1c, 0x36, 0x28, 0xed, 0x77, 0xe1, - 0x54, 0x86, 0x53, 0x3e, 0x9d, 0x38, 0x4e, 0xcb, 0x95, 0xdf, 0x94, 0xf2, 0x5a, 0x5b, 0xac, 0xae, - 0xc9, 0xaf, 0xd1, 0xa8, 0xe8, 0xec, 0x64, 0x26, 0x71, 0x2d, 0x35, 0xac, 0x9a, 0x9d, 0xab, 0x12, - 0x81, 0x13, 0x1a, 0xfb, 0x0f, 0x00, 0x34, 0x83, 0x4e, 0x1f, 0x3e, 0x4b, 0x2f, 0xc2, 0x98, 0xcc, - 0x67, 0xac, 0xe5, 0xd1, 0x54, 0x9f, 0x79, 0x51, 0xc3, 0x61, 0x83, 0x92, 0xb6, 0xcd, 0x57, 0x59, - 0x40, 0x53, 0x3e, 0x72, 0x49, 0x0e, 0xd0, 0x84, 0x06, 0x3d, 0x05, 0x23, 0x11, 0xf1, 0xb6, 0xae, - 0xb8, 0xfe, 0x8e, 0x98, 0xd8, 0x4a, 0x0a, 0xd7, 0x04, 0x1c, 0x2b, 0x0a, 0xb4, 0x04, 0xc5, 0xb6, - 0xdb, 0x10, 0x53, 0x59, 0x6e, 0xf8, 0xc5, 0xeb, 0x6b, 0x95, 0xc3, 0x83, 0xb9, 0x87, 0xf3, 0xd2, - 0x34, 0xd3, 0xa3, 0x7d, 0x34, 0x4f, 0x97, 0x1f, 0x2d, 0x9c, 0x75, 0x37, 0x30, 0x74, 0xc4, 0xbb, - 0x81, 0x0b, 0x00, 0xe2, 0xab, 0xe5, 0x5c, 0x2e, 0x26, 0xa3, 0x76, 0x51, 0x61, 0xb0, 0x46, 0x85, - 0x22, 0x98, 0xae, 0x87, 0xc4, 0x91, 0x67, 0x68, 0xee, 0x5e, 0x3e, 0x72, 0xf7, 0x06, 0x82, 0xe5, - 0x34, 0x33, 0xdc, 0xc9, 0x1f, 0x05, 0x30, 0xdd, 0x10, 0xf1, 0xab, 0x49, 0xa5, 0xa5, 0xa3, 0xfb, - 0xb4, 0x33, 0x87, 0x9c, 0x34, 0x23, 0xdc, 0xc9, 0x1b, 0xbd, 0x05, 0xb3, 0x12, 0xd8, 0x19, 0x32, - 0xcc, 0x96, 0x4b, 0x71, 0xe9, 0xec, 0x9d, 0x83, 0xb9, 0xd9, 0x4a, 0x2e, 0x15, 0xee, 0xc2, 0x01, - 0x61, 0x18, 0x62, 0x77, 0x49, 0x51, 0x79, 0x94, 0xed, 0x73, 0x4f, 0xe4, 0x1b, 0x03, 0xe8, 0x5c, - 0x9f, 0x67, 0xf7, 0x50, 0xc2, 0xcd, 0x37, 0xb9, 0x96, 0x63, 0x40, 0x2c, 0x38, 0xa1, 0x2d, 0x18, - 0x75, 0x7c, 0x3f, 0x88, 0x1d, 0xae, 0x42, 0x8d, 0xe5, 0xeb, 0x7e, 0x1a, 0xe3, 0xc5, 0xa4, 0x04, - 0xe7, 0xae, 0x3c, 0x07, 0x35, 0x0c, 0xd6, 0x19, 0xa3, 0x5b, 0x30, 0x19, 0xdc, 0xa2, 0xc2, 0x51, - 0x5a, 0x29, 0xa2, 0xf2, 0x38, 0xab, 0xeb, 0xb9, 0x3e, 0xed, 0xb4, 0x46, 0x61, 0x4d, 0x6a, 0x99, - 0x4c, 0x71, 0xba, 0x16, 0x34, 0x6f, 0x58, 0xab, 0x27, 0x12, 0x7f, 0xf6, 0xc4, 0x5a, 0xad, 0x1b, - 0xa7, 0x59, 0x08, 0x3a, 0x77, 0x5b, 0x65, 0xab, 0x7f, 0x32, 0x15, 0x82, 0x9e, 0xa0, 0xb0, 0x4e, - 0x87, 0xb6, 0x61, 0x2c, 0xb9, 0xb2, 0x0a, 0x23, 0x96, 0xa1, 0x66, 0xf4, 0xc2, 0x85, 0xfe, 0x3e, - 0x6e, 0x4d, 0x2b, 0xc9, 0x4f, 0x0e, 0x3a, 0x04, 0x1b, 0x9c, 0x67, 0x3f, 0x0e, 0xa3, 0xda, 0xc0, - 0x1e, 0xc5, 0x2b, 0x7b, 0xf6, 0x15, 0x98, 0x4a, 0x0f, 0xdd, 0x91, 0xbc, 0xba, 0xff, 0x77, 0x01, - 0x26, 0x33, 0x6e, 0xae, 0x58, 0xaa, 0xe7, 0x94, 0x40, 0x4d, 0x32, 0x3b, 0x9b, 0x62, 0xb1, 0xd0, - 0x87, 0x58, 0x94, 0x32, 0xba, 0x98, 0x2b, 0xa3, 0x85, 0x28, 0x1c, 0x78, 0x2f, 0xa2, 0xd0, 0xdc, - 0x7d, 0x06, 0xfb, 0xda, 0x7d, 0x8e, 0x41, 0x7c, 0x1a, 0x1b, 0xd8, 0x70, 0x1f, 0x1b, 0xd8, 0x57, - 0x0b, 0x30, 0x95, 0xce, 0x27, 0x7c, 0x02, 0xf7, 0x1d, 0xaf, 0x1a, 0xf7, 0x1d, 0xd9, 0x89, 0xd3, - 0xd3, 0x59, 0x8e, 0xf3, 0xee, 0x3e, 0x70, 0xea, 0xee, 0xe3, 0x89, 0xbe, 0xb8, 0x75, 0xbf, 0x07, - 0xf9, 0xbb, 0x05, 0x38, 0x9d, 0x2e, 0xb2, 0xec, 0x39, 0xee, 0xee, 0x09, 0xf4, 0xcd, 0x35, 0xa3, - 0x6f, 0x9e, 0xee, 0xe7, 0x6b, 0x58, 0xd3, 0x72, 0x3b, 0xe8, 0x66, 0xaa, 0x83, 0x16, 0xfa, 0x67, - 0xd9, 0xbd, 0x97, 0xbe, 0x57, 0x84, 0xb3, 0x99, 0xe5, 0x92, 0xeb, 0x82, 0x55, 0xe3, 0xba, 0xe0, - 0x42, 0xea, 0xba, 0xc0, 0xee, 0x5e, 0xfa, 0x78, 0xee, 0x0f, 0x44, 0xe4, 0x19, 0xcb, 0x9e, 0x76, - 0x97, 0x77, 0x07, 0x46, 0xe4, 0x99, 0x62, 0x84, 0x4d, 0xbe, 0x3f, 0x4d, 0x77, 0x06, 0x7f, 0x60, - 0xc1, 0x99, 0xcc, 0xb1, 0x39, 0x01, 0xbb, 0xfa, 0x55, 0xd3, 0xae, 0xfe, 0x78, 0xdf, 0xb3, 0x35, - 0xc7, 0xd0, 0xfe, 0xf5, 0x62, 0xce, 0xb7, 0x30, 0xcb, 0xe4, 0x35, 0x18, 0x75, 0xea, 0x75, 0x12, - 0x45, 0xeb, 0x41, 0x43, 0x25, 0x2b, 0x7b, 0x9a, 0x69, 0x1b, 0x09, 0xf8, 0xf0, 0x60, 0x6e, 0x36, - 0xcd, 0x22, 0x41, 0x63, 0x9d, 0x83, 0x99, 0x00, 0xb1, 0x70, 0xac, 0x09, 0x10, 0x2f, 0x00, 0xec, - 0x29, 0x7b, 0x45, 0xda, 0xcc, 0xa9, 0x59, 0x32, 0x34, 0x2a, 0xf4, 0x73, 0xec, 0x14, 0xc0, 0x9d, - 0x81, 0xf8, 0x54, 0x7c, 0xb6, 0xcf, 0xb1, 0xd2, 0x1d, 0x8b, 0x78, 0x88, 0xb3, 0x32, 0x09, 0x2b, - 0x96, 0xe8, 0xd3, 0x30, 0x15, 0xf1, 0x0c, 0x1a, 0xcb, 0x9e, 0x13, 0xb1, 0xc0, 0x1a, 0x31, 0x0b, - 0x59, 0xdc, 0x72, 0x2d, 0x85, 0xc3, 0x1d, 0xd4, 0xf6, 0x57, 0x07, 0xe0, 0x81, 0x2e, 0xc2, 0x07, - 0x2d, 0x9a, 0x97, 0xf7, 0x4f, 0xa6, 0xed, 0x76, 0xb3, 0x99, 0x85, 0x0d, 0x43, 0x5e, 0x6a, 0x8c, - 0x0b, 0xef, 0x79, 0x8c, 0xbf, 0x6c, 0x69, 0x16, 0x55, 0xee, 0xe2, 0xfb, 0xc9, 0x23, 0x0a, 0xd5, - 0x63, 0x34, 0xb1, 0x6e, 0x65, 0xd8, 0x29, 0x2f, 0xf4, 0xdd, 0x9c, 0xbe, 0x0d, 0x97, 0x27, 0x7b, - 0xd5, 0xf3, 0x05, 0x0b, 0x1e, 0xce, 0x6c, 0xaf, 0xe1, 0x6c, 0xb4, 0x00, 0xa5, 0x3a, 0x05, 0x6a, - 0x41, 0x76, 0x49, 0xa8, 0xab, 0x44, 0xe0, 0x84, 0xc6, 0xf0, 0x29, 0x2a, 0xf4, 0xf4, 0x29, 0xfa, - 0x97, 0x16, 0xcc, 0xa4, 0x1b, 0x71, 0x02, 0x12, 0x70, 0xcd, 0x94, 0x80, 0x1f, 0xee, 0x67, 0x2c, - 0x73, 0x84, 0xdf, 0x8f, 0x26, 0xe0, 0xbe, 0x9c, 0xf7, 0x22, 0xf6, 0x60, 0xba, 0x59, 0x27, 0x66, - 0xf8, 0xa2, 0xf8, 0x98, 0xcc, 0x48, 0xcf, 0xae, 0xb1, 0x8e, 0xfc, 0x20, 0xdb, 0x41, 0x82, 0x3b, - 0xab, 0x40, 0x5f, 0xb0, 0x60, 0xc6, 0xb9, 0x15, 0x75, 0xbc, 0xdf, 0x24, 0xe6, 0xcc, 0x73, 0x99, - 0xf6, 0xd5, 0x1e, 0xef, 0x3d, 0xb1, 0x10, 0xa3, 0x99, 0x2c, 0x2a, 0x9c, 0x59, 0x17, 0xc2, 0x22, - 0x2f, 0x24, 0xd5, 0x93, 0xbb, 0x04, 0xd8, 0x66, 0x85, 0x3f, 0x71, 0x59, 0x28, 0x31, 0x58, 0xf1, - 0x41, 0x37, 0xa0, 0xd4, 0x94, 0x31, 0x89, 0x42, 0xd6, 0x66, 0x6e, 0x5e, 0x99, 0x81, 0x8b, 0x3c, - 0xe6, 0x43, 0xa1, 0x70, 0xc2, 0x0a, 0xbd, 0x02, 0x45, 0x7f, 0x2b, 0xea, 0xf6, 0x60, 0x46, 0xca, - 0x07, 0x8f, 0x47, 0x4a, 0x5f, 0x5d, 0xad, 0x61, 0x5a, 0x10, 0x5d, 0x82, 0x62, 0xb8, 0xd9, 0x10, - 0x57, 0x02, 0x99, 0xfa, 0x24, 0x5e, 0xaa, 0x64, 0x4f, 0x12, 0xce, 0x09, 0x2f, 0x55, 0x30, 0x65, - 0x81, 0x56, 0x61, 0x90, 0x05, 0x3b, 0x09, 0xcb, 0x7f, 0x66, 0xce, 0x87, 0x8e, 0x40, 0x2e, 0x1e, - 0x44, 0xcd, 0xc0, 0x98, 0x17, 0x47, 0xaf, 0xc2, 0x50, 0x9d, 0xbd, 0x24, 0x21, 0xcc, 0x34, 0xd9, - 0x79, 0x4c, 0x3a, 0xde, 0x9a, 0xe0, 0xf7, 0x9d, 0x1c, 0x8e, 0x05, 0x07, 0xb4, 0x01, 0x43, 0x75, - 0xd2, 0xda, 0xde, 0x8a, 0x84, 0xf5, 0xe5, 0xa3, 0x99, 0xbc, 0xba, 0x3c, 0x9c, 0x22, 0xb8, 0x32, - 0x0a, 0x2c, 0x78, 0xa1, 0x4f, 0x40, 0x61, 0xab, 0x2e, 0xe2, 0x9e, 0x32, 0x2d, 0xfe, 0x66, 0x60, - 0xfb, 0xd2, 0xd0, 0x9d, 0x83, 0xb9, 0xc2, 0xea, 0x32, 0x2e, 0x6c, 0xd5, 0xd1, 0x55, 0x18, 0xde, - 0xe2, 0xd1, 0xc9, 0x22, 0xe3, 0xef, 0x63, 0xd9, 0x81, 0xd3, 0x1d, 0x01, 0xcc, 0x3c, 0x5e, 0x47, - 0x20, 0xb0, 0x64, 0x82, 0x36, 0x00, 0xb6, 0x54, 0x94, 0xb5, 0x48, 0xf9, 0xfb, 0xe1, 0x7e, 0x62, - 0xb1, 0x85, 0x29, 0x42, 0x41, 0xb1, 0xc6, 0x07, 0x7d, 0x0e, 0x4a, 0x8e, 0x7c, 0x1b, 0x88, 0xa5, - 0xfb, 0x35, 0x35, 0x83, 0x64, 0xe9, 0x75, 0x7f, 0x36, 0x89, 0xcf, 0x5b, 0x45, 0x84, 0x13, 0xa6, - 0x68, 0x07, 0xc6, 0xf7, 0xa2, 0xd6, 0x36, 0x91, 0x4b, 0x95, 0xe5, 0x00, 0xce, 0xd9, 0x9a, 0x6e, - 0x08, 0x42, 0x37, 0x8c, 0xdb, 0x8e, 0xd7, 0x21, 0x5d, 0x58, 0x70, 0xd7, 0x0d, 0x9d, 0x19, 0x36, - 0x79, 0xd3, 0x4e, 0x7f, 0xa7, 0x1d, 0x6c, 0xee, 0xc7, 0x44, 0x64, 0x06, 0xce, 0xec, 0xf4, 0xd7, - 0x38, 0x49, 0x67, 0xa7, 0x0b, 0x04, 0x96, 0x4c, 0xe8, 0x62, 0x76, 0xe4, 0xbb, 0x5b, 0xc2, 0xde, - 0xf2, 0x78, 0x6e, 0xf7, 0x74, 0xb4, 0x37, 0xe9, 0x14, 0x26, 0x05, 0x13, 0x56, 0x4c, 0xfa, 0xb5, - 0xb6, 0x83, 0x38, 0xf0, 0x53, 0x92, 0x77, 0x3a, 0x5f, 0xfa, 0x55, 0x33, 0xe8, 0x3b, 0xa5, 0x5f, - 0x16, 0x15, 0xce, 0xac, 0x0b, 0x35, 0x60, 0xa2, 0x15, 0x84, 0xf1, 0xad, 0x20, 0x94, 0xb3, 0x0a, - 0x75, 0x39, 0x88, 0x1b, 0x94, 0xa2, 0x46, 0xe6, 0xab, 0x6d, 0x62, 0x70, 0x8a, 0x27, 0x1d, 0x92, - 0xa8, 0xee, 0x78, 0x64, 0xed, 0x5a, 0xf9, 0x54, 0xfe, 0x90, 0xd4, 0x38, 0x49, 0xe7, 0x90, 0x08, - 0x04, 0x96, 0x4c, 0xa8, 0xf4, 0x61, 0x49, 0xe6, 0x59, 0x2a, 0xe3, 0x1c, 0xe9, 0xd3, 0xe1, 0xc5, - 0xcc, 0xa5, 0x0f, 0x03, 0x63, 0x5e, 0x9c, 0xce, 0x7c, 0xa1, 0x85, 0x06, 0x51, 0xf9, 0x74, 0xfe, - 0xcc, 0x17, 0xca, 0xeb, 0xb5, 0x5a, 0xb7, 0x99, 0xaf, 0x88, 0x70, 0xc2, 0xd4, 0xfe, 0xd6, 0x50, - 0xa7, 0xde, 0xc0, 0x4e, 0x1b, 0x5f, 0xb4, 0x3a, 0xae, 0xe2, 0x3f, 0xd6, 0xaf, 0xf1, 0xe3, 0x18, - 0x35, 0xc6, 0x2f, 0x58, 0x70, 0x5f, 0x2b, 0xf3, 0xa3, 0xc4, 0x26, 0xdc, 0x9f, 0x0d, 0x85, 0x77, - 0x83, 0x4a, 0x12, 0x9e, 0x8d, 0xc7, 0x39, 0x35, 0xa5, 0xb5, 0xf2, 0xe2, 0x7b, 0xd6, 0xca, 0xd7, - 0x61, 0x84, 0x29, 0x7a, 0x49, 0x52, 0xa2, 0xbe, 0x1c, 0xda, 0xd8, 0x76, 0xbe, 0x2c, 0x0a, 0x62, - 0xc5, 0x02, 0xfd, 0xa2, 0x05, 0x0f, 0xa5, 0x9b, 0x8e, 0x09, 0x43, 0x8b, 0x04, 0x97, 0xfc, 0xa0, - 0xb3, 0x2a, 0xbe, 0xff, 0xa1, 0x6a, 0x37, 0xe2, 0xc3, 0x5e, 0x04, 0xb8, 0x7b, 0x65, 0xa8, 0x92, - 0x71, 0xd2, 0x1a, 0x32, 0x6f, 0xea, 0x7a, 0x9f, 0xb6, 0xd0, 0x73, 0x30, 0xb6, 0x1b, 0xb4, 0x7d, - 0x19, 0x6d, 0x22, 0x62, 0x89, 0x99, 0x55, 0x78, 0x5d, 0x83, 0x63, 0x83, 0xea, 0x64, 0x35, 0xff, - 0x6f, 0x58, 0x19, 0x2a, 0x2b, 0x3f, 0x0b, 0xbe, 0x6c, 0x9e, 0x05, 0x1f, 0x4d, 0x9f, 0x05, 0x3b, - 0x6c, 0x76, 0xc6, 0x31, 0xb0, 0xff, 0xc4, 0xbd, 0xfd, 0x66, 0x6d, 0xb2, 0x3d, 0x38, 0xd7, 0x4b, - 0x38, 0x33, 0xa7, 0xbe, 0x86, 0xba, 0xed, 0x4e, 0x9c, 0xfa, 0x1a, 0x6b, 0x15, 0xcc, 0x30, 0xfd, - 0xe6, 0xff, 0xb0, 0xff, 0xbb, 0x05, 0xc5, 0x6a, 0xd0, 0x38, 0x01, 0x1b, 0xe4, 0x27, 0x0d, 0x1b, - 0xe4, 0x03, 0x39, 0xaf, 0x78, 0xe6, 0x5a, 0x1c, 0x57, 0x52, 0x16, 0xc7, 0x87, 0xf2, 0x18, 0x74, - 0xb7, 0x2f, 0xfe, 0xbd, 0x22, 0xe8, 0x6f, 0x8e, 0xa2, 0x7f, 0x7d, 0x37, 0xde, 0xe1, 0xc5, 0x6e, - 0xcf, 0x90, 0x0a, 0xce, 0xcc, 0x17, 0x50, 0x06, 0x9e, 0xfe, 0x84, 0x39, 0x89, 0xdf, 0x24, 0x6e, - 0x73, 0x3b, 0x26, 0x8d, 0xf4, 0xe7, 0x9c, 0x9c, 0x93, 0xf8, 0x7f, 0xb1, 0x60, 0x32, 0x55, 0x3b, - 0xf2, 0xb2, 0xa2, 0xd8, 0xee, 0xd2, 0xf6, 0x34, 0xdd, 0x33, 0xec, 0x6d, 0x1e, 0x40, 0x5d, 0xf0, - 0x48, 0xfb, 0x0e, 0xd3, 0x7d, 0xd5, 0x0d, 0x50, 0x84, 0x35, 0x0a, 0xf4, 0x3c, 0x8c, 0xc6, 0x41, - 0x2b, 0xf0, 0x82, 0xe6, 0xfe, 0x65, 0x22, 0x33, 0xce, 0xa8, 0x6b, 0xb8, 0x8d, 0x04, 0x85, 0x75, - 0x3a, 0xfb, 0xd7, 0x8a, 0x90, 0x7e, 0xa7, 0xf6, 0x67, 0x73, 0xf2, 0x83, 0x39, 0x27, 0xbf, 0x67, - 0xc1, 0x14, 0xad, 0x9d, 0xf9, 0x59, 0x49, 0xf7, 0x6a, 0xf5, 0xc2, 0x87, 0xd5, 0xe5, 0x85, 0x8f, - 0x47, 0xa9, 0xec, 0x6a, 0x04, 0xed, 0x58, 0xd8, 0x87, 0x34, 0xe1, 0x44, 0xa1, 0x58, 0x60, 0x05, - 0x1d, 0x09, 0x43, 0x11, 0x9b, 0xa6, 0xd3, 0x91, 0x30, 0xc4, 0x02, 0x2b, 0x1f, 0x00, 0x19, 0xc8, - 0x79, 0x00, 0x84, 0x25, 0x6b, 0x13, 0xbe, 0x3d, 0x42, 0xa1, 0xd0, 0x92, 0xb5, 0x49, 0xa7, 0x9f, - 0x84, 0xc6, 0xfe, 0x66, 0x11, 0xc6, 0xaa, 0x41, 0x23, 0xb9, 0x62, 0x79, 0xce, 0xb8, 0x62, 0x39, - 0x97, 0xba, 0x62, 0x99, 0xd2, 0x69, 0x7f, 0x76, 0xa1, 0xf2, 0x7e, 0x5d, 0xa8, 0xfc, 0x99, 0x05, - 0x13, 0xd5, 0xa0, 0x41, 0x27, 0xe8, 0x4f, 0xd3, 0x6c, 0xd4, 0x53, 0x01, 0x0e, 0x75, 0x49, 0x05, - 0xf8, 0xf7, 0x2d, 0x18, 0xae, 0x06, 0x8d, 0x13, 0xb0, 0x9d, 0xbe, 0x6c, 0xda, 0x4e, 0xef, 0xcf, - 0x91, 0xb2, 0x39, 0xe6, 0xd2, 0xdf, 0x2a, 0xc2, 0x38, 0x6d, 0x67, 0xd0, 0x94, 0xa3, 0x64, 0xf4, - 0x88, 0xd5, 0x47, 0x8f, 0x50, 0x65, 0x2e, 0xf0, 0xbc, 0xe0, 0x56, 0x7a, 0xc4, 0x56, 0x19, 0x14, - 0x0b, 0x2c, 0x7a, 0x0a, 0x46, 0x5a, 0x21, 0xd9, 0x73, 0x83, 0x76, 0x94, 0x8e, 0x6e, 0xad, 0x0a, - 0x38, 0x56, 0x14, 0x54, 0x6f, 0x8f, 0x5c, 0xbf, 0x4e, 0xa4, 0xbf, 0xcf, 0x00, 0xf3, 0xf7, 0xe1, - 0xd9, 0x54, 0x35, 0x38, 0x36, 0xa8, 0xd0, 0x4d, 0x28, 0xb1, 0xff, 0x6c, 0xdd, 0x1c, 0xfd, 0x7d, - 0x0f, 0x91, 0xc2, 0x5c, 0x30, 0xc0, 0x09, 0x2f, 0x74, 0x01, 0x20, 0x96, 0x9e, 0x49, 0x91, 0x08, - 0xbe, 0x56, 0x1a, 0xa5, 0xf2, 0x59, 0x8a, 0xb0, 0x46, 0x85, 0x9e, 0x84, 0x52, 0xec, 0xb8, 0xde, - 0x15, 0xd7, 0x27, 0x91, 0xf0, 0xec, 0x12, 0x19, 0xca, 0x05, 0x10, 0x27, 0x78, 0xba, 0xa3, 0xb3, - 0xd0, 0x7e, 0xfe, 0x3a, 0xd0, 0x08, 0xa3, 0x66, 0x3b, 0xfa, 0x15, 0x05, 0xc5, 0x1a, 0x85, 0xfd, - 0x22, 0x9c, 0xae, 0x06, 0x8d, 0x6a, 0x10, 0xc6, 0xab, 0x41, 0x78, 0xcb, 0x09, 0x1b, 0x72, 0xfc, - 0xe6, 0x64, 0xb2, 0x6c, 0xba, 0xeb, 0x0e, 0x72, 0x6b, 0x80, 0x91, 0x06, 0xfb, 0x59, 0xb6, 0xa7, - 0x1f, 0x31, 0x0c, 0xe7, 0xdf, 0x15, 0x00, 0x55, 0x99, 0xef, 0x94, 0xf1, 0x84, 0xd4, 0x5b, 0x30, - 0x11, 0x91, 0x2b, 0xae, 0xdf, 0xbe, 0x2d, 0xcf, 0x57, 0x5d, 0x62, 0x9c, 0x6a, 0x2b, 0x3a, 0x25, - 0xb7, 0xa8, 0x98, 0x30, 0x9c, 0xe2, 0x46, 0xbb, 0x30, 0x6c, 0xfb, 0x8b, 0xd1, 0xf5, 0x88, 0x84, - 0xe2, 0xc9, 0x24, 0xd6, 0x85, 0x58, 0x02, 0x71, 0x82, 0xa7, 0x53, 0x86, 0xfd, 0xb9, 0x1a, 0xf8, - 0x38, 0x08, 0x62, 0x39, 0xc9, 0xd8, 0xa3, 0x1b, 0x1a, 0x1c, 0x1b, 0x54, 0x68, 0x15, 0x50, 0xd4, - 0x6e, 0xb5, 0x3c, 0x76, 0x21, 0xe9, 0x78, 0x17, 0xc3, 0xa0, 0xdd, 0xe2, 0x97, 0x4a, 0xe2, 0xbd, - 0x8a, 0x5a, 0x07, 0x16, 0x67, 0x94, 0xa0, 0x82, 0x61, 0x2b, 0x62, 0xbf, 0x45, 0x74, 0x3f, 0xb7, - 0x6d, 0xd6, 0x18, 0x08, 0x4b, 0x9c, 0xfd, 0x79, 0xb6, 0x99, 0xb1, 0x97, 0x6e, 0xe2, 0x76, 0x48, - 0xd0, 0x2e, 0x8c, 0xb7, 0xd8, 0x86, 0x15, 0x87, 0x81, 0xe7, 0x11, 0xa9, 0x37, 0xde, 0x9d, 0x1f, - 0x17, 0x7f, 0xf9, 0x42, 0x67, 0x87, 0x4d, 0xee, 0xf6, 0x17, 0x27, 0x99, 0x5c, 0xaa, 0xf1, 0x43, - 0xcb, 0xb0, 0xf0, 0xce, 0x16, 0x1a, 0xda, 0x6c, 0xfe, 0xcb, 0x72, 0x89, 0xa4, 0x17, 0x1e, 0xde, - 0x58, 0x96, 0x45, 0xaf, 0xb1, 0xdb, 0x38, 0x2e, 0x0c, 0x7a, 0xbd, 0x69, 0xc9, 0xa9, 0x8c, 0x8b, - 0x37, 0x51, 0x10, 0x6b, 0x4c, 0xd0, 0x15, 0x18, 0x17, 0x0f, 0xa3, 0x08, 0xc3, 0x43, 0xd1, 0x38, - 0xfe, 0x8e, 0x63, 0x1d, 0x79, 0x98, 0x06, 0x60, 0xb3, 0x30, 0x6a, 0xc2, 0x43, 0xda, 0x33, 0x5e, - 0x19, 0xbe, 0x84, 0x5c, 0xb6, 0x3c, 0x7c, 0xe7, 0x60, 0xee, 0xa1, 0x8d, 0x6e, 0x84, 0xb8, 0x3b, - 0x1f, 0x74, 0x0d, 0x4e, 0x3b, 0xf5, 0xd8, 0xdd, 0x23, 0x15, 0xe2, 0x34, 0x3c, 0xd7, 0x27, 0x66, - 0xba, 0x87, 0x33, 0x77, 0x0e, 0xe6, 0x4e, 0x2f, 0x66, 0x11, 0xe0, 0xec, 0x72, 0xe8, 0x65, 0x28, - 0x35, 0xfc, 0x48, 0xf4, 0xc1, 0x90, 0xf1, 0x42, 0x5d, 0xa9, 0x72, 0xb5, 0xa6, 0xbe, 0x3f, 0xf9, - 0x83, 0x93, 0x02, 0xa8, 0x09, 0x63, 0x7a, 0x48, 0x97, 0x78, 0xdd, 0xf0, 0xe9, 0x2e, 0x67, 0x5b, - 0x23, 0x0e, 0x8a, 0x5b, 0xdd, 0x94, 0xa7, 0xae, 0x11, 0x22, 0x65, 0x30, 0x46, 0xaf, 0x02, 0x8a, - 0x48, 0xb8, 0xe7, 0xd6, 0xc9, 0x62, 0x9d, 0xa5, 0x1b, 0x66, 0xb6, 0x9a, 0x11, 0x23, 0xec, 0x04, - 0xd5, 0x3a, 0x28, 0x70, 0x46, 0x29, 0x74, 0x89, 0x4a, 0x14, 0x1d, 0x2a, 0x1c, 0xab, 0xa5, 0x9a, - 0x57, 0xae, 0x90, 0x56, 0x48, 0xea, 0x4e, 0x4c, 0x1a, 0x26, 0x47, 0x9c, 0x2a, 0x47, 0xf7, 0x1b, - 0xf5, 0x8a, 0x03, 0x98, 0xee, 0xc0, 0x9d, 0x2f, 0x39, 0xd0, 0x13, 0xd2, 0x76, 0x10, 0xc5, 0x57, - 0x49, 0x7c, 0x2b, 0x08, 0x77, 0x44, 0x8e, 0xb6, 0x24, 0x85, 0x63, 0x82, 0xc2, 0x3a, 0x1d, 0xd5, - 0x88, 0xd8, 0x75, 0xd8, 0x5a, 0x85, 0xdd, 0x53, 0x8c, 0x24, 0xeb, 0xe4, 0x12, 0x07, 0x63, 0x89, - 0x97, 0xa4, 0x6b, 0xd5, 0x65, 0x76, 0xfb, 0x90, 0x22, 0x5d, 0xab, 0x2e, 0x63, 0x89, 0x47, 0xa4, - 0xf3, 0xf5, 0xbf, 0x89, 0xfc, 0x7b, 0xa3, 0x4e, 0xb9, 0xdc, 0xe7, 0x03, 0x80, 0x3e, 0x4c, 0xa9, - 0x77, 0x07, 0x79, 0xf2, 0xba, 0xa8, 0x3c, 0xc9, 0x26, 0x49, 0xff, 0x99, 0xef, 0x94, 0x2d, 0x6e, - 0x2d, 0xc5, 0x09, 0x77, 0xf0, 0x36, 0xd2, 0x88, 0x4c, 0xf5, 0x7c, 0x85, 0x63, 0x01, 0x4a, 0x51, - 0x7b, 0xb3, 0x11, 0xec, 0x3a, 0xae, 0xcf, 0x2e, 0x0b, 0x34, 0x45, 0xa4, 0x26, 0x11, 0x38, 0xa1, - 0x41, 0xab, 0x30, 0xe2, 0x88, 0xc3, 0x97, 0x30, 0xef, 0x67, 0xe6, 0x15, 0x90, 0x07, 0x34, 0x6e, - 0x07, 0x95, 0xff, 0xb0, 0x2a, 0x8b, 0x5e, 0x82, 0x71, 0x11, 0xfa, 0x26, 0xbc, 0x56, 0x4f, 0x99, - 0x51, 0x12, 0x35, 0x1d, 0x89, 0x4d, 0x5a, 0xf4, 0x73, 0x30, 0x41, 0xb9, 0x24, 0x82, 0xad, 0x3c, - 0xd3, 0x8f, 0x44, 0xd4, 0xb2, 0xab, 0xeb, 0x85, 0x71, 0x8a, 0x19, 0x6a, 0xc0, 0x83, 0x4e, 0x3b, - 0x0e, 0x98, 0xb1, 0xd2, 0x9c, 0xff, 0x1b, 0xc1, 0x0e, 0xf1, 0x99, 0x75, 0x7f, 0x64, 0xe9, 0xdc, - 0x9d, 0x83, 0xb9, 0x07, 0x17, 0xbb, 0xd0, 0xe1, 0xae, 0x5c, 0xd0, 0x75, 0x18, 0x8d, 0x03, 0x4f, - 0xb8, 0x9b, 0x47, 0xe5, 0xfb, 0xf2, 0xd3, 0x20, 0x6d, 0x28, 0x32, 0xdd, 0x9c, 0xa0, 0x8a, 0x62, - 0x9d, 0x0f, 0xda, 0xe0, 0x6b, 0x8c, 0x25, 0xed, 0x24, 0x51, 0xf9, 0xfe, 0xfc, 0x8e, 0x51, 0xb9, - 0x3d, 0xcd, 0x25, 0x28, 0x4a, 0x62, 0x9d, 0x0d, 0xba, 0x08, 0xd3, 0xad, 0xd0, 0x0d, 0xd8, 0xc4, - 0x56, 0x86, 0xe2, 0xb2, 0x91, 0x20, 0x6f, 0xba, 0x9a, 0x26, 0xc0, 0x9d, 0x65, 0xd0, 0x79, 0xaa, - 0xa0, 0x72, 0x60, 0xf9, 0x0c, 0x7f, 0x9d, 0x85, 0x2b, 0xa7, 0x1c, 0x86, 0x15, 0x76, 0xf6, 0x53, - 0x30, 0xdd, 0x21, 0x29, 0x8f, 0xe4, 0xfa, 0xfb, 0x4f, 0x06, 0xa1, 0xa4, 0xcc, 0x81, 0x68, 0xc1, - 0xb4, 0xf2, 0x9e, 0x49, 0x5b, 0x79, 0x47, 0xa8, 0xbe, 0xa6, 0x1b, 0x76, 0x37, 0x32, 0x1e, 0x97, - 0x3f, 0x97, 0x23, 0x1a, 0xfa, 0x8f, 0xd3, 0x3b, 0xc2, 0xc3, 0xfb, 0xc9, 0x81, 0x71, 0xa0, 0xeb, - 0x81, 0xb1, 0xcf, 0x87, 0x1e, 0xe9, 0xd1, 0xb0, 0x15, 0x34, 0xd6, 0xaa, 0xe9, 0x97, 0xcf, 0xaa, - 0x14, 0x88, 0x39, 0x8e, 0x29, 0xf7, 0x74, 0x5b, 0x67, 0xca, 0xfd, 0xf0, 0x5d, 0x2a, 0xf7, 0x92, - 0x01, 0x4e, 0x78, 0x21, 0x0f, 0xa6, 0xeb, 0xe6, 0xa3, 0x75, 0x2a, 0x36, 0xef, 0x91, 0x9e, 0xcf, - 0xc7, 0xb5, 0xb5, 0xd7, 0x6c, 0x96, 0xd3, 0x5c, 0x70, 0x27, 0x63, 0xf4, 0x12, 0x8c, 0xbc, 0x13, - 0x44, 0x6c, 0xda, 0x89, 0xbd, 0x4d, 0x46, 0x43, 0x8d, 0xbc, 0x76, 0xad, 0xc6, 0xe0, 0x87, 0x07, - 0x73, 0xa3, 0xd5, 0xa0, 0x21, 0xff, 0x62, 0x55, 0x00, 0xdd, 0x86, 0xd3, 0x86, 0x44, 0x50, 0xcd, - 0x85, 0xfe, 0x9b, 0xfb, 0x90, 0xa8, 0xee, 0xf4, 0x5a, 0x16, 0x27, 0x9c, 0x5d, 0x81, 0xfd, 0x2d, - 0x6e, 0xf4, 0x14, 0xa6, 0x11, 0x12, 0xb5, 0xbd, 0x93, 0x78, 0xb2, 0x62, 0xc5, 0xb0, 0xda, 0xdc, - 0xb5, 0x61, 0xfd, 0xf7, 0x2d, 0x66, 0x58, 0xdf, 0x20, 0xbb, 0x2d, 0xcf, 0x89, 0x4f, 0xc2, 0xe1, - 0xfb, 0x35, 0x18, 0x89, 0x45, 0x6d, 0xdd, 0x5e, 0xd9, 0xd0, 0x1a, 0xc5, 0x2e, 0x17, 0xd4, 0x86, - 0x28, 0xa1, 0x58, 0xb1, 0xb1, 0xff, 0x19, 0x1f, 0x01, 0x89, 0x39, 0x01, 0xdb, 0x42, 0xc5, 0xb4, - 0x2d, 0xcc, 0xf5, 0xf8, 0x82, 0x1c, 0x1b, 0xc3, 0x3f, 0x35, 0xdb, 0xcd, 0xce, 0x1e, 0x1f, 0xf4, - 0x1b, 0x1d, 0xfb, 0x97, 0x2d, 0x98, 0xc9, 0x72, 0x04, 0xa0, 0x4a, 0x0c, 0x3f, 0xf9, 0xa8, 0x1b, - 0x2e, 0xd5, 0x83, 0x37, 0x04, 0x1c, 0x2b, 0x8a, 0xbe, 0x33, 0xdd, 0x1f, 0x2d, 0xf5, 0xd7, 0x35, - 0x30, 0xdf, 0x37, 0x44, 0xaf, 0xf0, 0x08, 0x0e, 0x4b, 0x3d, 0x40, 0x78, 0xb4, 0xe8, 0x0d, 0xfb, - 0xd7, 0x0b, 0x30, 0xc3, 0x4d, 0xd4, 0x8b, 0x7b, 0x81, 0xdb, 0xa8, 0x06, 0x0d, 0x11, 0xcf, 0xf2, - 0x06, 0x8c, 0xb5, 0xb4, 0xe3, 0x6a, 0xb7, 0xe4, 0x43, 0xfa, 0xb1, 0x36, 0x39, 0x36, 0xe8, 0x50, - 0x6c, 0xf0, 0x42, 0x0d, 0x18, 0x23, 0x7b, 0x6e, 0x5d, 0xd9, 0x39, 0x0b, 0x47, 0x16, 0xe9, 0xaa, - 0x96, 0x15, 0x8d, 0x0f, 0x36, 0xb8, 0xde, 0x83, 0xf7, 0x68, 0xec, 0xaf, 0x59, 0x70, 0x7f, 0x4e, - 0xaa, 0x22, 0x5a, 0xdd, 0x2d, 0x76, 0x19, 0x20, 0x1e, 0xcb, 0x54, 0xd5, 0xf1, 0x2b, 0x02, 0x2c, - 0xb0, 0xe8, 0x33, 0x00, 0xdc, 0xc4, 0x4f, 0xb5, 0x68, 0xf1, 0xe9, 0xfd, 0xa5, 0xf0, 0xd0, 0xf2, - 0x3c, 0xc8, 0xf2, 0x58, 0xe3, 0x65, 0xff, 0x6a, 0x11, 0x06, 0xf9, 0xcb, 0xe9, 0xab, 0x30, 0xbc, - 0xcd, 0x13, 0x23, 0xf7, 0x93, 0x83, 0x39, 0x39, 0x8e, 0x70, 0x00, 0x96, 0x85, 0xd1, 0x3a, 0x9c, - 0x12, 0x31, 0x53, 0x15, 0xe2, 0x39, 0xfb, 0xf2, 0x54, 0xcb, 0x1f, 0x29, 0x91, 0x09, 0xf4, 0x4f, - 0xad, 0x75, 0x92, 0xe0, 0xac, 0x72, 0xe8, 0x95, 0x8e, 0x74, 0x88, 0x3c, 0xa5, 0xb4, 0xd2, 0x81, - 0x7b, 0xa4, 0x44, 0x7c, 0x09, 0xc6, 0x5b, 0x1d, 0xe7, 0x77, 0xed, 0xd1, 0x6a, 0xf3, 0xcc, 0x6e, - 0xd2, 0x32, 0xaf, 0x82, 0x36, 0xf3, 0xa1, 0xd8, 0xd8, 0x0e, 0x49, 0xb4, 0x1d, 0x78, 0x0d, 0xf1, - 0x42, 0x6b, 0xe2, 0x55, 0x90, 0xc2, 0xe3, 0x8e, 0x12, 0x94, 0xcb, 0x96, 0xe3, 0x7a, 0xed, 0x90, - 0x24, 0x5c, 0x86, 0x4c, 0x2e, 0xab, 0x29, 0x3c, 0xee, 0x28, 0x41, 0xe7, 0xd1, 0x69, 0xf1, 0xbc, - 0xa7, 0x8c, 0xa4, 0x57, 0xae, 0x22, 0xc3, 0xd2, 0xa3, 0xbe, 0x4b, 0x76, 0x17, 0x71, 0xe5, 0xaf, - 0x1e, 0x08, 0xd5, 0x1e, 0x8f, 0x13, 0xbe, 0xf4, 0x92, 0xcb, 0xdd, 0x3c, 0x32, 0xf9, 0x27, 0x16, - 0x9c, 0xca, 0x70, 0x1f, 0xe3, 0xa2, 0xaa, 0xe9, 0x46, 0xb1, 0x7a, 0x1b, 0x43, 0x13, 0x55, 0x1c, - 0x8e, 0x15, 0x05, 0x5d, 0x0f, 0x5c, 0x18, 0xa6, 0x05, 0xa0, 0x70, 0xf9, 0x10, 0xd8, 0xa3, 0x09, - 0x40, 0x74, 0x0e, 0x06, 0xda, 0x11, 0x09, 0xe5, 0xeb, 0x8c, 0x52, 0x7e, 0x33, 0x8b, 0x20, 0xc3, - 0x50, 0x8d, 0xb2, 0xa9, 0x8c, 0x71, 0x9a, 0x46, 0xc9, 0xcd, 0x71, 0x1c, 0x67, 0x7f, 0xa5, 0x08, - 0x67, 0x72, 0x5d, 0x41, 0x69, 0x93, 0x76, 0x03, 0xdf, 0x8d, 0x03, 0x95, 0x97, 0x8f, 0xa7, 0x21, - 0x21, 0xad, 0xed, 0x75, 0x01, 0xc7, 0x8a, 0x02, 0x3d, 0x2a, 0x1f, 0xef, 0x4d, 0xbf, 0xfe, 0xb1, - 0x54, 0x31, 0xde, 0xef, 0xed, 0xf7, 0x19, 0x9f, 0x47, 0x60, 0xa0, 0x15, 0xa8, 0x97, 0xd5, 0xd5, - 0xc8, 0xd2, 0xe6, 0x06, 0x81, 0x87, 0x19, 0x12, 0x7d, 0x44, 0xf4, 0x43, 0xea, 0xe6, 0x02, 0x3b, - 0x8d, 0x20, 0xd2, 0x3a, 0xe3, 0x71, 0x18, 0xde, 0x21, 0xfb, 0xa1, 0xeb, 0x37, 0xd3, 0xf7, 0x36, - 0x97, 0x39, 0x18, 0x4b, 0xbc, 0xf9, 0x32, 0xde, 0x70, 0xaf, 0x97, 0xf1, 0x8e, 0xfa, 0x08, 0xcf, - 0x48, 0xcf, 0xad, 0xed, 0xcb, 0x45, 0x98, 0xc4, 0x4b, 0x95, 0x9f, 0x0d, 0xc4, 0xf5, 0xce, 0x81, - 0x38, 0xee, 0x27, 0x91, 0x7a, 0x8f, 0xc6, 0x6f, 0x59, 0x30, 0xc9, 0x92, 0x11, 0x8b, 0x34, 0x1a, - 0x6e, 0xe0, 0x9f, 0x80, 0xea, 0xf6, 0x08, 0x0c, 0x86, 0xb4, 0xd2, 0xf4, 0x3b, 0x27, 0xac, 0x25, - 0x98, 0xe3, 0xd0, 0x83, 0x30, 0xc0, 0x9a, 0x40, 0x07, 0x6f, 0x8c, 0x3f, 0x47, 0x50, 0x71, 0x62, - 0x07, 0x33, 0x28, 0x8b, 0x67, 0xc4, 0xa4, 0xe5, 0xb9, 0xbc, 0xd1, 0x89, 0x05, 0xfc, 0x83, 0x11, - 0xcf, 0x98, 0xd9, 0xb4, 0xf7, 0x16, 0xcf, 0x98, 0xcd, 0xb2, 0xfb, 0xb1, 0xe8, 0x7f, 0x14, 0xe0, - 0x6c, 0x66, 0xb9, 0xbe, 0xe3, 0x19, 0xbb, 0x97, 0x3e, 0x9e, 0xeb, 0xf7, 0xec, 0x5b, 0xf1, 0xe2, - 0x09, 0xde, 0x8a, 0x0f, 0xf4, 0xab, 0x39, 0x0e, 0xf6, 0x11, 0x66, 0x98, 0xd9, 0x65, 0x1f, 0x90, - 0x30, 0xc3, 0xcc, 0xb6, 0xe5, 0x1c, 0xeb, 0x7e, 0x5c, 0xc8, 0xf9, 0x16, 0x76, 0xc0, 0x3b, 0x4f, - 0xe5, 0x0c, 0x43, 0x46, 0x42, 0x13, 0x1e, 0xe3, 0x32, 0x86, 0xc3, 0xb0, 0xc2, 0x22, 0x57, 0x0b, - 0xd8, 0xe3, 0x4d, 0x7b, 0xe9, 0x48, 0x4b, 0x66, 0xde, 0xbc, 0xb0, 0xd0, 0x73, 0x7e, 0xa4, 0x83, - 0xf7, 0xd6, 0xb5, 0x43, 0x79, 0xb1, 0xff, 0x43, 0xf9, 0x58, 0xf6, 0x81, 0x1c, 0x2d, 0xc2, 0xe4, - 0xae, 0xeb, 0xb3, 0xc7, 0x8a, 0x4d, 0x55, 0x54, 0xc5, 0xaf, 0xaf, 0x9b, 0x68, 0x9c, 0xa6, 0x9f, - 0x7d, 0x09, 0xc6, 0xef, 0xde, 0x8a, 0xf8, 0xbd, 0x22, 0x3c, 0xd0, 0x65, 0xd9, 0x73, 0x59, 0x6f, - 0x8c, 0x81, 0x26, 0xeb, 0x3b, 0xc6, 0xa1, 0x0a, 0x33, 0x5b, 0x6d, 0xcf, 0xdb, 0x67, 0x8e, 0x67, - 0xa4, 0x21, 0x29, 0x84, 0xae, 0xa8, 0x32, 0x8d, 0xaf, 0x66, 0xd0, 0xe0, 0xcc, 0x92, 0xe8, 0x55, - 0x40, 0xc1, 0x26, 0xcb, 0x7e, 0xdd, 0x48, 0x32, 0x99, 0xb0, 0x8e, 0x2f, 0x26, 0x8b, 0xf1, 0x5a, - 0x07, 0x05, 0xce, 0x28, 0x45, 0x95, 0x7e, 0xba, 0x2b, 0xed, 0xab, 0x66, 0xa5, 0x94, 0x7e, 0xac, - 0x23, 0xb1, 0x49, 0x8b, 0x2e, 0xc2, 0xb4, 0xb3, 0xe7, 0xb8, 0x3c, 0xb3, 0x9d, 0x64, 0xc0, 0xb5, - 0x7e, 0x65, 0xbb, 0x5b, 0x4c, 0x13, 0xe0, 0xce, 0x32, 0xa9, 0xc8, 0xc3, 0xa1, 0xfc, 0xc8, 0xc3, - 0xee, 0x72, 0xb1, 0x97, 0x29, 0xd6, 0xfe, 0x8f, 0x16, 0xdd, 0xbe, 0x32, 0x5e, 0xc7, 0xa5, 0xfd, - 0xa0, 0x4c, 0x8a, 0x5a, 0x10, 0xa0, 0xea, 0x87, 0x65, 0x1d, 0x89, 0x4d, 0x5a, 0x3e, 0x21, 0xa2, - 0xc4, 0xef, 0xdd, 0x50, 0xdd, 0x45, 0x74, 0xae, 0xa2, 0x40, 0xaf, 0xc3, 0x70, 0xc3, 0xdd, 0x73, - 0xa3, 0x20, 0x14, 0x8b, 0xe5, 0xa8, 0x2f, 0xc2, 0x2b, 0x39, 0x58, 0xe1, 0x6c, 0xb0, 0xe4, 0x67, - 0x7f, 0xb9, 0x00, 0xe3, 0xb2, 0xc6, 0xd7, 0xda, 0x41, 0xec, 0x9c, 0xc0, 0xb6, 0x7c, 0xd1, 0xd8, - 0x96, 0x3f, 0xd2, 0x2d, 0x44, 0x99, 0x35, 0x29, 0x77, 0x3b, 0xbe, 0x96, 0xda, 0x8e, 0x1f, 0xeb, - 0xcd, 0xaa, 0xfb, 0x36, 0xfc, 0xcf, 0x2d, 0x98, 0x36, 0xe8, 0x4f, 0x60, 0x37, 0x58, 0x35, 0x77, - 0x83, 0x87, 0x7b, 0x7e, 0x43, 0xce, 0x2e, 0xf0, 0x8d, 0x42, 0xaa, 0xed, 0x4c, 0xfa, 0xbf, 0x03, - 0x03, 0xdb, 0x4e, 0xd8, 0xe8, 0x96, 0x9f, 0xb5, 0xa3, 0xd0, 0xfc, 0x25, 0x27, 0x6c, 0x70, 0x19, - 0xfe, 0x94, 0x7a, 0xb8, 0xcf, 0x09, 0x1b, 0x3d, 0xc3, 0x3c, 0x58, 0x55, 0xe8, 0x45, 0x18, 0x8a, - 0xea, 0x41, 0x4b, 0xb9, 0xc3, 0x9e, 0xe3, 0x8f, 0xfa, 0x51, 0xc8, 0xe1, 0xc1, 0x1c, 0x32, 0xab, - 0xa3, 0x60, 0x2c, 0xe8, 0x67, 0x9b, 0x50, 0x52, 0x55, 0xdf, 0x53, 0x47, 0xff, 0x3f, 0x2a, 0xc2, - 0xa9, 0x8c, 0x79, 0x81, 0x22, 0xa3, 0xb7, 0x9e, 0xe9, 0x73, 0x3a, 0xbd, 0xc7, 0xfe, 0x8a, 0xd8, - 0x89, 0xa5, 0x21, 0xc6, 0xbf, 0xef, 0x4a, 0xaf, 0x47, 0x24, 0x5d, 0x29, 0x05, 0xf5, 0xae, 0x94, - 0x56, 0x76, 0x62, 0x5d, 0x4d, 0x2b, 0x52, 0x2d, 0xbd, 0xa7, 0x63, 0xfa, 0xa3, 0x22, 0xcc, 0x64, - 0x65, 0x36, 0x40, 0x3f, 0x9f, 0x7a, 0xed, 0xe5, 0xb9, 0x7e, 0x73, 0x22, 0xf0, 0x27, 0x60, 0x44, - 0x2a, 0xa8, 0x79, 0xf3, 0xfd, 0x97, 0x9e, 0xdd, 0x2c, 0xea, 0x64, 0x71, 0x57, 0x21, 0x7f, 0xa5, - 0x47, 0x2e, 0xf1, 0x8f, 0xf5, 0xdd, 0x00, 0xf1, 0xbc, 0x4f, 0x94, 0x8a, 0xbb, 0x92, 0xe0, 0xde, - 0x71, 0x57, 0xb2, 0xe6, 0x59, 0x17, 0x46, 0xb5, 0xaf, 0xb9, 0xa7, 0x23, 0xbe, 0x43, 0x77, 0x14, - 0xad, 0xdd, 0xf7, 0x74, 0xd4, 0xbf, 0x66, 0x41, 0xca, 0x75, 0x4d, 0x99, 0xa4, 0xac, 0x5c, 0x93, - 0xd4, 0x39, 0x18, 0x08, 0x03, 0x8f, 0xa4, 0x1f, 0x00, 0xc1, 0x81, 0x47, 0x30, 0xc3, 0xa8, 0x57, - 0xba, 0x8b, 0x79, 0xaf, 0x74, 0xd3, 0xa3, 0xb1, 0x47, 0xf6, 0x88, 0xb4, 0x46, 0x28, 0x99, 0x7c, - 0x85, 0x02, 0x31, 0xc7, 0xd9, 0xbf, 0x31, 0x00, 0xa7, 0x32, 0xa2, 0x0c, 0xe9, 0x41, 0xa5, 0xe9, - 0xc4, 0xe4, 0x96, 0xb3, 0x9f, 0x4e, 0x4a, 0x7c, 0x91, 0x83, 0xb1, 0xc4, 0x33, 0xf7, 0x5a, 0x9e, - 0xd7, 0x30, 0x65, 0xb6, 0x13, 0xe9, 0x0c, 0x05, 0xf6, 0x5e, 0x3d, 0xdc, 0x7c, 0x01, 0x20, 0x8a, - 0xbc, 0x15, 0x9f, 0x2a, 0x5f, 0x0d, 0xe1, 0xbc, 0x9b, 0x24, 0xc1, 0xac, 0x5d, 0x11, 0x18, 0xac, - 0x51, 0xa1, 0x0a, 0x4c, 0xb5, 0xc2, 0x20, 0xe6, 0xa6, 0xd0, 0x0a, 0x77, 0x1b, 0x19, 0x34, 0xe3, - 0xc5, 0xaa, 0x29, 0x3c, 0xee, 0x28, 0x81, 0x9e, 0x87, 0x51, 0x11, 0x43, 0x56, 0x0d, 0x02, 0x4f, - 0x58, 0x69, 0x94, 0x13, 0x42, 0x2d, 0x41, 0x61, 0x9d, 0x4e, 0x2b, 0xc6, 0xec, 0xab, 0xc3, 0x99, - 0xc5, 0xb8, 0x8d, 0x55, 0xa3, 0x4b, 0x25, 0x38, 0x19, 0xe9, 0x2b, 0xc1, 0x49, 0x62, 0xb7, 0x2a, - 0xf5, 0x7d, 0xa5, 0x04, 0x3d, 0x2d, 0x3d, 0xdf, 0x2a, 0xc2, 0x10, 0x1f, 0x8a, 0x13, 0x50, 0xc5, - 0x56, 0x85, 0xed, 0xa6, 0x4b, 0xba, 0x07, 0xde, 0x96, 0xf9, 0x8a, 0x13, 0x3b, 0x5c, 0x0c, 0xa9, - 0xd5, 0x90, 0x58, 0x79, 0xd0, 0xbc, 0xb1, 0x5e, 0x66, 0x53, 0xc6, 0x09, 0xe0, 0x3c, 0xb4, 0xd5, - 0xf3, 0x16, 0x40, 0xc4, 0x1e, 0x0f, 0xa6, 0x3c, 0x44, 0xe2, 0x90, 0x27, 0xba, 0xd4, 0x5e, 0x53, - 0xc4, 0xbc, 0x0d, 0xc9, 0x14, 0x54, 0x08, 0xac, 0x71, 0x9c, 0x7d, 0x01, 0x4a, 0x8a, 0xb8, 0xd7, - 0x49, 0x6e, 0x4c, 0x17, 0x5e, 0x9f, 0x84, 0xc9, 0x54, 0x5d, 0x47, 0x3a, 0x08, 0xfe, 0xb6, 0x05, - 0x93, 0xbc, 0xc9, 0x2b, 0xfe, 0x9e, 0x58, 0xec, 0xef, 0xc2, 0x8c, 0x97, 0xb1, 0xe8, 0xc4, 0x88, - 0xf6, 0xbf, 0x48, 0xd5, 0xc1, 0x2f, 0x0b, 0x8b, 0x33, 0xeb, 0xa0, 0x87, 0x7f, 0xfe, 0xec, 0xb9, - 0xe3, 0x09, 0xa7, 0xf0, 0x31, 0x9e, 0xf8, 0x9d, 0xc3, 0xb0, 0xc2, 0xda, 0xdf, 0xb7, 0x60, 0x9a, - 0xb7, 0xfc, 0x32, 0xd9, 0x57, 0x87, 0x9c, 0xf7, 0xb3, 0xed, 0x22, 0xaf, 0x7d, 0x21, 0x27, 0xaf, - 0xbd, 0xfe, 0x69, 0xc5, 0xae, 0x9f, 0xf6, 0xeb, 0x16, 0x88, 0x19, 0x78, 0x02, 0xea, 0xfc, 0xa7, - 0x4c, 0x75, 0x7e, 0x36, 0x7f, 0x52, 0xe7, 0xe8, 0xf1, 0x7f, 0x66, 0xc1, 0x14, 0x27, 0x48, 0xee, - 0x93, 0xde, 0xd7, 0x71, 0xe8, 0xe7, 0xb1, 0x25, 0xf5, 0xba, 0x6d, 0xf6, 0x47, 0x19, 0x83, 0x35, - 0xd0, 0x75, 0xb0, 0x1a, 0x72, 0x01, 0x1d, 0xe1, 0x11, 0xb1, 0x23, 0xa7, 0x62, 0xb4, 0xff, 0x9b, - 0x05, 0x88, 0x57, 0x93, 0x7e, 0x6f, 0x9e, 0x6f, 0x7d, 0xda, 0x81, 0x3e, 0x11, 0x35, 0x0a, 0x83, - 0x35, 0xaa, 0x63, 0xe9, 0x9e, 0xd4, 0xa5, 0x60, 0xb1, 0xf7, 0xa5, 0xe0, 0x11, 0x7a, 0xf4, 0xaf, - 0x0e, 0x40, 0xda, 0x03, 0x15, 0xdd, 0x80, 0xb1, 0xba, 0xd3, 0x72, 0x36, 0x5d, 0xcf, 0x8d, 0x5d, - 0x12, 0x75, 0xf3, 0x26, 0x58, 0xd6, 0xe8, 0xc4, 0x75, 0x8f, 0x06, 0xc1, 0x06, 0x1f, 0x34, 0x0f, - 0xd0, 0x0a, 0xdd, 0x3d, 0xd7, 0x23, 0x4d, 0x76, 0xa2, 0x61, 0x61, 0x28, 0xfc, 0x8a, 0x5c, 0x42, - 0xb1, 0x46, 0x91, 0x11, 0xb6, 0x50, 0xbc, 0x77, 0x61, 0x0b, 0x03, 0x47, 0x0c, 0x5b, 0x18, 0xec, - 0x2b, 0x6c, 0x01, 0xc3, 0x7d, 0x72, 0xef, 0xa6, 0xff, 0x57, 0x5d, 0x8f, 0x08, 0x85, 0x8d, 0x07, - 0xa7, 0xcc, 0xde, 0x39, 0x98, 0xbb, 0x0f, 0x67, 0x52, 0xe0, 0x9c, 0x92, 0xe8, 0x33, 0x50, 0x76, - 0x3c, 0x2f, 0xb8, 0xa5, 0x7a, 0x6d, 0x25, 0xaa, 0x3b, 0x5e, 0x92, 0x99, 0x78, 0x64, 0xe9, 0xc1, - 0x3b, 0x07, 0x73, 0xe5, 0xc5, 0x1c, 0x1a, 0x9c, 0x5b, 0xda, 0xde, 0x81, 0x53, 0x35, 0x12, 0xca, - 0x77, 0x09, 0xd5, 0x12, 0xdb, 0x80, 0x52, 0x98, 0x12, 0x2a, 0x7d, 0x65, 0x30, 0xd0, 0xb2, 0xc6, - 0x49, 0x21, 0x92, 0x30, 0xb2, 0xff, 0xd4, 0x82, 0x61, 0xe1, 0xd5, 0x7a, 0x02, 0xba, 0xcc, 0xa2, - 0x61, 0x56, 0x9a, 0xcb, 0x16, 0xbc, 0xac, 0x31, 0xb9, 0x06, 0xa5, 0xb5, 0x94, 0x41, 0xe9, 0xe1, - 0x6e, 0x4c, 0xba, 0x9b, 0x92, 0x7e, 0xa9, 0x08, 0x13, 0xa6, 0x47, 0xef, 0x09, 0x74, 0xc1, 0x55, - 0x18, 0x8e, 0x84, 0xfb, 0x78, 0x21, 0xdf, 0x0d, 0x31, 0x3d, 0x88, 0x89, 0xb3, 0x82, 0x70, 0x18, - 0x97, 0x4c, 0x32, 0xfd, 0xd2, 0x8b, 0xf7, 0xd0, 0x2f, 0xbd, 0x97, 0x53, 0xf5, 0xc0, 0x71, 0x38, - 0x55, 0xdb, 0xdf, 0x66, 0xc2, 0x5f, 0x87, 0x9f, 0x80, 0x5e, 0x70, 0xd1, 0xdc, 0x26, 0xec, 0x2e, - 0x33, 0x4b, 0x34, 0x2a, 0x47, 0x3f, 0xf8, 0x47, 0x16, 0x8c, 0x0a, 0xc2, 0x13, 0x68, 0xf6, 0xa7, - 0xcd, 0x66, 0x3f, 0xd0, 0xa5, 0xd9, 0x39, 0xed, 0xfd, 0xdb, 0x05, 0xd5, 0xde, 0x6a, 0x10, 0xc6, - 0x7d, 0x65, 0xaa, 0x1f, 0xa1, 0xa7, 0xc1, 0xa0, 0x1e, 0x78, 0x62, 0x33, 0x7f, 0x30, 0x89, 0x4f, - 0xe4, 0xf0, 0x43, 0xed, 0x37, 0x56, 0xd4, 0x2c, 0x7c, 0x2e, 0x08, 0x63, 0xb1, 0x81, 0x26, 0xe1, - 0x73, 0x41, 0x18, 0x63, 0x86, 0x41, 0x0d, 0x80, 0xd8, 0x09, 0x9b, 0x24, 0xa6, 0x30, 0x11, 0xd0, - 0x9b, 0xbf, 0x0a, 0xdb, 0xb1, 0xeb, 0xcd, 0xbb, 0x7e, 0x1c, 0xc5, 0xe1, 0xfc, 0x9a, 0x1f, 0x5f, - 0x0b, 0xf9, 0xd9, 0x40, 0x0b, 0x38, 0x54, 0xbc, 0xb0, 0xc6, 0x57, 0x46, 0xbc, 0xb0, 0x3a, 0x06, - 0xcd, 0xfb, 0x9e, 0xab, 0x02, 0x8e, 0x15, 0x85, 0xfd, 0x02, 0x93, 0xc9, 0xac, 0x83, 0x8e, 0x16, - 0x0b, 0xf8, 0xdd, 0x11, 0xd5, 0xb5, 0xcc, 0xd8, 0x5b, 0xd1, 0x23, 0x0e, 0xbb, 0x8b, 0x40, 0x5a, - 0xb1, 0xee, 0xdd, 0x9d, 0x84, 0x25, 0xa2, 0xcf, 0x76, 0x5c, 0x03, 0x3e, 0xdd, 0x43, 0x96, 0x1e, - 0xe1, 0xe2, 0x8f, 0xa5, 0x4d, 0x64, 0xe9, 0xe5, 0xd6, 0xaa, 0xe9, 0xb7, 0x04, 0x96, 0x25, 0x02, - 0x27, 0x34, 0x68, 0x41, 0x9c, 0x2c, 0xb9, 0x99, 0xe5, 0x81, 0xd4, 0xc9, 0x52, 0x7e, 0xbe, 0x76, - 0xb4, 0x7c, 0x06, 0x46, 0xd5, 0xfb, 0x4c, 0x55, 0xfe, 0xcc, 0x4d, 0x89, 0xeb, 0x52, 0x2b, 0x09, - 0x18, 0xeb, 0x34, 0x68, 0x03, 0x26, 0x23, 0xfe, 0x78, 0x94, 0x0c, 0x42, 0x11, 0x76, 0x83, 0x27, - 0xe4, 0xf5, 0x61, 0xcd, 0x44, 0x1f, 0x32, 0x10, 0x5f, 0xac, 0x32, 0x6c, 0x25, 0xcd, 0x02, 0xbd, - 0x02, 0x13, 0x9e, 0xfe, 0x88, 0x6e, 0x55, 0x98, 0x15, 0x94, 0x77, 0x9d, 0xf1, 0xc4, 0x6e, 0x15, - 0xa7, 0xa8, 0xa9, 0x12, 0xa0, 0x43, 0x44, 0x4e, 0x23, 0xc7, 0x6f, 0x92, 0x48, 0xbc, 0x2e, 0xc3, - 0x94, 0x80, 0x2b, 0x39, 0x34, 0x38, 0xb7, 0x34, 0x7a, 0x11, 0xc6, 0xe4, 0xe7, 0x6b, 0x41, 0x59, - 0x89, 0x0f, 0xa7, 0x86, 0xc3, 0x06, 0x25, 0xba, 0x05, 0xa7, 0xe5, 0xff, 0x8d, 0xd0, 0xd9, 0xda, - 0x72, 0xeb, 0x22, 0x26, 0x6e, 0x94, 0xb1, 0x58, 0x94, 0x0e, 0xed, 0x2b, 0x59, 0x44, 0x87, 0x07, - 0x73, 0xe7, 0x44, 0xaf, 0x65, 0xe2, 0xd9, 0x20, 0x66, 0xf3, 0x47, 0xeb, 0x70, 0x6a, 0x9b, 0x38, - 0x5e, 0xbc, 0xbd, 0xbc, 0x4d, 0xea, 0x3b, 0x72, 0x11, 0xb1, 0x50, 0x2f, 0xcd, 0xf3, 0xf1, 0x52, - 0x27, 0x09, 0xce, 0x2a, 0x87, 0xde, 0x84, 0x72, 0xab, 0xbd, 0xe9, 0xb9, 0xd1, 0xf6, 0xd5, 0x20, - 0x66, 0x37, 0x96, 0xea, 0x79, 0x23, 0x11, 0x13, 0xa6, 0xc2, 0xdc, 0xaa, 0x39, 0x74, 0x38, 0x97, - 0x03, 0x7a, 0x17, 0x4e, 0xa7, 0x26, 0x03, 0x7f, 0x31, 0x4b, 0xc4, 0x8e, 0x3d, 0x9e, 0xbd, 0x9c, - 0x32, 0x0a, 0xf0, 0x48, 0xc5, 0x4c, 0x14, 0xce, 0xae, 0xe2, 0xbd, 0xdd, 0x63, 0xbf, 0x43, 0x0b, - 0x6b, 0xda, 0x0d, 0xfa, 0x1c, 0x8c, 0xe9, 0xb3, 0x48, 0x6c, 0x30, 0x8f, 0xf6, 0x7a, 0x30, 0x5a, - 0xe8, 0x46, 0x6a, 0x46, 0xe9, 0x38, 0x6c, 0x70, 0xb4, 0x09, 0x64, 0x7f, 0x1f, 0xba, 0x02, 0x23, - 0x75, 0xcf, 0x25, 0x7e, 0xbc, 0x56, 0xed, 0x16, 0xcb, 0xbc, 0x2c, 0x68, 0x44, 0x87, 0x89, 0x94, - 0x5a, 0x1c, 0x86, 0x15, 0x07, 0xfb, 0xf7, 0x0a, 0x30, 0xd7, 0x23, 0xab, 0x5a, 0xca, 0x06, 0x68, - 0xf5, 0x65, 0x03, 0x5c, 0x94, 0x8f, 0x35, 0x5d, 0x4d, 0x9d, 0x3f, 0x53, 0x0f, 0x31, 0x25, 0xa7, - 0xd0, 0x34, 0x7d, 0xdf, 0xee, 0x6f, 0xba, 0x19, 0x71, 0xa0, 0xa7, 0x63, 0xa6, 0xe1, 0x3e, 0x38, - 0xd8, 0xbf, 0x46, 0x9f, 0x6b, 0x0a, 0xb6, 0xbf, 0x5d, 0x80, 0xd3, 0xaa, 0x0b, 0x7f, 0x7a, 0x3b, - 0xee, 0x7a, 0x67, 0xc7, 0x1d, 0x83, 0x21, 0xdd, 0xbe, 0x06, 0x43, 0xb5, 0xfd, 0xa8, 0x1e, 0x7b, - 0x7d, 0x28, 0x40, 0x8f, 0x18, 0x0b, 0x34, 0xd9, 0xa6, 0xd9, 0x7b, 0x8b, 0x62, 0xbd, 0xda, 0x7f, - 0xc9, 0x82, 0xc9, 0x8d, 0xe5, 0x6a, 0x2d, 0xa8, 0xef, 0x90, 0x78, 0x91, 0x9b, 0x89, 0xb0, 0xd0, - 0x7f, 0xac, 0xbb, 0xd4, 0x6b, 0xb2, 0x34, 0xa6, 0x73, 0x30, 0xb0, 0x1d, 0x44, 0x71, 0xfa, 0xb2, - 0xe4, 0x52, 0x10, 0xc5, 0x98, 0x61, 0xec, 0x3f, 0xb6, 0x60, 0x90, 0x3d, 0x31, 0xd8, 0xeb, 0x29, - 0xca, 0x7e, 0xbe, 0x0b, 0x3d, 0x0f, 0x43, 0x64, 0x6b, 0x8b, 0xd4, 0x63, 0x31, 0xaa, 0x32, 0x48, - 0x6a, 0x68, 0x85, 0x41, 0xe9, 0xa6, 0xcf, 0x2a, 0xe3, 0x7f, 0xb1, 0x20, 0x46, 0x37, 0xa1, 0x14, - 0xbb, 0xbb, 0x64, 0xb1, 0xd1, 0x10, 0xf7, 0x14, 0x77, 0x11, 0x93, 0xb6, 0x21, 0x19, 0xe0, 0x84, - 0x97, 0xfd, 0x95, 0x02, 0x40, 0x12, 0x48, 0xd9, 0xeb, 0x13, 0x97, 0x3a, 0x5e, 0xdb, 0x7c, 0x34, - 0xe3, 0xb5, 0x4d, 0x94, 0x30, 0xcc, 0x78, 0x6b, 0x53, 0x75, 0x53, 0xb1, 0xaf, 0x6e, 0x1a, 0x38, - 0x4a, 0x37, 0x2d, 0xc3, 0x74, 0x12, 0x08, 0x6a, 0x46, 0xc5, 0xb3, 0x3c, 0xca, 0x1b, 0x69, 0x24, - 0xee, 0xa4, 0xb7, 0xbf, 0x64, 0x81, 0xf0, 0x1a, 0xef, 0x63, 0x32, 0xbf, 0x21, 0x1f, 0xc6, 0x33, - 0xd2, 0x3c, 0x9e, 0xcb, 0x77, 0xa3, 0x17, 0xc9, 0x1d, 0xd5, 0xe6, 0x61, 0xa4, 0x74, 0x34, 0x78, - 0xd9, 0x7f, 0xbd, 0x00, 0xa3, 0x1c, 0xcd, 0x52, 0x08, 0xf6, 0xd1, 0x9a, 0x23, 0x65, 0xe1, 0x66, - 0x6f, 0xc6, 0x51, 0xc6, 0x2a, 0x59, 0xb3, 0xfe, 0x66, 0x9c, 0x44, 0xe0, 0x84, 0x06, 0x3d, 0x0e, - 0xc3, 0x51, 0x7b, 0x93, 0x91, 0xa7, 0xbc, 0x94, 0x6b, 0x1c, 0x8c, 0x25, 0x1e, 0x7d, 0x06, 0xa6, - 0x78, 0xb9, 0x30, 0x68, 0x39, 0x4d, 0x6e, 0xdb, 0x19, 0x54, 0x61, 0x43, 0x53, 0xeb, 0x29, 0xdc, - 0xe1, 0xc1, 0xdc, 0x4c, 0x1a, 0xc6, 0xac, 0x82, 0x1d, 0x5c, 0xe8, 0x8c, 0x9d, 0x4a, 0x47, 0x24, - 0xa0, 0x4b, 0x30, 0xc4, 0x85, 0x91, 0x10, 0x0e, 0x5d, 0xee, 0x7a, 0xb4, 0x38, 0x06, 0x96, 0xa0, - 0x58, 0xc8, 0x33, 0x51, 0x1e, 0xbd, 0x09, 0xa3, 0x8d, 0xe0, 0x96, 0x7f, 0xcb, 0x09, 0x1b, 0x8b, - 0xd5, 0x35, 0x31, 0x9e, 0x99, 0x3a, 0x4d, 0x25, 0x21, 0xd3, 0x63, 0x23, 0x98, 0x5d, 0x33, 0x41, - 0x61, 0x9d, 0x1d, 0xda, 0x60, 0x59, 0x6f, 0xf8, 0xa3, 0xce, 0xdd, 0xdc, 0x7a, 0xd4, 0x3b, 0xd0, - 0x1a, 0xe7, 0x71, 0x91, 0x1a, 0x47, 0x3c, 0x09, 0x9d, 0x30, 0xb2, 0xbf, 0x70, 0x0a, 0x8c, 0x79, - 0x64, 0x64, 0xe1, 0xb6, 0x8e, 0x29, 0x0b, 0x37, 0x86, 0x11, 0xb2, 0xdb, 0x8a, 0xf7, 0x2b, 0x6e, - 0xd8, 0xed, 0xf9, 0x85, 0x15, 0x41, 0xd3, 0xc9, 0x53, 0x62, 0xb0, 0xe2, 0x93, 0x9d, 0x2a, 0xbd, - 0xf8, 0x3e, 0xa6, 0x4a, 0x1f, 0x38, 0xc1, 0x54, 0xe9, 0x57, 0x61, 0xb8, 0xe9, 0xc6, 0x98, 0xb4, - 0x02, 0xb1, 0x11, 0x67, 0xce, 0x84, 0x8b, 0x9c, 0xa4, 0x33, 0x8d, 0xaf, 0x40, 0x60, 0xc9, 0x04, - 0xbd, 0xaa, 0xd6, 0xc0, 0x50, 0xbe, 0x1e, 0xdb, 0x79, 0x2d, 0x90, 0xb9, 0x0a, 0x44, 0x6a, 0xf4, - 0xe1, 0xbb, 0x4d, 0x8d, 0xae, 0x12, 0x9a, 0x8f, 0xbc, 0xb7, 0x84, 0xe6, 0x46, 0xea, 0xf7, 0xd2, - 0xf1, 0xa5, 0x7e, 0xff, 0x92, 0x05, 0xa7, 0x5b, 0x59, 0xaf, 0x20, 0x88, 0xd4, 0xe4, 0xcf, 0xf7, - 0xfd, 0xcc, 0x83, 0x51, 0x21, 0x3b, 0xd0, 0x64, 0x92, 0xe1, 0xec, 0xea, 0x68, 0x47, 0x87, 0x9b, - 0x0d, 0x91, 0xcf, 0xfc, 0x91, 0x9c, 0x1c, 0xf2, 0x5d, 0x32, 0xc7, 0xdf, 0x9b, 0x1c, 0xe6, 0x49, - 0x1e, 0xf9, 0xf1, 0xf7, 0x9c, 0x47, 0xfe, 0x55, 0x95, 0x47, 0xbe, 0x4b, 0x6e, 0x11, 0x9e, 0x25, - 0xbe, 0x67, 0xf6, 0x78, 0x2d, 0x03, 0xfc, 0xe4, 0x71, 0x64, 0x80, 0x7f, 0xcb, 0x14, 0xf6, 0x3c, - 0x1d, 0xf9, 0x93, 0x3d, 0x84, 0xbd, 0xc1, 0xb7, 0xbb, 0xb8, 0xe7, 0xd9, 0xee, 0xa7, 0xef, 0x2a, - 0xdb, 0xfd, 0x0d, 0x3d, 0x8f, 0x3c, 0xea, 0x91, 0x28, 0x9d, 0x12, 0xf5, 0x99, 0x3d, 0xfe, 0x86, - 0xbe, 0x05, 0x9d, 0xca, 0xe7, 0xab, 0x76, 0x9a, 0x4e, 0xbe, 0x59, 0x9b, 0x50, 0x67, 0x56, 0xfa, - 0x99, 0x93, 0xc9, 0x4a, 0x7f, 0xfa, 0xd8, 0xb3, 0xd2, 0xdf, 0x77, 0x02, 0x59, 0xe9, 0xef, 0x7f, - 0x5f, 0xb3, 0xd2, 0x97, 0xef, 0x6d, 0x56, 0xfa, 0x33, 0xc7, 0x91, 0x95, 0xfe, 0x06, 0x94, 0x5a, - 0x32, 0x68, 0xb5, 0x3c, 0x9b, 0x3f, 0x24, 0x99, 0x91, 0xad, 0x7c, 0x48, 0x14, 0x0a, 0x27, 0xac, - 0x28, 0xdf, 0x24, 0x4b, 0xfd, 0x03, 0x5d, 0x4c, 0x56, 0x59, 0xc6, 0x80, 0x2e, 0xb9, 0xe9, 0xff, - 0x72, 0x01, 0xce, 0x76, 0x9f, 0xd7, 0x89, 0x25, 0xa1, 0x9a, 0x58, 0xbe, 0x53, 0x96, 0x04, 0xa6, - 0x74, 0x69, 0x54, 0x7d, 0x47, 0xf6, 0x5f, 0x84, 0x69, 0xe5, 0x28, 0xe6, 0xb9, 0xf5, 0x7d, 0xed, - 0x29, 0x2b, 0x15, 0x7b, 0x50, 0x4b, 0x13, 0xe0, 0xce, 0x32, 0x68, 0x11, 0x26, 0x0d, 0xe0, 0x5a, - 0x45, 0x28, 0xfb, 0xca, 0x74, 0x51, 0x33, 0xd1, 0x38, 0x4d, 0x6f, 0x7f, 0xc3, 0x82, 0xfb, 0x73, - 0x52, 0xd5, 0xf6, 0x1d, 0xb8, 0xbe, 0x05, 0x93, 0x2d, 0xb3, 0x68, 0x8f, 0xfc, 0x16, 0x46, 0x42, - 0x5c, 0xd5, 0xd6, 0x14, 0x02, 0xa7, 0x99, 0x2e, 0x9d, 0xff, 0xce, 0x0f, 0xce, 0x7e, 0xe8, 0x0f, - 0x7f, 0x70, 0xf6, 0x43, 0xdf, 0xff, 0xc1, 0xd9, 0x0f, 0xfd, 0xf9, 0x3b, 0x67, 0xad, 0xef, 0xdc, - 0x39, 0x6b, 0xfd, 0xe1, 0x9d, 0xb3, 0xd6, 0xf7, 0xef, 0x9c, 0xb5, 0xfe, 0xe4, 0xce, 0x59, 0xeb, - 0x2b, 0x3f, 0x3c, 0xfb, 0xa1, 0x37, 0x0a, 0x7b, 0xcf, 0xfc, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x4e, 0x48, 0x31, 0x8e, 0xf9, 0xd2, 0x00, 0x00, + // 11903 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x70, 0x24, 0xc7, + 0x79, 0x98, 0x66, 0x17, 0xaf, 0xfd, 0xf0, 0xee, 0xc3, 0x91, 0x7b, 0x20, 0xef, 0x70, 0x1c, 0x4a, + 0xe4, 0xf1, 0x05, 0x88, 0x47, 0x52, 0xa4, 0x45, 0x8a, 0x36, 0x80, 0x05, 0xee, 0xc0, 0x3b, 0xdc, + 0x2d, 0x7b, 0x71, 0x77, 0x22, 0x4d, 0x33, 0x1a, 0xec, 0x36, 0x16, 0x43, 0x0c, 0x66, 0x96, 0x33, + 0xb3, 0xb8, 0x03, 0xcb, 0xaa, 0x4a, 0x14, 0x59, 0x79, 0xc8, 0x3f, 0x54, 0x89, 0x2a, 0x71, 0x2c, + 0x95, 0x53, 0x95, 0x47, 0xd9, 0x8a, 0x93, 0x54, 0x1c, 0x39, 0xb2, 0x23, 0x39, 0x15, 0xc7, 0x79, + 0x94, 0xfc, 0x47, 0xb1, 0xf3, 0x47, 0xaa, 0x72, 0x05, 0xb1, 0x4e, 0xa9, 0xa4, 0xf2, 0x23, 0xa9, + 0x24, 0xfe, 0x65, 0xc4, 0x89, 0x52, 0xfd, 0x9c, 0xee, 0xd9, 0x99, 0xdd, 0xc5, 0x11, 0x07, 0x52, + 0x2a, 0xfd, 0xdb, 0xed, 0xef, 0xeb, 0xaf, 0x7b, 0xfa, 0xf1, 0xf5, 0xd7, 0x5f, 0x7f, 0x0f, 0x78, + 0x79, 0xe7, 0xa5, 0x68, 0xde, 0x0d, 0x16, 0x76, 0xda, 0x9b, 0x24, 0xf4, 0x49, 0x4c, 0xa2, 0x85, + 0x3d, 0xe2, 0x37, 0x82, 0x70, 0x41, 0x00, 0x9c, 0x96, 0xbb, 0x50, 0x0f, 0x42, 0xb2, 0xb0, 0xf7, + 0xec, 0x42, 0x93, 0xf8, 0x24, 0x74, 0x62, 0xd2, 0x98, 0x6f, 0x85, 0x41, 0x1c, 0x20, 0xc4, 0x71, + 0xe6, 0x9d, 0x96, 0x3b, 0x4f, 0x71, 0xe6, 0xf7, 0x9e, 0x9d, 0x7d, 0xa6, 0xe9, 0xc6, 0xdb, 0xed, + 0xcd, 0xf9, 0x7a, 0xb0, 0xbb, 0xd0, 0x0c, 0x9a, 0xc1, 0x02, 0x43, 0xdd, 0x6c, 0x6f, 0xb1, 0x7f, + 0xec, 0x0f, 0xfb, 0xc5, 0x49, 0xcc, 0xae, 0x27, 0xcd, 0x90, 0x3b, 0x31, 0xf1, 0x23, 0x37, 0xf0, + 0xa3, 0x67, 0x9c, 0x96, 0x1b, 0x91, 0x70, 0x8f, 0x84, 0x0b, 0xad, 0x9d, 0x26, 0x85, 0x45, 0x26, + 0xc2, 0xc2, 0xde, 0xb3, 0x9b, 0x24, 0x76, 0x3a, 0x7a, 0x34, 0xfb, 0x7c, 0x42, 0x6e, 0xd7, 0xa9, + 0x6f, 0xbb, 0x3e, 0x09, 0xf7, 0x25, 0x8d, 0x85, 0x90, 0x44, 0x41, 0x3b, 0xac, 0x93, 0x23, 0xd5, + 0x8a, 0x16, 0x76, 0x49, 0xec, 0x64, 0x7c, 0xfd, 0xec, 0x42, 0x5e, 0xad, 0xb0, 0xed, 0xc7, 0xee, + 0x6e, 0x67, 0x33, 0x9f, 0xe8, 0x55, 0x21, 0xaa, 0x6f, 0x93, 0x5d, 0xa7, 0xa3, 0xde, 0x73, 0x79, + 0xf5, 0xda, 0xb1, 0xeb, 0x2d, 0xb8, 0x7e, 0x1c, 0xc5, 0x61, 0xba, 0x92, 0xfd, 0x5d, 0x0b, 0xce, + 0x2f, 0xde, 0xaa, 0xad, 0x78, 0x4e, 0x14, 0xbb, 0xf5, 0x25, 0x2f, 0xa8, 0xef, 0xd4, 0xe2, 0x20, + 0x24, 0x37, 0x03, 0xaf, 0xbd, 0x4b, 0x6a, 0x6c, 0x20, 0xd0, 0xd3, 0x30, 0xb2, 0xc7, 0xfe, 0xaf, + 0x55, 0xca, 0xd6, 0x79, 0xeb, 0x42, 0x69, 0x69, 0xea, 0xdb, 0x07, 0x73, 0x1f, 0xb9, 0x7b, 0x30, + 0x37, 0x72, 0x53, 0x94, 0x63, 0x85, 0x81, 0x1e, 0x83, 0xa1, 0xad, 0x68, 0x63, 0xbf, 0x45, 0xca, + 0x05, 0x86, 0x3b, 0x21, 0x70, 0x87, 0x56, 0x6b, 0xb4, 0x14, 0x0b, 0x28, 0x5a, 0x80, 0x52, 0xcb, + 0x09, 0x63, 0x37, 0x76, 0x03, 0xbf, 0x5c, 0x3c, 0x6f, 0x5d, 0x18, 0x5c, 0x9a, 0x16, 0xa8, 0xa5, + 0xaa, 0x04, 0xe0, 0x04, 0x87, 0x76, 0x23, 0x24, 0x4e, 0xe3, 0xba, 0xef, 0xed, 0x97, 0x07, 0xce, + 0x5b, 0x17, 0x46, 0x92, 0x6e, 0x60, 0x51, 0x8e, 0x15, 0x86, 0xfd, 0xcb, 0x05, 0x18, 0x59, 0xdc, + 0xda, 0x72, 0x7d, 0x37, 0xde, 0x47, 0x37, 0x61, 0xcc, 0x0f, 0x1a, 0x44, 0xfe, 0x67, 0x5f, 0x31, + 0x7a, 0xf1, 0xfc, 0x7c, 0xe7, 0xca, 0x9c, 0xbf, 0xa6, 0xe1, 0x2d, 0x4d, 0xdd, 0x3d, 0x98, 0x1b, + 0xd3, 0x4b, 0xb0, 0x41, 0x07, 0x61, 0x18, 0x6d, 0x05, 0x0d, 0x45, 0xb6, 0xc0, 0xc8, 0xce, 0x65, + 0x91, 0xad, 0x26, 0x68, 0x4b, 0x93, 0x77, 0x0f, 0xe6, 0x46, 0xb5, 0x02, 0xac, 0x13, 0x41, 0x9b, + 0x30, 0x49, 0xff, 0xfa, 0xb1, 0xab, 0xe8, 0x16, 0x19, 0xdd, 0x47, 0xf3, 0xe8, 0x6a, 0xa8, 0x4b, + 0xa7, 0xee, 0x1e, 0xcc, 0x4d, 0xa6, 0x0a, 0x71, 0x9a, 0xa0, 0xfd, 0x1e, 0x4c, 0x2c, 0xc6, 0xb1, + 0x53, 0xdf, 0x26, 0x0d, 0x3e, 0x83, 0xe8, 0x79, 0x18, 0xf0, 0x9d, 0x5d, 0x22, 0xe6, 0xf7, 0xbc, + 0x18, 0xd8, 0x81, 0x6b, 0xce, 0x2e, 0x39, 0x3c, 0x98, 0x9b, 0xba, 0xe1, 0xbb, 0xef, 0xb6, 0xc5, + 0xaa, 0xa0, 0x65, 0x98, 0x61, 0xa3, 0x8b, 0x00, 0x0d, 0xb2, 0xe7, 0xd6, 0x49, 0xd5, 0x89, 0xb7, + 0xc5, 0x7c, 0x23, 0x51, 0x17, 0x2a, 0x0a, 0x82, 0x35, 0x2c, 0xfb, 0x0e, 0x94, 0x16, 0xf7, 0x02, + 0xb7, 0x51, 0x0d, 0x1a, 0x11, 0xda, 0x81, 0xc9, 0x56, 0x48, 0xb6, 0x48, 0xa8, 0x8a, 0xca, 0xd6, + 0xf9, 0xe2, 0x85, 0xd1, 0x8b, 0x17, 0x32, 0x3f, 0xd6, 0x44, 0x5d, 0xf1, 0xe3, 0x70, 0x7f, 0xe9, + 0x41, 0xd1, 0xde, 0x64, 0x0a, 0x8a, 0xd3, 0x94, 0xed, 0x7f, 0x53, 0x80, 0xd3, 0x8b, 0xef, 0xb5, + 0x43, 0x52, 0x71, 0xa3, 0x9d, 0xf4, 0x0a, 0x6f, 0xb8, 0xd1, 0xce, 0xb5, 0x64, 0x04, 0xd4, 0xd2, + 0xaa, 0x88, 0x72, 0xac, 0x30, 0xd0, 0x33, 0x30, 0x4c, 0x7f, 0xdf, 0xc0, 0x6b, 0xe2, 0x93, 0x4f, + 0x09, 0xe4, 0xd1, 0x8a, 0x13, 0x3b, 0x15, 0x0e, 0xc2, 0x12, 0x07, 0xad, 0xc3, 0x68, 0x9d, 0x6d, + 0xc8, 0xe6, 0x7a, 0xd0, 0x20, 0x6c, 0x32, 0x4b, 0x4b, 0x4f, 0x51, 0xf4, 0xe5, 0xa4, 0xf8, 0xf0, + 0x60, 0xae, 0xcc, 0xfb, 0x26, 0x48, 0x68, 0x30, 0xac, 0xd7, 0x47, 0xb6, 0xda, 0x5f, 0x03, 0x8c, + 0x12, 0x64, 0xec, 0xad, 0x0b, 0xda, 0x56, 0x19, 0x64, 0x5b, 0x65, 0x2c, 0x7b, 0x9b, 0xa0, 0x67, + 0x61, 0x60, 0xc7, 0xf5, 0x1b, 0xe5, 0x21, 0x46, 0xeb, 0x2c, 0x9d, 0xf3, 0x2b, 0xae, 0xdf, 0x38, + 0x3c, 0x98, 0x9b, 0x36, 0xba, 0x43, 0x0b, 0x31, 0x43, 0xb5, 0xff, 0xc4, 0x82, 0x39, 0x06, 0x5b, + 0x75, 0x3d, 0x52, 0x25, 0x61, 0xe4, 0x46, 0x31, 0xf1, 0x63, 0x63, 0x40, 0x2f, 0x02, 0x44, 0xa4, + 0x1e, 0x92, 0x58, 0x1b, 0x52, 0xb5, 0x30, 0x6a, 0x0a, 0x82, 0x35, 0x2c, 0xca, 0x10, 0xa2, 0x6d, + 0x27, 0x64, 0xeb, 0x4b, 0x0c, 0xac, 0x62, 0x08, 0x35, 0x09, 0xc0, 0x09, 0x8e, 0xc1, 0x10, 0x8a, + 0xbd, 0x18, 0x02, 0xfa, 0x14, 0x4c, 0x26, 0x8d, 0x45, 0x2d, 0xa7, 0x2e, 0x07, 0x90, 0x6d, 0x99, + 0x9a, 0x09, 0xc2, 0x69, 0x5c, 0xfb, 0x1f, 0x58, 0x62, 0xf1, 0xd0, 0xaf, 0xfe, 0x90, 0x7f, 0xab, + 0xfd, 0xdb, 0x16, 0x0c, 0x2f, 0xb9, 0x7e, 0xc3, 0xf5, 0x9b, 0xe8, 0x33, 0x30, 0x42, 0xcf, 0xa6, + 0x86, 0x13, 0x3b, 0x82, 0xef, 0x7d, 0x5c, 0xdb, 0x5b, 0xea, 0xa8, 0x98, 0x6f, 0xed, 0x34, 0x69, + 0x41, 0x34, 0x4f, 0xb1, 0xe9, 0x6e, 0xbb, 0xbe, 0xf9, 0x0e, 0xa9, 0xc7, 0xeb, 0x24, 0x76, 0x92, + 0xcf, 0x49, 0xca, 0xb0, 0xa2, 0x8a, 0xae, 0xc0, 0x50, 0xec, 0x84, 0x4d, 0x12, 0x0b, 0x06, 0x98, + 0xc9, 0xa8, 0x78, 0x4d, 0x4c, 0x77, 0x24, 0xf1, 0xeb, 0x24, 0x39, 0x16, 0x36, 0x58, 0x55, 0x2c, + 0x48, 0xd8, 0x75, 0x18, 0x5b, 0x76, 0x5a, 0xce, 0xa6, 0xeb, 0xb9, 0xb1, 0x4b, 0x22, 0xf4, 0x38, + 0x14, 0x9d, 0x46, 0x83, 0x71, 0x85, 0xd2, 0xd2, 0xe9, 0xbb, 0x07, 0x73, 0xc5, 0xc5, 0x06, 0x5d, + 0x9e, 0xa0, 0xb0, 0xf6, 0x31, 0xc5, 0x40, 0x4f, 0xc2, 0x40, 0x23, 0x0c, 0x5a, 0xe5, 0x02, 0xc3, + 0x7c, 0x80, 0xae, 0xe4, 0x4a, 0x18, 0xb4, 0x52, 0xa8, 0x0c, 0xc7, 0xfe, 0xdd, 0x02, 0x3c, 0xbc, + 0x4c, 0x5a, 0xdb, 0xab, 0xb5, 0x9c, 0xf5, 0x7b, 0x01, 0x46, 0x76, 0x03, 0xdf, 0x8d, 0x83, 0x30, + 0x12, 0x4d, 0xb3, 0x0d, 0xb4, 0x2e, 0xca, 0xb0, 0x82, 0xa2, 0xf3, 0x30, 0xd0, 0x4a, 0x98, 0xdf, + 0x98, 0x64, 0x9c, 0x8c, 0xed, 0x31, 0x08, 0xc5, 0x68, 0x47, 0x24, 0x14, 0x1b, 0x5f, 0x61, 0xdc, + 0x88, 0x48, 0x88, 0x19, 0x24, 0x59, 0x41, 0x74, 0x6d, 0x89, 0x55, 0x99, 0x5a, 0x41, 0x14, 0x82, + 0x35, 0x2c, 0x54, 0x85, 0x12, 0xff, 0x87, 0xc9, 0x16, 0xdb, 0xe3, 0x39, 0xe3, 0x5e, 0x93, 0x48, + 0x62, 0xdc, 0xc7, 0xd9, 0x12, 0x93, 0x85, 0x38, 0x21, 0x62, 0x2c, 0xb1, 0xa1, 0x9e, 0x4b, 0xec, + 0x5b, 0x05, 0x40, 0x7c, 0x08, 0x7f, 0xc4, 0x06, 0xee, 0x46, 0xe7, 0xc0, 0x65, 0x1e, 0x36, 0x57, + 0x83, 0xba, 0xe3, 0xa5, 0x57, 0xed, 0x71, 0x8d, 0xde, 0x2f, 0x59, 0x80, 0x96, 0x5d, 0xbf, 0x41, + 0xc2, 0x13, 0x90, 0xb4, 0x8e, 0xc6, 0x3b, 0xae, 0xc2, 0xc4, 0xb2, 0xe7, 0x12, 0x3f, 0x5e, 0xab, + 0x2e, 0x07, 0xfe, 0x96, 0xdb, 0x44, 0x9f, 0x84, 0x09, 0x2a, 0x78, 0x06, 0xed, 0xb8, 0x46, 0xea, + 0x81, 0xcf, 0xce, 0x68, 0x2a, 0xae, 0xa1, 0xbb, 0x07, 0x73, 0x13, 0x1b, 0x06, 0x04, 0xa7, 0x30, + 0xed, 0x3f, 0xa2, 0x1f, 0x1a, 0xec, 0xb6, 0x02, 0x9f, 0xf8, 0xf1, 0x72, 0xe0, 0x37, 0xb8, 0x2c, + 0xf7, 0x49, 0x18, 0x88, 0x69, 0xc7, 0xf9, 0x47, 0x3e, 0x26, 0xa7, 0x96, 0x76, 0xf7, 0xf0, 0x60, + 0xee, 0x81, 0xce, 0x1a, 0xec, 0x83, 0x58, 0x1d, 0xf4, 0x53, 0x30, 0x14, 0xc5, 0x4e, 0xdc, 0x8e, + 0xc4, 0x67, 0x3f, 0x22, 0x3f, 0xbb, 0xc6, 0x4a, 0x0f, 0x0f, 0xe6, 0x26, 0x55, 0x35, 0x5e, 0x84, + 0x45, 0x05, 0xf4, 0x04, 0x0c, 0xef, 0x92, 0x28, 0x72, 0x9a, 0xf2, 0x18, 0x9e, 0x14, 0x75, 0x87, + 0xd7, 0x79, 0x31, 0x96, 0x70, 0xf4, 0x28, 0x0c, 0x92, 0x30, 0x0c, 0x42, 0xb1, 0xaa, 0xc6, 0x05, + 0xe2, 0xe0, 0x0a, 0x2d, 0xc4, 0x1c, 0x66, 0xff, 0x7b, 0x0b, 0x26, 0x55, 0x5f, 0x79, 0x5b, 0x27, + 0xc0, 0x6f, 0xdf, 0x04, 0xa8, 0xcb, 0x0f, 0x8c, 0x18, 0xbf, 0x1b, 0xbd, 0xf8, 0x58, 0xd6, 0x12, + 0xee, 0x1c, 0xc6, 0x84, 0xb2, 0x2a, 0x8a, 0xb0, 0x46, 0xcd, 0xfe, 0x17, 0x16, 0x9c, 0x4a, 0x7d, + 0xd1, 0x55, 0x37, 0x8a, 0xd1, 0x5b, 0x1d, 0x5f, 0x35, 0xdf, 0xdf, 0x57, 0xd1, 0xda, 0xec, 0x9b, + 0xd4, 0x9a, 0x93, 0x25, 0xda, 0x17, 0x5d, 0x86, 0x41, 0x37, 0x26, 0xbb, 0xf2, 0x63, 0x1e, 0xed, + 0xfa, 0x31, 0xbc, 0x57, 0xc9, 0x8c, 0xac, 0xd1, 0x9a, 0x98, 0x13, 0xb0, 0xff, 0x97, 0x05, 0x25, + 0xbe, 0x6c, 0xd7, 0x9d, 0xd6, 0x09, 0xcc, 0xc5, 0x1a, 0x0c, 0x30, 0xea, 0xbc, 0xe3, 0x8f, 0x67, + 0x77, 0x5c, 0x74, 0x67, 0x9e, 0x0a, 0x53, 0x5c, 0x68, 0x55, 0xcc, 0x8c, 0x16, 0x61, 0x46, 0x62, + 0xf6, 0x45, 0x28, 0x29, 0x04, 0x34, 0x05, 0xc5, 0x1d, 0xc2, 0x2f, 0x2a, 0x25, 0x4c, 0x7f, 0xa2, + 0x19, 0x18, 0xdc, 0x73, 0xbc, 0xb6, 0xd8, 0xec, 0x98, 0xff, 0xf9, 0x64, 0xe1, 0x25, 0xcb, 0xfe, + 0x26, 0xdb, 0x63, 0xa2, 0x91, 0x15, 0x7f, 0x4f, 0x30, 0x93, 0xf7, 0x60, 0xc6, 0xcb, 0xe0, 0x61, + 0x62, 0x20, 0xfa, 0xe7, 0x79, 0x0f, 0x8b, 0xbe, 0xce, 0x64, 0x41, 0x71, 0x66, 0x1b, 0xf4, 0x18, + 0x08, 0x5a, 0x74, 0x45, 0x39, 0x1e, 0xeb, 0xaf, 0x10, 0x40, 0xaf, 0x8b, 0x32, 0xac, 0xa0, 0x94, + 0x41, 0xcc, 0xa8, 0xce, 0x5f, 0x21, 0xfb, 0x35, 0xe2, 0x91, 0x7a, 0x1c, 0x84, 0x1f, 0x68, 0xf7, + 0xcf, 0xf2, 0xd1, 0xe7, 0xfc, 0x65, 0x54, 0x10, 0x28, 0x5e, 0x21, 0xfb, 0x7c, 0x2a, 0xf4, 0xaf, + 0x2b, 0x76, 0xfd, 0xba, 0xdf, 0xb0, 0x60, 0x5c, 0x7d, 0xdd, 0x09, 0x6c, 0xa4, 0x25, 0x73, 0x23, + 0x9d, 0xed, 0xba, 0x1e, 0x73, 0xb6, 0xd0, 0x0f, 0x19, 0x0b, 0x10, 0x38, 0xd5, 0x30, 0xa0, 0x43, + 0x43, 0x79, 0xf6, 0x07, 0x39, 0x21, 0xfd, 0x7c, 0xd7, 0x15, 0xb2, 0xbf, 0x11, 0x50, 0xf1, 0x21, + 0xfb, 0xbb, 0x8c, 0x59, 0x1b, 0xe8, 0x3a, 0x6b, 0xbf, 0x59, 0x80, 0xd3, 0x6a, 0x04, 0x8c, 0x03, + 0xfa, 0x47, 0x7d, 0x0c, 0x9e, 0x85, 0xd1, 0x06, 0xd9, 0x72, 0xda, 0x5e, 0xac, 0xee, 0xa2, 0x83, + 0x5c, 0x1f, 0x51, 0x49, 0x8a, 0xb1, 0x8e, 0x73, 0x84, 0x61, 0xfb, 0xb7, 0xc0, 0x78, 0x6f, 0xec, + 0xd0, 0x15, 0x4c, 0xa5, 0x37, 0x4d, 0xa3, 0x30, 0xa6, 0x6b, 0x14, 0x84, 0xf6, 0xe0, 0x51, 0x18, + 0x74, 0x77, 0xe9, 0x59, 0x5c, 0x30, 0x8f, 0xd8, 0x35, 0x5a, 0x88, 0x39, 0x0c, 0x7d, 0x0c, 0x86, + 0xeb, 0xc1, 0xee, 0xae, 0xe3, 0x37, 0xca, 0x45, 0x26, 0x4f, 0x8e, 0xd2, 0xe3, 0x7a, 0x99, 0x17, + 0x61, 0x09, 0x43, 0x0f, 0xc3, 0x80, 0x13, 0x36, 0xa3, 0xf2, 0x00, 0xc3, 0x19, 0xa1, 0x2d, 0x2d, + 0x86, 0xcd, 0x08, 0xb3, 0x52, 0x2a, 0x27, 0xde, 0x0e, 0xc2, 0x1d, 0xd7, 0x6f, 0x56, 0xdc, 0x90, + 0x09, 0x7d, 0x9a, 0x9c, 0x78, 0x4b, 0x41, 0xb0, 0x86, 0x85, 0x56, 0x61, 0xb0, 0x15, 0x84, 0x71, + 0x54, 0x1e, 0x62, 0xc3, 0xfd, 0x48, 0xce, 0x56, 0xe2, 0x5f, 0x5b, 0x0d, 0xc2, 0x38, 0xf9, 0x00, + 0xfa, 0x2f, 0xc2, 0xbc, 0x3a, 0xfa, 0x29, 0x28, 0x12, 0x7f, 0xaf, 0x3c, 0xcc, 0xa8, 0xcc, 0x66, + 0x51, 0x59, 0xf1, 0xf7, 0x6e, 0x3a, 0x61, 0xc2, 0x67, 0x56, 0xfc, 0x3d, 0x4c, 0xeb, 0xa0, 0x37, + 0xa0, 0x24, 0xb5, 0x91, 0x51, 0x79, 0x24, 0x7f, 0x89, 0x61, 0x81, 0x84, 0xc9, 0xbb, 0x6d, 0x37, + 0x24, 0xbb, 0xc4, 0x8f, 0xa3, 0xe4, 0x3e, 0x29, 0xa1, 0x11, 0x4e, 0xa8, 0xa1, 0x37, 0x60, 0x8c, + 0xcb, 0x91, 0xeb, 0x41, 0xdb, 0x8f, 0xa3, 0x72, 0x89, 0x75, 0x2f, 0x53, 0x75, 0x75, 0x33, 0xc1, + 0x5b, 0x9a, 0x11, 0x44, 0xc7, 0xb4, 0xc2, 0x08, 0x1b, 0xa4, 0x10, 0x86, 0x71, 0xcf, 0xdd, 0x23, + 0x3e, 0x89, 0xa2, 0x6a, 0x18, 0x6c, 0x92, 0x32, 0xb0, 0x9e, 0x9f, 0xc9, 0xd6, 0xe8, 0x04, 0x9b, + 0x64, 0x69, 0xfa, 0xee, 0xc1, 0xdc, 0xf8, 0x55, 0xbd, 0x0e, 0x36, 0x49, 0xa0, 0x1b, 0x30, 0x41, + 0x05, 0x54, 0x37, 0x21, 0x3a, 0xda, 0x8b, 0x28, 0x93, 0x4e, 0xb1, 0x51, 0x09, 0xa7, 0x88, 0xa0, + 0xd7, 0xa0, 0xe4, 0xb9, 0x5b, 0xa4, 0xbe, 0x5f, 0xf7, 0x48, 0x79, 0x8c, 0x51, 0xcc, 0xdc, 0x56, + 0x57, 0x25, 0x12, 0xbf, 0x00, 0xa8, 0xbf, 0x38, 0xa9, 0x8e, 0x6e, 0xc2, 0x03, 0x31, 0x09, 0x77, + 0x5d, 0xdf, 0xa1, 0xdb, 0x41, 0xc8, 0x93, 0x4c, 0x2f, 0x36, 0xce, 0xd6, 0xdb, 0x39, 0x31, 0x74, + 0x0f, 0x6c, 0x64, 0x62, 0xe1, 0x9c, 0xda, 0xe8, 0x3a, 0x4c, 0xb2, 0x9d, 0x50, 0x6d, 0x7b, 0x5e, + 0x35, 0xf0, 0xdc, 0xfa, 0x7e, 0x79, 0x82, 0x11, 0xfc, 0x98, 0x54, 0x7c, 0xad, 0x99, 0x60, 0x7a, + 0xe3, 0x4d, 0xfe, 0xe1, 0x74, 0x6d, 0xb4, 0xc9, 0x14, 0x21, 0xed, 0xd0, 0x8d, 0xf7, 0xe9, 0xfa, + 0x25, 0x77, 0xe2, 0xf2, 0x64, 0xd7, 0xfb, 0xa3, 0x8e, 0xaa, 0xb4, 0x25, 0x7a, 0x21, 0x4e, 0x13, + 0xa4, 0x5b, 0x3b, 0x8a, 0x1b, 0xae, 0x5f, 0x9e, 0x62, 0x1c, 0x43, 0xed, 0x8c, 0x1a, 0x2d, 0xc4, + 0x1c, 0xc6, 0x94, 0x20, 0xf4, 0xc7, 0x75, 0xca, 0x41, 0xa7, 0x19, 0x62, 0xa2, 0x04, 0x91, 0x00, + 0x9c, 0xe0, 0xd0, 0x63, 0x39, 0x8e, 0xf7, 0xcb, 0x88, 0xa1, 0xaa, 0xed, 0xb2, 0xb1, 0xf1, 0x06, + 0xa6, 0xe5, 0xe8, 0x2a, 0x0c, 0x13, 0x7f, 0x6f, 0x35, 0x0c, 0x76, 0xcb, 0xa7, 0xf2, 0xf7, 0xec, + 0x0a, 0x47, 0xe1, 0x0c, 0x3d, 0xb9, 0x00, 0x88, 0x62, 0x2c, 0x49, 0xa0, 0x3b, 0x50, 0xce, 0x98, + 0x11, 0x3e, 0x01, 0x33, 0x6c, 0x02, 0x5e, 0x11, 0x75, 0xcb, 0x1b, 0x39, 0x78, 0x87, 0x5d, 0x60, + 0x38, 0x97, 0xba, 0xbd, 0x09, 0x13, 0x8a, 0xb1, 0xb0, 0xb9, 0x45, 0x73, 0x30, 0x48, 0x39, 0xa6, + 0xbc, 0x52, 0x97, 0xe8, 0x50, 0x32, 0xd5, 0x14, 0xe6, 0xe5, 0x6c, 0x28, 0xdd, 0xf7, 0xc8, 0xd2, + 0x7e, 0x4c, 0xf8, 0xb5, 0xa8, 0xa8, 0x0d, 0xa5, 0x04, 0xe0, 0x04, 0xc7, 0xfe, 0x7f, 0x5c, 0x30, + 0x49, 0xb8, 0x57, 0x1f, 0xfc, 0xfa, 0x69, 0x18, 0xd9, 0x0e, 0xa2, 0x98, 0x62, 0xb3, 0x36, 0x06, + 0x13, 0x51, 0xe4, 0xb2, 0x28, 0xc7, 0x0a, 0x03, 0xbd, 0x0c, 0xe3, 0x75, 0xbd, 0x01, 0x71, 0xd8, + 0x9c, 0x16, 0x55, 0xcc, 0xd6, 0xb1, 0x89, 0x8b, 0x5e, 0x82, 0x11, 0xf6, 0x40, 0x51, 0x0f, 0x3c, + 0x71, 0x01, 0x93, 0x27, 0xe6, 0x48, 0x55, 0x94, 0x1f, 0x6a, 0xbf, 0xb1, 0xc2, 0xa6, 0x97, 0x62, + 0xda, 0x85, 0xb5, 0xaa, 0x60, 0xf3, 0xea, 0x52, 0x7c, 0x99, 0x95, 0x62, 0x01, 0xb5, 0xff, 0x5a, + 0x41, 0x1b, 0x65, 0x7a, 0xa5, 0x20, 0xa8, 0x0a, 0xc3, 0xb7, 0x1d, 0x37, 0x76, 0xfd, 0xa6, 0x38, + 0xcf, 0x9f, 0xe8, 0xca, 0xf3, 0x59, 0xa5, 0x5b, 0xbc, 0x02, 0x3f, 0x95, 0xc4, 0x1f, 0x2c, 0xc9, + 0x50, 0x8a, 0x61, 0xdb, 0xf7, 0x29, 0xc5, 0x42, 0xbf, 0x14, 0x31, 0xaf, 0xc0, 0x29, 0x8a, 0x3f, + 0x58, 0x92, 0x41, 0x6f, 0x01, 0xc8, 0x75, 0x43, 0x1a, 0xe2, 0x61, 0xe0, 0xe9, 0xde, 0x44, 0x37, + 0x54, 0x9d, 0xa5, 0x09, 0x7a, 0xe6, 0x25, 0xff, 0xb1, 0x46, 0xcf, 0x8e, 0x99, 0xdc, 0xd3, 0xd9, + 0x19, 0xf4, 0xb3, 0x74, 0xab, 0x3a, 0x61, 0x4c, 0x1a, 0x8b, 0xb1, 0x18, 0x9c, 0x27, 0xfb, 0x13, + 0x5b, 0x37, 0xdc, 0x5d, 0xa2, 0x6f, 0x6b, 0x41, 0x04, 0x27, 0xf4, 0xec, 0xdf, 0x2a, 0x42, 0x39, + 0xaf, 0xbb, 0x74, 0xd1, 0x91, 0x3b, 0x6e, 0xbc, 0x4c, 0xc5, 0x15, 0xcb, 0x5c, 0x74, 0x2b, 0xa2, + 0x1c, 0x2b, 0x0c, 0x3a, 0xfb, 0x91, 0xdb, 0x94, 0xb7, 0x8e, 0xc1, 0x64, 0xf6, 0x6b, 0xac, 0x14, + 0x0b, 0x28, 0xc5, 0x0b, 0x89, 0x13, 0x89, 0x97, 0x27, 0x6d, 0x95, 0x60, 0x56, 0x8a, 0x05, 0x54, + 0x57, 0x18, 0x0c, 0xf4, 0x50, 0x18, 0x18, 0x43, 0x34, 0x78, 0xbc, 0x43, 0x84, 0xde, 0x06, 0xd8, + 0x72, 0x7d, 0x37, 0xda, 0x66, 0xd4, 0x87, 0x8e, 0x4c, 0x5d, 0x09, 0x3b, 0xab, 0x8a, 0x0a, 0xd6, + 0x28, 0xa2, 0x17, 0x60, 0x54, 0x6d, 0xc0, 0xb5, 0x4a, 0x79, 0xd8, 0x7c, 0xd6, 0x48, 0xb8, 0x51, + 0x05, 0xeb, 0x78, 0xf6, 0x3b, 0xe9, 0xf5, 0x22, 0x76, 0x80, 0x36, 0xbe, 0x56, 0xbf, 0xe3, 0x5b, + 0xe8, 0x3e, 0xbe, 0xf6, 0xef, 0x15, 0x61, 0xd2, 0x68, 0xac, 0x1d, 0xf5, 0xc1, 0xb3, 0x2e, 0xd1, + 0x83, 0xc8, 0x89, 0x89, 0xd8, 0x7f, 0x76, 0xef, 0xad, 0xa2, 0x1f, 0x56, 0x74, 0x07, 0xf0, 0xfa, + 0xe8, 0x6d, 0x28, 0x79, 0x4e, 0xc4, 0x94, 0x0f, 0x44, 0xec, 0xbb, 0x7e, 0x88, 0x25, 0x82, 0xbe, + 0x13, 0xc5, 0xda, 0x59, 0xc0, 0x69, 0x27, 0x24, 0xe9, 0x89, 0x49, 0x85, 0x13, 0xf9, 0xb4, 0xa9, + 0x3a, 0x41, 0x25, 0x98, 0x7d, 0xcc, 0x61, 0xe8, 0x25, 0x18, 0x0b, 0x09, 0x5b, 0x15, 0xcb, 0x54, + 0xd6, 0x62, 0xcb, 0x6c, 0x30, 0x11, 0xca, 0xb0, 0x06, 0xc3, 0x06, 0x66, 0x22, 0x6b, 0x0f, 0x75, + 0x91, 0xb5, 0x9f, 0x80, 0x61, 0xf6, 0x43, 0xad, 0x00, 0x35, 0x1b, 0x6b, 0xbc, 0x18, 0x4b, 0x78, + 0x7a, 0xc1, 0x8c, 0xf4, 0xb9, 0x60, 0x9e, 0x84, 0x89, 0x8a, 0x43, 0x76, 0x03, 0x7f, 0xc5, 0x6f, + 0xb4, 0x02, 0xd7, 0x8f, 0x51, 0x19, 0x06, 0xd8, 0xe9, 0xc0, 0xf7, 0xf6, 0x00, 0xa5, 0x80, 0x07, + 0xa8, 0xe4, 0x6c, 0xff, 0x61, 0x01, 0xc6, 0x2b, 0xc4, 0x23, 0x31, 0xe1, 0x77, 0x8d, 0x08, 0xad, + 0x02, 0x6a, 0x86, 0x4e, 0x9d, 0x54, 0x49, 0xe8, 0x06, 0x0d, 0x5d, 0x19, 0x59, 0x64, 0x0a, 0x7f, + 0x74, 0xa9, 0x03, 0x8a, 0x33, 0x6a, 0xa0, 0x37, 0x61, 0xbc, 0x15, 0x12, 0x43, 0x87, 0x66, 0xe5, + 0x89, 0x0b, 0x55, 0x1d, 0x91, 0x4b, 0xaa, 0x46, 0x11, 0x36, 0x49, 0xa1, 0x9f, 0x81, 0xa9, 0x20, + 0x6c, 0x6d, 0x3b, 0x7e, 0x85, 0xb4, 0x88, 0xdf, 0xa0, 0xa2, 0xb8, 0xd0, 0x11, 0xcc, 0xdc, 0x3d, + 0x98, 0x9b, 0xba, 0x9e, 0x82, 0xe1, 0x0e, 0x6c, 0xf4, 0x26, 0x4c, 0xb7, 0xc2, 0xa0, 0xe5, 0x34, + 0xd9, 0x42, 0x11, 0x12, 0x07, 0xe7, 0x3e, 0x4f, 0xdf, 0x3d, 0x98, 0x9b, 0xae, 0xa6, 0x81, 0x87, + 0x07, 0x73, 0xa7, 0xd8, 0x40, 0xd1, 0x92, 0x04, 0x88, 0x3b, 0xc9, 0xd8, 0x4d, 0x38, 0x5d, 0x09, + 0x6e, 0xfb, 0xb7, 0x9d, 0xb0, 0xb1, 0x58, 0x5d, 0xd3, 0x2e, 0xf7, 0xd7, 0xe4, 0xe5, 0x92, 0x3f, + 0xbf, 0x66, 0x9e, 0x53, 0x5a, 0x4d, 0x2e, 0xfe, 0xaf, 0xba, 0x1e, 0xc9, 0x51, 0x22, 0xfc, 0xcd, + 0x82, 0xd1, 0x52, 0x82, 0xaf, 0xf4, 0xfe, 0x56, 0xae, 0xde, 0xff, 0x75, 0x18, 0xd9, 0x72, 0x89, + 0xd7, 0xc0, 0x64, 0x4b, 0xcc, 0xcc, 0xe3, 0xf9, 0x2f, 0x4a, 0xab, 0x14, 0x53, 0x2a, 0x8d, 0xf8, + 0xd5, 0x74, 0x55, 0x54, 0xc6, 0x8a, 0x0c, 0xda, 0x81, 0x29, 0x79, 0xf7, 0x91, 0x50, 0xb1, 0x89, + 0x9f, 0xe8, 0x76, 0xa1, 0x32, 0x89, 0xb3, 0x09, 0xc4, 0x29, 0x32, 0xb8, 0x83, 0x30, 0xbd, 0x8b, + 0xee, 0xd2, 0xe3, 0x6a, 0x80, 0x2d, 0x69, 0x76, 0x17, 0x65, 0xd7, 0x6a, 0x56, 0x6a, 0x7f, 0xd5, + 0x82, 0x07, 0x3b, 0x46, 0x46, 0xa8, 0x17, 0x8e, 0x79, 0x16, 0xd2, 0xd7, 0xfd, 0x42, 0xef, 0xeb, + 0xbe, 0xfd, 0x0f, 0x2d, 0x98, 0x59, 0xd9, 0x6d, 0xc5, 0xfb, 0x15, 0xd7, 0x7c, 0x9b, 0x78, 0x11, + 0x86, 0x76, 0x49, 0xc3, 0x6d, 0xef, 0x8a, 0x99, 0x9b, 0x93, 0x2c, 0x7d, 0x9d, 0x95, 0x1e, 0x1e, + 0xcc, 0x8d, 0xd7, 0xe2, 0x20, 0x74, 0x9a, 0x84, 0x17, 0x60, 0x81, 0xce, 0x0e, 0x46, 0xf7, 0x3d, + 0x72, 0xd5, 0xdd, 0x75, 0xe5, 0x0b, 0x61, 0x57, 0x95, 0xd7, 0xbc, 0x1c, 0xd0, 0xf9, 0xd7, 0xdb, + 0x8e, 0x1f, 0xbb, 0xf1, 0xbe, 0x78, 0x76, 0x91, 0x44, 0x70, 0x42, 0xcf, 0xfe, 0xae, 0x05, 0x93, + 0x92, 0x97, 0x2c, 0x36, 0x1a, 0x21, 0x89, 0x22, 0x34, 0x0b, 0x05, 0xb7, 0x25, 0x7a, 0x09, 0xa2, + 0x97, 0x85, 0xb5, 0x2a, 0x2e, 0xb8, 0x2d, 0x54, 0x85, 0x12, 0x7f, 0x68, 0x4c, 0x16, 0x57, 0x5f, + 0xcf, 0x95, 0xac, 0x07, 0x1b, 0xb2, 0x26, 0x4e, 0x88, 0x48, 0xa9, 0x98, 0x9d, 0x43, 0x45, 0xf3, + 0xcd, 0xe6, 0xb2, 0x28, 0xc7, 0x0a, 0x03, 0x5d, 0x80, 0x11, 0x3f, 0x68, 0xf0, 0x77, 0x5f, 0xbe, + 0xa7, 0xd9, 0x92, 0xbd, 0x26, 0xca, 0xb0, 0x82, 0xda, 0xbf, 0x68, 0xc1, 0x98, 0xfc, 0xb2, 0x3e, + 0x05, 0x74, 0xba, 0xb5, 0x12, 0xe1, 0x3c, 0xd9, 0x5a, 0x54, 0xc0, 0x66, 0x10, 0x43, 0xae, 0x2e, + 0x1e, 0x45, 0xae, 0xb6, 0xbf, 0x52, 0x80, 0x09, 0xd9, 0x9d, 0x5a, 0x7b, 0x33, 0x22, 0x31, 0xda, + 0x80, 0x92, 0xc3, 0x87, 0x9c, 0xc8, 0x15, 0xfb, 0x68, 0xf6, 0x8d, 0xcb, 0x98, 0x9f, 0x44, 0xd4, + 0x59, 0x94, 0xb5, 0x71, 0x42, 0x08, 0x79, 0x30, 0xed, 0x07, 0x31, 0x3b, 0xf6, 0x14, 0xbc, 0xdb, + 0xbb, 0x40, 0x9a, 0xfa, 0x19, 0x41, 0x7d, 0xfa, 0x5a, 0x9a, 0x0a, 0xee, 0x24, 0x8c, 0x56, 0xa4, + 0x96, 0xa7, 0xc8, 0x5a, 0x38, 0xdf, 0xad, 0x85, 0x7c, 0x25, 0x8f, 0xfd, 0x3b, 0x16, 0x94, 0x24, + 0xda, 0x49, 0x3c, 0x01, 0xad, 0xc3, 0x70, 0xc4, 0x26, 0x41, 0x0e, 0x8d, 0xdd, 0xad, 0xe3, 0x7c, + 0xbe, 0x92, 0xd3, 0x9c, 0xff, 0x8f, 0xb0, 0xa4, 0xc1, 0xd4, 0xd4, 0xaa, 0xfb, 0x1f, 0x12, 0x35, + 0xb5, 0xea, 0x4f, 0xce, 0x09, 0xf3, 0x5f, 0x59, 0x9f, 0xb5, 0xbb, 0x3c, 0x15, 0x3a, 0x5b, 0x21, + 0xd9, 0x72, 0xef, 0xa4, 0x85, 0xce, 0x2a, 0x2b, 0xc5, 0x02, 0x8a, 0xde, 0x82, 0xb1, 0xba, 0xd4, + 0xee, 0x26, 0x6c, 0xe0, 0xb1, 0xae, 0xba, 0x72, 0xf5, 0xac, 0xc2, 0x6d, 0xc2, 0x96, 0xb5, 0xfa, + 0xd8, 0xa0, 0x66, 0x3e, 0xcc, 0x17, 0x7b, 0x3d, 0xcc, 0x27, 0x74, 0x73, 0x9f, 0x96, 0xed, 0x5f, + 0xb1, 0x60, 0x88, 0xeb, 0x08, 0xfb, 0x53, 0xaa, 0x6a, 0xcf, 0x44, 0xc9, 0xd8, 0xdd, 0xa4, 0x85, + 0xe2, 0xd5, 0x08, 0xad, 0x43, 0x89, 0xfd, 0x60, 0xba, 0x92, 0x62, 0xbe, 0x31, 0x1c, 0x6f, 0x55, + 0xef, 0xe0, 0x4d, 0x59, 0x0d, 0x27, 0x14, 0xec, 0x2f, 0x17, 0x29, 0xab, 0x4a, 0x50, 0x8d, 0x13, + 0xdc, 0xba, 0x7f, 0x27, 0x78, 0xe1, 0x7e, 0x9d, 0xe0, 0x4d, 0x98, 0xac, 0x6b, 0x6f, 0x52, 0xc9, + 0x4c, 0x5e, 0xe8, 0xba, 0x48, 0xb4, 0xe7, 0x2b, 0xae, 0x27, 0x5b, 0x36, 0x89, 0xe0, 0x34, 0x55, + 0xf4, 0xb3, 0x30, 0xc6, 0xe7, 0x59, 0xb4, 0x32, 0xc0, 0x5a, 0xf9, 0x58, 0xfe, 0x7a, 0xd1, 0x9b, + 0x60, 0x2b, 0xb1, 0xa6, 0x55, 0xc7, 0x06, 0x31, 0xfb, 0x0b, 0x83, 0x30, 0xb8, 0xb2, 0x47, 0xfc, + 0xf8, 0x04, 0x18, 0x52, 0x1d, 0x26, 0x5c, 0x7f, 0x2f, 0xf0, 0xf6, 0x48, 0x83, 0xc3, 0x8f, 0x72, + 0xb8, 0x3e, 0x20, 0x48, 0x4f, 0xac, 0x19, 0x24, 0x70, 0x8a, 0xe4, 0xfd, 0xb8, 0xb5, 0x5f, 0x82, + 0x21, 0x3e, 0xf7, 0xe2, 0xca, 0x9e, 0xa9, 0x01, 0x67, 0x83, 0x28, 0x76, 0x41, 0xa2, 0x51, 0xe0, + 0x2a, 0x77, 0x51, 0x1d, 0xbd, 0x03, 0x13, 0x5b, 0x6e, 0x18, 0xc5, 0xf4, 0xba, 0x1d, 0xc5, 0xce, + 0x6e, 0xeb, 0x1e, 0x6e, 0xe9, 0x6a, 0x1c, 0x56, 0x0d, 0x4a, 0x38, 0x45, 0x19, 0x35, 0x61, 0x9c, + 0x5e, 0x1c, 0x93, 0xa6, 0x86, 0x8f, 0xdc, 0x94, 0x52, 0xc3, 0x5d, 0xd5, 0x09, 0x61, 0x93, 0x2e, + 0x65, 0x26, 0x75, 0x76, 0xd1, 0x1c, 0x61, 0x12, 0x85, 0x62, 0x26, 0xfc, 0x86, 0xc9, 0x61, 0x94, + 0x27, 0x31, 0x5b, 0x8e, 0x92, 0xc9, 0x93, 0x12, 0x8b, 0x0d, 0xfb, 0x6b, 0xf4, 0x74, 0xa4, 0x63, + 0x78, 0x02, 0x47, 0xcb, 0xab, 0xe6, 0xd1, 0x72, 0x26, 0x77, 0x3e, 0x73, 0x8e, 0x95, 0xcf, 0xc0, + 0xa8, 0x36, 0xdd, 0x68, 0x01, 0x4a, 0x75, 0x69, 0x78, 0x20, 0xb8, 0xae, 0x12, 0x5f, 0x94, 0x45, + 0x02, 0x4e, 0x70, 0xe8, 0x68, 0x50, 0x61, 0x2f, 0x6d, 0xd6, 0x44, 0x45, 0x41, 0xcc, 0x20, 0xf6, + 0x73, 0x00, 0x2b, 0x77, 0x48, 0x7d, 0x91, 0x5f, 0xbc, 0xb4, 0xf7, 0x2d, 0x2b, 0xff, 0x7d, 0xcb, + 0xfe, 0x0f, 0x16, 0x4c, 0xac, 0x2e, 0x1b, 0x02, 0xf9, 0x3c, 0x00, 0x97, 0x42, 0x6f, 0xdd, 0xba, + 0x26, 0x35, 0xc3, 0x5c, 0xb9, 0xa7, 0x4a, 0xb1, 0x86, 0x81, 0xce, 0x40, 0xd1, 0x6b, 0xfb, 0x42, + 0x38, 0x1c, 0xbe, 0x7b, 0x30, 0x57, 0xbc, 0xda, 0xf6, 0x31, 0x2d, 0xd3, 0x2c, 0x89, 0x8a, 0x7d, + 0x5b, 0x12, 0xf5, 0x34, 0xc1, 0x46, 0x73, 0x30, 0x78, 0xfb, 0xb6, 0xdb, 0x88, 0xca, 0x83, 0x89, + 0xd6, 0xfa, 0xd6, 0xad, 0xb5, 0x4a, 0x84, 0x79, 0xb9, 0xfd, 0x17, 0x8a, 0x30, 0xb5, 0xea, 0x91, + 0x3b, 0xc6, 0x67, 0x3d, 0x06, 0x43, 0x8d, 0xd0, 0xdd, 0x23, 0x61, 0xfa, 0x14, 0xaf, 0xb0, 0x52, + 0x2c, 0xa0, 0x7d, 0x5b, 0x3f, 0xdd, 0xe8, 0x3c, 0x8f, 0x8f, 0xdb, 0xde, 0xab, 0xf7, 0x50, 0xbc, + 0x05, 0xc3, 0xfc, 0x99, 0x94, 0x0f, 0xc6, 0xe8, 0xc5, 0x67, 0xb3, 0xba, 0x90, 0x1e, 0x8b, 0x79, + 0xa1, 0xf8, 0xe0, 0x36, 0x23, 0x8a, 0x89, 0x89, 0x52, 0x2c, 0x49, 0xce, 0x7e, 0x12, 0xc6, 0x74, + 0xcc, 0x23, 0x19, 0x8f, 0xfc, 0x45, 0x0b, 0x4e, 0xad, 0x7a, 0x41, 0x7d, 0x27, 0x65, 0x8a, 0xf6, + 0x02, 0x8c, 0xd2, 0xfd, 0x14, 0x19, 0x66, 0xad, 0x86, 0xa1, 0xb3, 0x00, 0x61, 0x1d, 0x4f, 0xab, + 0x76, 0xe3, 0xc6, 0x5a, 0x25, 0xcb, 0x3e, 0x5a, 0x80, 0xb0, 0x8e, 0x67, 0x7f, 0xc7, 0x82, 0xb3, + 0x97, 0x96, 0x57, 0x12, 0x6b, 0xcc, 0x0e, 0x13, 0x6d, 0x2a, 0xdc, 0x35, 0xb4, 0xae, 0x24, 0xc2, + 0x5d, 0x85, 0xf5, 0x42, 0x40, 0x3f, 0x2c, 0xee, 0x07, 0xbf, 0x66, 0xc1, 0xa9, 0x4b, 0x6e, 0x8c, + 0x49, 0x2b, 0x48, 0x1b, 0x0b, 0x87, 0xa4, 0x15, 0x44, 0x6e, 0x1c, 0x84, 0xfb, 0x69, 0x63, 0x61, + 0xac, 0x20, 0x58, 0xc3, 0xe2, 0x2d, 0xef, 0xb9, 0x11, 0xed, 0x69, 0xc1, 0xbc, 0x61, 0x62, 0x51, + 0x8e, 0x15, 0x06, 0xfd, 0xb0, 0x86, 0x1b, 0x32, 0x09, 0x61, 0x5f, 0x6c, 0x67, 0xf5, 0x61, 0x15, + 0x09, 0xc0, 0x09, 0x8e, 0xfd, 0x55, 0x0b, 0x4e, 0x5f, 0xf2, 0xda, 0x51, 0x4c, 0xc2, 0xad, 0xc8, + 0xe8, 0xec, 0x73, 0x50, 0x22, 0x52, 0x0a, 0x17, 0x7d, 0x55, 0xe7, 0x86, 0x12, 0xcf, 0xb9, 0xa5, + 0xb2, 0xc2, 0xeb, 0xc3, 0xae, 0xf3, 0x68, 0xf6, 0x88, 0x5f, 0x2f, 0xc0, 0xf8, 0xe5, 0x8d, 0x8d, + 0xea, 0x25, 0x12, 0x0b, 0x96, 0xd9, 0x5b, 0x83, 0x84, 0xb5, 0x8b, 0x70, 0x37, 0x59, 0xa7, 0x1d, + 0xbb, 0xde, 0x3c, 0x77, 0x8d, 0x99, 0x5f, 0xf3, 0xe3, 0xeb, 0x61, 0x2d, 0x0e, 0x5d, 0xbf, 0x99, + 0x79, 0x75, 0x96, 0x8c, 0xbd, 0x98, 0xc7, 0xd8, 0xd1, 0x73, 0x30, 0xc4, 0x7c, 0x73, 0xa4, 0xd4, + 0xf1, 0x90, 0x12, 0x15, 0x58, 0xe9, 0xe1, 0xc1, 0x5c, 0xe9, 0x06, 0x5e, 0xe3, 0x7f, 0xb0, 0x40, + 0x45, 0x37, 0x60, 0x74, 0x3b, 0x8e, 0x5b, 0x97, 0x89, 0xd3, 0x20, 0xa1, 0xe4, 0x0e, 0xe7, 0xb2, + 0xb8, 0x03, 0x1d, 0x04, 0x8e, 0x96, 0x6c, 0xa8, 0xa4, 0x2c, 0xc2, 0x3a, 0x1d, 0xbb, 0x06, 0x90, + 0xc0, 0x8e, 0xe9, 0xda, 0x60, 0xff, 0xc0, 0x82, 0xe1, 0xcb, 0x8e, 0xdf, 0xf0, 0x48, 0x88, 0x5e, + 0x81, 0x01, 0x72, 0x87, 0xd4, 0xc5, 0x09, 0x9e, 0xd9, 0xe1, 0xe4, 0x94, 0xe3, 0x4a, 0x30, 0xfa, + 0x1f, 0xb3, 0x5a, 0xe8, 0x32, 0x0c, 0xd3, 0xde, 0x5e, 0x52, 0x36, 0xe3, 0x8f, 0xe4, 0x7d, 0xb1, + 0x9a, 0x76, 0x7e, 0x30, 0x8a, 0x22, 0x2c, 0xab, 0x33, 0x85, 0x4e, 0xbd, 0x55, 0xa3, 0x0c, 0x2c, + 0xee, 0x76, 0xdd, 0xda, 0x58, 0xae, 0x72, 0x24, 0x41, 0x8d, 0x2b, 0x74, 0x64, 0x21, 0x4e, 0x88, + 0xd8, 0x1b, 0x50, 0xa2, 0x93, 0xba, 0xe8, 0xb9, 0x4e, 0x77, 0x5d, 0xd2, 0x53, 0x50, 0x92, 0x7a, + 0x9d, 0x48, 0x98, 0x9d, 0x33, 0xaa, 0x52, 0xed, 0x13, 0xe1, 0x04, 0x6e, 0x6f, 0xc1, 0x0c, 0x7b, + 0x24, 0x75, 0xe2, 0x6d, 0x63, 0x8f, 0xf5, 0x5e, 0xcc, 0x4f, 0x0b, 0xf9, 0x8a, 0xcf, 0x4c, 0x59, + 0xb3, 0x93, 0x1d, 0x93, 0x14, 0x35, 0x59, 0xeb, 0x3f, 0x0f, 0xc0, 0xf4, 0x5a, 0x6d, 0xb9, 0x66, + 0x2a, 0x16, 0x5f, 0x82, 0x31, 0x2e, 0x09, 0xd0, 0x05, 0xed, 0x78, 0xa2, 0x35, 0xf5, 0x70, 0xb0, + 0xa1, 0xc1, 0xb0, 0x81, 0x89, 0xce, 0x42, 0xd1, 0x7d, 0xd7, 0x4f, 0x9b, 0xc2, 0xad, 0xbd, 0x7e, + 0x0d, 0xd3, 0x72, 0x0a, 0xa6, 0x42, 0x05, 0x67, 0xa0, 0x0a, 0xac, 0x04, 0x8b, 0x57, 0x61, 0xc2, + 0x8d, 0xea, 0x91, 0xbb, 0xe6, 0x53, 0xee, 0x92, 0xf8, 0x5c, 0x24, 0x12, 0x3f, 0xed, 0xaa, 0x82, + 0xe2, 0x14, 0xb6, 0xc6, 0xcd, 0x07, 0xfb, 0x16, 0x4c, 0x7a, 0x5a, 0x5f, 0x53, 0x99, 0xab, 0xc5, + 0xbe, 0x2e, 0x62, 0x66, 0x39, 0x42, 0xe6, 0xe2, 0x1f, 0x1c, 0x61, 0x09, 0x43, 0x97, 0x60, 0xba, + 0xbe, 0xed, 0xb4, 0x16, 0xdb, 0xf1, 0x76, 0xc5, 0x8d, 0xea, 0xc1, 0x1e, 0x09, 0xf7, 0x99, 0x24, + 0x3c, 0x92, 0x28, 0x99, 0x14, 0x60, 0xf9, 0xf2, 0x62, 0x95, 0x62, 0xe2, 0xce, 0x3a, 0xa6, 0x08, + 0x02, 0xc7, 0x26, 0x82, 0x2c, 0xc2, 0xa4, 0x6c, 0xab, 0x46, 0x22, 0x76, 0x3c, 0x8c, 0xb2, 0xde, + 0x29, 0x97, 0x28, 0x51, 0xac, 0xfa, 0x96, 0xc6, 0x47, 0x2f, 0xc2, 0xb8, 0xeb, 0xbb, 0xb1, 0xeb, + 0xc4, 0x41, 0xc8, 0x0e, 0xd7, 0x31, 0x7e, 0x60, 0x50, 0x0e, 0xbf, 0xa6, 0x03, 0xb0, 0x89, 0x67, + 0xbf, 0x03, 0x25, 0x65, 0x6b, 0x26, 0xcd, 0x25, 0xad, 0x1c, 0x73, 0xc9, 0xde, 0x27, 0x82, 0xd4, + 0x98, 0x17, 0x33, 0x35, 0xe6, 0x7f, 0xcb, 0x82, 0xc4, 0xe4, 0x06, 0x5d, 0x86, 0x52, 0x2b, 0x60, + 0xaf, 0x66, 0xa1, 0x7c, 0x8a, 0x7e, 0x28, 0x93, 0x79, 0x70, 0x46, 0xc5, 0xc7, 0xaf, 0x2a, 0x6b, + 0xe0, 0xa4, 0x32, 0x5a, 0x82, 0xe1, 0x56, 0x48, 0x6a, 0x31, 0x73, 0x1a, 0xe9, 0x49, 0x87, 0xaf, + 0x11, 0x8e, 0x8f, 0x65, 0x45, 0xfb, 0x37, 0x2d, 0x00, 0xae, 0x94, 0x76, 0xfc, 0x26, 0x39, 0x81, + 0x8b, 0x76, 0x05, 0x06, 0xa2, 0x16, 0xa9, 0x77, 0x7b, 0xcf, 0x4c, 0xfa, 0x53, 0x6b, 0x91, 0x7a, + 0x32, 0xe0, 0xf4, 0x1f, 0x66, 0xb5, 0xed, 0x5f, 0x00, 0x98, 0x48, 0xd0, 0xe8, 0x05, 0x08, 0x3d, + 0x63, 0x98, 0xe4, 0x9f, 0x49, 0x99, 0xe4, 0x97, 0x18, 0xb6, 0x66, 0x85, 0xff, 0x0e, 0x14, 0x77, + 0x9d, 0x3b, 0xe2, 0x96, 0xf5, 0x54, 0xf7, 0x6e, 0x50, 0xfa, 0xf3, 0xeb, 0xce, 0x1d, 0x2e, 0xc7, + 0x3e, 0x25, 0x17, 0xc8, 0xba, 0x73, 0xe7, 0x90, 0xbf, 0x5a, 0x32, 0x26, 0x45, 0x2f, 0x73, 0x9f, + 0xfb, 0x4f, 0xc9, 0x7f, 0xb6, 0xec, 0x68, 0x23, 0xac, 0x2d, 0xd7, 0x17, 0x2a, 0xda, 0xbe, 0xda, + 0x72, 0xfd, 0x74, 0x5b, 0xae, 0xdf, 0x47, 0x5b, 0xae, 0x8f, 0xde, 0x83, 0x61, 0xf1, 0x1c, 0xc2, + 0x6c, 0x09, 0x47, 0x2f, 0x2e, 0xf4, 0xd1, 0x9e, 0x78, 0x4d, 0xe1, 0x6d, 0x2e, 0x48, 0x39, 0x5d, + 0x94, 0xf6, 0x6c, 0x57, 0x36, 0x88, 0xfe, 0x86, 0x05, 0x13, 0xe2, 0x37, 0x26, 0xef, 0xb6, 0x49, + 0x14, 0x0b, 0x79, 0xe0, 0x13, 0xfd, 0xf7, 0x41, 0x54, 0xe4, 0x5d, 0xf9, 0x84, 0x64, 0xb3, 0x26, + 0xb0, 0x67, 0x8f, 0x52, 0xbd, 0x40, 0xff, 0xd8, 0x82, 0x99, 0x5d, 0xe7, 0x0e, 0x6f, 0x91, 0x97, + 0x61, 0x27, 0x76, 0x03, 0x61, 0x1b, 0xf9, 0x4a, 0x7f, 0xd3, 0xdf, 0x51, 0x9d, 0x77, 0x52, 0x9a, + 0x51, 0xcd, 0x64, 0xa1, 0xf4, 0xec, 0x6a, 0x66, 0xbf, 0x66, 0xb7, 0x60, 0x44, 0xae, 0xb7, 0x8c, + 0xdb, 0x50, 0x45, 0x17, 0x76, 0x8e, 0xfc, 0x1a, 0xa5, 0xdd, 0x9e, 0x58, 0x3b, 0x62, 0xad, 0xdd, + 0xd7, 0x76, 0xde, 0x81, 0x31, 0x7d, 0x8d, 0xdd, 0xd7, 0xb6, 0xde, 0x85, 0x53, 0x19, 0x6b, 0xe9, + 0xbe, 0x36, 0x79, 0x1b, 0xce, 0xe4, 0xae, 0x8f, 0xfb, 0xd9, 0xb0, 0xfd, 0x75, 0x4b, 0xe7, 0x83, + 0x27, 0xa0, 0x9e, 0x5a, 0x36, 0xd5, 0x53, 0xe7, 0xba, 0xef, 0x9c, 0x1c, 0x1d, 0xd5, 0x5b, 0x7a, + 0xa7, 0x29, 0x57, 0x47, 0xaf, 0xc1, 0x90, 0x47, 0x4b, 0xe4, 0x3b, 0x9c, 0xdd, 0x7b, 0x47, 0x26, + 0xb2, 0x14, 0x2b, 0x8f, 0xb0, 0xa0, 0x60, 0xff, 0xb6, 0x05, 0x03, 0x27, 0x30, 0x12, 0xd8, 0x1c, + 0x89, 0x67, 0x72, 0x49, 0x8b, 0xb8, 0x07, 0xf3, 0xd8, 0xb9, 0xbd, 0x22, 0x63, 0x3b, 0xe4, 0x0c, + 0xcc, 0xff, 0x2d, 0xc0, 0x28, 0x6d, 0x4a, 0x1a, 0x8c, 0xbc, 0x0c, 0xe3, 0x9e, 0xb3, 0x49, 0x3c, + 0xa9, 0x32, 0x4f, 0x5f, 0x62, 0xaf, 0xea, 0x40, 0x6c, 0xe2, 0xd2, 0xca, 0x5b, 0xfa, 0xeb, 0x81, + 0x90, 0x5f, 0x54, 0x65, 0xe3, 0x69, 0x01, 0x9b, 0xb8, 0xf4, 0x3e, 0x75, 0xdb, 0x89, 0xeb, 0xdb, + 0xe2, 0x82, 0xab, 0xba, 0x7b, 0x8b, 0x16, 0x62, 0x0e, 0xa3, 0x02, 0x9c, 0x5c, 0x9d, 0x37, 0x49, + 0xc8, 0x04, 0x38, 0x2e, 0x1e, 0x2b, 0x01, 0x0e, 0x9b, 0x60, 0x9c, 0xc6, 0xcf, 0xf0, 0xcd, 0x1b, + 0x64, 0xe6, 0x30, 0x7d, 0xf8, 0xe6, 0xa1, 0x2a, 0xcc, 0xb8, 0x7e, 0xdd, 0x6b, 0x37, 0xc8, 0x0d, + 0x9f, 0x4b, 0x77, 0x9e, 0xfb, 0x1e, 0x69, 0x08, 0x01, 0x5a, 0x59, 0x2e, 0xad, 0x65, 0xe0, 0xe0, + 0xcc, 0x9a, 0xf6, 0x9f, 0x83, 0x53, 0x57, 0x03, 0xa7, 0xb1, 0xe4, 0x78, 0x8e, 0x5f, 0x27, 0xe1, + 0x9a, 0xdf, 0xec, 0xf9, 0x20, 0xaf, 0x3f, 0x9f, 0x17, 0x7a, 0x3d, 0x9f, 0xdb, 0xdb, 0x80, 0xf4, + 0x06, 0x84, 0x19, 0x18, 0x86, 0x61, 0x97, 0x37, 0x25, 0x96, 0xff, 0xe3, 0xd9, 0xd2, 0x75, 0x47, + 0xcf, 0x34, 0x03, 0x27, 0x5e, 0x80, 0x25, 0x21, 0xfb, 0x25, 0xc8, 0xf4, 0xcd, 0xe8, 0x7d, 0x95, + 0xb6, 0x5f, 0x80, 0x69, 0x56, 0xf3, 0x68, 0xd7, 0x3c, 0xfb, 0xaf, 0x58, 0x30, 0x79, 0x2d, 0xe5, + 0x4d, 0xfb, 0x18, 0x0c, 0xf1, 0x08, 0x27, 0x69, 0xa5, 0x57, 0x8d, 0x95, 0x62, 0x01, 0x3d, 0x76, + 0x9d, 0xcb, 0x0f, 0x2d, 0x28, 0x29, 0xd7, 0xf7, 0x13, 0x10, 0x6a, 0x97, 0x0d, 0xa1, 0x36, 0x53, + 0x17, 0xa0, 0xba, 0x93, 0x27, 0xd3, 0xa2, 0x2b, 0xca, 0x2f, 0xb4, 0x8b, 0x1a, 0x20, 0x21, 0xc3, + 0xbd, 0x08, 0x27, 0x4c, 0xe7, 0x51, 0xe9, 0x29, 0xca, 0x5e, 0xc4, 0x15, 0xee, 0x87, 0xe4, 0x45, + 0x5c, 0xf5, 0x27, 0x87, 0xfb, 0x55, 0xb5, 0x2e, 0xb3, 0x53, 0xe1, 0xa7, 0x99, 0xd5, 0x28, 0xdb, + 0x9b, 0xca, 0x1d, 0x7b, 0x4e, 0x58, 0x81, 0x8a, 0xd2, 0x43, 0xc6, 0xc8, 0xc4, 0x3f, 0x1e, 0xa6, + 0x20, 0xa9, 0x62, 0x5f, 0x86, 0xc9, 0xd4, 0x80, 0xa1, 0x17, 0x60, 0xb0, 0xb5, 0xed, 0x44, 0x24, + 0x65, 0x05, 0x34, 0x58, 0xa5, 0x85, 0x87, 0x07, 0x73, 0x13, 0xaa, 0x02, 0x2b, 0xc1, 0x1c, 0xdb, + 0xfe, 0x9f, 0x16, 0x0c, 0x5c, 0x0b, 0x1a, 0x27, 0xb1, 0x98, 0x5e, 0x35, 0x16, 0xd3, 0xc3, 0x79, + 0x41, 0x5e, 0x72, 0xd7, 0xd1, 0x6a, 0x6a, 0x1d, 0x9d, 0xcb, 0xa5, 0xd0, 0x7d, 0x09, 0xed, 0xc2, + 0x28, 0x0b, 0x1d, 0x23, 0xac, 0x92, 0x9e, 0x33, 0xee, 0x57, 0x73, 0xa9, 0xfb, 0xd5, 0xa4, 0x86, + 0xaa, 0xdd, 0xb2, 0x9e, 0x80, 0x61, 0x61, 0x19, 0x93, 0xb6, 0x8f, 0x15, 0xb8, 0x58, 0xc2, 0xed, + 0x5f, 0x29, 0x82, 0x11, 0xaa, 0x06, 0xfd, 0x8e, 0x05, 0xf3, 0x21, 0xf7, 0x08, 0x6a, 0x54, 0xda, + 0xa1, 0xeb, 0x37, 0x6b, 0xf5, 0x6d, 0xd2, 0x68, 0x7b, 0xae, 0xdf, 0x5c, 0x6b, 0xfa, 0x81, 0x2a, + 0x5e, 0xb9, 0x43, 0xea, 0x6d, 0xa6, 0x07, 0xef, 0x11, 0x17, 0x47, 0xbd, 0x3c, 0x5f, 0xbc, 0x7b, + 0x30, 0x37, 0x8f, 0x8f, 0x44, 0x1b, 0x1f, 0xb1, 0x2f, 0xe8, 0x3b, 0x16, 0x2c, 0xf0, 0x08, 0x2e, + 0xfd, 0xf7, 0xbf, 0xcb, 0x6d, 0xb4, 0x2a, 0x49, 0x25, 0x44, 0x36, 0x48, 0xb8, 0xbb, 0xf4, 0xa2, + 0x18, 0xd0, 0x85, 0xea, 0xd1, 0xda, 0xc2, 0x47, 0xed, 0x9c, 0xfd, 0xaf, 0x8a, 0x30, 0x4e, 0x47, + 0x31, 0xf1, 0x82, 0x7f, 0xc1, 0x58, 0x12, 0x8f, 0xa4, 0x96, 0xc4, 0xb4, 0x81, 0x7c, 0x3c, 0x0e, + 0xf0, 0x11, 0x4c, 0x7b, 0x4e, 0x14, 0x5f, 0x26, 0x4e, 0x18, 0x6f, 0x12, 0x87, 0x3d, 0xf5, 0x8a, + 0x65, 0x7e, 0x94, 0xd7, 0x63, 0xa5, 0xfe, 0xba, 0x9a, 0x26, 0x86, 0x3b, 0xe9, 0xa3, 0x3d, 0x40, + 0xec, 0x59, 0x39, 0x74, 0xfc, 0x88, 0x7f, 0x8b, 0x2b, 0x74, 0xe4, 0x47, 0x6b, 0x75, 0x56, 0xb4, + 0x8a, 0xae, 0x76, 0x50, 0xc3, 0x19, 0x2d, 0x68, 0xe6, 0x02, 0x83, 0xfd, 0x9a, 0x0b, 0x0c, 0xf5, + 0x30, 0x42, 0xdf, 0x85, 0x29, 0x31, 0x2b, 0x5b, 0x6e, 0x53, 0x1c, 0xd2, 0x6f, 0xa4, 0xcc, 0x89, + 0xac, 0xfe, 0x0d, 0x1f, 0x7a, 0xd8, 0x12, 0xd9, 0x3f, 0x0f, 0xa7, 0x68, 0x73, 0xa6, 0xc9, 0x74, + 0x84, 0x08, 0x4c, 0xee, 0xb4, 0x37, 0x89, 0x47, 0x62, 0x59, 0x26, 0x1a, 0xcd, 0x14, 0xfb, 0xcd, + 0xda, 0x89, 0x6c, 0x79, 0xc5, 0x24, 0x81, 0xd3, 0x34, 0xed, 0x5f, 0xb5, 0x80, 0x19, 0x26, 0x9e, + 0xc0, 0xf1, 0xf7, 0x29, 0xf3, 0xf8, 0x2b, 0xe7, 0x71, 0xa0, 0x9c, 0x93, 0xef, 0x79, 0x3e, 0x2d, + 0xd5, 0x30, 0xb8, 0xb3, 0x2f, 0x65, 0xff, 0xde, 0x12, 0xd7, 0xff, 0xb1, 0xf8, 0x86, 0x54, 0x0e, + 0x92, 0xe8, 0xb3, 0x30, 0x52, 0x77, 0x5a, 0x4e, 0x9d, 0xc7, 0x08, 0xcb, 0xd5, 0xfe, 0x18, 0x95, + 0xe6, 0x97, 0x45, 0x0d, 0xae, 0xcd, 0xf8, 0xb8, 0xfc, 0x4a, 0x59, 0xdc, 0x53, 0x83, 0xa1, 0x9a, + 0x9c, 0xdd, 0x81, 0x71, 0x83, 0xd8, 0x7d, 0xbd, 0xfa, 0x7e, 0x96, 0x1f, 0x17, 0xea, 0xc6, 0xb2, + 0x0b, 0xd3, 0xbe, 0xf6, 0x9f, 0x32, 0x47, 0x29, 0x4e, 0x7f, 0xb4, 0xd7, 0x81, 0xc0, 0x38, 0xa9, + 0x66, 0x78, 0x99, 0x22, 0x83, 0x3b, 0x29, 0xdb, 0x7f, 0xc7, 0x82, 0x07, 0x75, 0x44, 0xcd, 0x77, + 0xb5, 0x97, 0x3e, 0xb9, 0x02, 0x23, 0x41, 0x8b, 0x84, 0x4e, 0x72, 0x27, 0xbb, 0x20, 0x07, 0xfd, + 0xba, 0x28, 0x3f, 0x3c, 0x98, 0x9b, 0xd1, 0xa9, 0xcb, 0x72, 0xac, 0x6a, 0x22, 0x1b, 0x86, 0xd8, + 0x60, 0x44, 0xc2, 0xaf, 0x98, 0xc5, 0xd1, 0x62, 0xcf, 0x5d, 0x11, 0x16, 0x10, 0xfb, 0x17, 0x2c, + 0xbe, 0xb0, 0xf4, 0xae, 0xa3, 0x77, 0x61, 0x6a, 0x97, 0x5e, 0xdf, 0x56, 0xee, 0xb4, 0x42, 0xae, + 0x46, 0x97, 0xe3, 0xf4, 0x54, 0xaf, 0x71, 0xd2, 0x3e, 0x72, 0xa9, 0x2c, 0xfa, 0x3c, 0xb5, 0x9e, + 0x22, 0x86, 0x3b, 0xc8, 0xdb, 0x7f, 0x5a, 0xe0, 0x3b, 0x91, 0x49, 0x75, 0x4f, 0xc0, 0x70, 0x2b, + 0x68, 0x2c, 0xaf, 0x55, 0xb0, 0x18, 0x21, 0xc5, 0xae, 0xaa, 0xbc, 0x18, 0x4b, 0x38, 0xba, 0x08, + 0x40, 0xee, 0xc4, 0x24, 0xf4, 0x1d, 0x4f, 0x3d, 0xc6, 0x2b, 0xe1, 0x69, 0x45, 0x41, 0xb0, 0x86, + 0x45, 0xeb, 0xb4, 0xc2, 0x60, 0xcf, 0x6d, 0x30, 0xc7, 0x8e, 0xa2, 0x59, 0xa7, 0xaa, 0x20, 0x58, + 0xc3, 0xa2, 0x57, 0xe5, 0xb6, 0x1f, 0xf1, 0x03, 0xd0, 0xd9, 0x14, 0xa1, 0x78, 0x46, 0x92, 0xab, + 0xf2, 0x0d, 0x1d, 0x88, 0x4d, 0x5c, 0xb4, 0x08, 0x43, 0xb1, 0xc3, 0x9e, 0x98, 0x07, 0xf3, 0x4d, + 0x76, 0x36, 0x28, 0x86, 0x1e, 0x34, 0x8a, 0x56, 0xc0, 0xa2, 0x22, 0x7a, 0x53, 0xb2, 0x60, 0xce, + 0x92, 0x85, 0xe9, 0x55, 0xee, 0xb2, 0xd5, 0xd9, 0xb7, 0xce, 0x83, 0x85, 0x49, 0x97, 0x41, 0xcb, + 0xfe, 0x7c, 0x09, 0x20, 0x91, 0xf6, 0xd0, 0x7b, 0x1d, 0x2c, 0xe2, 0xe9, 0xee, 0xf2, 0xe1, 0xf1, + 0xf1, 0x07, 0xf4, 0x05, 0x0b, 0x46, 0x1d, 0xcf, 0x0b, 0xea, 0x4e, 0xcc, 0x46, 0xb9, 0xd0, 0x9d, + 0x45, 0x89, 0xf6, 0x17, 0x93, 0x1a, 0xbc, 0x0b, 0xcf, 0xc9, 0xd7, 0x63, 0x0d, 0xd2, 0xb3, 0x17, + 0x7a, 0xc3, 0xe8, 0xe3, 0xf2, 0x12, 0xc0, 0x97, 0xc7, 0x6c, 0xfa, 0x12, 0x50, 0x62, 0xdc, 0x58, + 0x93, 0xff, 0xd1, 0x0d, 0x23, 0x66, 0xcd, 0x40, 0xbe, 0x7b, 0xae, 0x21, 0xf4, 0xf4, 0x0a, 0x57, + 0x83, 0xaa, 0xba, 0x09, 0xfa, 0x60, 0xbe, 0x0f, 0xbb, 0x26, 0x5d, 0xf7, 0x30, 0x3f, 0x7f, 0x07, + 0x26, 0x1b, 0xe6, 0x71, 0x2b, 0x56, 0xd3, 0xe3, 0x79, 0x74, 0x53, 0xa7, 0x73, 0x72, 0xc0, 0xa6, + 0x00, 0x38, 0x4d, 0x18, 0x55, 0xb9, 0x33, 0xc0, 0x9a, 0xbf, 0x15, 0x08, 0x13, 0x3e, 0x3b, 0x77, + 0x2e, 0xf7, 0xa3, 0x98, 0xec, 0x52, 0xcc, 0xe4, 0x1c, 0xbd, 0x26, 0xea, 0x62, 0x45, 0x05, 0xbd, + 0x06, 0x43, 0xcc, 0x43, 0x2b, 0x2a, 0x8f, 0xe4, 0xeb, 0x01, 0x4d, 0xe7, 0xe2, 0x64, 0x53, 0xb1, + 0xbf, 0x11, 0x16, 0x14, 0xd0, 0x65, 0x19, 0x22, 0x20, 0x5a, 0xf3, 0x6f, 0x44, 0x84, 0x85, 0x08, + 0x28, 0x2d, 0x7d, 0x34, 0xf1, 0xfe, 0xe7, 0xe5, 0x99, 0xe1, 0x21, 0x8d, 0x9a, 0x54, 0x5e, 0x11, + 0xff, 0x65, 0xd4, 0xc9, 0x32, 0xe4, 0x77, 0xcf, 0x8c, 0x4c, 0x99, 0x0c, 0xe7, 0x4d, 0x93, 0x04, + 0x4e, 0xd3, 0x3c, 0xd1, 0xe3, 0x73, 0xd6, 0x87, 0xa9, 0xf4, 0xc6, 0xba, 0xaf, 0xc7, 0xf5, 0x0f, + 0x06, 0x60, 0xc2, 0x5c, 0x08, 0x68, 0x01, 0x4a, 0x82, 0x88, 0x0a, 0x17, 0xa6, 0xd6, 0xf6, 0xba, + 0x04, 0xe0, 0x04, 0x87, 0x85, 0x4b, 0x63, 0xd5, 0x35, 0xdb, 0xac, 0x24, 0x5c, 0x9a, 0x82, 0x60, + 0x0d, 0x8b, 0x0a, 0xd1, 0x9b, 0x41, 0x10, 0xab, 0xa3, 0x40, 0xad, 0x96, 0x25, 0x56, 0x8a, 0x05, + 0x94, 0x1e, 0x01, 0x3b, 0x24, 0xf4, 0x89, 0x67, 0x6a, 0x32, 0xd5, 0x11, 0x70, 0x45, 0x07, 0x62, + 0x13, 0x97, 0x1e, 0x69, 0x41, 0xc4, 0x96, 0x9f, 0x10, 0xd5, 0x13, 0x5b, 0xb7, 0x1a, 0xf7, 0x50, + 0x94, 0x70, 0xf4, 0x06, 0x3c, 0xa8, 0x1c, 0x0a, 0x31, 0xd7, 0x0c, 0xcb, 0x16, 0x87, 0x8c, 0x9b, + 0xf5, 0x83, 0xcb, 0xd9, 0x68, 0x38, 0xaf, 0x3e, 0x7a, 0x15, 0x26, 0x84, 0x08, 0x2c, 0x29, 0x0e, + 0x9b, 0xc6, 0x0a, 0x57, 0x0c, 0x28, 0x4e, 0x61, 0xa3, 0x0a, 0x4c, 0xd1, 0x12, 0x26, 0x85, 0x4a, + 0x0a, 0xdc, 0x31, 0x52, 0x9d, 0xf5, 0x57, 0x52, 0x70, 0xdc, 0x51, 0x03, 0x2d, 0xc2, 0x24, 0x97, + 0x51, 0xe8, 0x9d, 0x92, 0xcd, 0x83, 0xb0, 0xac, 0x55, 0x1b, 0xe1, 0xba, 0x09, 0xc6, 0x69, 0x7c, + 0xf4, 0x12, 0x8c, 0x39, 0x61, 0x7d, 0xdb, 0x8d, 0x49, 0x3d, 0x6e, 0x87, 0x3c, 0x00, 0x87, 0x66, + 0xed, 0xb1, 0xa8, 0xc1, 0xb0, 0x81, 0x69, 0xbf, 0x07, 0xa7, 0x32, 0x8c, 0xf2, 0xe9, 0xc2, 0x71, + 0x5a, 0xae, 0xfc, 0xa6, 0x94, 0xd5, 0xda, 0x62, 0x75, 0x4d, 0x7e, 0x8d, 0x86, 0x45, 0x57, 0x27, + 0x53, 0x89, 0x6b, 0xa1, 0x61, 0xd5, 0xea, 0x5c, 0x95, 0x00, 0x9c, 0xe0, 0xd8, 0xbf, 0x0f, 0xa0, + 0x29, 0x74, 0xfa, 0xb0, 0x59, 0x7a, 0x09, 0xc6, 0x64, 0x3c, 0x63, 0x2d, 0x8e, 0xa6, 0xfa, 0xcc, + 0x4b, 0x1a, 0x0c, 0x1b, 0x98, 0xb4, 0x6f, 0xbe, 0x8a, 0x02, 0x9a, 0xb2, 0x91, 0x4b, 0x62, 0x80, + 0x26, 0x38, 0xe8, 0x69, 0x18, 0x89, 0x88, 0xb7, 0x75, 0xd5, 0xf5, 0x77, 0xc4, 0xc2, 0x56, 0x5c, + 0xb8, 0x26, 0xca, 0xb1, 0xc2, 0x40, 0x4b, 0x50, 0x6c, 0xbb, 0x0d, 0xb1, 0x94, 0xe5, 0x81, 0x5f, + 0xbc, 0xb1, 0x56, 0x39, 0x3c, 0x98, 0x7b, 0x24, 0x2f, 0x4c, 0x33, 0xbd, 0xda, 0x47, 0xf3, 0x74, + 0xfb, 0xd1, 0xca, 0x59, 0x6f, 0x03, 0x43, 0x47, 0x7c, 0x1b, 0xb8, 0x08, 0x20, 0xbe, 0x5a, 0xae, + 0xe5, 0x62, 0x32, 0x6b, 0x97, 0x14, 0x04, 0x6b, 0x58, 0x28, 0x82, 0xe9, 0x7a, 0x48, 0x1c, 0x79, + 0x87, 0xe6, 0xe6, 0xe5, 0x23, 0xf7, 0xae, 0x20, 0x58, 0x4e, 0x13, 0xc3, 0x9d, 0xf4, 0x51, 0x00, + 0xd3, 0x0d, 0xe1, 0xbf, 0x9a, 0x34, 0x5a, 0x3a, 0xba, 0x4d, 0x3b, 0x33, 0xc8, 0x49, 0x13, 0xc2, + 0x9d, 0xb4, 0xd1, 0xdb, 0x30, 0x2b, 0x0b, 0x3b, 0x5d, 0x86, 0xd9, 0x76, 0x29, 0x2e, 0x9d, 0xbb, + 0x7b, 0x30, 0x37, 0x5b, 0xc9, 0xc5, 0xc2, 0x5d, 0x28, 0x20, 0x0c, 0x43, 0xec, 0x2d, 0x29, 0x2a, + 0x8f, 0xb2, 0x73, 0xee, 0xc9, 0x7c, 0x65, 0x00, 0x5d, 0xeb, 0xf3, 0xec, 0x1d, 0x4a, 0x98, 0xf9, + 0x26, 0xcf, 0x72, 0xac, 0x10, 0x0b, 0x4a, 0x68, 0x0b, 0x46, 0x1d, 0xdf, 0x0f, 0x62, 0x87, 0x8b, + 0x50, 0x63, 0xf9, 0xb2, 0x9f, 0x46, 0x78, 0x31, 0xa9, 0xc1, 0xa9, 0x2b, 0xcb, 0x41, 0x0d, 0x82, + 0x75, 0xc2, 0xe8, 0x36, 0x4c, 0x06, 0xb7, 0x29, 0x73, 0x94, 0x5a, 0x8a, 0xa8, 0x3c, 0xce, 0xda, + 0x7a, 0xbe, 0x4f, 0x3d, 0xad, 0x51, 0x59, 0xe3, 0x5a, 0x26, 0x51, 0x9c, 0x6e, 0x05, 0xcd, 0x1b, + 0xda, 0xea, 0x89, 0xc4, 0x9e, 0x3d, 0xd1, 0x56, 0xeb, 0xca, 0x69, 0xe6, 0x82, 0xce, 0xcd, 0x56, + 0xd9, 0xee, 0x9f, 0x4c, 0xb9, 0xa0, 0x27, 0x20, 0xac, 0xe3, 0xa1, 0x6d, 0x18, 0x4b, 0x9e, 0xac, + 0xc2, 0x88, 0x45, 0xa8, 0x19, 0xbd, 0x78, 0xb1, 0xbf, 0x8f, 0x5b, 0xd3, 0x6a, 0xf2, 0x9b, 0x83, + 0x5e, 0x82, 0x0d, 0xca, 0xb3, 0x3f, 0x05, 0xa3, 0xda, 0xc4, 0x1e, 0xc5, 0x2a, 0x7b, 0xf6, 0x55, + 0x98, 0x4a, 0x4f, 0xdd, 0x91, 0xac, 0xba, 0xff, 0x77, 0x01, 0x26, 0x33, 0x5e, 0xae, 0x58, 0xa8, + 0xe7, 0x14, 0x43, 0x4d, 0x22, 0x3b, 0x9b, 0x6c, 0xb1, 0xd0, 0x07, 0x5b, 0x94, 0x3c, 0xba, 0x98, + 0xcb, 0xa3, 0x05, 0x2b, 0x1c, 0x78, 0x3f, 0xac, 0xd0, 0x3c, 0x7d, 0x06, 0xfb, 0x3a, 0x7d, 0x8e, + 0x81, 0x7d, 0x1a, 0x07, 0xd8, 0x70, 0x1f, 0x07, 0xd8, 0x97, 0x0b, 0x30, 0x95, 0x8e, 0x27, 0x7c, + 0x02, 0xef, 0x1d, 0xaf, 0x19, 0xef, 0x1d, 0xd9, 0x81, 0xd3, 0xd3, 0x51, 0x8e, 0xf3, 0xde, 0x3e, + 0x70, 0xea, 0xed, 0xe3, 0xc9, 0xbe, 0xa8, 0x75, 0x7f, 0x07, 0xf9, 0xbb, 0x05, 0x38, 0x9d, 0xae, + 0xb2, 0xec, 0x39, 0xee, 0xee, 0x09, 0x8c, 0xcd, 0x75, 0x63, 0x6c, 0x9e, 0xe9, 0xe7, 0x6b, 0x58, + 0xd7, 0x72, 0x07, 0xe8, 0x56, 0x6a, 0x80, 0x16, 0xfa, 0x27, 0xd9, 0x7d, 0x94, 0xbe, 0x5b, 0x84, + 0x73, 0x99, 0xf5, 0x92, 0xe7, 0x82, 0x55, 0xe3, 0xb9, 0xe0, 0x62, 0xea, 0xb9, 0xc0, 0xee, 0x5e, + 0xfb, 0x78, 0xde, 0x0f, 0x84, 0xe7, 0x19, 0x8b, 0x9e, 0x76, 0x8f, 0x6f, 0x07, 0x86, 0xe7, 0x99, + 0x22, 0x84, 0x4d, 0xba, 0x3f, 0x4e, 0x6f, 0x06, 0xbf, 0x6f, 0xc1, 0x99, 0xcc, 0xb9, 0x39, 0x01, + 0xbd, 0xfa, 0x35, 0x53, 0xaf, 0xfe, 0x44, 0xdf, 0xab, 0x35, 0x47, 0xd1, 0xfe, 0xd5, 0x62, 0xce, + 0xb7, 0x30, 0xcd, 0xe4, 0x75, 0x18, 0x75, 0xea, 0x75, 0x12, 0x45, 0xeb, 0x41, 0x43, 0x05, 0x2b, + 0x7b, 0x86, 0x49, 0x1b, 0x49, 0xf1, 0xe1, 0xc1, 0xdc, 0x6c, 0x9a, 0x44, 0x02, 0xc6, 0x3a, 0x05, + 0x33, 0x00, 0x62, 0xe1, 0x58, 0x03, 0x20, 0x5e, 0x04, 0xd8, 0x53, 0xfa, 0x8a, 0xb4, 0x9a, 0x53, + 0xd3, 0x64, 0x68, 0x58, 0xe8, 0xe7, 0xd8, 0x2d, 0x80, 0x1b, 0x03, 0xf1, 0xa5, 0xf8, 0x5c, 0x9f, + 0x73, 0xa5, 0x1b, 0x16, 0x71, 0x17, 0x67, 0xa5, 0x12, 0x56, 0x24, 0xd1, 0xcf, 0xc0, 0x54, 0xc4, + 0x23, 0x68, 0x2c, 0x7b, 0x4e, 0xc4, 0x1c, 0x6b, 0xc4, 0x2a, 0x64, 0x7e, 0xcb, 0xb5, 0x14, 0x0c, + 0x77, 0x60, 0xdb, 0x5f, 0x1e, 0x80, 0x87, 0xba, 0x30, 0x1f, 0xb4, 0x68, 0x3e, 0xde, 0x3f, 0x95, + 0xd6, 0xdb, 0xcd, 0x66, 0x56, 0x36, 0x14, 0x79, 0xa9, 0x39, 0x2e, 0xbc, 0xef, 0x39, 0xfe, 0xa2, + 0xa5, 0x69, 0x54, 0xb9, 0x89, 0xef, 0xa7, 0x8e, 0xc8, 0x54, 0x8f, 0x51, 0xc5, 0xba, 0x95, 0xa1, + 0xa7, 0xbc, 0xd8, 0x77, 0x77, 0xfa, 0x56, 0x5c, 0x9e, 0xec, 0x53, 0xcf, 0xe7, 0x2c, 0x78, 0x24, + 0xb3, 0xbf, 0x86, 0xb1, 0xd1, 0x02, 0x94, 0xea, 0xb4, 0x50, 0x73, 0xb2, 0x4b, 0x5c, 0x5d, 0x25, + 0x00, 0x27, 0x38, 0x86, 0x4d, 0x51, 0xa1, 0xa7, 0x4d, 0xd1, 0xbf, 0xb4, 0x60, 0x26, 0xdd, 0x89, + 0x13, 0xe0, 0x80, 0x6b, 0x26, 0x07, 0xfc, 0x68, 0x3f, 0x73, 0x99, 0x67, 0x5d, 0x38, 0x01, 0x0f, + 0xe4, 0xe4, 0x8b, 0xd8, 0x83, 0xe9, 0x66, 0x9d, 0x98, 0xee, 0x8b, 0xe2, 0x63, 0x32, 0x3d, 0x3d, + 0xbb, 0xfa, 0x3a, 0xf2, 0x8b, 0x6c, 0x07, 0x0a, 0xee, 0x6c, 0x02, 0x7d, 0xce, 0x82, 0x19, 0xe7, + 0x76, 0xd4, 0x91, 0xbf, 0x49, 0xac, 0x99, 0xe7, 0x33, 0xf5, 0xab, 0x3d, 0xf2, 0x3d, 0x31, 0x17, + 0xa3, 0x99, 0x2c, 0x2c, 0x9c, 0xd9, 0x16, 0xc2, 0x22, 0x2e, 0x24, 0x95, 0x93, 0xbb, 0x38, 0xd8, + 0x66, 0xb9, 0x3f, 0x71, 0x5e, 0x28, 0x21, 0x58, 0xd1, 0x41, 0x37, 0xa1, 0xd4, 0x94, 0x3e, 0x89, + 0x82, 0xd7, 0x66, 0x1e, 0x5e, 0x99, 0x8e, 0x8b, 0xdc, 0xe7, 0x43, 0x81, 0x70, 0x42, 0x0a, 0xbd, + 0x0a, 0x45, 0x7f, 0x2b, 0xea, 0x96, 0x30, 0x23, 0x65, 0x83, 0xc7, 0x3d, 0xa5, 0xaf, 0xad, 0xd6, + 0x30, 0xad, 0x88, 0x2e, 0x43, 0x31, 0xdc, 0x6c, 0x88, 0x27, 0x81, 0x4c, 0x79, 0x12, 0x2f, 0x55, + 0xb2, 0x17, 0x09, 0xa7, 0x84, 0x97, 0x2a, 0x98, 0x92, 0x40, 0xab, 0x30, 0xc8, 0x9c, 0x9d, 0x84, + 0xe6, 0x3f, 0x33, 0xe6, 0x43, 0x87, 0x23, 0x17, 0x77, 0xa2, 0x66, 0xc5, 0x98, 0x57, 0x47, 0xaf, + 0xc1, 0x50, 0x9d, 0x65, 0x92, 0x10, 0x6a, 0x9a, 0xec, 0x38, 0x26, 0x1d, 0xb9, 0x26, 0xf8, 0x7b, + 0x27, 0x2f, 0xc7, 0x82, 0x02, 0xda, 0x80, 0xa1, 0x3a, 0x69, 0x6d, 0x6f, 0x45, 0x42, 0xfb, 0xf2, + 0xf1, 0x4c, 0x5a, 0x5d, 0x12, 0xa7, 0x08, 0xaa, 0x0c, 0x03, 0x0b, 0x5a, 0xe8, 0x93, 0x50, 0xd8, + 0xaa, 0x0b, 0xbf, 0xa7, 0x4c, 0x8d, 0xbf, 0xe9, 0xd8, 0xbe, 0x34, 0x74, 0xf7, 0x60, 0xae, 0xb0, + 0xba, 0x8c, 0x0b, 0x5b, 0x75, 0x74, 0x0d, 0x86, 0xb7, 0xb8, 0x77, 0xb2, 0x88, 0xf8, 0xfb, 0x78, + 0xb6, 0xe3, 0x74, 0x87, 0x03, 0x33, 0xf7, 0xd7, 0x11, 0x00, 0x2c, 0x89, 0xa0, 0x0d, 0x80, 0x2d, + 0xe5, 0x65, 0x2d, 0x42, 0xfe, 0x7e, 0xb4, 0x1f, 0x5f, 0x6c, 0xa1, 0x8a, 0x50, 0xa5, 0x58, 0xa3, + 0x83, 0x3e, 0x03, 0x25, 0x47, 0xe6, 0x06, 0x62, 0xe1, 0x7e, 0x4d, 0xc9, 0x20, 0xd9, 0x7a, 0xdd, + 0xd3, 0x26, 0xf1, 0x75, 0xab, 0x90, 0x70, 0x42, 0x14, 0xed, 0xc0, 0xf8, 0x5e, 0xd4, 0xda, 0x26, + 0x72, 0xab, 0xb2, 0x18, 0xc0, 0x39, 0x47, 0xd3, 0x4d, 0x81, 0xe8, 0x86, 0x71, 0xdb, 0xf1, 0x3a, + 0xb8, 0x0b, 0x73, 0xee, 0xba, 0xa9, 0x13, 0xc3, 0x26, 0x6d, 0x3a, 0xe8, 0xef, 0xb6, 0x83, 0xcd, + 0xfd, 0x98, 0x88, 0xc8, 0xc0, 0x99, 0x83, 0xfe, 0x3a, 0x47, 0xe9, 0x1c, 0x74, 0x01, 0xc0, 0x92, + 0x08, 0xdd, 0xcc, 0x8e, 0xcc, 0xbb, 0x25, 0xf4, 0x2d, 0x4f, 0xe4, 0x0e, 0x4f, 0x47, 0x7f, 0x93, + 0x41, 0x61, 0x5c, 0x30, 0x21, 0xc5, 0xb8, 0x5f, 0x6b, 0x3b, 0x88, 0x03, 0x3f, 0xc5, 0x79, 0xa7, + 0xf3, 0xb9, 0x5f, 0x35, 0x03, 0xbf, 0x93, 0xfb, 0x65, 0x61, 0xe1, 0xcc, 0xb6, 0x50, 0x03, 0x26, + 0x5a, 0x41, 0x18, 0xdf, 0x0e, 0x42, 0xb9, 0xaa, 0x50, 0x97, 0x8b, 0xb8, 0x81, 0x29, 0x5a, 0x64, + 0xb6, 0xda, 0x26, 0x04, 0xa7, 0x68, 0xa2, 0x4f, 0xc3, 0x70, 0x54, 0x77, 0x3c, 0xb2, 0x76, 0xbd, + 0x7c, 0x2a, 0xff, 0x58, 0xa9, 0x71, 0x94, 0x9c, 0xd5, 0xc5, 0x26, 0x47, 0xa0, 0x60, 0x49, 0x8e, + 0xf2, 0x21, 0x16, 0x6e, 0x9e, 0x05, 0x35, 0xce, 0xe1, 0x43, 0x1d, 0xf6, 0xcc, 0x9c, 0x0f, 0xb1, + 0x62, 0xcc, 0xab, 0xd3, 0x3d, 0x20, 0xe4, 0xd1, 0x20, 0x2a, 0x9f, 0xce, 0xdf, 0x03, 0x42, 0x8c, + 0xbd, 0x5e, 0xeb, 0xb6, 0x07, 0x14, 0x12, 0x4e, 0x88, 0xda, 0xdf, 0x1c, 0xea, 0x94, 0x20, 0xd8, + 0xbd, 0xe3, 0xf3, 0x56, 0xc7, 0xa3, 0xfc, 0x27, 0xfa, 0x55, 0x83, 0x1c, 0xa3, 0xec, 0xf8, 0x39, + 0x0b, 0x1e, 0x68, 0x65, 0x7e, 0x94, 0x38, 0x8e, 0xfb, 0xd3, 0xa6, 0xf0, 0x61, 0x50, 0xe1, 0xc2, + 0xb3, 0xe1, 0x38, 0xa7, 0xa5, 0xb4, 0x7c, 0x5e, 0x7c, 0xdf, 0xf2, 0xf9, 0x3a, 0x8c, 0x30, 0x91, + 0x2f, 0x09, 0x4f, 0xd4, 0x97, 0x69, 0x1b, 0x3b, 0xd8, 0x97, 0x45, 0x45, 0xac, 0x48, 0xa0, 0x5f, + 0xb4, 0xe0, 0x6c, 0xba, 0xeb, 0x98, 0x30, 0xb0, 0x08, 0x75, 0xc9, 0xaf, 0x3c, 0xab, 0xe2, 0xfb, + 0xcf, 0x56, 0xbb, 0x21, 0x1f, 0xf6, 0x42, 0xc0, 0xdd, 0x1b, 0x43, 0x95, 0x8c, 0x3b, 0xd7, 0x90, + 0xf9, 0x66, 0xd7, 0xfb, 0xde, 0x85, 0x9e, 0x87, 0xb1, 0xdd, 0xa0, 0xed, 0x4b, 0xbf, 0x13, 0xe1, + 0x55, 0xcc, 0xf4, 0xc3, 0xeb, 0x5a, 0x39, 0x36, 0xb0, 0x4e, 0xf6, 0x0e, 0xf0, 0x35, 0x2b, 0x43, + 0x78, 0xe5, 0xb7, 0xc2, 0x57, 0xcc, 0x5b, 0xe1, 0x63, 0xe9, 0x5b, 0x61, 0x87, 0xf6, 0xce, 0xb8, + 0x10, 0xf6, 0x1f, 0xc2, 0xb7, 0xdf, 0xf8, 0x4d, 0xb6, 0x07, 0xe7, 0x7b, 0xb1, 0x69, 0x66, 0xde, + 0xd7, 0x50, 0xef, 0xde, 0x89, 0x79, 0x5f, 0x63, 0xad, 0x82, 0x19, 0xa4, 0xdf, 0x48, 0x20, 0xf6, + 0x7f, 0xb7, 0xa0, 0x58, 0x0d, 0x1a, 0x27, 0xa0, 0x8d, 0xfc, 0x94, 0xa1, 0x8d, 0x7c, 0x28, 0x27, + 0x9f, 0x67, 0xae, 0xee, 0x71, 0x25, 0xa5, 0x7b, 0x3c, 0x9b, 0x47, 0xa0, 0xbb, 0xa6, 0xf1, 0xef, + 0x15, 0x41, 0xcf, 0x3e, 0x8a, 0xfe, 0xf5, 0xbd, 0xd8, 0x89, 0x17, 0xbb, 0x25, 0x24, 0x15, 0x94, + 0x99, 0x55, 0xa0, 0x74, 0x41, 0xfd, 0x11, 0x33, 0x17, 0xbf, 0x45, 0xdc, 0xe6, 0x76, 0x4c, 0x1a, + 0xe9, 0xcf, 0x39, 0x39, 0x73, 0xf1, 0xff, 0x62, 0xc1, 0x64, 0xaa, 0x75, 0xe4, 0x65, 0xf9, 0xb3, + 0xdd, 0xa3, 0x16, 0x6a, 0xba, 0xa7, 0x03, 0xdc, 0x3c, 0x80, 0x7a, 0xea, 0x91, 0x9a, 0x1e, 0x26, + 0x05, 0xab, 0xb7, 0xa0, 0x08, 0x6b, 0x18, 0xe8, 0x05, 0x18, 0x8d, 0x83, 0x56, 0xe0, 0x05, 0xcd, + 0xfd, 0x2b, 0x44, 0xc6, 0x9e, 0x51, 0x0f, 0x72, 0x1b, 0x09, 0x08, 0xeb, 0x78, 0xf6, 0xaf, 0x15, + 0x21, 0x9d, 0xb1, 0xf6, 0x27, 0x6b, 0xf2, 0xc3, 0xb9, 0x26, 0xbf, 0x6b, 0xc1, 0x14, 0x6d, 0x9d, + 0x59, 0x5c, 0x49, 0x43, 0x6b, 0x95, 0xeb, 0xc3, 0xea, 0x92, 0xeb, 0xe3, 0x31, 0xca, 0xbb, 0x1a, + 0x41, 0x3b, 0x16, 0x9a, 0x22, 0x8d, 0x39, 0xd1, 0x52, 0x2c, 0xa0, 0x02, 0x8f, 0x84, 0xa1, 0xf0, + 0x52, 0xd3, 0xf1, 0x48, 0x18, 0x62, 0x01, 0x95, 0xa9, 0x40, 0x06, 0x72, 0x52, 0x81, 0xb0, 0xb0, + 0x6d, 0xc2, 0xca, 0x47, 0x08, 0x14, 0x5a, 0xd8, 0x36, 0x69, 0xfe, 0x93, 0xe0, 0xd8, 0x5f, 0x2f, + 0xc2, 0x58, 0x35, 0x68, 0x24, 0x8f, 0x2d, 0xcf, 0x1b, 0x8f, 0x2d, 0xe7, 0x53, 0x8f, 0x2d, 0x53, + 0x3a, 0xee, 0x4f, 0x9e, 0x56, 0x3e, 0xa8, 0xa7, 0x95, 0x3f, 0xb3, 0x60, 0xa2, 0x1a, 0x34, 0xe8, + 0x02, 0xfd, 0x71, 0x5a, 0x8d, 0x7a, 0x50, 0xc0, 0xa1, 0x2e, 0x41, 0x01, 0xff, 0xbe, 0x05, 0xc3, + 0xd5, 0xa0, 0x71, 0x02, 0x5a, 0xd4, 0x57, 0x4c, 0x2d, 0xea, 0x83, 0x39, 0x5c, 0x36, 0x47, 0x71, + 0xfa, 0x8d, 0x22, 0x8c, 0xd3, 0x7e, 0x06, 0x4d, 0x39, 0x4b, 0xc6, 0x88, 0x58, 0x7d, 0x8c, 0x08, + 0x15, 0xe6, 0x02, 0xcf, 0x0b, 0x6e, 0xa7, 0x67, 0x6c, 0x95, 0x95, 0x62, 0x01, 0x45, 0x4f, 0xc3, + 0x48, 0x2b, 0x24, 0x7b, 0x6e, 0xd0, 0x8e, 0xd2, 0x7e, 0xae, 0x55, 0x51, 0x8e, 0x15, 0x06, 0x95, + 0xdb, 0x23, 0xd7, 0xaf, 0x13, 0x69, 0xf9, 0x33, 0xc0, 0x2c, 0x7f, 0x78, 0x5c, 0x55, 0xad, 0x1c, + 0x1b, 0x58, 0xe8, 0x16, 0x94, 0xd8, 0x7f, 0xb6, 0x6f, 0x8e, 0x9e, 0xe9, 0x43, 0x04, 0x33, 0x17, + 0x04, 0x70, 0x42, 0x0b, 0x5d, 0x04, 0x88, 0xa5, 0x8d, 0x52, 0x24, 0xdc, 0xb0, 0x95, 0x44, 0xa9, + 0xac, 0x97, 0x22, 0xac, 0x61, 0xa1, 0xa7, 0xa0, 0x14, 0x3b, 0xae, 0x77, 0xd5, 0xf5, 0x49, 0x24, + 0x6c, 0xbc, 0x44, 0xac, 0x72, 0x51, 0x88, 0x13, 0x38, 0x3d, 0xd1, 0x99, 0x93, 0x3f, 0xcf, 0x13, + 0x34, 0xc2, 0xb0, 0xd9, 0x89, 0x7e, 0x55, 0x95, 0x62, 0x0d, 0xc3, 0x7e, 0x09, 0x4e, 0x57, 0x83, + 0x46, 0x35, 0x08, 0xe3, 0xd5, 0x20, 0xbc, 0xed, 0x84, 0x0d, 0x39, 0x7f, 0x73, 0x32, 0x6c, 0x36, + 0x3d, 0x75, 0x07, 0xb9, 0x36, 0xc0, 0x08, 0x88, 0xfd, 0x1c, 0x3b, 0xd3, 0x8f, 0xe8, 0x90, 0xf3, + 0xef, 0x0a, 0x80, 0xaa, 0xcc, 0x8a, 0xca, 0x48, 0x26, 0xf5, 0x36, 0x4c, 0x44, 0xe4, 0xaa, 0xeb, + 0xb7, 0xef, 0xc8, 0xfb, 0x55, 0x17, 0x6f, 0xa7, 0xda, 0x8a, 0x8e, 0xc9, 0x75, 0x2b, 0x66, 0x19, + 0x4e, 0x51, 0xa3, 0x43, 0x18, 0xb6, 0xfd, 0xc5, 0xe8, 0x46, 0x44, 0x42, 0x91, 0x3c, 0x89, 0x0d, + 0x21, 0x96, 0x85, 0x38, 0x81, 0xd3, 0x25, 0xc3, 0xfe, 0x5c, 0x0b, 0x7c, 0x1c, 0x04, 0xb1, 0x5c, + 0x64, 0x2c, 0xfd, 0x86, 0x56, 0x8e, 0x0d, 0x2c, 0xb4, 0x0a, 0x28, 0x6a, 0xb7, 0x5a, 0x1e, 0x7b, + 0x9a, 0x74, 0xbc, 0x4b, 0x61, 0xd0, 0x6e, 0xf1, 0xe7, 0x25, 0x91, 0xb9, 0xa2, 0xd6, 0x01, 0xc5, + 0x19, 0x35, 0x28, 0x63, 0xd8, 0x8a, 0xd8, 0x6f, 0xe1, 0xe7, 0xcf, 0xb5, 0x9c, 0x35, 0x56, 0x84, + 0x25, 0xcc, 0xfe, 0x2c, 0x3b, 0xcc, 0x58, 0xce, 0x9b, 0xb8, 0x1d, 0x12, 0xb4, 0x0b, 0xe3, 0x2d, + 0x76, 0x60, 0xc5, 0x61, 0xe0, 0x79, 0x44, 0xca, 0x8d, 0xf7, 0x66, 0xd1, 0xc5, 0x73, 0x60, 0xe8, + 0xe4, 0xb0, 0x49, 0xdd, 0xfe, 0xfc, 0x24, 0xe3, 0x4b, 0x35, 0x7e, 0x69, 0x19, 0x16, 0x76, 0xda, + 0x42, 0x42, 0x9b, 0xcd, 0xcf, 0x31, 0x97, 0x70, 0x7a, 0x61, 0xeb, 0x8d, 0x65, 0x5d, 0xf4, 0x3a, + 0x7b, 0x97, 0xe3, 0xcc, 0xa0, 0x57, 0x76, 0x4b, 0x8e, 0x65, 0x3c, 0xc1, 0x89, 0x8a, 0x58, 0x23, + 0x82, 0xae, 0xc2, 0xb8, 0x48, 0x91, 0x22, 0x14, 0x0f, 0x45, 0xe3, 0xfa, 0x3b, 0x8e, 0x75, 0xe0, + 0x61, 0xba, 0x00, 0x9b, 0x95, 0x51, 0x13, 0xce, 0x6a, 0x09, 0xbd, 0x32, 0xac, 0x0a, 0x39, 0x6f, + 0x79, 0xe4, 0xee, 0xc1, 0xdc, 0xd9, 0x8d, 0x6e, 0x88, 0xb8, 0x3b, 0x1d, 0x74, 0x1d, 0x4e, 0x3b, + 0xf5, 0xd8, 0xdd, 0x23, 0x15, 0xe2, 0x34, 0x3c, 0xd7, 0x27, 0x66, 0xe0, 0x87, 0x33, 0x77, 0x0f, + 0xe6, 0x4e, 0x2f, 0x66, 0x21, 0xe0, 0xec, 0x7a, 0xe8, 0x15, 0x28, 0x35, 0xfc, 0x48, 0x8c, 0xc1, + 0x90, 0x91, 0xab, 0xae, 0x54, 0xb9, 0x56, 0x53, 0xdf, 0x9f, 0xfc, 0xc1, 0x49, 0x05, 0xd4, 0x84, + 0x31, 0xdd, 0xb9, 0x4b, 0xe4, 0x39, 0x7c, 0xa6, 0xcb, 0xdd, 0xd6, 0xf0, 0x88, 0xe2, 0x5a, 0x37, + 0x65, 0xb3, 0x6b, 0x38, 0x4b, 0x19, 0x84, 0xd1, 0x6b, 0x80, 0x22, 0x12, 0xee, 0xb9, 0x75, 0xb2, + 0x58, 0x67, 0x81, 0x87, 0x99, 0xae, 0x66, 0xc4, 0x70, 0x40, 0x41, 0xb5, 0x0e, 0x0c, 0x9c, 0x51, + 0x0b, 0x5d, 0xa6, 0x1c, 0x45, 0x2f, 0x15, 0x26, 0xd6, 0x52, 0xcc, 0x2b, 0x57, 0x48, 0x2b, 0x24, + 0x75, 0x27, 0x26, 0x0d, 0x93, 0x22, 0x4e, 0xd5, 0xa3, 0xe7, 0x8d, 0xca, 0xe7, 0x00, 0xa6, 0x61, + 0x70, 0x67, 0x4e, 0x07, 0x7a, 0x43, 0xda, 0x0e, 0xa2, 0xf8, 0x1a, 0x89, 0x6f, 0x07, 0xe1, 0x8e, + 0x88, 0xd6, 0x96, 0x04, 0x73, 0x4c, 0x40, 0x58, 0xc7, 0xa3, 0x12, 0x11, 0x7b, 0x18, 0x5b, 0xab, + 0xb0, 0x17, 0x8b, 0x91, 0x64, 0x9f, 0x5c, 0xe6, 0xc5, 0x58, 0xc2, 0x25, 0xea, 0x5a, 0x75, 0x99, + 0xbd, 0x43, 0xa4, 0x50, 0xd7, 0xaa, 0xcb, 0x58, 0xc2, 0x11, 0xe9, 0xcc, 0x03, 0x38, 0x91, 0xff, + 0x82, 0xd4, 0xc9, 0x97, 0xfb, 0x4c, 0x05, 0xe8, 0xc3, 0x94, 0xca, 0x40, 0xc8, 0xc3, 0xd8, 0x45, + 0xe5, 0x49, 0xb6, 0x48, 0xfa, 0x8f, 0x81, 0xa7, 0x74, 0x71, 0x6b, 0x29, 0x4a, 0xb8, 0x83, 0xb6, + 0x11, 0x50, 0x64, 0xaa, 0x67, 0x3e, 0x8e, 0x05, 0x28, 0x45, 0xed, 0xcd, 0x46, 0xb0, 0xeb, 0xb8, + 0x3e, 0x7b, 0x36, 0xd0, 0x04, 0x91, 0x9a, 0x04, 0xe0, 0x04, 0x07, 0xad, 0xc2, 0x88, 0x23, 0x2e, + 0x5f, 0x42, 0xd1, 0x9f, 0x19, 0x61, 0x40, 0x5e, 0xd0, 0xb8, 0x1e, 0x54, 0xfe, 0xc3, 0xaa, 0x2e, + 0x7a, 0x19, 0xc6, 0x85, 0x13, 0x9c, 0xb0, 0x5f, 0x3d, 0x65, 0xfa, 0x4b, 0xd4, 0x74, 0x20, 0x36, + 0x71, 0xd1, 0xcf, 0xc1, 0x04, 0xa5, 0x92, 0x30, 0xb6, 0xf2, 0x4c, 0x3f, 0x1c, 0x51, 0x8b, 0xb3, + 0xae, 0x57, 0xc6, 0x29, 0x62, 0xa8, 0x01, 0x0f, 0x3b, 0xed, 0x38, 0x60, 0xca, 0x4a, 0x73, 0xfd, + 0x6f, 0x04, 0x3b, 0xc4, 0x67, 0xda, 0xfd, 0x91, 0xa5, 0xf3, 0x77, 0x0f, 0xe6, 0x1e, 0x5e, 0xec, + 0x82, 0x87, 0xbb, 0x52, 0x41, 0x37, 0x60, 0x34, 0x0e, 0x3c, 0x61, 0x78, 0x1e, 0x95, 0x1f, 0xc8, + 0x0f, 0x88, 0xb4, 0xa1, 0xd0, 0x74, 0x75, 0x82, 0xaa, 0x8a, 0x75, 0x3a, 0x68, 0x83, 0xef, 0x31, + 0x16, 0xbe, 0x93, 0x44, 0xe5, 0x07, 0xf3, 0x07, 0x46, 0x45, 0xf9, 0x34, 0xb7, 0xa0, 0xa8, 0x89, + 0x75, 0x32, 0xe8, 0x12, 0x4c, 0xb7, 0x42, 0x37, 0x60, 0x0b, 0x5b, 0x29, 0x8a, 0xcb, 0x46, 0xa8, + 0xbc, 0xe9, 0x6a, 0x1a, 0x01, 0x77, 0xd6, 0x41, 0x17, 0xa8, 0x80, 0xca, 0x0b, 0xcb, 0x67, 0x78, + 0x9e, 0x16, 0x2e, 0x9c, 0xf2, 0x32, 0xac, 0xa0, 0xb3, 0x3f, 0x0d, 0xd3, 0x1d, 0x9c, 0xf2, 0x48, + 0x46, 0xc0, 0xff, 0x64, 0x10, 0x4a, 0x4a, 0x1d, 0x88, 0x16, 0x4c, 0x2d, 0xef, 0x99, 0xb4, 0x96, + 0x77, 0x84, 0xca, 0x6b, 0xba, 0x62, 0x77, 0x23, 0x23, 0xcd, 0xfc, 0xf9, 0x1c, 0xd6, 0xd0, 0xbf, + 0xc7, 0xde, 0x11, 0x52, 0xf0, 0x27, 0x17, 0xc6, 0x81, 0xae, 0x17, 0xc6, 0x3e, 0x53, 0x3e, 0xd2, + 0xab, 0x61, 0x2b, 0x68, 0xac, 0x55, 0xd3, 0x39, 0xd0, 0xaa, 0xb4, 0x10, 0x73, 0x18, 0x13, 0xee, + 0xe9, 0xb1, 0xce, 0x84, 0xfb, 0xe1, 0x7b, 0x14, 0xee, 0x25, 0x01, 0x9c, 0xd0, 0x42, 0x1e, 0x4c, + 0xd7, 0xcd, 0xf4, 0x75, 0xca, 0x4b, 0xef, 0xd1, 0x9e, 0x89, 0xe4, 0xda, 0x5a, 0x5e, 0x9b, 0xe5, + 0x34, 0x15, 0xdc, 0x49, 0x18, 0xbd, 0x0c, 0x23, 0xef, 0x06, 0x11, 0x5b, 0x76, 0xe2, 0x6c, 0x93, + 0x7e, 0x51, 0x23, 0xaf, 0x5f, 0xaf, 0xb1, 0xf2, 0xc3, 0x83, 0xb9, 0xd1, 0x6a, 0xd0, 0x90, 0x7f, + 0xb1, 0xaa, 0x80, 0xee, 0xc0, 0x69, 0x83, 0x23, 0xa8, 0xee, 0x42, 0xff, 0xdd, 0x3d, 0x2b, 0x9a, + 0x3b, 0xbd, 0x96, 0x45, 0x09, 0x67, 0x37, 0x60, 0x7f, 0x93, 0x2b, 0x3d, 0x85, 0x6a, 0x84, 0x44, + 0x6d, 0xef, 0x24, 0x92, 0x57, 0xac, 0x18, 0x5a, 0x9b, 0x7b, 0x56, 0xac, 0xff, 0x9e, 0xc5, 0x14, + 0xeb, 0x1b, 0x64, 0xb7, 0xe5, 0x39, 0xf1, 0x49, 0x98, 0x7e, 0xbf, 0x0e, 0x23, 0xb1, 0x68, 0xad, + 0x5b, 0xbe, 0x0d, 0xad, 0x53, 0xec, 0x71, 0x41, 0x1d, 0x88, 0xb2, 0x14, 0x2b, 0x32, 0xf6, 0x3f, + 0xe3, 0x33, 0x20, 0x21, 0x27, 0xa0, 0x5b, 0xa8, 0x98, 0xba, 0x85, 0xb9, 0x1e, 0x5f, 0x90, 0xa3, + 0x63, 0xf8, 0xa7, 0x66, 0xbf, 0xd9, 0xdd, 0xe3, 0xc3, 0xfe, 0xa2, 0x63, 0xff, 0xb2, 0x05, 0x33, + 0x59, 0x26, 0x01, 0x54, 0x88, 0xe1, 0x37, 0x1f, 0xf5, 0xc2, 0xa5, 0x46, 0xf0, 0xa6, 0x28, 0xc7, + 0x0a, 0xa3, 0xef, 0x98, 0xf7, 0x47, 0x0b, 0x02, 0x76, 0x1d, 0xcc, 0x4c, 0x87, 0xe8, 0x55, 0xee, + 0xcb, 0x61, 0xa9, 0x54, 0x84, 0x47, 0xf3, 0xe3, 0xb0, 0x7f, 0xbd, 0x00, 0x33, 0x5c, 0x45, 0xbd, + 0xb8, 0x17, 0xb8, 0x8d, 0x6a, 0xd0, 0x10, 0x9e, 0x2d, 0x6f, 0xc2, 0x58, 0x4b, 0xbb, 0xae, 0x76, + 0x0b, 0x43, 0xa4, 0x5f, 0x6b, 0x93, 0x6b, 0x83, 0x5e, 0x8a, 0x0d, 0x5a, 0xa8, 0x01, 0x63, 0x64, + 0xcf, 0xad, 0x2b, 0x3d, 0x67, 0xe1, 0xc8, 0x2c, 0x5d, 0xb5, 0xb2, 0xa2, 0xd1, 0xc1, 0x06, 0xd5, + 0xfb, 0x90, 0x99, 0xc6, 0xfe, 0x8a, 0x05, 0x0f, 0xe6, 0x04, 0x2d, 0xa2, 0xcd, 0xdd, 0x66, 0x8f, + 0x01, 0x22, 0x6d, 0xa6, 0x6a, 0x8e, 0x3f, 0x11, 0x60, 0x01, 0x45, 0x9f, 0x06, 0xe0, 0x2a, 0x7e, + 0x2a, 0x45, 0x8b, 0x4f, 0xef, 0x2f, 0x98, 0x87, 0x16, 0xf1, 0x41, 0xd6, 0xc7, 0x1a, 0x2d, 0xfb, + 0x57, 0x8b, 0x30, 0xc8, 0x73, 0xa8, 0xaf, 0xc2, 0xf0, 0x36, 0x0f, 0x91, 0xdc, 0x4f, 0x34, 0xe6, + 0xe4, 0x3a, 0xc2, 0x0b, 0xb0, 0xac, 0x8c, 0xd6, 0xe1, 0x94, 0xf0, 0x9e, 0xaa, 0x10, 0xcf, 0xd9, + 0x97, 0xb7, 0x5a, 0x9e, 0xae, 0x44, 0x86, 0xd2, 0x3f, 0xb5, 0xd6, 0x89, 0x82, 0xb3, 0xea, 0xa1, + 0x57, 0x3b, 0x02, 0x23, 0xf2, 0xe0, 0xd2, 0x4a, 0x06, 0xee, 0x11, 0x1c, 0xf1, 0x65, 0x18, 0x6f, + 0x75, 0xdc, 0xdf, 0xb5, 0xf4, 0xd5, 0xe6, 0x9d, 0xdd, 0xc4, 0x65, 0x56, 0x05, 0x6d, 0x66, 0x43, + 0xb1, 0xb1, 0x1d, 0x92, 0x68, 0x3b, 0xf0, 0x1a, 0x22, 0x57, 0x6b, 0x62, 0x55, 0x90, 0x82, 0xe3, + 0x8e, 0x1a, 0x94, 0xca, 0x96, 0xe3, 0x7a, 0xed, 0x90, 0x24, 0x54, 0x86, 0x4c, 0x2a, 0xab, 0x29, + 0x38, 0xee, 0xa8, 0x41, 0xd7, 0xd1, 0x69, 0x91, 0xe8, 0x53, 0xfa, 0xd4, 0x2b, 0x53, 0x91, 0x61, + 0x69, 0x5b, 0xdf, 0x25, 0xce, 0x8b, 0x78, 0xf2, 0x57, 0xa9, 0x42, 0xb5, 0x34, 0x72, 0xc2, 0xaa, + 0x5e, 0x52, 0xb9, 0x97, 0x74, 0x93, 0x7f, 0x6c, 0xc1, 0xa9, 0x0c, 0x43, 0x32, 0xce, 0xaa, 0x9a, + 0x6e, 0x14, 0xab, 0x2c, 0x19, 0x1a, 0xab, 0xe2, 0xe5, 0x58, 0x61, 0xd0, 0xfd, 0xc0, 0x99, 0x61, + 0x9a, 0x01, 0x0a, 0x93, 0x0f, 0x01, 0x3d, 0x1a, 0x03, 0x44, 0xe7, 0x61, 0xa0, 0x1d, 0x91, 0x50, + 0xe6, 0x69, 0x94, 0xfc, 0x9b, 0x69, 0x04, 0x19, 0x84, 0x4a, 0x94, 0x4d, 0xa5, 0x8c, 0xd3, 0x24, + 0x4a, 0xae, 0x8e, 0xe3, 0x30, 0xfb, 0x4b, 0x45, 0x38, 0x93, 0x6b, 0x14, 0x4a, 0xbb, 0xb4, 0x1b, + 0xf8, 0x6e, 0x1c, 0xa8, 0x08, 0x7d, 0x3c, 0x20, 0x09, 0x69, 0x6d, 0xaf, 0x8b, 0x72, 0xac, 0x30, + 0xd0, 0x63, 0x32, 0x8d, 0x6f, 0x3a, 0x0f, 0xc8, 0x52, 0xc5, 0xc8, 0xe4, 0xdb, 0x6f, 0x42, 0x9f, + 0x47, 0x61, 0xa0, 0x15, 0xa8, 0x1c, 0xeb, 0x6a, 0x66, 0x69, 0x77, 0x83, 0xc0, 0xc3, 0x0c, 0x88, + 0x3e, 0x26, 0xc6, 0x21, 0xf5, 0x72, 0x81, 0x9d, 0x46, 0x10, 0x69, 0x83, 0xf1, 0x04, 0x0c, 0xef, + 0x90, 0xfd, 0xd0, 0xf5, 0x9b, 0xe9, 0x77, 0x9b, 0x2b, 0xbc, 0x18, 0x4b, 0xb8, 0x99, 0x23, 0x6f, + 0xb8, 0x57, 0x8e, 0xbc, 0xa3, 0xa6, 0xe3, 0x19, 0xe9, 0x79, 0xb4, 0x7d, 0xb1, 0x08, 0x93, 0x78, + 0xa9, 0xf2, 0x93, 0x89, 0xb8, 0xd1, 0x39, 0x11, 0xc7, 0x9d, 0x1c, 0xa9, 0xf7, 0x6c, 0x7c, 0xc3, + 0x82, 0x49, 0x16, 0x96, 0x58, 0x04, 0xd4, 0x70, 0x03, 0xff, 0x04, 0x44, 0xb7, 0x47, 0x61, 0x30, + 0xa4, 0x8d, 0xa6, 0x33, 0x9e, 0xb0, 0x9e, 0x60, 0x0e, 0x43, 0x0f, 0xc3, 0x00, 0xeb, 0x02, 0x9d, + 0xbc, 0x31, 0x9e, 0x98, 0xa0, 0xe2, 0xc4, 0x0e, 0x66, 0xa5, 0xcc, 0xb3, 0x11, 0x93, 0x96, 0xe7, + 0xf2, 0x4e, 0x27, 0x1a, 0xf0, 0x0f, 0x87, 0x67, 0x63, 0x66, 0xd7, 0xde, 0x9f, 0x67, 0x63, 0x36, + 0xc9, 0xee, 0xd7, 0xa2, 0xff, 0x51, 0x80, 0x73, 0x99, 0xf5, 0xfa, 0xf6, 0x6c, 0xec, 0x5e, 0xfb, + 0x78, 0x9e, 0xdf, 0xb3, 0x5f, 0xc5, 0x8b, 0x27, 0xf8, 0x2a, 0x3e, 0xd0, 0xaf, 0xe4, 0x38, 0xd8, + 0x87, 0xc3, 0x61, 0xe6, 0x90, 0x7d, 0x48, 0x1c, 0x0e, 0x33, 0xfb, 0x96, 0x73, 0xad, 0xfb, 0x61, + 0x21, 0xe7, 0x5b, 0xd8, 0x05, 0xef, 0x02, 0xe5, 0x33, 0x0c, 0x18, 0x09, 0x49, 0x78, 0x8c, 0xf3, + 0x18, 0x5e, 0x86, 0x15, 0x14, 0xb9, 0x9a, 0xeb, 0x1e, 0xef, 0xda, 0xcb, 0x47, 0xda, 0x32, 0xf3, + 0xe6, 0x83, 0x85, 0x1e, 0xfd, 0x23, 0xed, 0xc6, 0xb7, 0xae, 0x5d, 0xca, 0x8b, 0xfd, 0x5f, 0xca, + 0xc7, 0xb2, 0x2f, 0xe4, 0x68, 0x11, 0x26, 0x77, 0x5d, 0x9f, 0xa5, 0x2d, 0x36, 0x45, 0x51, 0xe5, + 0xc9, 0xbe, 0x6e, 0x82, 0x71, 0x1a, 0x7f, 0xf6, 0x65, 0x18, 0xbf, 0x77, 0x2d, 0xe2, 0x77, 0x8b, + 0xf0, 0x50, 0x97, 0x6d, 0xcf, 0x79, 0xbd, 0x31, 0x07, 0x1a, 0xaf, 0xef, 0x98, 0x87, 0x2a, 0xcc, + 0x6c, 0xb5, 0x3d, 0x6f, 0x9f, 0x19, 0x9e, 0x91, 0x86, 0xc4, 0x10, 0xb2, 0xa2, 0x8a, 0x39, 0xbe, + 0x9a, 0x81, 0x83, 0x33, 0x6b, 0xa2, 0xd7, 0x00, 0x05, 0x9b, 0x2c, 0x0e, 0x76, 0x23, 0x89, 0x69, + 0xc2, 0x06, 0xbe, 0x98, 0x6c, 0xc6, 0xeb, 0x1d, 0x18, 0x38, 0xa3, 0x16, 0x15, 0xfa, 0xe9, 0xa9, + 0xb4, 0xaf, 0xba, 0x95, 0x12, 0xfa, 0xb1, 0x0e, 0xc4, 0x26, 0x2e, 0xba, 0x04, 0xd3, 0xce, 0x9e, + 0xe3, 0xf2, 0x18, 0x77, 0x92, 0x00, 0x97, 0xfa, 0x95, 0xee, 0x6e, 0x31, 0x8d, 0x80, 0x3b, 0xeb, + 0xa4, 0x7c, 0x10, 0x87, 0xf2, 0x7d, 0x10, 0xbb, 0xf3, 0xc5, 0x5e, 0xaa, 0x58, 0xfb, 0x3f, 0x5a, + 0xf4, 0xf8, 0xca, 0xc8, 0x93, 0x4b, 0xc7, 0x41, 0xa9, 0x14, 0x35, 0x77, 0x40, 0x35, 0x0e, 0xcb, + 0x3a, 0x10, 0x9b, 0xb8, 0x7c, 0x41, 0x44, 0x89, 0xdd, 0xbb, 0x21, 0xba, 0x0b, 0x3f, 0x5d, 0x85, + 0x81, 0xde, 0x80, 0xe1, 0x86, 0xbb, 0xe7, 0x46, 0x41, 0x28, 0x36, 0xcb, 0x51, 0x73, 0xc3, 0x2b, + 0x3e, 0x58, 0xe1, 0x64, 0xb0, 0xa4, 0x67, 0x7f, 0xb1, 0x00, 0xe3, 0xb2, 0xc5, 0xd7, 0xdb, 0x41, + 0xec, 0x9c, 0xc0, 0xb1, 0x7c, 0xc9, 0x38, 0x96, 0x3f, 0xd6, 0xcd, 0x59, 0x99, 0x75, 0x29, 0xf7, + 0x38, 0xbe, 0x9e, 0x3a, 0x8e, 0x1f, 0xef, 0x4d, 0xaa, 0xfb, 0x31, 0xfc, 0xcf, 0x2d, 0x98, 0x36, + 0xf0, 0x4f, 0xe0, 0x34, 0x58, 0x35, 0x4f, 0x83, 0x47, 0x7a, 0x7e, 0x43, 0xce, 0x29, 0xf0, 0xb5, + 0x42, 0xaa, 0xef, 0x8c, 0xfb, 0xbf, 0x0b, 0x03, 0xdb, 0x4e, 0xd8, 0xe8, 0x16, 0xa9, 0xb5, 0xa3, + 0xd2, 0xfc, 0x65, 0x27, 0x6c, 0x70, 0x1e, 0xfe, 0xb4, 0x4a, 0xe1, 0xe7, 0x84, 0x8d, 0x9e, 0x6e, + 0x1e, 0xac, 0x29, 0xf4, 0x12, 0x0c, 0x45, 0xf5, 0xa0, 0xa5, 0xcc, 0x61, 0xcf, 0xf3, 0xf4, 0x7e, + 0xb4, 0xe4, 0xf0, 0x60, 0x0e, 0x99, 0xcd, 0xd1, 0x62, 0x2c, 0xf0, 0x67, 0x9b, 0x50, 0x52, 0x4d, + 0xdf, 0x57, 0x43, 0xff, 0x3f, 0x2c, 0xc2, 0xa9, 0x8c, 0x75, 0x81, 0x22, 0x63, 0xb4, 0x9e, 0xed, + 0x73, 0x39, 0xbd, 0xcf, 0xf1, 0x8a, 0xd8, 0x8d, 0xa5, 0x21, 0xe6, 0xbf, 0xef, 0x46, 0x6f, 0x44, + 0x24, 0xdd, 0x28, 0x2d, 0xea, 0xdd, 0x28, 0x6d, 0xec, 0xc4, 0x86, 0x9a, 0x36, 0xa4, 0x7a, 0x7a, + 0x5f, 0xe7, 0xf4, 0x4f, 0x8a, 0x30, 0x93, 0x15, 0xe3, 0x00, 0xfd, 0x7c, 0x2a, 0xef, 0xcb, 0xf3, + 0xfd, 0x46, 0x47, 0xe0, 0xc9, 0x60, 0x44, 0x50, 0xa8, 0x79, 0x33, 0x13, 0x4c, 0xcf, 0x61, 0x16, + 0x6d, 0x32, 0xbf, 0xab, 0x90, 0xe7, 0xeb, 0x91, 0x5b, 0xfc, 0x13, 0x7d, 0x77, 0x40, 0x24, 0xfa, + 0x89, 0x52, 0x7e, 0x57, 0xb2, 0xb8, 0xb7, 0xdf, 0x95, 0x6c, 0x79, 0xd6, 0x85, 0x51, 0xed, 0x6b, + 0xee, 0xeb, 0x8c, 0xef, 0xd0, 0x13, 0x45, 0xeb, 0xf7, 0x7d, 0x9d, 0xf5, 0xaf, 0x58, 0x90, 0x32, + 0x5d, 0x53, 0x2a, 0x29, 0x2b, 0x57, 0x25, 0x75, 0x1e, 0x06, 0xc2, 0xc0, 0x23, 0xe9, 0x54, 0x20, + 0x38, 0xf0, 0x08, 0x66, 0x10, 0x95, 0xaf, 0xbb, 0x98, 0x97, 0xaf, 0x9b, 0x5e, 0x8d, 0x3d, 0xb2, + 0x47, 0xa4, 0x36, 0x42, 0xf1, 0xe4, 0xab, 0xb4, 0x10, 0x73, 0x98, 0xfd, 0x8d, 0x01, 0x38, 0xdb, + 0xd5, 0xdf, 0x90, 0x5e, 0x59, 0x9a, 0x4e, 0x4c, 0x6e, 0x3b, 0xfb, 0xe9, 0x40, 0xc5, 0x97, 0x78, + 0x31, 0x96, 0x70, 0x66, 0x68, 0xcb, 0x63, 0x1d, 0xa6, 0x14, 0x78, 0x22, 0xc4, 0xa1, 0x80, 0x9a, + 0x8a, 0xa3, 0xe2, 0x71, 0x28, 0x8e, 0x2e, 0x02, 0x44, 0x91, 0xb7, 0xe2, 0x53, 0x09, 0xac, 0x21, + 0x2c, 0x78, 0x93, 0x98, 0x98, 0xb5, 0xab, 0x02, 0x82, 0x35, 0x2c, 0x54, 0x81, 0xa9, 0x56, 0x18, + 0xc4, 0x5c, 0x1f, 0x5a, 0xe1, 0xb6, 0x23, 0x83, 0xa6, 0xd3, 0x58, 0x35, 0x05, 0xc7, 0x1d, 0x35, + 0xd0, 0x0b, 0x30, 0x2a, 0x1c, 0xc9, 0xaa, 0x41, 0xe0, 0x09, 0x55, 0x8d, 0xb2, 0x44, 0xa8, 0x25, + 0x20, 0xac, 0xe3, 0x69, 0xd5, 0x98, 0x92, 0x75, 0x38, 0xb3, 0x1a, 0x57, 0xb4, 0x6a, 0x78, 0xa9, + 0x78, 0x27, 0x23, 0x7d, 0xc5, 0x3b, 0x49, 0x94, 0x57, 0xa5, 0xbe, 0xdf, 0x95, 0xa0, 0xa7, 0xba, + 0xe7, 0x37, 0x06, 0xe0, 0x94, 0x58, 0x38, 0xf7, 0x7b, 0xb9, 0xdc, 0xa7, 0xdc, 0xdf, 0x3f, 0x59, + 0x33, 0x27, 0xbd, 0x66, 0xbe, 0x59, 0x84, 0x21, 0x3e, 0x15, 0x27, 0x20, 0xc3, 0xaf, 0x0a, 0xa5, + 0x5f, 0x97, 0x88, 0x21, 0xbc, 0x2f, 0xf3, 0x15, 0x27, 0x76, 0xf8, 0xf9, 0xa5, 0xd8, 0x68, 0xa2, + 0x1e, 0x44, 0xf3, 0x06, 0xa3, 0x9d, 0x4d, 0x69, 0xb5, 0x80, 0xd3, 0xd0, 0xd8, 0xee, 0xdb, 0x00, + 0x11, 0xcb, 0x3f, 0x4d, 0x69, 0x88, 0xd8, 0x33, 0x4f, 0x76, 0x69, 0xbd, 0xa6, 0x90, 0x79, 0x1f, + 0x92, 0x25, 0xa8, 0x00, 0x58, 0xa3, 0x38, 0xfb, 0x22, 0x94, 0x14, 0x72, 0x2f, 0x15, 0xc0, 0x98, + 0x7e, 0xea, 0x7d, 0x0a, 0x26, 0x53, 0x6d, 0x1d, 0x49, 0x83, 0xf0, 0x5b, 0x16, 0x4c, 0xf2, 0x2e, + 0xaf, 0xf8, 0x7b, 0x62, 0xb3, 0xbf, 0x07, 0x33, 0x5e, 0xc6, 0xa6, 0x13, 0x33, 0xda, 0xff, 0x26, + 0x55, 0x1a, 0x83, 0x2c, 0x28, 0xce, 0x6c, 0x03, 0x5d, 0x80, 0x11, 0x9e, 0x39, 0xdf, 0xf1, 0x84, + 0x37, 0xc1, 0x18, 0xcf, 0x1d, 0xc0, 0xcb, 0xb0, 0x82, 0xda, 0xdf, 0xb3, 0x60, 0x9a, 0xf7, 0xfc, + 0x0a, 0xd9, 0x57, 0xb7, 0xe3, 0x0f, 0xb2, 0xef, 0x22, 0x35, 0x42, 0x21, 0x27, 0x35, 0x82, 0xfe, + 0x69, 0xc5, 0xae, 0x9f, 0xf6, 0xeb, 0x16, 0x88, 0x15, 0x78, 0x02, 0xf7, 0xc0, 0x9f, 0x36, 0xef, + 0x81, 0xb3, 0xf9, 0x8b, 0x3a, 0xe7, 0x02, 0xf8, 0x67, 0x16, 0x4c, 0x71, 0x84, 0xe4, 0x21, 0xf2, + 0x03, 0x9d, 0x87, 0x7e, 0xf2, 0x75, 0xa9, 0x04, 0xc9, 0xd9, 0x1f, 0x65, 0x4c, 0xd6, 0x40, 0xd7, + 0xc9, 0x6a, 0xc8, 0x0d, 0x74, 0x84, 0x3c, 0x74, 0x47, 0x8e, 0xe6, 0x69, 0xff, 0x37, 0x0b, 0x10, + 0x6f, 0xc6, 0x38, 0x97, 0xe9, 0x69, 0xc7, 0x4a, 0x35, 0x4d, 0x50, 0xc2, 0x6a, 0x14, 0x04, 0x6b, + 0x58, 0xc7, 0x32, 0x3c, 0xa9, 0xd7, 0xe4, 0x62, 0xef, 0xd7, 0xe4, 0x23, 0x8c, 0xe8, 0x5f, 0x1d, + 0x80, 0xb4, 0xe9, 0x32, 0xba, 0x09, 0x63, 0x75, 0xa7, 0xe5, 0x6c, 0xba, 0x9e, 0x1b, 0xbb, 0x24, + 0xea, 0x66, 0x86, 0xb2, 0xac, 0xe1, 0x89, 0x77, 0x42, 0xad, 0x04, 0x1b, 0x74, 0xd0, 0x3c, 0x40, + 0x2b, 0x74, 0xf7, 0x5c, 0x8f, 0x34, 0xd9, 0x55, 0x98, 0xf9, 0x2f, 0x71, 0xdb, 0x0a, 0x59, 0x8a, + 0x35, 0x8c, 0x0c, 0x7f, 0x97, 0xe2, 0xfd, 0xf3, 0x77, 0x19, 0x38, 0xa2, 0xbf, 0xcb, 0x60, 0x5f, + 0xfe, 0x2e, 0x18, 0x1e, 0x90, 0x67, 0x37, 0xfd, 0xbf, 0xea, 0x7a, 0x44, 0x08, 0x6c, 0xdc, 0xab, + 0x69, 0xf6, 0xee, 0xc1, 0xdc, 0x03, 0x38, 0x13, 0x03, 0xe7, 0xd4, 0x44, 0x9f, 0x86, 0xb2, 0xe3, + 0x79, 0xc1, 0x6d, 0x35, 0x6a, 0x2b, 0x51, 0xdd, 0xf1, 0x92, 0xe0, 0xd6, 0x23, 0x4b, 0x0f, 0xdf, + 0x3d, 0x98, 0x2b, 0x2f, 0xe6, 0xe0, 0xe0, 0xdc, 0xda, 0xf6, 0x0e, 0x9c, 0xaa, 0x91, 0x50, 0xa6, + 0xb6, 0x54, 0x5b, 0x6c, 0x03, 0x4a, 0x61, 0x8a, 0xa9, 0xf4, 0x15, 0xfa, 0x42, 0x0b, 0x3c, 0x28, + 0x99, 0x48, 0x42, 0xc8, 0xfe, 0x53, 0x0b, 0x86, 0x85, 0x39, 0xf4, 0x09, 0xc8, 0x32, 0x8b, 0x86, + 0x3e, 0x72, 0x2e, 0x9b, 0xf1, 0xb2, 0xce, 0xe4, 0x6a, 0x22, 0xd7, 0x52, 0x9a, 0xc8, 0x47, 0xba, + 0x11, 0xe9, 0xae, 0x83, 0xfc, 0xa5, 0x22, 0x4c, 0x98, 0xa6, 0xe0, 0x27, 0x30, 0x04, 0xd7, 0x60, + 0x38, 0x12, 0x7e, 0x07, 0x85, 0x7c, 0xfb, 0xd5, 0xf4, 0x24, 0x26, 0x56, 0x2e, 0xc2, 0xd3, 0x40, + 0x12, 0xc9, 0x74, 0x68, 0x28, 0xde, 0x47, 0x87, 0x86, 0x5e, 0xd6, 0xf8, 0x03, 0xc7, 0x61, 0x8d, + 0x6f, 0x7f, 0x8b, 0x31, 0x7f, 0xbd, 0xfc, 0x04, 0xe4, 0x82, 0x4b, 0xe6, 0x31, 0x61, 0x77, 0x59, + 0x59, 0xa2, 0x53, 0x39, 0xf2, 0xc1, 0x3f, 0xb2, 0x60, 0x54, 0x20, 0x9e, 0x40, 0xb7, 0x7f, 0xc6, + 0xec, 0xf6, 0x43, 0x5d, 0xba, 0x9d, 0xd3, 0xdf, 0xbf, 0x5d, 0x50, 0xfd, 0xad, 0x06, 0x61, 0xdc, + 0x57, 0xb2, 0x83, 0x11, 0x7a, 0x1b, 0x0c, 0xea, 0x81, 0x27, 0x0e, 0xf3, 0x87, 0x13, 0xc7, 0x56, + 0x5e, 0x7e, 0xa8, 0xfd, 0xc6, 0x0a, 0x9b, 0xf9, 0x5d, 0x06, 0x61, 0x2c, 0x0e, 0xd0, 0xc4, 0xef, + 0x32, 0x08, 0x63, 0xcc, 0x20, 0xa8, 0x01, 0x10, 0x3b, 0x61, 0x93, 0xc4, 0xb4, 0x4c, 0x78, 0x82, + 0xe7, 0xef, 0xc2, 0x76, 0xec, 0x7a, 0xf3, 0xae, 0x1f, 0x47, 0x71, 0x38, 0xbf, 0xe6, 0xc7, 0xd7, + 0x43, 0x7e, 0x37, 0xd0, 0x3c, 0x55, 0x15, 0x2d, 0xac, 0xd1, 0x95, 0xae, 0x52, 0xac, 0x8d, 0x41, + 0xf3, 0xa1, 0xf0, 0x9a, 0x28, 0xc7, 0x0a, 0xc3, 0x7e, 0x91, 0xf1, 0x64, 0x36, 0x40, 0x47, 0x73, + 0x22, 0xfd, 0xce, 0x88, 0x1a, 0x5a, 0xf6, 0x4a, 0x50, 0xd1, 0x5d, 0x55, 0xbb, 0xb3, 0x40, 0xda, + 0xb0, 0xee, 0x16, 0x90, 0xf8, 0xb3, 0xa2, 0x9f, 0xed, 0x78, 0x3f, 0x7e, 0xa6, 0x07, 0x2f, 0x3d, + 0xc2, 0x8b, 0x31, 0x8b, 0xbc, 0xc9, 0x22, 0x14, 0xae, 0x55, 0xd3, 0xe9, 0x28, 0x96, 0x25, 0x00, + 0x27, 0x38, 0x68, 0x41, 0xdc, 0x2c, 0xb9, 0x7e, 0xee, 0xa1, 0xd4, 0xcd, 0x52, 0x7e, 0xbe, 0x76, + 0xb5, 0x7c, 0x16, 0x46, 0x55, 0x8a, 0xaf, 0x2a, 0xcf, 0x94, 0x54, 0xe2, 0xb2, 0xd4, 0x4a, 0x52, + 0x8c, 0x75, 0x1c, 0xb4, 0x01, 0x93, 0x11, 0xcf, 0x3f, 0x26, 0xbd, 0x97, 0x84, 0xde, 0xe0, 0x49, + 0xf9, 0xee, 0x5c, 0x33, 0xc1, 0x87, 0xac, 0x88, 0x6f, 0x56, 0xe9, 0xef, 0x94, 0x26, 0x81, 0x5e, + 0x85, 0x09, 0x4f, 0xcf, 0xc3, 0x5c, 0x15, 0x6a, 0x05, 0x65, 0x96, 0x69, 0x64, 0x69, 0xae, 0xe2, + 0x14, 0x36, 0x15, 0x02, 0xf4, 0x12, 0x11, 0x0c, 0xcb, 0xf1, 0x9b, 0x24, 0x12, 0x09, 0x8a, 0x98, + 0x10, 0x70, 0x35, 0x07, 0x07, 0xe7, 0xd6, 0x46, 0x2f, 0xc1, 0x98, 0xfc, 0x7c, 0xcd, 0x9b, 0x2f, + 0x31, 0xfe, 0xd5, 0x60, 0xd8, 0xc0, 0x44, 0xb7, 0xe1, 0xb4, 0xfc, 0xbf, 0x11, 0x3a, 0x5b, 0x5b, + 0x6e, 0x5d, 0x38, 0x53, 0x8e, 0x32, 0x12, 0x8b, 0xd2, 0x13, 0x62, 0x25, 0x0b, 0xe9, 0xf0, 0x60, + 0xee, 0xbc, 0x18, 0xb5, 0x4c, 0x38, 0x9b, 0xc4, 0x6c, 0xfa, 0x68, 0x1d, 0x4e, 0x6d, 0x13, 0xc7, + 0x8b, 0xb7, 0x97, 0xb7, 0x49, 0x7d, 0x47, 0x6e, 0x22, 0xe6, 0x23, 0xa8, 0x99, 0xcc, 0x5e, 0xee, + 0x44, 0xc1, 0x59, 0xf5, 0xd0, 0x5b, 0x50, 0x6e, 0xb5, 0x37, 0x3d, 0x37, 0xda, 0xbe, 0x16, 0xc4, + 0xec, 0xa9, 0x5b, 0x65, 0xc8, 0x12, 0xce, 0x84, 0xca, 0x3f, 0xb2, 0x9a, 0x83, 0x87, 0x73, 0x29, + 0xa0, 0xf7, 0xe0, 0x74, 0x6a, 0x31, 0xf0, 0xa4, 0x6b, 0xc2, 0xe9, 0xf0, 0x89, 0xec, 0xed, 0x94, + 0x51, 0x81, 0xbb, 0xb8, 0x66, 0x82, 0x70, 0x76, 0x13, 0xef, 0xcf, 0x00, 0xe2, 0x5d, 0x5a, 0x59, + 0x93, 0x6e, 0xd0, 0x67, 0x60, 0x4c, 0x5f, 0x45, 0xe2, 0x80, 0x79, 0xac, 0x57, 0xce, 0x71, 0x21, + 0x1b, 0xa9, 0x15, 0xa5, 0xc3, 0xb0, 0x41, 0xd1, 0x26, 0x90, 0xfd, 0x7d, 0xe8, 0x2a, 0x8c, 0xd4, + 0x3d, 0x97, 0xf8, 0xf1, 0x5a, 0xb5, 0x9b, 0x13, 0xfc, 0xb2, 0xc0, 0x11, 0x03, 0x26, 0x62, 0xb1, + 0xf1, 0x32, 0xac, 0x28, 0xd8, 0xbf, 0x5b, 0x80, 0xb9, 0x1e, 0xe1, 0xf8, 0x52, 0x3a, 0x40, 0xab, + 0x2f, 0x1d, 0xe0, 0xa2, 0xcc, 0xf7, 0x75, 0x2d, 0x75, 0xff, 0x4c, 0xe5, 0xf2, 0x4a, 0x6e, 0xa1, + 0x69, 0xfc, 0xbe, 0xed, 0x26, 0x75, 0x35, 0xe2, 0x40, 0x4f, 0x8b, 0x5e, 0xe3, 0xf9, 0x60, 0xb0, + 0x7f, 0x89, 0x3e, 0x57, 0x15, 0x6c, 0x7f, 0xab, 0x00, 0xa7, 0xd5, 0x10, 0xfe, 0xf8, 0x0e, 0xdc, + 0x8d, 0xce, 0x81, 0x3b, 0x06, 0x45, 0xba, 0x7d, 0x1d, 0x86, 0x6a, 0xfb, 0x51, 0x3d, 0xf6, 0xfa, + 0x10, 0x80, 0x1e, 0x35, 0x36, 0x68, 0x72, 0x4c, 0xb3, 0x94, 0x9d, 0x62, 0xbf, 0xda, 0x7f, 0xc9, + 0x82, 0xc9, 0x8d, 0xe5, 0x6a, 0x2d, 0xa8, 0xef, 0x90, 0x78, 0x91, 0xab, 0x89, 0xb0, 0x90, 0x7f, + 0xac, 0x7b, 0x94, 0x6b, 0xb2, 0x24, 0xa6, 0xf3, 0x30, 0xb0, 0x1d, 0x44, 0x71, 0xfa, 0x95, 0xed, + 0x72, 0x10, 0xc5, 0x98, 0x41, 0xec, 0x3f, 0xb2, 0x60, 0x90, 0x65, 0xa9, 0xec, 0x95, 0xcd, 0xb4, + 0x9f, 0xef, 0x42, 0x2f, 0xc0, 0x10, 0xd9, 0xda, 0x22, 0xf5, 0x58, 0xcc, 0xaa, 0xf4, 0xae, 0x1b, + 0x5a, 0x61, 0xa5, 0xf4, 0xd0, 0x67, 0x8d, 0xf1, 0xbf, 0x58, 0x20, 0xa3, 0x5b, 0x50, 0x8a, 0xdd, + 0x5d, 0xb2, 0xd8, 0x68, 0x88, 0x77, 0x8a, 0x7b, 0x70, 0x66, 0xdc, 0x90, 0x04, 0x70, 0x42, 0xcb, + 0xfe, 0x52, 0x01, 0x20, 0xf1, 0xc0, 0xed, 0xf5, 0x89, 0x4b, 0x1d, 0x09, 0x5b, 0x1f, 0xcb, 0x48, + 0xd8, 0x8a, 0x12, 0x82, 0x19, 0xe9, 0x5a, 0xd5, 0x30, 0x15, 0xfb, 0x1a, 0xa6, 0x81, 0xa3, 0x0c, + 0xd3, 0x32, 0x4c, 0x27, 0x1e, 0xc4, 0x66, 0x38, 0x05, 0x16, 0x8a, 0x7b, 0x23, 0x0d, 0xc4, 0x9d, + 0xf8, 0xf6, 0x17, 0x2c, 0x10, 0xee, 0x06, 0x7d, 0x2c, 0xe6, 0x37, 0x65, 0x6e, 0x45, 0x23, 0x3e, + 0xe8, 0xf9, 0x7c, 0xff, 0x0b, 0x11, 0x15, 0x54, 0x1d, 0x1e, 0x46, 0x2c, 0x50, 0x83, 0x96, 0xfd, + 0xd7, 0x0b, 0x30, 0xca, 0xc1, 0x2c, 0xf6, 0x64, 0x1f, 0xbd, 0x39, 0x52, 0x20, 0x77, 0x96, 0x76, + 0x90, 0x12, 0x56, 0xf1, 0xbe, 0xf5, 0xb4, 0x83, 0x12, 0x80, 0x13, 0x1c, 0xf4, 0x04, 0x0c, 0x47, + 0xed, 0x4d, 0x86, 0x9e, 0x32, 0x6f, 0xaf, 0xf1, 0x62, 0x2c, 0xe1, 0xe8, 0xd3, 0x30, 0xc5, 0xeb, + 0x85, 0x41, 0xcb, 0x69, 0x72, 0xdd, 0xce, 0xa0, 0xf2, 0x37, 0x9b, 0x5a, 0x4f, 0xc1, 0x0e, 0x0f, + 0xe6, 0x66, 0xd2, 0x65, 0x4c, 0x2b, 0xd8, 0x41, 0x85, 0xae, 0xd8, 0xa9, 0xb4, 0x2b, 0x0b, 0xba, + 0x0c, 0x43, 0x9c, 0x19, 0x09, 0xe6, 0xd0, 0xe5, 0xad, 0x47, 0x73, 0x80, 0x61, 0x31, 0xae, 0x05, + 0x3f, 0x13, 0xf5, 0xd1, 0x5b, 0x30, 0xda, 0x08, 0x6e, 0xfb, 0xb7, 0x9d, 0xb0, 0xb1, 0x58, 0x5d, + 0x13, 0xf3, 0x99, 0x29, 0xd3, 0x54, 0x12, 0x34, 0xdd, 0xa9, 0x86, 0xe9, 0x35, 0x13, 0x10, 0xd6, + 0xc9, 0xa1, 0x0d, 0x16, 0x2e, 0x89, 0xe7, 0x05, 0xef, 0x66, 0x0f, 0xa6, 0x52, 0x89, 0x6b, 0x94, + 0xc7, 0x45, 0x4c, 0x25, 0x91, 0x55, 0x3c, 0x21, 0x64, 0x7f, 0xee, 0x14, 0x18, 0xeb, 0xc8, 0x08, + 0xe4, 0x6e, 0x1d, 0x53, 0x20, 0x77, 0x0c, 0x23, 0x64, 0xb7, 0x15, 0xef, 0x57, 0xdc, 0xb0, 0x5b, + 0x06, 0x8f, 0x15, 0x81, 0xd3, 0x49, 0x53, 0x42, 0xb0, 0xa2, 0x93, 0x1d, 0x6d, 0xbf, 0xf8, 0x01, + 0x46, 0xdb, 0x1f, 0x38, 0xc1, 0x68, 0xfb, 0xd7, 0x60, 0xb8, 0xe9, 0xc6, 0x98, 0xb4, 0x02, 0x71, + 0x10, 0x67, 0xae, 0x84, 0x4b, 0x1c, 0xa5, 0x33, 0xfe, 0xb3, 0x00, 0x60, 0x49, 0x04, 0xbd, 0xa6, + 0xf6, 0xc0, 0x50, 0xbe, 0x1c, 0xdb, 0xf9, 0x2c, 0x90, 0xb9, 0x0b, 0x44, 0x74, 0xfd, 0xe1, 0x7b, + 0x8d, 0xae, 0xaf, 0x62, 0xe2, 0x8f, 0xbc, 0xbf, 0x98, 0xf8, 0x46, 0xf6, 0x80, 0xd2, 0xf1, 0x65, + 0x0f, 0xf8, 0x82, 0x05, 0xa7, 0x5b, 0x59, 0x89, 0x34, 0x44, 0x74, 0xfb, 0x17, 0xfa, 0xce, 0x14, + 0x62, 0x34, 0xc8, 0x2e, 0x34, 0x99, 0x68, 0x38, 0xbb, 0x39, 0x3a, 0xd0, 0xe1, 0x66, 0x43, 0x84, + 0xc4, 0x7f, 0x34, 0x27, 0x0d, 0x41, 0x97, 0xe4, 0x03, 0xf7, 0x27, 0x0c, 0x7e, 0x92, 0x8a, 0x60, + 0xfc, 0x7d, 0xa7, 0x22, 0x78, 0x4d, 0xa5, 0x22, 0xe8, 0x12, 0x94, 0x86, 0x27, 0x1a, 0xe8, 0x99, + 0x80, 0x40, 0x4b, 0x22, 0x30, 0x79, 0x1c, 0x49, 0x04, 0xde, 0x36, 0x99, 0x3d, 0x8f, 0x68, 0xff, + 0x54, 0x0f, 0x66, 0x6f, 0xd0, 0xed, 0xce, 0xee, 0x79, 0xc2, 0x84, 0xe9, 0x7b, 0x4a, 0x98, 0x70, + 0x53, 0x4f, 0x45, 0x80, 0x7a, 0xc4, 0xda, 0xa7, 0x48, 0x7d, 0x26, 0x20, 0xb8, 0xa9, 0x1f, 0x41, + 0xa7, 0xf2, 0xe9, 0xaa, 0x93, 0xa6, 0x93, 0x6e, 0xd6, 0x21, 0xd4, 0x99, 0xd8, 0x60, 0xe6, 0x64, + 0x12, 0x1b, 0x9c, 0x3e, 0xf6, 0xc4, 0x06, 0x0f, 0x9c, 0x40, 0x62, 0x83, 0x07, 0x3f, 0xd0, 0xc4, + 0x06, 0xe5, 0xfb, 0x90, 0xd8, 0xe0, 0x5a, 0x92, 0xd8, 0xe0, 0x4c, 0xfe, 0x94, 0x64, 0xd8, 0x8b, + 0xe5, 0xa4, 0x33, 0xb8, 0x09, 0xa5, 0x96, 0xf4, 0x76, 0x2e, 0xcf, 0xe6, 0x4f, 0x49, 0xa6, 0x4b, + 0x34, 0x9f, 0x12, 0x05, 0xc2, 0x09, 0x29, 0x4a, 0x37, 0x49, 0x6f, 0xf0, 0x50, 0x17, 0x95, 0x55, + 0x96, 0x32, 0xa0, 0x4b, 0x52, 0x83, 0xbf, 0x5c, 0x80, 0x73, 0xdd, 0xd7, 0x75, 0xa2, 0x49, 0xa8, + 0x26, 0x9a, 0xef, 0x94, 0x26, 0x81, 0x09, 0x5d, 0x1a, 0x56, 0xdf, 0x21, 0x21, 0x2e, 0xc1, 0xb4, + 0x32, 0x14, 0xf3, 0xdc, 0xfa, 0xbe, 0x96, 0x0d, 0x4d, 0x39, 0xad, 0xd4, 0xd2, 0x08, 0xb8, 0xb3, + 0x0e, 0x5a, 0x84, 0x49, 0xa3, 0x70, 0xad, 0x22, 0x84, 0x7d, 0xa5, 0xba, 0xa8, 0x99, 0x60, 0x9c, + 0xc6, 0xb7, 0xbf, 0x66, 0xc1, 0x83, 0x39, 0x31, 0x8e, 0xfb, 0x8e, 0x78, 0xb0, 0x05, 0x93, 0x2d, + 0xb3, 0x6a, 0x8f, 0xc0, 0x28, 0x46, 0x24, 0x65, 0xd5, 0xd7, 0x14, 0x00, 0xa7, 0x89, 0x2e, 0x5d, + 0xf8, 0xf6, 0xf7, 0xcf, 0x7d, 0xe4, 0x0f, 0xbe, 0x7f, 0xee, 0x23, 0xdf, 0xfb, 0xfe, 0xb9, 0x8f, + 0xfc, 0xf9, 0xbb, 0xe7, 0xac, 0x6f, 0xdf, 0x3d, 0x67, 0xfd, 0xc1, 0xdd, 0x73, 0xd6, 0xf7, 0xee, + 0x9e, 0xb3, 0xfe, 0xf8, 0xee, 0x39, 0xeb, 0x4b, 0x3f, 0x38, 0xf7, 0x91, 0x37, 0x0b, 0x7b, 0xcf, + 0xfe, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xea, 0xa0, 0xb7, 0x43, 0x3c, 0xd5, 0x00, 0x00, } diff --git a/staging/src/k8s.io/api/core/v1/generated.proto b/staging/src/k8s.io/api/core/v1/generated.proto index 047d83e2f2a..5936210289d 100644 --- a/staging/src/k8s.io/api/core/v1/generated.proto +++ b/staging/src/k8s.io/api/core/v1/generated.proto @@ -2342,7 +2342,7 @@ message PersistentVolumeSource { // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. // +optional - optional ScaleIOVolumeSource scaleIO = 19; + optional ScaleIOPersistentVolumeSource scaleIO = 19; // Local represents directly-attached storage with node affinity // +optional @@ -3491,6 +3491,50 @@ message SELinuxOptions { optional string level = 4; } +// ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume +message ScaleIOPersistentVolumeSource { + // The host address of the ScaleIO API Gateway. + optional string gateway = 1; + + // The name of the storage system as configured in ScaleIO. + optional string system = 2; + + // SecretRef references to the secret for ScaleIO user and other + // sensitive information. If this is not provided, Login operation will fail. + optional SecretReference secretRef = 3; + + // Flag to enable/disable SSL communication with Gateway, default false + // +optional + optional bool sslEnabled = 4; + + // The name of the ScaleIO Protection Domain for the configured storage. + // +optional + optional string protectionDomain = 5; + + // The ScaleIO Storage Pool associated with the protection domain. + // +optional + optional string storagePool = 6; + + // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. + // +optional + optional string storageMode = 7; + + // The name of a volume already created in the ScaleIO system + // that is associated with this volume source. + optional string volumeName = 8; + + // Filesystem type to mount. + // Must be a filesystem type supported by the host operating system. + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + // +optional + optional string fsType = 9; + + // Defaults to false (read/write). ReadOnly here will force + // the ReadOnly setting in VolumeMounts. + // +optional + optional bool readOnly = 10; +} + // ScaleIOVolumeSource represents a persistent ScaleIO volume message ScaleIOVolumeSource { // The host address of the ScaleIO API Gateway. @@ -3507,15 +3551,15 @@ message ScaleIOVolumeSource { // +optional optional bool sslEnabled = 4; - // The name of the Protection Domain for the configured storage (defaults to "default"). + // The name of the ScaleIO Protection Domain for the configured storage. // +optional optional string protectionDomain = 5; - // The Storage Pool associated with the protection domain (defaults to "default"). + // The ScaleIO Storage Pool associated with the protection domain. // +optional optional string storagePool = 6; - // Indicates whether the storage for a volume should be thick or thin (defaults to "thin"). + // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. // +optional optional string storageMode = 7; diff --git a/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go b/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go index b74588bd9bd..aa069d41be0 100644 --- a/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go +++ b/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go @@ -1748,15 +1748,33 @@ func (SELinuxOptions) SwaggerDoc() map[string]string { return map_SELinuxOptions } +var map_ScaleIOPersistentVolumeSource = map[string]string{ + "": "ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume", + "gateway": "The host address of the ScaleIO API Gateway.", + "system": "The name of the storage system as configured in ScaleIO.", + "secretRef": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.", + "sslEnabled": "Flag to enable/disable SSL communication with Gateway, default false", + "protectionDomain": "The name of the ScaleIO Protection Domain for the configured storage.", + "storagePool": "The ScaleIO Storage Pool associated with the protection domain.", + "storageMode": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.", + "volumeName": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", +} + +func (ScaleIOPersistentVolumeSource) SwaggerDoc() map[string]string { + return map_ScaleIOPersistentVolumeSource +} + var map_ScaleIOVolumeSource = map[string]string{ "": "ScaleIOVolumeSource represents a persistent ScaleIO volume", "gateway": "The host address of the ScaleIO API Gateway.", "system": "The name of the storage system as configured in ScaleIO.", "secretRef": "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail.", "sslEnabled": "Flag to enable/disable SSL communication with Gateway, default false", - "protectionDomain": "The name of the Protection Domain for the configured storage (defaults to \"default\").", - "storagePool": "The Storage Pool associated with the protection domain (defaults to \"default\").", - "storageMode": "Indicates whether the storage for a volume should be thick or thin (defaults to \"thin\").", + "protectionDomain": "The name of the ScaleIO Protection Domain for the configured storage.", + "storagePool": "The ScaleIO Storage Pool associated with the protection domain.", + "storageMode": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.", "volumeName": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", diff --git a/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go index f1e27a98f4d..8263ba0cc8a 100644 --- a/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go +++ b/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go @@ -631,6 +631,10 @@ func RegisterDeepCopies(scheme *runtime.Scheme) error { in.(*SELinuxOptions).DeepCopyInto(out.(*SELinuxOptions)) return nil }, InType: reflect.TypeOf(&SELinuxOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*ScaleIOPersistentVolumeSource).DeepCopyInto(out.(*ScaleIOPersistentVolumeSource)) + return nil + }, InType: reflect.TypeOf(&ScaleIOPersistentVolumeSource{})}, conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { in.(*ScaleIOVolumeSource).DeepCopyInto(out.(*ScaleIOVolumeSource)) return nil @@ -3854,7 +3858,7 @@ func (in *PersistentVolumeSource) DeepCopyInto(out *PersistentVolumeSource) { if *in == nil { *out = nil } else { - *out = new(ScaleIOVolumeSource) + *out = new(ScaleIOPersistentVolumeSource) (*in).DeepCopyInto(*out) } } @@ -5225,6 +5229,31 @@ func (in *SELinuxOptions) DeepCopy() *SELinuxOptions { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScaleIOPersistentVolumeSource) DeepCopyInto(out *ScaleIOPersistentVolumeSource) { + *out = *in + if in.SecretRef != nil { + in, out := &in.SecretRef, &out.SecretRef + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleIOPersistentVolumeSource. +func (in *ScaleIOPersistentVolumeSource) DeepCopy() *ScaleIOPersistentVolumeSource { + if in == nil { + return nil + } + out := new(ScaleIOPersistentVolumeSource) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ScaleIOVolumeSource) DeepCopyInto(out *ScaleIOVolumeSource) { *out = *in