From 31493d3c3f8acbf5dd4202f181f36596773cd35b Mon Sep 17 00:00:00 2001 From: Garett MacGowan Date: Sat, 14 Sep 2024 16:02:30 -0400 Subject: [PATCH 001/106] chore!: remove legacy patch pods fallback (#13100) Signed-off-by: Anton Gilgur Signed-off-by: Garett MacGowan Co-authored-by: Anton Gilgur Co-authored-by: Alan Clucas --- docs/upgrading.md | 4 ++ docs/workflow-templates.md | 2 - .../arguments-parameters-from-configmap.yaml | 1 - ...onfigmap-referenced-as-local-variable.yaml | 1 - .../global-parameters-from-configmap.yaml | 1 - .../workflow-controller-rolebinding.yaml | 4 +- .../base/workflow-default-rolebinding.yaml | 11 ----- test/e2e/manifests/minimal/kustomization.yaml | 1 + test/e2e/manifests/mixins/get-cm-rbac.yaml | 49 +++++++++++++++++++ test/e2e/resource_template_test.go | 6 --- .../workflow_configmap_substitution_test.go | 1 - test/e2e/workflow_inputs_orverridable_test.go | 4 -- test/e2e/workflow_test.go | 4 +- workflow/common/common.go | 6 --- workflow/controller/controller_test.go | 47 ++++++++++++------ workflow/controller/exit_handler_test.go | 5 +- workflow/controller/operator.go | 29 ----------- .../controller/operator_concurrency_test.go | 2 +- workflow/controller/operator_test.go | 28 ++++------- .../controller/operator_wfdefault_test.go | 6 +-- workflow/controller/workflowpod.go | 2 +- workflow/executor/executor.go | 24 ++------- workflow/util/merge_test.go | 6 +-- workflow/validate/validate_dag_test.go | 2 +- workflow/validate/validate_test.go | 3 +- 25 files changed, 115 insertions(+), 134 deletions(-) delete mode 100644 manifests/quick-start/base/workflow-default-rolebinding.yaml create mode 100644 test/e2e/manifests/mixins/get-cm-rbac.yaml diff --git a/docs/upgrading.md b/docs/upgrading.md index 6ddcf6e55499..59b6fd03fc4f 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -15,6 +15,10 @@ Previously it was `--basehref` (no dash in between) and `ARGO_BASEHREF` (no unde `ALLOWED_LINK_PROTOCOL` and `BASE_HREF` have been removed as redundant. Use `ARGO_ALLOWED_LINK_PROTOCOL` and `ARGO_BASE_HREF` instead. +### Legacy insecure pod patch fallback removed. ([#13100](https://github.com/argoproj/argo-workflows/pull/13100)) + +For the Emissary executor to work properly, you must set up RBAC. See [workflow RBAC](workflow-rbac.md) + ### Metrics changes You can now retrieve metrics using the OpenTelemetry Protocol using the [OpenTelemetry collector](https://opentelemetry.io/docs/collector/), and this is the recommended mechanism. diff --git a/docs/workflow-templates.md b/docs/workflow-templates.md index 66de9c71dd21..bb52956fab80 100644 --- a/docs/workflow-templates.md +++ b/docs/workflow-templates.md @@ -138,7 +138,6 @@ kind: WorkflowTemplate metadata: name: hello-world-template-global-arg spec: - serviceAccountName: argo templates: - name: hello-world container: @@ -151,7 +150,6 @@ kind: Workflow metadata: generateName: hello-world-wf-global-arg- spec: - serviceAccountName: argo entrypoint: print-message arguments: parameters: diff --git a/examples/arguments-parameters-from-configmap.yaml b/examples/arguments-parameters-from-configmap.yaml index 39339ff41b7f..7e03b9bf70e4 100644 --- a/examples/arguments-parameters-from-configmap.yaml +++ b/examples/arguments-parameters-from-configmap.yaml @@ -11,7 +11,6 @@ metadata: workflows.argoproj.io/verify.py: | assert status["phase"] == "Succeeded" spec: - serviceAccountName: argo entrypoint: print-message-from-configmap templates: diff --git a/examples/global-parameters-from-configmap-referenced-as-local-variable.yaml b/examples/global-parameters-from-configmap-referenced-as-local-variable.yaml index 701ebd1c1caa..72e25bd8918f 100644 --- a/examples/global-parameters-from-configmap-referenced-as-local-variable.yaml +++ b/examples/global-parameters-from-configmap-referenced-as-local-variable.yaml @@ -9,7 +9,6 @@ metadata: This example demonstrates how a global parameter from a ConfigMap can be referenced as a template local variable. Note that the "simple-parameters" ConfigMap (defined in `examples/configmaps/simple-parameters-configmap.yaml`) needs to be created first before submitting this workflow. spec: - serviceAccountName: argo entrypoint: print-message arguments: parameters: diff --git a/examples/global-parameters-from-configmap.yaml b/examples/global-parameters-from-configmap.yaml index 4b8dc78114a2..349cbb83a405 100644 --- a/examples/global-parameters-from-configmap.yaml +++ b/examples/global-parameters-from-configmap.yaml @@ -9,7 +9,6 @@ metadata: This example demonstrates loading global parameter values from a ConfigMap. Note that the "simple-parameters" ConfigMap (defined in `examples/configmaps/simple-parameters-configmap.yaml`) needs to be created first before submitting this workflow. spec: - serviceAccountName: argo entrypoint: print-message # Parameters can also be passed via configmap reference. arguments: diff --git a/manifests/namespace-install/workflow-controller-rbac/workflow-controller-rolebinding.yaml b/manifests/namespace-install/workflow-controller-rbac/workflow-controller-rolebinding.yaml index f8ac7ec0d606..720de37c553c 100644 --- a/manifests/namespace-install/workflow-controller-rbac/workflow-controller-rolebinding.yaml +++ b/manifests/namespace-install/workflow-controller-rbac/workflow-controller-rolebinding.yaml @@ -7,6 +7,6 @@ roleRef: kind: Role name: argo-role subjects: -- kind: ServiceAccount - name: argo + - kind: ServiceAccount + name: argo diff --git a/manifests/quick-start/base/workflow-default-rolebinding.yaml b/manifests/quick-start/base/workflow-default-rolebinding.yaml deleted file mode 100644 index cb930cfb27a7..000000000000 --- a/manifests/quick-start/base/workflow-default-rolebinding.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: workflow-default-binding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: workflow -subjects: - - kind: ServiceAccount - name: default diff --git a/test/e2e/manifests/minimal/kustomization.yaml b/test/e2e/manifests/minimal/kustomization.yaml index 46ffc3d94741..70e6d3618a2e 100644 --- a/test/e2e/manifests/minimal/kustomization.yaml +++ b/test/e2e/manifests/minimal/kustomization.yaml @@ -9,6 +9,7 @@ resources: - ../mixins/argo-workflows-agent-ca-certificates.yaml - ../mixins/argo-server.service-account-token-secret.yaml - ../mixins/argo.service-account-token-secret.yaml +- ../mixins/get-cm-rbac.yaml patches: - path: ../mixins/argo-server-deployment.yaml diff --git a/test/e2e/manifests/mixins/get-cm-rbac.yaml b/test/e2e/manifests/mixins/get-cm-rbac.yaml new file mode 100644 index 000000000000..f22befaa898c --- /dev/null +++ b/test/e2e/manifests/mixins/get-cm-rbac.yaml @@ -0,0 +1,49 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: get-cm +--- +apiVersion: v1 +kind: Secret +metadata: + name: get-cm.service-account-token + annotations: + kubernetes.io/service-account.name: get-cm +type: kubernetes.io/service-account-token +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: get-cm +rules: +- apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: get-cm-get-cm +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: get-cm +subjects: + - kind: ServiceAccount + name: get-cm +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: executor-get-cm +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: executor +subjects: +- kind: ServiceAccount + name: get-cm \ No newline at end of file diff --git a/test/e2e/resource_template_test.go b/test/e2e/resource_template_test.go index f2f319920be0..4582bde44d63 100644 --- a/test/e2e/resource_template_test.go +++ b/test/e2e/resource_template_test.go @@ -64,11 +64,9 @@ kind: Workflow metadata: generateName: k8s-resource-tmpl-with-pod- spec: - serviceAccount: argo entrypoint: main templates: - name: main - serviceAccountName: argo resource: action: create setOwnerReference: true @@ -80,7 +78,6 @@ spec: metadata: generateName: k8s-pod-resource- spec: - serviceAccountName: argo containers: - name: argosay-container image: argoproj/argosay:v2 @@ -104,11 +101,9 @@ kind: Workflow metadata: generateName: k8s-resource-tmpl-with-artifact- spec: - serviceAccount: argo entrypoint: main templates: - name: main - serviceAccountName: argo inputs: artifacts: - name: manifest @@ -120,7 +115,6 @@ spec: metadata: generateName: k8s-pod-resource- spec: - serviceAccountName: argo containers: - name: argosay-container image: argoproj/argosay:v2 diff --git a/test/e2e/workflow_configmap_substitution_test.go b/test/e2e/workflow_configmap_substitution_test.go index cf0dd6e8a0f9..25655bebfbde 100644 --- a/test/e2e/workflow_configmap_substitution_test.go +++ b/test/e2e/workflow_configmap_substitution_test.go @@ -194,7 +194,6 @@ metadata: label: workflows.argoproj.io/test: "true" spec: - serviceAccountName: argo entrypoint: whalesay arguments: parameters: diff --git a/test/e2e/workflow_inputs_orverridable_test.go b/test/e2e/workflow_inputs_orverridable_test.go index 3005bc4e4690..a5a99f9505ab 100644 --- a/test/e2e/workflow_inputs_orverridable_test.go +++ b/test/e2e/workflow_inputs_orverridable_test.go @@ -27,7 +27,6 @@ metadata: label: workflows.argoproj.io/test: "true" spec: - serviceAccountName: argo entrypoint: whalesay arguments: parameters: @@ -73,7 +72,6 @@ metadata: label: workflows.argoproj.io/test: "true" spec: - serviceAccountName: argo entrypoint: whalesay arguments: parameters: @@ -127,7 +125,6 @@ metadata: label: workflows.argoproj.io/test: "true" spec: - serviceAccountName: argo entrypoint: whalesay arguments: parameters: @@ -164,7 +161,6 @@ metadata: label: workflows.argoproj.io/test: "true" spec: - serviceAccountName: argo entrypoint: whalesay arguments: parameters: diff --git a/test/e2e/workflow_test.go b/test/e2e/workflow_test.go index 6d988b02d044..76a0b6dc6a2b 100644 --- a/test/e2e/workflow_test.go +++ b/test/e2e/workflow_test.go @@ -33,7 +33,7 @@ spec: serviceAccountName: argo automountServiceAccountToken: false executor: - serviceAccountName: argo + serviceAccountName: get-cm entrypoint: main templates: - name: main @@ -67,7 +67,7 @@ spec: serviceAccountName: argo automountServiceAccountToken: false executor: - serviceAccountName: argo + serviceAccountName: get-cm entrypoint: main templates: - name: main diff --git a/workflow/common/common.go b/workflow/common/common.go index b4f174263eaa..8c353b3219ae 100644 --- a/workflow/common/common.go +++ b/workflow/common/common.go @@ -34,8 +34,6 @@ const ( AnnotationKeyRBACRule = workflow.WorkflowFullName + "/rbac-rule" AnnotationKeyRBACRulePrecedence = workflow.WorkflowFullName + "/rbac-rule-precedence" - // AnnotationKeyOutputs is the pod metadata annotation key containing the container outputs - AnnotationKeyOutputs = workflow.WorkflowFullName + "/outputs" // AnnotationKeyCronWfScheduledTime is the workflow metadata annotation key containing the time when the workflow // was scheduled to run by CronWorkflow. AnnotationKeyCronWfScheduledTime = workflow.WorkflowFullName + "/scheduled-time" @@ -51,10 +49,6 @@ const ( // AnnotationKeyProgress is N/M progress for the node AnnotationKeyProgress = workflow.WorkflowFullName + "/progress" - // AnnotationKeyReportOutputsCompleted is an annotation on a workflow pod indicating outputs have completed. - // Only used as a backup in case LabelKeyReportOutputsCompleted can't be added to WorkflowTaskResult. - AnnotationKeyReportOutputsCompleted = workflow.WorkflowFullName + "/report-outputs-completed" - // AnnotationKeyArtifactGCStrategy is listed as an annotation on the Artifact GC Pod to identify // the strategy whose artifacts are being deleted AnnotationKeyArtifactGCStrategy = workflow.WorkflowFullName + "/artifact-gc-strategy" diff --git a/workflow/controller/controller_test.go b/workflow/controller/controller_test.go index e7c018d92857..3032bfcec9b7 100644 --- a/workflow/controller/controller_test.go +++ b/workflow/controller/controller_test.go @@ -27,6 +27,7 @@ import ( "github.com/argoproj/argo-workflows/v3/config" "github.com/argoproj/argo-workflows/v3/persist/sqldb" + "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow" wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" fakewfclientset "github.com/argoproj/argo-workflows/v3/pkg/client/clientset/versioned/fake" "github.com/argoproj/argo-workflows/v3/pkg/client/clientset/versioned/scheme" @@ -447,20 +448,42 @@ func listPods(woc *wfOperationCtx) (*apiv1.PodList, error) { return woc.controller.kubeclientset.CoreV1().Pods(woc.wf.Namespace).List(context.Background(), metav1.ListOptions{}) } -type with func(pod *apiv1.Pod) +type with func(pod *apiv1.Pod, woc *wfOperationCtx) -func withOutputs(v interface{}) with { - switch x := v.(type) { - case string: - return withAnnotation(common.AnnotationKeyOutputs, x) - default: - return withOutputs(wfv1.MustMarshallJSON(x)) +func withOutputs(outputs wfv1.Outputs) with { + return func(pod *apiv1.Pod, woc *wfOperationCtx) { + nodeId := woc.nodeID(pod) + taskResult := &wfv1.WorkflowTaskResult{ + TypeMeta: metav1.TypeMeta{ + APIVersion: workflow.APIVersion, + Kind: workflow.WorkflowTaskResultKind, + }, + ObjectMeta: metav1.ObjectMeta{ + Name: nodeId, + Labels: map[string]string{ + common.LabelKeyWorkflow: woc.wf.Name, + common.LabelKeyReportOutputsCompleted: "true", + }, + }, + NodeResult: wfv1.NodeResult{ + Phase: wfv1.NodeSucceeded, + Outputs: &outputs, + }, + } + _, err := woc.controller.wfclientset.ArgoprojV1alpha1().WorkflowTaskResults(woc.wf.Namespace). + Create( + context.Background(), + taskResult, + metav1.CreateOptions{}, + ) + if err != nil { + panic(err) + } } } -func withProgress(v string) with { return withAnnotation(common.AnnotationKeyProgress, v) } func withExitCode(v int32) with { - return func(pod *apiv1.Pod) { + return func(pod *apiv1.Pod, _ *wfOperationCtx) { for _, c := range pod.Spec.Containers { pod.Status.ContainerStatuses = append(pod.Status.ContainerStatuses, apiv1.ContainerStatus{ Name: c.Name, @@ -474,10 +497,6 @@ func withExitCode(v int32) with { } } -func withAnnotation(key, val string) with { - return func(pod *apiv1.Pod) { pod.Annotations[key] = val } -} - // createRunningPods creates the pods that are marked as running in a given test so that they can be accessed by the // pod assessor func createRunningPods(ctx context.Context, woc *wfOperationCtx) { @@ -532,7 +551,7 @@ func makePodsPhase(ctx context.Context, woc *wfOperationCtx, phase apiv1.PodPhas pod.Status.Message = "Pod failed" } for _, w := range with { - w(&pod) + w(&pod, woc) } updatedPod, err := podcs.Update(ctx, &pod, metav1.UpdateOptions{}) if err != nil { diff --git a/workflow/controller/exit_handler_test.go b/workflow/controller/exit_handler_test.go index b55923c95d3d..5091fae33a4c 100644 --- a/workflow/controller/exit_handler_test.go +++ b/workflow/controller/exit_handler_test.go @@ -9,7 +9,6 @@ import ( "github.com/stretchr/testify/require" apiv1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/utils/pointer" wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" ) @@ -357,7 +356,7 @@ func TestStepsTmplOnExit(t *testing.T) { woc := newWorkflowOperationCtx(wf, controller) woc.operate(ctx) assert.Equal(t, wfv1.WorkflowRunning, woc.wf.Status.Phase) - makePodsPhase(ctx, woc, apiv1.PodSucceeded, withOutputs(wfv1.Outputs{Result: pointer.String("ok"), Parameters: []wfv1.Parameter{{}}})) + makePodsPhase(ctx, woc, apiv1.PodSucceeded) woc1 := newWorkflowOperationCtx(woc.wf, controller) woc1.operate(ctx) assert.Equal(t, wfv1.WorkflowRunning, woc1.wf.Status.Phase) @@ -462,7 +461,7 @@ func TestDAGOnExit(t *testing.T) { woc := newWorkflowOperationCtx(wf, controller) woc.operate(ctx) assert.Equal(t, wfv1.WorkflowRunning, woc.wf.Status.Phase) - makePodsPhase(ctx, woc, apiv1.PodSucceeded, withOutputs(wfv1.Outputs{Parameters: []wfv1.Parameter{{}}})) + makePodsPhase(ctx, woc, apiv1.PodSucceeded) woc1 := newWorkflowOperationCtx(woc.wf, controller) woc1.operate(ctx) assert.Equal(t, wfv1.WorkflowRunning, woc1.wf.Status.Phase) diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index 2ca55ca833a3..42709564ddd7 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -1427,35 +1427,6 @@ func (woc *wfOperationCtx) assessNodeStatus(ctx context.Context, pod *apiv1.Pod, new.PodIP = pod.Status.PodIP } - // If `AnnotationKeyReportOutputsCompleted` is set, it means RBAC prevented WorkflowTaskResult from being written. - if x, ok := pod.Annotations[common.AnnotationKeyReportOutputsCompleted]; ok { - woc.log.Warn("workflow uses legacy/insecure pod patch, see https://argo-workflows.readthedocs.io/en/latest/workflow-rbac/") - resultName := woc.nodeID(pod) - if x == "true" { - woc.wf.Status.MarkTaskResultComplete(resultName) - } else { - woc.wf.Status.MarkTaskResultIncomplete(resultName) - } - - // Get node outputs from pod annotations instead if RBAC prevented WorkflowTaskResult from being written. - if x, ok = pod.Annotations[common.AnnotationKeyOutputs]; ok { - if new.Outputs == nil { - new.Outputs = &wfv1.Outputs{} - } - if err := json.Unmarshal([]byte(x), new.Outputs); err != nil { - new.Phase = wfv1.NodeError - new.Message = err.Error() - } - } - - // Get node progress from pod annotations instead if RBAC prevented WorkflowTaskResult from being written. - if x, ok = pod.Annotations[common.AnnotationKeyProgress]; ok { - if p, ok := wfv1.ParseProgress(x); ok { - new.Progress = p - } - } - } - new.HostNodeName = pod.Spec.NodeName if !new.Progress.IsValid() { diff --git a/workflow/controller/operator_concurrency_test.go b/workflow/controller/operator_concurrency_test.go index a0e842516b7a..a7d52a0218c5 100644 --- a/workflow/controller/operator_concurrency_test.go +++ b/workflow/controller/operator_concurrency_test.go @@ -1118,7 +1118,7 @@ spec: assert.True(t, job1AcquiredLock) // Make job-1's pod succeed - makePodsPhase(ctx, woc, apiv1.PodSucceeded, func(pod *apiv1.Pod) { + makePodsPhase(ctx, woc, apiv1.PodSucceeded, func(pod *apiv1.Pod, _ *wfOperationCtx) { if pod.ObjectMeta.Name == "job-1" { pod.Status.Phase = apiv1.PodSucceeded } diff --git a/workflow/controller/operator_test.go b/workflow/controller/operator_test.go index 7ac9e7809112..9339c0bc2550 100644 --- a/workflow/controller/operator_test.go +++ b/workflow/controller/operator_test.go @@ -291,25 +291,17 @@ spec: woc := newWorkflowOperationCtx(wf, controller) woc.operate(ctx) + makePodsPhase(ctx, woc, apiv1.PodRunning) + woc = newWorkflowOperationCtx(woc.wf, controller) + woc.operate(ctx) + assert.Equal(t, wfv1.WorkflowRunning, woc.wf.Status.Phase) assert.Equal(t, wfv1.Progress("0/100"), woc.wf.Status.Progress) assert.Equal(t, wfv1.Progress("0/100"), woc.wf.Status.Nodes[woc.wf.Name].Progress) pod := woc.wf.Status.Nodes.FindByDisplayName("pod") assert.Equal(t, wfv1.Progress("0/100"), pod.Progress) - // mock workflow uses legacy/insecure pod patch - makePodsPhase(ctx, woc, apiv1.PodRunning, withAnnotation(common.AnnotationKeyReportOutputsCompleted, "false"), withProgress("50/100")) - woc = newWorkflowOperationCtx(woc.wf, controller) - woc.operate(ctx) - - assert.Equal(t, wfv1.WorkflowRunning, woc.wf.Status.Phase) - assert.Equal(t, wfv1.Progress("50/100"), woc.wf.Status.Progress) - assert.Equal(t, wfv1.Progress("50/100"), woc.wf.Status.Nodes[woc.wf.Name].Progress) - pod = woc.wf.Status.Nodes.FindByDisplayName("pod") - assert.Equal(t, wfv1.Progress("50/100"), pod.Progress) - - // mock workflow uses legacy/insecure pod patch - makePodsPhase(ctx, woc, apiv1.PodSucceeded, withAnnotation(common.AnnotationKeyReportOutputsCompleted, "true"), withProgress("100/100")) + makePodsPhase(ctx, woc, apiv1.PodSucceeded) woc = newWorkflowOperationCtx(woc.wf, controller) woc.operate(ctx) @@ -6254,7 +6246,7 @@ func TestConfigMapCacheSaveOperate(t *testing.T) { ctx := context.Background() woc.operate(ctx) - makePodsPhase(ctx, woc, apiv1.PodSucceeded, withExitCode(0), withAnnotation(common.AnnotationKeyReportOutputsCompleted, "true"), withOutputs(wfv1.MustMarshallJSON(sampleOutputs))) + makePodsPhase(ctx, woc, apiv1.PodSucceeded, withExitCode(0), withOutputs(sampleOutputs)) woc = newWorkflowOperationCtx(woc.wf, controller) woc.operate(ctx) @@ -6537,7 +6529,7 @@ spec: assert.Equal(t, wfv1.WorkflowRunning, woc.wf.Status.Phase) // make all created pods as successful - makePodsPhase(ctx, woc, apiv1.PodSucceeded, withAnnotation(common.AnnotationKeyReportOutputsCompleted, "true"), withOutputs(`{"parameters": [{"name": "my-param"}]}`)) + makePodsPhase(ctx, woc, apiv1.PodSucceeded) // reconcile woc = newWorkflowOperationCtx(woc.wf, controller) @@ -8600,8 +8592,7 @@ func TestWFGlobalArtifactNil(t *testing.T) { woc.operate(ctx) makePodsPhase(ctx, woc, apiv1.PodRunning) woc.operate(ctx) - makePodsPhase(ctx, woc, apiv1.PodFailed, func(pod *apiv1.Pod) { - pod.Annotations[common.AnnotationKeyOutputs] = string("{\"parameters\":[{\"name\":\"hello-param\",\"valueFrom\":{\"path\":\"/tmp/hello_world.txt\"},\"globalName\":\"my-global-param\"}],\"artifacts\":[{\"name\":\"hello-art\",\"path\":\"/tmp/hello_world.txt\",\"globalName\":\"my-global-art\"}]}") + makePodsPhase(ctx, woc, apiv1.PodFailed, func(pod *apiv1.Pod, _ *wfOperationCtx) { pod.Status.ContainerStatuses = []apiv1.ContainerStatus{ { Name: "main", @@ -9337,7 +9328,6 @@ metadata: spec: arguments: {} entrypoint: main - serviceAccountName: argo templates: - inputs: {} metadata: {} @@ -10911,7 +10901,7 @@ spec: serviceAccountName: default podSpecPatch: | terminationGracePeriodSeconds: 3 - serviceAccountName: argo + serviceAccountName: default templates: - inputs: {} metadata: {} diff --git a/workflow/controller/operator_wfdefault_test.go b/workflow/controller/operator_wfdefault_test.go index 608d1af9692c..289e7322e751 100644 --- a/workflow/controller/operator_wfdefault_test.go +++ b/workflow/controller/operator_wfdefault_test.go @@ -26,7 +26,7 @@ var wfDefaults = ` name: message value: "hello world" onExit: whalesay-exit - serviceAccountName: argo + serviceAccountName: default templates: - container: @@ -81,7 +81,7 @@ spec: value: "hello world" entrypoint: whalesay onExit: whalesay-exit - serviceAccountName: argo + serviceAccountName: default templates: - container: @@ -144,7 +144,7 @@ var storedSpecResult = ` }, "entrypoint": "whalesay-template", "onExit": "whalesay-exit", - "serviceAccountName": "argo", + "serviceAccountName": "default", "templates": [ { "container": { diff --git a/workflow/controller/workflowpod.go b/workflow/controller/workflowpod.go index 267ff2d35514..3d0810a635e5 100644 --- a/workflow/controller/workflowpod.go +++ b/workflow/controller/workflowpod.go @@ -240,7 +240,7 @@ func (woc *wfOperationCtx) createWorkflowPod(ctx context.Context, nodeName strin } // Configuring default container to be used with commands like "kubectl exec/logs". - // Select "main" container if it's available. In other case use the last container (can happent when pod created from ContainerSet). + // Select "main" container if it's available. In other case use the last container (can happen when pod created from ContainerSet). defaultContainer := pod.Spec.Containers[len(pod.Spec.Containers)-1].Name for _, c := range pod.Spec.Containers { if c.Name == common.MainContainerName { diff --git a/workflow/executor/executor.go b/workflow/executor/executor.go index 4f0b52875ac9..82648858126a 100644 --- a/workflow/executor/executor.go +++ b/workflow/executor/executor.go @@ -802,9 +802,7 @@ func (we *WorkflowExecutor) FinalizeOutput(ctx context.Context) { common.LabelKeyReportOutputsCompleted: "true", }) if apierr.IsForbidden(err) || apierr.IsNotFound(err) { - log.WithError(err).Warn("failed to patch task result, falling back to legacy/insecure pod patch, see https://argo-workflows.readthedocs.io/en/latest/workflow-rbac/") - // Only added as a backup in case LabelKeyReportOutputsCompleted could not be set - err = we.AddAnnotation(ctx, common.AnnotationKeyReportOutputsCompleted, "true") + log.WithError(err).Warn("failed to patch task result, see https://argo-workflows.readthedocs.io/en/latest/workflow-rbac/") } return err }) @@ -823,9 +821,7 @@ func (we *WorkflowExecutor) InitializeOutput(ctx context.Context) { }, errorsutil.IsTransientErr, func() error { err := we.upsertTaskResult(ctx, wfv1.NodeResult{}) if apierr.IsForbidden(err) { - log.WithError(err).Warn("failed to patch task result, falling back to legacy/insecure pod patch, see https://argo-workflows.readthedocs.io/en/latest/workflow-rbac/") - // Only added as a backup in case LabelKeyReportOutputsCompleted could not be set - err = we.AddAnnotation(ctx, common.AnnotationKeyReportOutputsCompleted, "false") + log.WithError(err).Warn("failed to patch task result, see https://argo-workflows.readthedocs.io/en/latest/workflow-rbac/") } return err }) @@ -851,22 +847,8 @@ func (we *WorkflowExecutor) reportResult(ctx context.Context, result wfv1.NodeRe }, errorsutil.IsTransientErr, func() error { err := we.upsertTaskResult(ctx, result) if apierr.IsForbidden(err) { - log.WithError(err).Warn("failed to patch task result, falling back to legacy/insecure pod patch, see https://argo-workflows.readthedocs.io/en/latest/workflow-rbac/") - if result.Outputs.HasOutputs() { - value, err := json.Marshal(result.Outputs) - if err != nil { - return err - } - - return we.AddAnnotation(ctx, common.AnnotationKeyOutputs, string(value)) - } - if result.Progress.IsValid() { // this may result in occasionally two patches - return we.AddAnnotation(ctx, common.AnnotationKeyProgress, string(result.Progress)) - } - // Only added as a backup in case LabelKeyReportOutputsCompleted could not be set - return we.AddAnnotation(ctx, common.AnnotationKeyReportOutputsCompleted, "false") + log.WithError(err).Warn("failed to patch task result, see https://argo-workflows.readthedocs.io/en/latest/workflow-rbac/") } - return err }) } diff --git a/workflow/util/merge_test.go b/workflow/util/merge_test.go index 6b1839c6af1f..2306dd8f3dde 100644 --- a/workflow/util/merge_test.go +++ b/workflow/util/merge_test.go @@ -22,7 +22,7 @@ spec: value: original entrypoint: start onExit: end - serviceAccountName: argo + serviceAccountName: default workflowTemplateRef: name: workflow-template-submittable ` @@ -97,7 +97,7 @@ spec: name: message value: "hello world" onExit: whalesay-exit - serviceAccountName: argo + serviceAccountName: default templates: - container: @@ -185,7 +185,7 @@ spec: value: "hello world" entrypoint: whalesay onExit: whalesay-exit - serviceAccountName: argo + serviceAccountName: default templates: - container: diff --git a/workflow/validate/validate_dag_test.go b/workflow/validate/validate_dag_test.go index fbb885edee53..e0c1c00f93a2 100644 --- a/workflow/validate/validate_dag_test.go +++ b/workflow/validate/validate_dag_test.go @@ -937,7 +937,7 @@ kind: Workflow metadata: generateName: loops- spec: - serviceAccountName: argo + serviceAccountName: default entrypoint: dag templates: - name: dag diff --git a/workflow/validate/validate_test.go b/workflow/validate/validate_test.go index 68498eae9e9c..e5a597d86a43 100644 --- a/workflow/validate/validate_test.go +++ b/workflow/validate/validate_test.go @@ -2151,7 +2151,7 @@ metadata: generateName: hello-world- spec: entrypoint: A - serviceAccountName: argo + serviceAccountName: default parallelism: 1 volumes: - name: workdir @@ -2995,7 +2995,6 @@ metadata: generateName: arguments-parameters-from-configmap- spec: entrypoint: whalesay - serviceAccountName: argo arguments: parameters: - name: message From 19b2322e26127145a895ec46931efebfd1b0f3b5 Mon Sep 17 00:00:00 2001 From: Raymond Date: Sun, 15 Sep 2024 08:32:10 +1000 Subject: [PATCH 002/106] feat(artifacts): support ephemeral credentials for S3. Fixes #5446 (#12467) Signed-off-by: Raymond Chow Co-authored-by: Anton Gilgur --- api/jsonschema/schema.json | 8 + api/openapi-spec/swagger.json | 8 + docs/configure-artifact-repository.md | 200 ++- docs/executor_swagger.md | 1 + docs/fields.md | 2 + go.mod | 32 +- go.sum | 66 +- .../argoproj.io_clusterworkflowtemplates.yaml | 192 +++ .../crds/full/argoproj.io_cronworkflows.yaml | 192 +++ .../argoproj.io_workflowartifactgctasks.yaml | 24 + .../argoproj.io_workfloweventbindings.yaml | 12 + .../base/crds/full/argoproj.io_workflows.yaml | 516 ++++++ .../full/argoproj.io_workflowtaskresults.yaml | 12 + .../full/argoproj.io_workflowtasksets.yaml | 96 ++ .../full/argoproj.io_workflowtemplates.yaml | 192 +++ .../argoproj.io_workflowtaskresults.yaml | 12 + manifests/quick-start-minimal.yaml | 12 + manifests/quick-start-mysql.yaml | 12 + manifests/quick-start-postgres.yaml | 12 + pkg/apis/workflow/v1alpha1/generated.pb.go | 1443 +++++++++-------- pkg/apis/workflow/v1alpha1/generated.proto | 3 + .../workflow/v1alpha1/openapi_generated.go | 18 + pkg/apis/workflow/v1alpha1/workflow_types.go | 3 + .../v1alpha1/zz_generated.deepcopy.go | 5 + pkg/plugins/executor/swagger.yml | 2 + .../IoArgoprojWorkflowV1alpha1S3Artifact.md | 1 + ...rojWorkflowV1alpha1S3ArtifactRepository.md | 1 + ..._argoproj_workflow_v1alpha1_s3_artifact.py | 4 + ...orkflow_v1alpha1_s3_artifact_repository.py | 4 + .../docs/ClusterWorkflowTemplateServiceApi.md | 300 ++++ .../client/docs/CronWorkflowServiceApi.md | 300 ++++ .../IoArgoprojWorkflowV1alpha1S3Artifact.md | 1 + ...rojWorkflowV1alpha1S3ArtifactRepository.md | 1 + sdks/python/client/docs/WorkflowServiceApi.md | 530 ++++++ .../client/docs/WorkflowTemplateServiceApi.md | 300 ++++ workflow/artifacts/artifacts.go | 10 + workflow/artifacts/artifacts_test.go | 64 + workflow/artifacts/s3/s3.go | 18 +- workflow/controller/workflowpod.go | 3 + workflow/controller/workflowpod_test.go | 87 + 40 files changed, 3920 insertions(+), 779 deletions(-) create mode 100644 workflow/artifacts/artifacts_test.go diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json index 7b6a2d23d054..2d763cee2295 100644 --- a/api/jsonschema/schema.json +++ b/api/jsonschema/schema.json @@ -6483,6 +6483,10 @@ "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector", "description": "SecretKeySecret is the secret selector to the bucket's secret key" }, + "sessionTokenSecret": { + "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector", + "description": "SessionTokenSecret is used for ephemeral credentials like an IAM assume role or S3 access grant" + }, "useSDKCreds": { "description": "UseSDKCreds tells the driver to figure out credentials based on sdk defaults.", "type": "boolean" @@ -6540,6 +6544,10 @@ "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector", "description": "SecretKeySecret is the secret selector to the bucket's secret key" }, + "sessionTokenSecret": { + "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector", + "description": "SessionTokenSecret is used for ephemeral credentials like an IAM assume role or S3 access grant" + }, "useSDKCreds": { "description": "UseSDKCreds tells the driver to figure out credentials based on sdk defaults.", "type": "boolean" diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 61078d38d7c0..e4b146d048b5 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -10424,6 +10424,10 @@ "description": "SecretKeySecret is the secret selector to the bucket's secret key", "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector" }, + "sessionTokenSecret": { + "description": "SessionTokenSecret is used for ephemeral credentials like an IAM assume role or S3 access grant", + "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector" + }, "useSDKCreds": { "description": "UseSDKCreds tells the driver to figure out credentials based on sdk defaults.", "type": "boolean" @@ -10481,6 +10485,10 @@ "description": "SecretKeySecret is the secret selector to the bucket's secret key", "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector" }, + "sessionTokenSecret": { + "description": "SessionTokenSecret is used for ephemeral credentials like an IAM assume role or S3 access grant", + "$ref": "#/definitions/io.k8s.api.core.v1.SecretKeySelector" + }, "useSDKCreds": { "description": "UseSDKCreds tells the driver to figure out credentials based on sdk defaults.", "type": "boolean" diff --git a/docs/configure-artifact-repository.md b/docs/configure-artifact-repository.md index 0f565ddab559..44ef704a3a41 100644 --- a/docs/configure-artifact-repository.md +++ b/docs/configure-artifact-repository.md @@ -75,16 +75,20 @@ artifacts: ## Configuring AWS S3 -Create your bucket and access keys for the bucket. AWS access keys have the same -permissions as the user they are associated with. In particular, you cannot -create access keys with reduced scope. If you want to limit the permissions for -an access key, you will need to create a user with just the permissions you want -to associate with the access key. Otherwise, you can just create an access key -using your existing user account. +First, create a bucket: ```bash -$ export mybucket=bucket249 -$ cat > policy.json < policy.json < policy.json < access-key.json ``` -If you do not have Artifact Garbage Collection configured, you should remove `s3:DeleteObject` from the list of Actions above. +If you do not have [Artifact Garbage Collection](walk-through/artifacts.md#artifact-garbage-collection) configured, you should remove `s3:DeleteObject` from the list of Actions above. -NOTE: if you want argo to figure out which region your buckets belong in, you -must additionally set the following statement policy. Otherwise, you must -specify a bucket region in your workflow configuration. + -```json - { - "Effect":"Allow", - "Action":[ - "s3:GetBucketLocation" - ], - "Resource":"arn:aws:s3:::*" - } - ... -``` +!!! Note "Region discovery" + + Argo can discover the region of your buckets with the additional policy below. + Without this, you must specify the region in your artifact configuration. + + ```json + { + "Effect":"Allow", + "Action":[ + "s3:GetBucketLocation" + ], + "Resource":"arn:aws:s3:::*" + } + ... + ``` + + -### AWS S3 IRSA +#### AWS S3 IRSA + +IAM Roles for Service Accounts (IRSA) is the recommended Kubernetes native mechanism to authenticate to S3. +If you are using EKS, follow [the IRSA setup guide](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html). +If not, follow the [Pod Identity Webhook self-hosted setup guide](https://github.com/aws/amazon-eks-pod-identity-webhook/blob/master/SELF_HOSTED_SETUP.md). + +With the bucket and policy as described above, create an IAM role and add the policy: + +```bash +aws iam create-role --role-name $mybucket-role +aws iam put-role-policy --role-name $mybucket-user --policy-name $mybucket-policy --policy-document file://policy.json +``` -If you wish to use S3 IRSA instead of passing in an `accessKey` and `secretKey`, you need to annotate the service account of both the running workflow (in order to save logs/artifacts) and the argo-server pod (in order to retrieve the logs/artifacts). +Attach this IAM role to a service account with an annotation: ```yaml apiVersion: v1 kind: ServiceAccount metadata: annotations: - eks.amazonaws.com/role-arn: arn:aws:iam::012345678901:role/mybucket + eks.amazonaws.com/role-arn: arn:aws:iam::012345678901:role/mybucket-role name: myserviceaccount namespace: mynamespace ``` +Use the service account in a workflow: + +```yaml +apiVersion: argoproj.io/v1alpha1 +kind: Workflow +spec: + serviceAccountName: myserviceaccount +``` + +#### AWS S3 with IAM Access Keys + +!!! Note "Least privilege user" + To reduce the privileges of an access key, create a user with only the necessary permissions and no more. + +With the bucket and policy described above, create an IAM user and add the policy: + +```bash +aws iam create-user --user-name $mybucket-user +aws iam put-user-policy --user-name $mybucket-user --policy-name $mybucket-policy --policy-document file://policy.json +aws iam create-access-key --user-name $mybucket-user > access-key.json +``` + +Configure an artifact with the access keys: + +```yaml +artifacts: + - name: my-output-artifact + path: /my-output-artifact + s3: + endpoint: s3.amazonaws.com + bucket: my-s3-bucket + key: path/in/bucket/my-output-artifact.tgz + # The following fields are secret selectors. + # They reference the k8s secret named 'my-s3-credentials'. + # This secret is expected to have the keys 'accessKey' and 'secretKey', + # containing the base64 encoded credentials to the bucket. + accessKeySecret: + name: my-s3-credentials + key: accessKey + secretKeySecret: + name: my-s3-credentials + key: secretKey +``` + +#### AWS S3 with IAM Assume Role + +> v3.6 and after + +You can use an [IAM role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) for temporary access. + +With the bucket and policy described above, create an IAM role and add the policy: + +```bash +aws iam create-role --role-name $mybucket-role +aws iam put-role-policy --role-name $mybucket-user --policy-name $mybucket-policy --policy-document file://policy.json +``` + +Retrieve the role credentials: + +```bash +aws sts assume-role --role-arn arn:aws:iam::012345678901:role/$mybucket-role +``` + +Configure an artifact with the credentials: + +```yaml +artifacts: + - name: my-output-artifact + path: /my-output-artifact + s3: + endpoint: s3.amazonaws.com + bucket: my-s3-bucket + key: path/in/bucket/my-output-artifact.tgz + # The following fields are secret selectors. + # They reference the k8s secret named 'my-s3-credentials'. + # This secret is expected to have the keys 'accessKey', 'secretKey', and 'sessionToken', + # containing the base64 encoded credentials to the bucket. + accessKeySecret: + name: my-s3-credentials + key: accessKey + secretKeySecret: + name: my-s3-credentials + key: secretKey + sessionTokenSecret: + name: my-s3-credentials + key: sessionToken +``` + +!!! Note "Temporary" + IAM role credentials are temporary, so you must refresh them periodically via an external mechanism. + +### AWS S3 with S3 Access Grants + +> v3.6 and after + +You can use [S3 Access Grants](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants.html) for temporary, reduced scope access. +Follow the [AWS guide](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-get-started.html) to set this up in your AWS account and retrieve access grant credentials. + +Configure an artifact with the access grant credentials: + +```yaml +artifacts: + - name: my-output-artifact + path: /my-output-artifact + s3: + endpoint: s3.amazonaws.com + bucket: my-s3-bucket + key: path/in/bucket/my-output-artifact.tgz + # The following fields are secret selectors. + # They reference the k8s secret named 'my-s3-credentials'. + # This secret is expected to have the keys 'accessKey', 'secretKey', and 'sessionToken', + # containing the base64 encoded credentials to the bucket. + accessKeySecret: + name: my-s3-credentials + key: accessKey + secretKeySecret: + name: my-s3-credentials + key: secretKey + sessionTokenSecret: + name: my-s3-credentials + key: sessionToken +``` + +!!! Note "Temporary" + S3 Access Grants are temporary, so you must refresh them periodically via an external mechanism. + ## Configuring GCS (Google Cloud Storage) Create a bucket from the GCP Console diff --git a/docs/executor_swagger.md b/docs/executor_swagger.md index fa9a7a291d6e..f3c2a32494ff 100644 --- a/docs/executor_swagger.md +++ b/docs/executor_swagger.md @@ -3140,6 +3140,7 @@ cause implementors to also use a fixed point implementation. | region | string| `string` | | | Region contains the optional bucket region | | | roleARN | string| `string` | | | RoleARN is the Amazon Resource Name (ARN) of the role to assume. | | | secretKeySecret | [SecretKeySelector](#secret-key-selector)| `SecretKeySelector` | | | | | +| sessionTokenSecret | [SecretKeySelector](#secret-key-selector)| `SecretKeySelector` | | | | | | useSDKCreds | boolean| `bool` | | | UseSDKCreds tells the driver to figure out credentials based on sdk defaults. | | diff --git a/docs/fields.md b/docs/fields.md index 1eec88d2f505..aaf40af782c7 100644 --- a/docs/fields.md +++ b/docs/fields.md @@ -3527,6 +3527,7 @@ S3Artifact is the location of an S3 artifact |`region`|`string`|Region contains the optional bucket region| |`roleARN`|`string`|RoleARN is the Amazon Resource Name (ARN) of the role to assume.| |`secretKeySecret`|[`SecretKeySelector`](#secretkeyselector)|SecretKeySecret is the secret selector to the bucket's secret key| +|`sessionTokenSecret`|[`SecretKeySelector`](#secretkeyselector)|SessionTokenSecret is used for ephemeral credentials like an IAM assume role or S3 access grant| |`useSDKCreds`|`boolean`|UseSDKCreds tells the driver to figure out credentials based on sdk defaults.| ## ValueFrom @@ -4248,6 +4249,7 @@ S3ArtifactRepository defines the controller configuration for an S3 artifact rep |`region`|`string`|Region contains the optional bucket region| |`roleARN`|`string`|RoleARN is the Amazon Resource Name (ARN) of the role to assume.| |`secretKeySecret`|[`SecretKeySelector`](#secretkeyselector)|SecretKeySecret is the secret selector to the bucket's secret key| +|`sessionTokenSecret`|[`SecretKeySelector`](#secretkeyselector)|SessionTokenSecret is used for ephemeral credentials like an IAM assume role or S3 access grant| |`useSDKCreds`|`boolean`|UseSDKCreds tells the driver to figure out credentials based on sdk defaults.| ## MutexHolding diff --git a/go.mod b/go.mod index 88f023089b8c..de8d29714521 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/aliyun/aliyun-oss-go-sdk v3.0.2+incompatible github.com/aliyun/credentials-go v1.3.2 github.com/argoproj/argo-events v1.9.1 - github.com/argoproj/pkg v0.13.7-0.20240208112602-3bb8fe9a0527 + github.com/argoproj/pkg v0.13.7-0.20240704113442-a69fd34a8117 github.com/blushft/go-diagrams v0.0.0-20201006005127-c78c821223d9 github.com/colinmarc/hdfs/v2 v2.4.0 github.com/coreos/go-oidc/v3 v3.9.0 @@ -46,7 +46,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 github.com/soheilhy/cmux v0.1.5 - github.com/spf13/cobra v1.8.0 + github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.18.2 github.com/stretchr/testify v1.9.0 @@ -87,8 +87,8 @@ require ( dario.cat/mergo v1.0.0 // indirect github.com/TylerBrock/colorjson v0.0.0-20200706003622-8a50f05110d2 // indirect github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.2 // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect @@ -165,25 +165,25 @@ require ( github.com/ajg/form v1.5.1 // indirect github.com/andybalholm/brotli v1.0.4 // indirect github.com/awalterschulze/gographviz v0.0.0-20200901124122-0eecad45bd71 // indirect - github.com/aws/aws-sdk-go-v2 v1.24.1 // indirect - github.com/aws/aws-sdk-go-v2/config v1.26.6 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.16.16 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3 // indirect + github.com/aws/aws-sdk-go-v2 v1.30.1 // indirect + github.com/aws/aws-sdk-go-v2/config v1.27.23 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.24 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/ecr v1.17.8 // indirect github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.8 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.18.7 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.26.7 // indirect - github.com/aws/smithy-go v1.19.0 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.15 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.22.1 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.30.1 // indirect + github.com/aws/smithy-go v1.20.3 // indirect github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20220706184558-ce46abcd012b // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect github.com/chrismellard/docker-credential-acr-env v0.0.0-20220327082430-c57b701bfc08 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/creack/pty v1.1.21 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/daviddengcn/go-colortext v1.0.0 // indirect diff --git a/go.sum b/go.sum index 811b33266eff..7993e81e4bbc 100644 --- a/go.sum +++ b/go.sum @@ -107,53 +107,55 @@ github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuW github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/argoproj/argo-events v1.9.1 h1:X7Sp8Xrj6OlUtrHJyJLOt6flzRwOAsKUifnf/sLJDac= github.com/argoproj/argo-events v1.9.1/go.mod h1:yPwsLeU/Vp9nAEd4OBT8fOMEbIrmuvC4SIIqx5uJnxY= -github.com/argoproj/pkg v0.13.7-0.20240208112602-3bb8fe9a0527 h1:Sq4xHtuYWOcEoAns6YiEnA3qseOl/l1Vztlwb7BZJm0= -github.com/argoproj/pkg v0.13.7-0.20240208112602-3bb8fe9a0527/go.mod h1:5oQLcU9v8FllFnNfbonIW9xl/HISAreJCd7TxQzp7g4= +github.com/argoproj/pkg v0.13.7-0.20240704113442-a69fd34a8117 h1:iOmb5RDUnQ80ZLaBYCbfgNxMJ7qC0boM267nlzMyFjo= +github.com/argoproj/pkg v0.13.7-0.20240704113442-a69fd34a8117/go.mod h1:mwXbiH0ojJzbstR8XV9Ha/dK4IHHTKfgkQi2Kz8Aq0Y= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/awalterschulze/gographviz v0.0.0-20200901124122-0eecad45bd71 h1:m3N1Fv5vE5IcxuTOGFGGV0grrVFHV8UY2SV0wSBXAC8= github.com/awalterschulze/gographviz v0.0.0-20200901124122-0eecad45bd71/go.mod h1:/ynarkO/43wP/JM2Okn61e8WFMtdbtA8he7GJxW+SFM= github.com/aws/aws-sdk-go-v2 v1.16.7/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw= -github.com/aws/aws-sdk-go-v2 v1.24.1 h1:xAojnj+ktS95YZlDf0zxWBkbFtymPeDP+rvUQIH3uAU= -github.com/aws/aws-sdk-go-v2 v1.24.1/go.mod h1:LNh45Br1YAkEKaAqvmE1m8FUx6a5b/V0oAKV7of29b4= +github.com/aws/aws-sdk-go-v2 v1.30.1 h1:4y/5Dvfrhd1MxRDD77SrfsDaj8kUkkljU7XE83NPV+o= +github.com/aws/aws-sdk-go-v2 v1.30.1/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= github.com/aws/aws-sdk-go-v2/config v1.15.13/go.mod h1:AcMu50uhV6wMBUlURnEXhr9b3fX6FLSTlEV89krTEGk= -github.com/aws/aws-sdk-go-v2/config v1.26.6 h1:Z/7w9bUqlRI0FFQpetVuFYEsjzE3h7fpU6HuGmfPL/o= -github.com/aws/aws-sdk-go-v2/config v1.26.6/go.mod h1:uKU6cnDmYCvJ+pxO9S4cWDb2yWWIH5hra+32hVh1MI4= +github.com/aws/aws-sdk-go-v2/config v1.27.23 h1:Cr/gJEa9NAS7CDAjbnB7tHYb3aLZI2gVggfmSAasDac= +github.com/aws/aws-sdk-go-v2/config v1.27.23/go.mod h1:WMMYHqLCFu5LH05mFOF5tsq1PGEMfKbu083VKqLCd0o= github.com/aws/aws-sdk-go-v2/credentials v1.12.8/go.mod h1:P2Hd4Sy7mXRxPNcQMPBmqszSJoDXexX8XEDaT6lucO0= -github.com/aws/aws-sdk-go-v2/credentials v1.16.16 h1:8q6Rliyv0aUFAVtzaldUEcS+T5gbadPbWdV1WcAddK8= -github.com/aws/aws-sdk-go-v2/credentials v1.16.16/go.mod h1:UHVZrdUsv63hPXFo1H7c5fEneoVo9UXiz36QG1GEPi0= +github.com/aws/aws-sdk-go-v2/credentials v1.17.23/go.mod h1:V/DvSURn6kKgcuKEk4qwSwb/fZ2d++FFARtWSbXnLqY= +github.com/aws/aws-sdk-go-v2/credentials v1.17.24 h1:YclAsrnb1/GTQNt2nzv+756Iw4mF8AOzcDfweWwwm/M= +github.com/aws/aws-sdk-go-v2/credentials v1.17.24/go.mod h1:Hld7tmnAkoBQdTMNYZGzztzKRdA4fCdn9L83LOoigac= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.8/go.mod h1:oL1Q3KuCq1D4NykQnIvtRiBGLUXhcpY5pl6QZB2XEPU= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11 h1:c5I5iH+DZcH3xOIMlz3/tCKJDaHFwYEmxvlh2fAcFo8= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11/go.mod h1:cRrYDYAMUohBJUtUnOhydaMHtiK/1NZ0Otc9lIb6O0Y= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9 h1:Aznqksmd6Rfv2HQN9cpqIV/lQRMaIpJkLLaJ1ZI76no= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.9/go.mod h1:WQr3MY7AxGNxaqAtsDWn+fBxmd4XvLkzeqQ8P1VM0/w= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.14/go.mod h1:kdjrMwHwrC3+FsKhNcCMJ7tUVj/8uSD5CZXeQ4wV6fM= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10 h1:vF+Zgd9s+H4vOXd5BMaPWykta2a6Ih0AKLq/X6NYKn4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10/go.mod h1:6BkRjejp/GR4411UGqkX8+wFMbFbqsUIimfK4XjOKR4= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13 h1:5SAoZ4jYpGH4721ZNoS1znQrhOfZinOhc4XuTXx/nVc= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.13/go.mod h1:+rdA6ZLpaSeM7tSg/B0IEDinCIBJGmW8rKDFkYpP04g= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.8/go.mod h1:ZIV8GYoC6WLBW5KGs+o4rsc65/ozd+eQ0L31XF5VDwk= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10 h1:nYPe006ktcqUji8S2mqXf9c/7NdiKriOwMvWQHgYztw= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10/go.mod h1:6UV4SZkVvmODfXKql4LCbaZUpF7HO2BX38FgBf9ZOLw= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13 h1:WIijqeaAO7TYFLbhsZmi2rgLEAtWOC1LhxCAVTJlSKw= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.13/go.mod h1:i+kbfa76PQbWw/ULoWnp51EYVWH4ENln76fLQE3lXT8= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.15/go.mod h1:Tkrthp/0sNBShQQsamR7j/zY4p19tVTAs+nnqhH6R3c= -github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3 h1:n3GDfwqF2tzEkXlv5cuy4iy7LpKDtqDMcNLfZDu9rls= -github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= github.com/aws/aws-sdk-go-v2/service/ecr v1.17.8 h1:wgZo/yeY0f+2RWy2q1rTtZSPMmq37Zy3pY4QypHeurg= github.com/aws/aws-sdk-go-v2/service/ecr v1.17.8/go.mod h1:ItZADKTnGxqcqXABHyNpoBljQ8ORt4h+D39RToM/3Ds= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.8 h1:uByYzUJNBrI4LN0H+HMA7yrDWQxe2f9cF7ZkiXltXRo= github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.8/go.mod h1:nPSH6Ebmb3OkKl7+CLSjx+SMBaoFKbOe9mZhTAd352k= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 h1:/b31bi3YVNlkzkBrm9LfpaKoaYZUxIAj4sHfOTmLfqw= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4/go.mod h1:2aGXHFmbInwgP9ZfpmdIfOELL79zhdNYNmReK8qDfdQ= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 h1:dT3MqvGhSoaIhRseqw2I0yH81l7wiR2vjs57O51EAm8= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3/go.mod h1:GlAeCkHwugxdHaueRr4nhPuY+WW+gR8UjlcqzPr1SPI= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.8/go.mod h1:rDVhIMAX9N2r8nWxDUlbubvvaFMnfsm+3jAV7q+rpM4= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10 h1:DBYTXwIGQSGs9w4jKm60F5dmCQ3EEruxdc0MFh+3EY4= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10/go.mod h1:wohMUQiFdzo0NtxbBg0mSRGZ4vL3n0dKjLTINdcIino= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.15 h1:I9zMeF107l0rJrpnHpjEiiTSCKYAIw8mALiXcPsGBiA= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.15/go.mod h1:9xWJ3Q/S6Ojusz1UIkfycgD1mGirJfLLKqq3LPT7WN8= github.com/aws/aws-sdk-go-v2/service/sso v1.11.11/go.mod h1:MO4qguFjs3wPGcCSpQ7kOFTwRvb+eu+fn+1vKleGHUk= -github.com/aws/aws-sdk-go-v2/service/sso v1.18.7 h1:eajuO3nykDPdYicLlP3AGgOyVN3MOlFmZv7WGTuJPow= -github.com/aws/aws-sdk-go-v2/service/sso v1.18.7/go.mod h1:+mJNDdF+qiUlNKNC3fxn74WWNN+sOiGOEImje+3ScPM= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7 h1:QPMJf+Jw8E1l7zqhZmMlFw6w1NmfkfiSK8mS4zOx3BA= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7/go.mod h1:ykf3COxYI0UJmxcfcxcVuz7b6uADi1FkiUz6Eb7AgM8= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.1 h1:p1GahKIjyMDZtiKoIn0/jAj/TkMzfzndDv5+zi2Mhgc= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.1/go.mod h1:/vWdhoIoYA5hYoPZ6fm7Sv4d8701PiG5VKe8/pPJL60= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.1/go.mod h1:xyFHA4zGxgYkdD73VeezHt3vSKEG9EmFnGwoKlP00u4= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.2 h1:ORnrOK0C4WmYV/uYt3koHEWBLYsRDwk2Np+eEoyV4Z0= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.2/go.mod h1:xyFHA4zGxgYkdD73VeezHt3vSKEG9EmFnGwoKlP00u4= github.com/aws/aws-sdk-go-v2/service/sts v1.16.9/go.mod h1:O1IvkYxr+39hRf960Us6j0x1P8pDqhTX+oXM5kQNl/Y= -github.com/aws/aws-sdk-go-v2/service/sts v1.26.7 h1:NzO4Vrau795RkUdSHKEwiR01FaGzGOH1EETJ+5QHnm0= -github.com/aws/aws-sdk-go-v2/service/sts v1.26.7/go.mod h1:6h2YuIoxaMSCFf5fi1EgZAwdfkGMgDY+DVfa61uLe4U= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.1 h1:+woJ607dllHJQtsnJLi52ycuqHMwlW+Wqm2Ppsfp4nQ= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.1/go.mod h1:jiNR3JqT15Dm+QWq2SRgh0x0bCNSRP2L25+CqPNpJlQ= github.com/aws/smithy-go v1.12.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= -github.com/aws/smithy-go v1.19.0 h1:KWFKQV80DpP3vJrrA9sVAHQ5gc2z8i4EzrLhLlWXcBM= -github.com/aws/smithy-go v1.19.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE= +github.com/aws/smithy-go v1.20.3 h1:ryHwveWzPV5BIof6fyDvor6V3iUL7nTfiTKXHiW05nE= +github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20220706184558-ce46abcd012b h1:+I25t8HCatBZtvU9bFugfi8Y2zCpKUVcTRaeC0oOHOk= github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20220706184558-ce46abcd012b/go.mod h1:wHkLB7jZX+7D2RArMnwuFMvrLENsgd6zrwBEJo863aQ= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -196,8 +198,8 @@ github.com/coreos/go-oidc/v3 v3.9.0/go.mod h1:rTKz2PYwftcrtoCzV5g5kvfJoWcm0Mk8AF github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0= github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= @@ -763,8 +765,8 @@ github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNo github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= diff --git a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml index 58e539a768f9..4cb07e7bb76c 100644 --- a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml @@ -920,6 +920,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -1573,6 +1585,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -2798,6 +2822,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -4587,6 +4623,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -5188,6 +5236,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -5840,6 +5900,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -7060,6 +7132,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -7752,6 +7836,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -8364,6 +8460,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -11298,6 +11406,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -13087,6 +13207,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -13688,6 +13820,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -14340,6 +14484,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -15560,6 +15716,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -16252,6 +16420,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -16864,6 +17044,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object diff --git a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml index da78fb79a824..d01e7eac0245 100644 --- a/manifests/base/crds/full/argoproj.io_cronworkflows.yaml +++ b/manifests/base/crds/full/argoproj.io_cronworkflows.yaml @@ -952,6 +952,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -1605,6 +1617,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -2830,6 +2854,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -4619,6 +4655,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -5220,6 +5268,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -5872,6 +5932,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -7092,6 +7164,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -7784,6 +7868,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -8396,6 +8492,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -11330,6 +11438,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -13119,6 +13239,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -13720,6 +13852,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -14372,6 +14516,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -15592,6 +15748,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -16284,6 +16452,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -16896,6 +17076,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object diff --git a/manifests/base/crds/full/argoproj.io_workflowartifactgctasks.yaml b/manifests/base/crds/full/argoproj.io_workflowartifactgctasks.yaml index 32e2b357a9c0..c3f5ff864e40 100644 --- a/manifests/base/crds/full/argoproj.io_workflowartifactgctasks.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowartifactgctasks.yaml @@ -494,6 +494,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -1019,6 +1031,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object diff --git a/manifests/base/crds/full/argoproj.io_workfloweventbindings.yaml b/manifests/base/crds/full/argoproj.io_workfloweventbindings.yaml index 65184dfcd1f9..3bb8c4d2414a 100644 --- a/manifests/base/crds/full/argoproj.io_workfloweventbindings.yaml +++ b/manifests/base/crds/full/argoproj.io_workfloweventbindings.yaml @@ -558,6 +558,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object diff --git a/manifests/base/crds/full/argoproj.io_workflows.yaml b/manifests/base/crds/full/argoproj.io_workflows.yaml index 1b8f5bc0a238..52cdf6b6396e 100644 --- a/manifests/base/crds/full/argoproj.io_workflows.yaml +++ b/manifests/base/crds/full/argoproj.io_workflows.yaml @@ -934,6 +934,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -1587,6 +1599,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -2812,6 +2836,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -4601,6 +4637,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -5202,6 +5250,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -5854,6 +5914,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -7074,6 +7146,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -7766,6 +7850,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -8378,6 +8474,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -11312,6 +11420,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -13101,6 +13221,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -13702,6 +13834,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -14354,6 +14498,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -15574,6 +15730,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -16266,6 +16434,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -16878,6 +17058,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -20182,6 +20374,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -20760,6 +20964,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -21373,6 +21589,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -22004,6 +22232,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -23631,6 +23871,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -25420,6 +25672,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -26021,6 +26285,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -26673,6 +26949,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -27893,6 +28181,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -28585,6 +28885,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -29197,6 +29509,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -32189,6 +32513,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -32842,6 +33178,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -34067,6 +34415,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -35856,6 +36216,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -36457,6 +36829,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -37109,6 +37493,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -38329,6 +38725,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -39021,6 +39429,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -39633,6 +40053,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -42567,6 +42999,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -44356,6 +44800,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -44957,6 +45413,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -45609,6 +46077,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -46829,6 +47309,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -47521,6 +48013,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -48133,6 +48637,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object diff --git a/manifests/base/crds/full/argoproj.io_workflowtaskresults.yaml b/manifests/base/crds/full/argoproj.io_workflowtaskresults.yaml index 82a40f00fa5a..24e37524ff27 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtaskresults.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtaskresults.yaml @@ -547,6 +547,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object diff --git a/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml b/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml index 07a07754714a..b09694292aac 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtasksets.yaml @@ -864,6 +864,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -2653,6 +2665,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -3254,6 +3278,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -3906,6 +3942,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -5126,6 +5174,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -5818,6 +5878,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -6430,6 +6502,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -9058,6 +9142,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object diff --git a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml index 55269546af57..ef036c5315f4 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml @@ -919,6 +919,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -1572,6 +1584,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -2797,6 +2821,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -4586,6 +4622,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -5187,6 +5235,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -5839,6 +5899,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -7059,6 +7131,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -7751,6 +7835,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -8363,6 +8459,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -11297,6 +11405,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -13086,6 +13206,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -13687,6 +13819,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -14339,6 +14483,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -15559,6 +15715,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -16251,6 +16419,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object @@ -16863,6 +17043,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object diff --git a/manifests/base/crds/minimal/argoproj.io_workflowtaskresults.yaml b/manifests/base/crds/minimal/argoproj.io_workflowtaskresults.yaml index 4c6a3463ed8e..b1d767429725 100644 --- a/manifests/base/crds/minimal/argoproj.io_workflowtaskresults.yaml +++ b/manifests/base/crds/minimal/argoproj.io_workflowtaskresults.yaml @@ -546,6 +546,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object diff --git a/manifests/quick-start-minimal.yaml b/manifests/quick-start-minimal.yaml index 517c723ed44b..89251cf8a47f 100644 --- a/manifests/quick-start-minimal.yaml +++ b/manifests/quick-start-minimal.yaml @@ -759,6 +759,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object diff --git a/manifests/quick-start-mysql.yaml b/manifests/quick-start-mysql.yaml index d9932dec089c..65635d66e743 100644 --- a/manifests/quick-start-mysql.yaml +++ b/manifests/quick-start-mysql.yaml @@ -759,6 +759,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object diff --git a/manifests/quick-start-postgres.yaml b/manifests/quick-start-postgres.yaml index d5e8a26887ab..b0b0f5dd458d 100644 --- a/manifests/quick-start-postgres.yaml +++ b/manifests/quick-start-postgres.yaml @@ -759,6 +759,18 @@ spec: - key type: object x-kubernetes-map-type: atomic + sessionTokenSecret: + properties: + key: + type: string + name: + type: string + optional: + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic useSDKCreds: type: boolean type: object diff --git a/pkg/apis/workflow/v1alpha1/generated.pb.go b/pkg/apis/workflow/v1alpha1/generated.pb.go index 9a791c5c147b..7b042949dd6c 100644 --- a/pkg/apis/workflow/v1alpha1/generated.pb.go +++ b/pkg/apis/workflow/v1alpha1/generated.pb.go @@ -4448,700 +4448,702 @@ func init() { } var fileDescriptor_724696e352c3df5f = []byte{ - // 11086 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0xbd, 0x6b, 0x70, 0x64, 0xc7, - 0x75, 0x18, 0xcc, 0x3b, 0xc0, 0xe0, 0x71, 0x06, 0xc0, 0x62, 0x7b, 0x5f, 0x43, 0x2c, 0xb9, 0xa0, - 0x2f, 0x45, 0x7e, 0xa4, 0x4d, 0x61, 0xcd, 0xa5, 0xf4, 0x85, 0x91, 0x12, 0x49, 0x78, 0x2c, 0xb0, - 0x4b, 0x2c, 0x16, 0x60, 0x0f, 0x76, 0xd7, 0xa4, 0x68, 0x49, 0x17, 0x33, 0x8d, 0x99, 0x4b, 0xcc, - 0xdc, 0x3b, 0xbc, 0xf7, 0x0e, 0x76, 0xc1, 0x87, 0xa4, 0x50, 0xef, 0x58, 0xb6, 0x62, 0x59, 0x92, - 0x25, 0x25, 0xa9, 0x52, 0x14, 0x29, 0x61, 0xc9, 0xae, 0xa4, 0xec, 0x5f, 0x29, 0xbb, 0xf2, 0x27, - 0x95, 0x72, 0x29, 0xe5, 0x54, 0x22, 0x57, 0x94, 0x92, 0x7e, 0xd8, 0x60, 0xb4, 0x49, 0xf4, 0x23, - 0x89, 0xaa, 0x12, 0x55, 0x9c, 0xd8, 0x9b, 0x47, 0xa5, 0xfa, 0x79, 0xbb, 0xef, 0xdc, 0xc1, 0x0e, - 0xb0, 0x0d, 0xac, 0xca, 0xfe, 0x05, 0xcc, 0xe9, 0xee, 0x73, 0xba, 0xfb, 0x76, 0x9f, 0x3e, 0xaf, - 0x3e, 0x0d, 0x6b, 0x75, 0x3f, 0x69, 0x74, 0x36, 0x66, 0xaa, 0x61, 0xeb, 0xbc, 0x17, 0xd5, 0xc3, - 0x76, 0x14, 0xbe, 0xcc, 0xfe, 0x79, 0xe7, 0xcd, 0x30, 0xda, 0xda, 0x6c, 0x86, 0x37, 0xe3, 0xf3, - 0xdb, 0xcf, 0x9c, 0x6f, 0x6f, 0xd5, 0xcf, 0x7b, 0x6d, 0x3f, 0x3e, 0x2f, 0xa1, 0xe7, 0xb7, 0x9f, - 0xf6, 0x9a, 0xed, 0x86, 0xf7, 0xf4, 0xf9, 0x3a, 0x09, 0x48, 0xe4, 0x25, 0xa4, 0x36, 0xd3, 0x8e, - 0xc2, 0x24, 0x44, 0x1f, 0x48, 0x31, 0xce, 0x48, 0x8c, 0xec, 0x9f, 0x0f, 0x2b, 0x8c, 0x33, 0xdb, - 0xcf, 0xcc, 0xb4, 0xb7, 0xea, 0x33, 0x14, 0xe3, 0x8c, 0x84, 0xce, 0x48, 0x8c, 0x53, 0xef, 0xd4, - 0xfa, 0x54, 0x0f, 0xeb, 0xe1, 0x79, 0x86, 0x78, 0xa3, 0xb3, 0xc9, 0x7e, 0xb1, 0x1f, 0xec, 0x3f, - 0x4e, 0x70, 0xca, 0xdd, 0x7a, 0x36, 0x9e, 0xf1, 0x43, 0xda, 0xbf, 0xf3, 0xd5, 0x30, 0x22, 0xe7, - 0xb7, 0xbb, 0x3a, 0x35, 0xf5, 0x0e, 0xad, 0x4e, 0x3b, 0x6c, 0xfa, 0xd5, 0x9d, 0xbc, 0x5a, 0xef, - 0x4a, 0x6b, 0xb5, 0xbc, 0x6a, 0xc3, 0x0f, 0x48, 0xb4, 0x93, 0x0e, 0xbd, 0x45, 0x12, 0x2f, 0xaf, - 0xd5, 0xf9, 0x5e, 0xad, 0xa2, 0x4e, 0x90, 0xf8, 0x2d, 0xd2, 0xd5, 0xe0, 0xff, 0xbf, 0x5b, 0x83, - 0xb8, 0xda, 0x20, 0x2d, 0xaf, 0xab, 0xdd, 0x33, 0xbd, 0xda, 0x75, 0x12, 0xbf, 0x79, 0xde, 0x0f, - 0x92, 0x38, 0x89, 0xb2, 0x8d, 0xdc, 0x8b, 0x30, 0x34, 0xdb, 0x0a, 0x3b, 0x41, 0x82, 0xde, 0x0b, - 0xc5, 0x6d, 0xaf, 0xd9, 0x21, 0x65, 0xe7, 0x11, 0xe7, 0x89, 0xd1, 0xb9, 0xc7, 0xbe, 0xbb, 0x3b, - 0xfd, 0xc0, 0xed, 0xdd, 0xe9, 0xe2, 0x75, 0x0a, 0xbc, 0xb3, 0x3b, 0x7d, 0x92, 0x04, 0xd5, 0xb0, - 0xe6, 0x07, 0xf5, 0xf3, 0x2f, 0xc7, 0x61, 0x30, 0x73, 0xb5, 0xd3, 0xda, 0x20, 0x11, 0xe6, 0x6d, - 0xdc, 0x7f, 0x53, 0x80, 0x63, 0xb3, 0x51, 0xb5, 0xe1, 0x6f, 0x93, 0x4a, 0x42, 0xf1, 0xd7, 0x77, - 0x50, 0x03, 0x06, 0x12, 0x2f, 0x62, 0xe8, 0x4a, 0x17, 0x56, 0x66, 0xee, 0xf5, 0xbb, 0xcf, 0xac, - 0x7b, 0x91, 0xc4, 0x3d, 0x37, 0x7c, 0x7b, 0x77, 0x7a, 0x60, 0xdd, 0x8b, 0x30, 0x25, 0x81, 0x9a, - 0x30, 0x18, 0x84, 0x01, 0x29, 0x17, 0x18, 0xa9, 0xab, 0xf7, 0x4e, 0xea, 0x6a, 0x18, 0xa8, 0x71, - 0xcc, 0x8d, 0xdc, 0xde, 0x9d, 0x1e, 0xa4, 0x10, 0xcc, 0xa8, 0xd0, 0x71, 0xbd, 0xea, 0xb7, 0xcb, - 0x03, 0xb6, 0xc6, 0xf5, 0xa2, 0xdf, 0x36, 0xc7, 0xf5, 0xa2, 0xdf, 0xc6, 0x94, 0x84, 0xfb, 0xb9, - 0x02, 0x8c, 0xce, 0x46, 0xf5, 0x4e, 0x8b, 0x04, 0x49, 0x8c, 0x3e, 0x06, 0xd0, 0xf6, 0x22, 0xaf, - 0x45, 0x12, 0x12, 0xc5, 0x65, 0xe7, 0x91, 0x81, 0x27, 0x4a, 0x17, 0x96, 0xef, 0x9d, 0xfc, 0x9a, - 0xc4, 0x39, 0x87, 0xc4, 0x27, 0x07, 0x05, 0x8a, 0xb1, 0x46, 0x12, 0xbd, 0x06, 0xa3, 0x5e, 0x94, - 0xf8, 0x9b, 0x5e, 0x35, 0x89, 0xcb, 0x05, 0x46, 0xff, 0xb9, 0x7b, 0xa7, 0x3f, 0x2b, 0x50, 0xce, - 0x1d, 0x17, 0xe4, 0x47, 0x25, 0x24, 0xc6, 0x29, 0x3d, 0xf7, 0xf7, 0x06, 0xa1, 0x34, 0x1b, 0x25, - 0x4b, 0xf3, 0x95, 0xc4, 0x4b, 0x3a, 0x31, 0xfa, 0x43, 0x07, 0x4e, 0xc4, 0x7c, 0xda, 0x7c, 0x12, - 0xaf, 0x45, 0x61, 0x95, 0xc4, 0x31, 0xa9, 0x89, 0x79, 0xd9, 0xb4, 0xd2, 0x2f, 0x49, 0x6c, 0xa6, - 0xd2, 0x4d, 0xe8, 0x62, 0x90, 0x44, 0x3b, 0x73, 0x4f, 0x8b, 0x3e, 0x9f, 0xc8, 0xa9, 0xf1, 0xe6, - 0xdb, 0xd3, 0x48, 0x0e, 0x85, 0x62, 0xe2, 0x9f, 0x18, 0xe7, 0xf5, 0x1a, 0x7d, 0xcd, 0x81, 0xb1, - 0x76, 0x58, 0x8b, 0x31, 0xa9, 0x86, 0x9d, 0x36, 0xa9, 0x89, 0xe9, 0xfd, 0xb0, 0xdd, 0x61, 0xac, - 0x69, 0x14, 0x78, 0xff, 0x4f, 0x8a, 0xfe, 0x8f, 0xe9, 0x45, 0xd8, 0xe8, 0x0a, 0x7a, 0x16, 0xc6, - 0x82, 0x30, 0xa9, 0xb4, 0x49, 0xd5, 0xdf, 0xf4, 0x49, 0x8d, 0x2d, 0xfc, 0x91, 0xb4, 0xe5, 0x55, - 0xad, 0x0c, 0x1b, 0x35, 0xa7, 0x16, 0xa1, 0xdc, 0x6b, 0xe6, 0xd0, 0x24, 0x0c, 0x6c, 0x91, 0x1d, - 0xce, 0x6c, 0x30, 0xfd, 0x17, 0x9d, 0x94, 0x0c, 0x88, 0x6e, 0xe3, 0x11, 0xc1, 0x59, 0xde, 0x53, - 0x78, 0xd6, 0x99, 0x7a, 0x3f, 0x1c, 0xef, 0xea, 0xfa, 0x7e, 0x10, 0xb8, 0xdf, 0x1b, 0x82, 0x11, - 0xf9, 0x29, 0xd0, 0x23, 0x30, 0x18, 0x78, 0x2d, 0xc9, 0xe7, 0xc6, 0xc4, 0x38, 0x06, 0xaf, 0x7a, - 0x2d, 0xba, 0xc3, 0xbd, 0x16, 0xa1, 0x35, 0xda, 0x5e, 0xd2, 0x60, 0x78, 0xb4, 0x1a, 0x6b, 0x5e, - 0xd2, 0xc0, 0xac, 0x04, 0x3d, 0x04, 0x83, 0xad, 0xb0, 0x46, 0xd8, 0x5c, 0x14, 0x39, 0x87, 0x58, - 0x09, 0x6b, 0x04, 0x33, 0x28, 0x6d, 0xbf, 0x19, 0x85, 0xad, 0xf2, 0xa0, 0xd9, 0x7e, 0x31, 0x0a, - 0x5b, 0x98, 0x95, 0xa0, 0xaf, 0x3a, 0x30, 0x29, 0xd7, 0xf6, 0x95, 0xb0, 0xea, 0x25, 0x7e, 0x18, - 0x94, 0x8b, 0x8c, 0xa3, 0x60, 0x7b, 0x5b, 0x4a, 0x62, 0x9e, 0x2b, 0x8b, 0x2e, 0x4c, 0x66, 0x4b, - 0x70, 0x57, 0x2f, 0xd0, 0x05, 0x80, 0x7a, 0x33, 0xdc, 0xf0, 0x9a, 0x74, 0x42, 0xca, 0x43, 0x6c, - 0x08, 0x8a, 0x33, 0x2c, 0xa9, 0x12, 0xac, 0xd5, 0x42, 0xb7, 0x60, 0xd8, 0xe3, 0xdc, 0xbf, 0x3c, - 0xcc, 0x06, 0xf1, 0xbc, 0x8d, 0x41, 0x18, 0xc7, 0xc9, 0x5c, 0xe9, 0xf6, 0xee, 0xf4, 0xb0, 0x00, - 0x62, 0x49, 0x0e, 0x3d, 0x05, 0x23, 0x61, 0x9b, 0xf6, 0xdb, 0x6b, 0x96, 0x47, 0xd8, 0xc2, 0x9c, - 0x14, 0x7d, 0x1d, 0x59, 0x15, 0x70, 0xac, 0x6a, 0xa0, 0x27, 0x61, 0x38, 0xee, 0x6c, 0xd0, 0xef, - 0x58, 0x1e, 0x65, 0x03, 0x3b, 0x26, 0x2a, 0x0f, 0x57, 0x38, 0x18, 0xcb, 0x72, 0xf4, 0x6e, 0x28, - 0x45, 0xa4, 0xda, 0x89, 0x62, 0x42, 0x3f, 0x6c, 0x19, 0x18, 0xee, 0x13, 0xa2, 0x7a, 0x09, 0xa7, - 0x45, 0x58, 0xaf, 0x87, 0xde, 0x07, 0x13, 0xf4, 0x03, 0x5f, 0xbc, 0xd5, 0x8e, 0x48, 0x1c, 0xd3, - 0xaf, 0x5a, 0x62, 0x84, 0x4e, 0x8b, 0x96, 0x13, 0x8b, 0x46, 0x29, 0xce, 0xd4, 0x46, 0xaf, 0x03, - 0x78, 0x8a, 0x67, 0x94, 0xc7, 0xd8, 0x64, 0x5e, 0xb1, 0xb7, 0x22, 0x96, 0xe6, 0xe7, 0x26, 0xe8, - 0x77, 0x4c, 0x7f, 0x63, 0x8d, 0x1e, 0x9d, 0x9f, 0x1a, 0x69, 0x92, 0x84, 0xd4, 0xca, 0xe3, 0x6c, - 0xc0, 0x6a, 0x7e, 0x16, 0x38, 0x18, 0xcb, 0x72, 0xf7, 0x6f, 0x17, 0x40, 0xc3, 0x82, 0xe6, 0x60, - 0x44, 0xf0, 0x35, 0xb1, 0x25, 0xe7, 0x1e, 0x97, 0xdf, 0x41, 0x7e, 0xc1, 0x3b, 0xbb, 0xb9, 0xfc, - 0x50, 0xb5, 0x43, 0x6f, 0x40, 0xa9, 0x1d, 0xd6, 0x56, 0x48, 0xe2, 0xd5, 0xbc, 0xc4, 0x13, 0xa7, - 0xb9, 0x85, 0x13, 0x46, 0x62, 0x9c, 0x3b, 0x46, 0x3f, 0xdd, 0x5a, 0x4a, 0x02, 0xeb, 0xf4, 0xd0, - 0x73, 0x80, 0x62, 0x12, 0x6d, 0xfb, 0x55, 0x32, 0x5b, 0xad, 0x52, 0x91, 0x88, 0x6d, 0x80, 0x01, - 0x36, 0x98, 0x29, 0x31, 0x18, 0x54, 0xe9, 0xaa, 0x81, 0x73, 0x5a, 0xb9, 0xdf, 0x2f, 0xc0, 0x84, - 0x36, 0xd6, 0x36, 0xa9, 0xa2, 0xb7, 0x1c, 0x38, 0xa6, 0x8e, 0xb3, 0xb9, 0x9d, 0xab, 0x74, 0x55, - 0xf1, 0xc3, 0x8a, 0xd8, 0xfc, 0xbe, 0x94, 0x96, 0xfa, 0x29, 0xe8, 0x70, 0x5e, 0x7f, 0x46, 0x8c, - 0xe1, 0x58, 0xa6, 0x14, 0x67, 0xbb, 0x35, 0xf5, 0x15, 0x07, 0x4e, 0xe6, 0xa1, 0xc8, 0xe1, 0xb9, - 0x0d, 0x9d, 0xe7, 0x5a, 0x65, 0x5e, 0x94, 0x2a, 0x1d, 0x8c, 0xce, 0xc7, 0xff, 0x6f, 0x01, 0x26, - 0xf5, 0x25, 0xc4, 0x24, 0x81, 0x7f, 0xe6, 0xc0, 0x29, 0x39, 0x02, 0x4c, 0xe2, 0x4e, 0x33, 0x33, - 0xbd, 0x2d, 0xab, 0xd3, 0xcb, 0x4f, 0xd2, 0xd9, 0x3c, 0x7a, 0x7c, 0x9a, 0x1f, 0x16, 0xd3, 0x7c, - 0x2a, 0xb7, 0x0e, 0xce, 0xef, 0xea, 0xd4, 0xb7, 0x1c, 0x98, 0xea, 0x8d, 0x34, 0x67, 0xe2, 0xdb, - 0xe6, 0xc4, 0xbf, 0x68, 0x6f, 0x90, 0x9c, 0x3c, 0x9b, 0x7e, 0x36, 0x58, 0xfd, 0x03, 0xfc, 0xf6, - 0x08, 0x74, 0x9d, 0x21, 0xe8, 0x69, 0x28, 0x09, 0x76, 0x7c, 0x25, 0xac, 0xc7, 0xac, 0x93, 0x23, - 0x7c, 0xaf, 0xcd, 0xa6, 0x60, 0xac, 0xd7, 0x41, 0x35, 0x28, 0xc4, 0xcf, 0x88, 0xae, 0x5b, 0x60, - 0x6f, 0x95, 0x67, 0x94, 0x14, 0x39, 0x74, 0x7b, 0x77, 0xba, 0x50, 0x79, 0x06, 0x17, 0xe2, 0x67, - 0xa8, 0xa4, 0x5e, 0xf7, 0x13, 0x7b, 0x92, 0xfa, 0x92, 0x9f, 0x28, 0x3a, 0x4c, 0x52, 0x5f, 0xf2, - 0x13, 0x4c, 0x49, 0x50, 0x0d, 0xa4, 0x91, 0x24, 0x6d, 0x76, 0xe2, 0x5b, 0xd1, 0x40, 0x2e, 0xad, - 0xaf, 0xaf, 0x29, 0x5a, 0x4c, 0xbe, 0xa0, 0x10, 0xcc, 0xa8, 0xa0, 0xcf, 0x3a, 0x74, 0xc6, 0x79, - 0x61, 0x18, 0xed, 0x08, 0xc1, 0xe1, 0x9a, 0xbd, 0x25, 0x10, 0x46, 0x3b, 0x8a, 0xb8, 0xf8, 0x90, - 0xaa, 0x00, 0xeb, 0xa4, 0xd9, 0xc0, 0x6b, 0x9b, 0x31, 0x93, 0x13, 0xec, 0x0c, 0x7c, 0x61, 0xb1, - 0x92, 0x19, 0xf8, 0xc2, 0x62, 0x05, 0x33, 0x2a, 0xf4, 0x83, 0x46, 0xde, 0x4d, 0x21, 0x63, 0x58, - 0xf8, 0xa0, 0xd8, 0xbb, 0x69, 0x7e, 0x50, 0xec, 0xdd, 0xc4, 0x94, 0x04, 0xa5, 0x14, 0xc6, 0x31, - 0x13, 0x29, 0xac, 0x50, 0x5a, 0xad, 0x54, 0x4c, 0x4a, 0xab, 0x95, 0x0a, 0xa6, 0x24, 0xd8, 0x22, - 0xad, 0xc6, 0x4c, 0x1e, 0xb1, 0xb3, 0x48, 0xe7, 0x33, 0x94, 0x96, 0xe6, 0x2b, 0x98, 0x92, 0xa0, - 0x2c, 0xc3, 0x7b, 0xb5, 0x13, 0x71, 0x61, 0xa6, 0x74, 0x61, 0xd5, 0xc2, 0x7a, 0xa1, 0xe8, 0x14, - 0xb5, 0xd1, 0xdb, 0xbb, 0xd3, 0x45, 0x06, 0xc2, 0x9c, 0x90, 0xfb, 0x07, 0x03, 0x29, 0xbb, 0x90, - 0xfc, 0x1c, 0xfd, 0x3a, 0x3b, 0x08, 0x05, 0x2f, 0x10, 0xa2, 0xaf, 0x73, 0x68, 0xa2, 0xef, 0x09, - 0x7e, 0xe2, 0x19, 0xe4, 0x70, 0x96, 0x3e, 0xfa, 0xa2, 0xd3, 0xad, 0xdb, 0x7a, 0xf6, 0xcf, 0xb2, - 0xf4, 0x60, 0xe6, 0x67, 0xc5, 0x9e, 0x2a, 0xef, 0xd4, 0x67, 0x9d, 0x54, 0x88, 0x88, 0x7b, 0x9d, - 0x03, 0x1f, 0x31, 0xcf, 0x01, 0x8b, 0x0a, 0xb9, 0xce, 0xf7, 0x3f, 0xe7, 0xc0, 0xb8, 0x84, 0x53, - 0xf1, 0x38, 0x46, 0xb7, 0x60, 0x44, 0xf6, 0x54, 0x7c, 0x3d, 0x9b, 0xb6, 0x00, 0x25, 0xc4, 0xab, - 0xce, 0x28, 0x6a, 0xee, 0x5b, 0x43, 0x80, 0xd2, 0xb3, 0xaa, 0x1d, 0xc6, 0x3e, 0xe3, 0x44, 0x07, - 0x38, 0x85, 0x02, 0xed, 0x14, 0xba, 0x6e, 0xf3, 0x14, 0x4a, 0xbb, 0x65, 0x9c, 0x47, 0x5f, 0xcc, - 0xf0, 0x6d, 0x7e, 0x30, 0x7d, 0xf8, 0x50, 0xf8, 0xb6, 0xd6, 0x85, 0xbd, 0x39, 0xf8, 0xb6, 0xe0, - 0xe0, 0xfc, 0xe8, 0xfa, 0x25, 0xbb, 0x1c, 0x5c, 0xeb, 0x45, 0x96, 0x97, 0x47, 0x9c, 0xc3, 0xf2, - 0xb3, 0xeb, 0x86, 0x55, 0x0e, 0xab, 0x51, 0x35, 0x79, 0x6d, 0xc4, 0x79, 0xed, 0x90, 0x2d, 0x9a, - 0x1a, 0xaf, 0xcd, 0xd2, 0x54, 0x5c, 0xf7, 0x55, 0xc9, 0x75, 0xf9, 0xa9, 0xf5, 0x82, 0x65, 0xae, - 0xab, 0xd1, 0xed, 0xe6, 0xbf, 0xaf, 0xc0, 0xa9, 0xee, 0x7a, 0x98, 0x6c, 0xa2, 0xf3, 0x30, 0x5a, - 0x0d, 0x83, 0x4d, 0xbf, 0xbe, 0xe2, 0xb5, 0x85, 0xbe, 0xa6, 0x78, 0xd1, 0xbc, 0x2c, 0xc0, 0x69, - 0x1d, 0xf4, 0x30, 0x67, 0x3c, 0xdc, 0x22, 0x52, 0x12, 0x55, 0x07, 0x96, 0xc9, 0x0e, 0xe3, 0x42, - 0xef, 0x19, 0xf9, 0xea, 0x37, 0xa6, 0x1f, 0xf8, 0xf8, 0x1f, 0x3f, 0xf2, 0x80, 0xfb, 0x47, 0x03, - 0x70, 0x36, 0x97, 0xa6, 0x90, 0xd6, 0x7f, 0xdb, 0x90, 0xd6, 0xb5, 0x72, 0xc1, 0x45, 0x6e, 0xd8, - 0x14, 0x64, 0x35, 0xf4, 0x79, 0x72, 0xb9, 0x56, 0x8c, 0xf3, 0x3b, 0x45, 0x27, 0x2a, 0xf0, 0x5a, - 0x24, 0x6e, 0x7b, 0x55, 0x22, 0x46, 0xaf, 0x26, 0xea, 0xaa, 0x2c, 0xc0, 0x69, 0x1d, 0xae, 0x42, - 0x6f, 0x7a, 0x9d, 0x66, 0x22, 0x0c, 0x65, 0x9a, 0x0a, 0xcd, 0xc0, 0x58, 0x96, 0xa3, 0xbf, 0xe3, - 0x00, 0xea, 0xa6, 0x2a, 0x36, 0xe2, 0xfa, 0x61, 0xcc, 0xc3, 0xdc, 0xe9, 0xdb, 0x9a, 0x12, 0xae, - 0x8d, 0x34, 0xa7, 0x1f, 0xda, 0x37, 0xfd, 0x68, 0x7a, 0x0e, 0x71, 0xe5, 0xa0, 0x0f, 0x1b, 0x1a, - 0x33, 0xb5, 0x54, 0xab, 0x24, 0x8e, 0xb9, 0x39, 0x4e, 0x37, 0xb5, 0x30, 0x30, 0x96, 0xe5, 0x68, - 0x1a, 0x8a, 0x24, 0x8a, 0xc2, 0x48, 0xe8, 0xda, 0x6c, 0x19, 0x5f, 0xa4, 0x00, 0xcc, 0xe1, 0xee, - 0x8f, 0x0b, 0x50, 0xee, 0xa5, 0x9d, 0xa0, 0xdf, 0xd5, 0xf4, 0x6a, 0xa1, 0x39, 0x09, 0xc5, 0x2f, - 0x3c, 0x3c, 0x9d, 0x28, 0xab, 0x00, 0xf6, 0xd0, 0xb0, 0x45, 0x29, 0xce, 0x76, 0x70, 0xea, 0x4b, - 0x9a, 0x86, 0xad, 0xa3, 0xc8, 0x39, 0xe0, 0x37, 0xcd, 0x03, 0x7e, 0xcd, 0xf6, 0xa0, 0xf4, 0x63, - 0xfe, 0x4f, 0x8a, 0x70, 0x42, 0x96, 0x56, 0x08, 0x3d, 0x2a, 0x9f, 0xef, 0x90, 0x68, 0x07, 0xfd, - 0xc0, 0x81, 0x93, 0x5e, 0xd6, 0x74, 0xe3, 0x93, 0x43, 0x98, 0x68, 0x8d, 0xea, 0xcc, 0x6c, 0x0e, - 0x45, 0x3e, 0xd1, 0x17, 0xc4, 0x44, 0x9f, 0xcc, 0xab, 0xd2, 0xc3, 0xee, 0x9e, 0x3b, 0x00, 0xf4, - 0x2c, 0x8c, 0x49, 0x38, 0x33, 0xf7, 0xf0, 0x2d, 0xae, 0x8c, 0xdb, 0xb3, 0x5a, 0x19, 0x36, 0x6a, - 0xd2, 0x96, 0x09, 0x69, 0xb5, 0x9b, 0x5e, 0x42, 0x34, 0x43, 0x91, 0x6a, 0xb9, 0xae, 0x95, 0x61, - 0xa3, 0x26, 0x7a, 0x1c, 0x86, 0x82, 0xb0, 0x46, 0x2e, 0xd7, 0x84, 0x81, 0x78, 0x42, 0xb4, 0x19, - 0xba, 0xca, 0xa0, 0x58, 0x94, 0xa2, 0xc7, 0x52, 0x6b, 0x5c, 0x91, 0x6d, 0xa1, 0x52, 0x9e, 0x25, - 0x0e, 0xfd, 0x3d, 0x07, 0x46, 0x69, 0x8b, 0xf5, 0x9d, 0x36, 0xa1, 0x67, 0x1b, 0xfd, 0x22, 0xb5, - 0xc3, 0xf9, 0x22, 0x57, 0x25, 0x19, 0xd3, 0xd4, 0x31, 0xaa, 0xe0, 0x6f, 0xbe, 0x3d, 0x3d, 0x22, - 0x7f, 0xe0, 0xb4, 0x57, 0x53, 0x4b, 0xf0, 0x60, 0xcf, 0xaf, 0xb9, 0x2f, 0x57, 0xc0, 0x5f, 0x83, - 0x09, 0xb3, 0x13, 0xfb, 0xf2, 0x03, 0xfc, 0x13, 0x6d, 0xdb, 0xf1, 0x71, 0x09, 0x7e, 0x76, 0xdf, - 0xa4, 0x59, 0xb5, 0x18, 0x16, 0xc4, 0xd2, 0x33, 0x17, 0xc3, 0x82, 0x58, 0x0c, 0x0b, 0xee, 0x1f, - 0x3a, 0xe9, 0xd6, 0xd4, 0xc4, 0x3c, 0x7a, 0x30, 0x77, 0xa2, 0xa6, 0x60, 0xc4, 0xea, 0x60, 0xbe, - 0x86, 0xaf, 0x60, 0x0a, 0x47, 0x5f, 0xd2, 0xb8, 0x23, 0x6d, 0xd6, 0x11, 0x6e, 0x0d, 0x4b, 0x26, - 0x7a, 0x03, 0x71, 0x37, 0xff, 0x13, 0x05, 0x38, 0xdb, 0x05, 0xf7, 0x8b, 0x05, 0x78, 0x78, 0x4f, - 0xa1, 0x35, 0xb7, 0xe3, 0xce, 0x7d, 0xef, 0x38, 0x3d, 0xd6, 0x22, 0xd2, 0x0e, 0xaf, 0xe1, 0x2b, - 0xe2, 0x7b, 0xa9, 0x63, 0x0d, 0x73, 0x30, 0x96, 0xe5, 0x54, 0x74, 0xd8, 0x22, 0x3b, 0x8b, 0x61, - 0xd4, 0xf2, 0x12, 0xc1, 0x1d, 0x94, 0xe8, 0xb0, 0x2c, 0x0b, 0x70, 0x5a, 0xc7, 0xfd, 0x81, 0x03, - 0xd9, 0x0e, 0x20, 0x0f, 0x26, 0x3a, 0x31, 0x89, 0xe8, 0x91, 0x5a, 0x21, 0xd5, 0x88, 0xc8, 0xe5, - 0xf9, 0xd8, 0x0c, 0xf7, 0xf6, 0xd3, 0x11, 0xce, 0x54, 0xc3, 0x88, 0xcc, 0x6c, 0x3f, 0x3d, 0xc3, - 0x6b, 0x2c, 0x93, 0x9d, 0x0a, 0x69, 0x12, 0x8a, 0x63, 0x0e, 0xdd, 0xde, 0x9d, 0x9e, 0xb8, 0x66, - 0x20, 0xc0, 0x19, 0x84, 0x94, 0x44, 0xdb, 0x8b, 0xe3, 0x9b, 0x61, 0x54, 0x13, 0x24, 0x0a, 0xfb, - 0x26, 0xb1, 0x66, 0x20, 0xc0, 0x19, 0x84, 0xee, 0xf7, 0xa9, 0xfa, 0xa8, 0x4b, 0xad, 0xe8, 0x1b, - 0x54, 0xf6, 0xa1, 0x90, 0xb9, 0x66, 0xb8, 0x31, 0x1f, 0x06, 0x89, 0xe7, 0x07, 0x44, 0x06, 0x0b, - 0xac, 0x5b, 0x92, 0x91, 0x0d, 0xdc, 0xa9, 0x0d, 0xbf, 0xbb, 0x0c, 0xe7, 0xf4, 0x85, 0xca, 0x38, - 0x1b, 0xcd, 0x70, 0x23, 0xeb, 0x05, 0xa4, 0x95, 0x30, 0x2b, 0x71, 0x7f, 0xea, 0xc0, 0x99, 0x1e, - 0xc2, 0x38, 0xfa, 0x8a, 0x03, 0xe3, 0x1b, 0x3f, 0x13, 0x63, 0x33, 0xbb, 0x81, 0xde, 0x07, 0x13, - 0x14, 0x40, 0x4f, 0x22, 0xb1, 0x36, 0x0b, 0xa6, 0x87, 0x6a, 0xce, 0x28, 0xc5, 0x99, 0xda, 0xee, - 0x6f, 0x14, 0x20, 0x87, 0x0a, 0x7a, 0x0a, 0x46, 0x48, 0x50, 0x6b, 0x87, 0x7e, 0x90, 0x08, 0x66, - 0xa4, 0xb8, 0xde, 0x45, 0x01, 0xc7, 0xaa, 0x86, 0xd0, 0x3f, 0xc4, 0xc4, 0x14, 0xba, 0xf4, 0x0f, - 0xd1, 0xf3, 0xb4, 0x0e, 0xaa, 0xc3, 0xa4, 0xc7, 0xfd, 0x2b, 0x6c, 0xed, 0xb1, 0x65, 0x3a, 0xb0, - 0x9f, 0x65, 0x7a, 0x92, 0xb9, 0x3f, 0x33, 0x28, 0x70, 0x17, 0x52, 0xf4, 0x6e, 0x28, 0x75, 0x62, - 0x52, 0x59, 0x58, 0x9e, 0x8f, 0x48, 0x8d, 0x6b, 0xc5, 0x9a, 0xdf, 0xef, 0x5a, 0x5a, 0x84, 0xf5, - 0x7a, 0xee, 0x3f, 0x77, 0x60, 0x78, 0xce, 0xab, 0x6e, 0x85, 0x9b, 0x9b, 0x74, 0x2a, 0x6a, 0x9d, - 0x28, 0x35, 0x6c, 0x69, 0x53, 0xb1, 0x20, 0xe0, 0x58, 0xd5, 0x40, 0xeb, 0x30, 0xc4, 0x37, 0xbc, - 0xd8, 0x76, 0xbf, 0xa8, 0x8d, 0x47, 0xc5, 0xf1, 0xb0, 0xe5, 0xd0, 0x49, 0xfc, 0xe6, 0x0c, 0x8f, - 0xe3, 0x99, 0xb9, 0x1c, 0x24, 0xab, 0x51, 0x25, 0x89, 0xfc, 0xa0, 0x3e, 0x07, 0xf4, 0xb8, 0x58, - 0x64, 0x38, 0xb0, 0xc0, 0x45, 0x87, 0xd1, 0xf2, 0x6e, 0x49, 0x72, 0x82, 0xfd, 0xa8, 0x61, 0xac, - 0xa4, 0x45, 0x58, 0xaf, 0xe7, 0xfe, 0x91, 0x03, 0xa3, 0x73, 0x5e, 0xec, 0x57, 0xff, 0x02, 0x31, - 0x9f, 0x0f, 0x41, 0x71, 0xde, 0xab, 0x36, 0x08, 0xba, 0x96, 0x55, 0x7a, 0x4b, 0x17, 0x9e, 0xc8, - 0x23, 0xa3, 0x14, 0x60, 0x9d, 0xd2, 0x78, 0x2f, 0xd5, 0xd8, 0x7d, 0xdb, 0x81, 0x89, 0xf9, 0xa6, - 0x4f, 0x82, 0x64, 0x9e, 0x44, 0x09, 0x9b, 0xb8, 0x3a, 0x4c, 0x56, 0x15, 0xe4, 0x20, 0x53, 0xc7, - 0x56, 0xeb, 0x7c, 0x06, 0x05, 0xee, 0x42, 0x8a, 0x6a, 0x70, 0x8c, 0xc3, 0xd2, 0x5d, 0xb1, 0xaf, - 0xf9, 0x63, 0xd6, 0xd1, 0x79, 0x13, 0x03, 0xce, 0xa2, 0x74, 0x7f, 0xe2, 0xc0, 0x99, 0xf9, 0x66, - 0x27, 0x4e, 0x48, 0x74, 0x43, 0x70, 0x23, 0x29, 0xde, 0xa2, 0x8f, 0xc0, 0x48, 0x4b, 0x7a, 0x6c, - 0x9d, 0xbb, 0x2c, 0x60, 0xc6, 0xcf, 0x68, 0x6d, 0xda, 0x99, 0xd5, 0x8d, 0x97, 0x49, 0x35, 0x59, - 0x21, 0x89, 0x97, 0x86, 0x17, 0xa4, 0x30, 0xac, 0xb0, 0xa2, 0x36, 0x0c, 0xc6, 0x6d, 0x52, 0xb5, - 0x17, 0xdd, 0x25, 0xc7, 0x50, 0x69, 0x93, 0x6a, 0xca, 0xd7, 0x99, 0xaf, 0x91, 0x51, 0x72, 0xff, - 0x97, 0x03, 0x67, 0x7b, 0x8c, 0xf7, 0x8a, 0x1f, 0x27, 0xe8, 0xa5, 0xae, 0x31, 0xcf, 0xf4, 0x37, - 0x66, 0xda, 0x9a, 0x8d, 0x58, 0x31, 0x04, 0x09, 0xd1, 0xc6, 0xfb, 0x51, 0x28, 0xfa, 0x09, 0x69, - 0x49, 0x33, 0xb4, 0x05, 0x83, 0x51, 0x8f, 0xb1, 0xcc, 0x8d, 0xcb, 0x18, 0xbf, 0xcb, 0x94, 0x1e, - 0xe6, 0x64, 0xdd, 0x2d, 0x18, 0x9a, 0x0f, 0x9b, 0x9d, 0x56, 0xd0, 0x5f, 0xa4, 0x4c, 0xb2, 0xd3, - 0x26, 0xd9, 0x33, 0x92, 0x89, 0xff, 0xac, 0x44, 0x1a, 0x8e, 0x06, 0xf2, 0x0d, 0x47, 0xee, 0xbf, - 0x70, 0x80, 0xee, 0xaa, 0x9a, 0x2f, 0x3c, 0x89, 0x1c, 0x1d, 0x27, 0xf8, 0xb0, 0x8e, 0xee, 0xce, - 0xee, 0xf4, 0xb8, 0xaa, 0xa8, 0xe1, 0xff, 0x10, 0x0c, 0xc5, 0x4c, 0x25, 0x17, 0x7d, 0x58, 0x94, - 0xf2, 0x33, 0x57, 0xd4, 0xef, 0xec, 0x4e, 0xf7, 0x15, 0xb6, 0x39, 0xa3, 0x70, 0x0b, 0xa7, 0xa7, - 0xc0, 0x4a, 0x05, 0xbe, 0x16, 0x89, 0x63, 0xaf, 0x2e, 0x35, 0x3c, 0x25, 0xf0, 0xad, 0x70, 0x30, - 0x96, 0xe5, 0xee, 0x97, 0x1d, 0x18, 0x57, 0x87, 0x17, 0x15, 0xdf, 0xd1, 0x55, 0xfd, 0x98, 0xe3, - 0x2b, 0xe5, 0xe1, 0x1e, 0x1c, 0x47, 0x1c, 0xe4, 0x7b, 0x9f, 0x82, 0xef, 0x82, 0xb1, 0x1a, 0x69, - 0x93, 0xa0, 0x46, 0x82, 0x2a, 0x55, 0xbf, 0xe9, 0x0a, 0x19, 0x9d, 0x9b, 0xa4, 0xfa, 0xe6, 0x82, - 0x06, 0xc7, 0x46, 0x2d, 0xf7, 0x9b, 0x0e, 0x3c, 0xa8, 0xd0, 0x55, 0x48, 0x82, 0x49, 0x12, 0xed, - 0xa8, 0x30, 0xcd, 0xfd, 0x9d, 0x56, 0x37, 0xa8, 0xfc, 0x9b, 0x44, 0x9c, 0xf8, 0xc1, 0x8e, 0xab, - 0x12, 0x97, 0x96, 0x19, 0x12, 0x2c, 0xb1, 0xb9, 0xbf, 0x36, 0x00, 0x27, 0xf5, 0x4e, 0x2a, 0x06, - 0xf3, 0x09, 0x07, 0x40, 0xcd, 0x00, 0x3d, 0x90, 0x07, 0xec, 0xf8, 0xae, 0x8c, 0x2f, 0x95, 0xb2, - 0x20, 0x05, 0x8e, 0xb1, 0x46, 0x16, 0xbd, 0x00, 0x63, 0xdb, 0x74, 0x53, 0x90, 0x15, 0x2a, 0x2e, - 0xc4, 0xe5, 0x01, 0xd6, 0x8d, 0xe9, 0xbc, 0x8f, 0x79, 0x3d, 0xad, 0x97, 0x9a, 0x03, 0x34, 0x60, - 0x8c, 0x0d, 0x54, 0x54, 0xd3, 0x19, 0x8f, 0xf4, 0x4f, 0x22, 0x6c, 0xe2, 0x1f, 0xb4, 0x38, 0xc6, - 0xec, 0x57, 0x9f, 0x3b, 0x7e, 0x7b, 0x77, 0x7a, 0xdc, 0x00, 0x61, 0xb3, 0x13, 0xee, 0x0b, 0xc0, - 0xe6, 0xc2, 0x0f, 0x3a, 0x64, 0x35, 0x40, 0x8f, 0x4a, 0x1b, 0x1d, 0xf7, 0xab, 0x28, 0xce, 0xa1, - 0xdb, 0xe9, 0xa8, 0x2e, 0xbb, 0xe9, 0xf9, 0x4d, 0x16, 0xbe, 0x48, 0x6b, 0x29, 0x5d, 0x76, 0x91, - 0x41, 0xb1, 0x28, 0x75, 0x67, 0x60, 0x78, 0x9e, 0x8e, 0x9d, 0x44, 0x14, 0xaf, 0x1e, 0x75, 0x3c, - 0x6e, 0x44, 0x1d, 0xcb, 0xe8, 0xe2, 0x75, 0x38, 0x35, 0x1f, 0x11, 0x2f, 0x21, 0x95, 0x67, 0xe6, - 0x3a, 0xd5, 0x2d, 0x92, 0xf0, 0xd0, 0xae, 0x18, 0xbd, 0x17, 0xc6, 0x43, 0x76, 0x64, 0x5c, 0x09, - 0xab, 0x5b, 0x7e, 0x50, 0x17, 0x26, 0xd7, 0x53, 0x02, 0xcb, 0xf8, 0xaa, 0x5e, 0x88, 0xcd, 0xba, - 0xee, 0x7f, 0x28, 0xc0, 0xd8, 0x7c, 0x14, 0x06, 0x92, 0x2d, 0x1e, 0xc1, 0x51, 0x96, 0x18, 0x47, - 0x99, 0x05, 0x77, 0xa7, 0xde, 0xff, 0x5e, 0xc7, 0x19, 0x7a, 0x5d, 0xb1, 0xc8, 0x01, 0x5b, 0x2a, - 0x88, 0x41, 0x97, 0xe1, 0x4e, 0x3f, 0xb6, 0xc9, 0x40, 0xdd, 0xff, 0xe8, 0xc0, 0xa4, 0x5e, 0xfd, - 0x08, 0x4e, 0xd0, 0xd8, 0x3c, 0x41, 0xaf, 0xda, 0x1d, 0x6f, 0x8f, 0x63, 0xf3, 0x9f, 0x0e, 0x9b, - 0xe3, 0x64, 0xbe, 0xee, 0xaf, 0x3a, 0x30, 0x76, 0x53, 0x03, 0x88, 0xc1, 0xda, 0x16, 0x62, 0xde, - 0x21, 0xd9, 0x8c, 0x0e, 0xbd, 0x93, 0xf9, 0x8d, 0x8d, 0x9e, 0x50, 0xbe, 0x1f, 0x57, 0x1b, 0xa4, - 0xd6, 0x69, 0xca, 0xe3, 0x5b, 0x4d, 0x69, 0x45, 0xc0, 0xb1, 0xaa, 0x81, 0x5e, 0x82, 0xe3, 0xd5, - 0x30, 0xa8, 0x76, 0xa2, 0x88, 0x04, 0xd5, 0x9d, 0x35, 0x76, 0x47, 0x42, 0x1c, 0x88, 0x33, 0xa2, - 0xd9, 0xf1, 0xf9, 0x6c, 0x85, 0x3b, 0x79, 0x40, 0xdc, 0x8d, 0x88, 0x3b, 0x0b, 0x62, 0x7a, 0x64, - 0x09, 0x85, 0x4b, 0x73, 0x16, 0x30, 0x30, 0x96, 0xe5, 0xe8, 0x1a, 0x9c, 0x89, 0x13, 0x2f, 0x4a, - 0xfc, 0xa0, 0xbe, 0x40, 0xbc, 0x5a, 0xd3, 0x0f, 0xa8, 0x2a, 0x11, 0x06, 0x35, 0xee, 0x4a, 0x1c, - 0x98, 0x3b, 0x7b, 0x7b, 0x77, 0xfa, 0x4c, 0x25, 0xbf, 0x0a, 0xee, 0xd5, 0x16, 0x7d, 0x08, 0xa6, - 0x84, 0x3b, 0x62, 0xb3, 0xd3, 0x7c, 0x2e, 0xdc, 0x88, 0x2f, 0xf9, 0x31, 0xd5, 0xe3, 0xaf, 0xf8, - 0x2d, 0x3f, 0x61, 0x0e, 0xc3, 0xe2, 0xdc, 0xb9, 0xdb, 0xbb, 0xd3, 0x53, 0x95, 0x9e, 0xb5, 0xf0, - 0x1e, 0x18, 0x10, 0x86, 0xd3, 0x9c, 0xf9, 0x75, 0xe1, 0x1e, 0x66, 0xb8, 0xa7, 0x6e, 0xef, 0x4e, - 0x9f, 0x5e, 0xcc, 0xad, 0x81, 0x7b, 0xb4, 0xa4, 0x5f, 0x30, 0xf1, 0x5b, 0xe4, 0xd5, 0x30, 0x20, - 0x2c, 0x50, 0x45, 0xfb, 0x82, 0xeb, 0x02, 0x8e, 0x55, 0x0d, 0xf4, 0x72, 0xba, 0x12, 0xe9, 0x76, - 0x11, 0x01, 0x27, 0xfb, 0xe7, 0x70, 0x4c, 0x35, 0xb9, 0xa1, 0x61, 0x62, 0x91, 0x94, 0x06, 0x6e, - 0xf4, 0x49, 0x07, 0xc6, 0xe2, 0x24, 0x54, 0xf7, 0x1a, 0x44, 0xc4, 0x89, 0x85, 0x65, 0x5f, 0xd1, - 0xb0, 0x72, 0xc1, 0x47, 0x87, 0x60, 0x83, 0x2a, 0xfa, 0x05, 0x18, 0x95, 0x0b, 0x38, 0x2e, 0x97, - 0x98, 0xac, 0xc4, 0xd4, 0x38, 0xb9, 0xbe, 0x63, 0x9c, 0x96, 0xbb, 0x3f, 0x1e, 0x00, 0xd4, 0xcd, - 0xd6, 0xd0, 0x32, 0x0c, 0x79, 0xd5, 0xc4, 0xdf, 0x96, 0xd1, 0x84, 0x8f, 0xe6, 0x1d, 0xf9, 0x7c, - 0x7a, 0x30, 0xd9, 0x24, 0x74, 0x55, 0x93, 0x94, 0x17, 0xce, 0xb2, 0xa6, 0x58, 0xa0, 0x40, 0x21, - 0x1c, 0x6f, 0x7a, 0x71, 0x22, 0xe9, 0xd7, 0xe8, 0x67, 0x12, 0x87, 0xc1, 0xcf, 0xf7, 0xf7, 0x21, - 0x68, 0x8b, 0xb9, 0x53, 0x74, 0xb7, 0x5d, 0xc9, 0x22, 0xc2, 0xdd, 0xb8, 0xd1, 0xc7, 0x98, 0xec, - 0xc4, 0x05, 0x5b, 0x29, 0xb4, 0x2c, 0x5b, 0x91, 0x2b, 0x38, 0x4e, 0x43, 0x6e, 0x12, 0x64, 0xb0, - 0x46, 0x12, 0x9d, 0x87, 0x51, 0xb6, 0x2b, 0x48, 0x8d, 0xf0, 0xbd, 0x3d, 0x90, 0x8a, 0xb8, 0x15, - 0x59, 0x80, 0xd3, 0x3a, 0x9a, 0x0c, 0xc1, 0xb7, 0x73, 0x0f, 0x19, 0x02, 0x3d, 0x0b, 0xc5, 0x76, - 0xc3, 0x8b, 0x65, 0x84, 0xba, 0x2b, 0x79, 0xf2, 0x1a, 0x05, 0x32, 0xc6, 0xa3, 0x7d, 0x4b, 0x06, - 0xc4, 0xbc, 0x81, 0xfb, 0x2f, 0x01, 0x86, 0x17, 0x66, 0x97, 0xd6, 0xbd, 0x78, 0xab, 0x0f, 0x0d, - 0x87, 0x6e, 0x32, 0x21, 0x8a, 0x66, 0xd9, 0xa4, 0x14, 0x51, 0xb1, 0xaa, 0x81, 0x02, 0x18, 0xf2, - 0x03, 0xca, 0x57, 0xca, 0x13, 0xb6, 0xbc, 0x08, 0x4a, 0x5b, 0x63, 0x66, 0x9e, 0xcb, 0x0c, 0x3b, - 0x16, 0x54, 0xd0, 0xeb, 0x30, 0xea, 0xc9, 0x0b, 0x42, 0xe2, 0x74, 0x5f, 0xb6, 0x61, 0x1e, 0x17, - 0x28, 0xf5, 0x00, 0x25, 0x01, 0xc2, 0x29, 0x41, 0xf4, 0x71, 0x07, 0x4a, 0x72, 0xe8, 0x98, 0x6c, - 0x0a, 0xcf, 0xf5, 0x8a, 0xbd, 0x31, 0x63, 0xb2, 0xc9, 0xa3, 0x57, 0x34, 0x00, 0xd6, 0x49, 0x76, - 0x69, 0x44, 0xc5, 0x7e, 0x34, 0x22, 0x74, 0x13, 0x46, 0x6f, 0xfa, 0x49, 0x83, 0x9d, 0xdf, 0xc2, - 0x63, 0xb6, 0x78, 0xef, 0xbd, 0xa6, 0xe8, 0xd2, 0x19, 0xbb, 0x21, 0x09, 0xe0, 0x94, 0x16, 0xdd, - 0x0e, 0xf4, 0x07, 0xbb, 0x60, 0xc5, 0x38, 0xff, 0xa8, 0xd9, 0x80, 0x15, 0xe0, 0xb4, 0x0e, 0x9d, - 0xe2, 0x31, 0xfa, 0xab, 0x42, 0x5e, 0xe9, 0x50, 0xd6, 0x22, 0x22, 0x12, 0x2d, 0xac, 0x2b, 0x89, - 0x91, 0x4f, 0xd6, 0x0d, 0x8d, 0x06, 0x36, 0x28, 0xd2, 0x3d, 0x72, 0xb3, 0x41, 0x02, 0x71, 0x63, - 0x42, 0xed, 0x91, 0x1b, 0x0d, 0x12, 0x60, 0x56, 0x82, 0x5e, 0xe7, 0x1a, 0x1a, 0x57, 0x15, 0x04, - 0xaf, 0xbf, 0x62, 0x47, 0x7b, 0xe1, 0x38, 0xf9, 0xa5, 0x85, 0xf4, 0x37, 0xd6, 0xe8, 0x51, 0x8e, - 0x11, 0x06, 0x17, 0x6f, 0xf9, 0x89, 0xb8, 0x6a, 0xa1, 0x38, 0xc6, 0x2a, 0x83, 0x62, 0x51, 0xca, - 0x23, 0x33, 0xe8, 0x22, 0x88, 0xd9, 0xbd, 0x8a, 0x51, 0x3d, 0x32, 0x83, 0x81, 0xb1, 0x2c, 0x47, - 0x7f, 0xd7, 0x81, 0x62, 0x23, 0x0c, 0xb7, 0xe2, 0xf2, 0x38, 0x5b, 0x1c, 0x16, 0x24, 0x66, 0xc1, - 0x71, 0x66, 0x2e, 0x51, 0xb4, 0xe6, 0xe5, 0xb1, 0x22, 0x83, 0xdd, 0xd9, 0x9d, 0x9e, 0xb8, 0xe2, - 0x6f, 0x92, 0xea, 0x4e, 0xb5, 0x49, 0x18, 0xe4, 0xcd, 0xb7, 0x35, 0xc8, 0xc5, 0x6d, 0x12, 0x24, - 0x98, 0xf7, 0x6a, 0xea, 0x73, 0x0e, 0x40, 0x8a, 0x28, 0xc7, 0x05, 0x4a, 0xcc, 0xa0, 0x01, 0x0b, - 0xea, 0xb2, 0xd1, 0x35, 0xdd, 0xa7, 0xfa, 0xaf, 0x1d, 0x28, 0xd1, 0xc1, 0x49, 0x16, 0xf8, 0x38, - 0x0c, 0x25, 0x5e, 0x54, 0x27, 0xd2, 0x0d, 0xa0, 0x3e, 0xc7, 0x3a, 0x83, 0x62, 0x51, 0x8a, 0x02, - 0x28, 0x26, 0x5e, 0xbc, 0x25, 0x85, 0xf4, 0xcb, 0xd6, 0xa6, 0x38, 0x95, 0xcf, 0xe9, 0xaf, 0x18, - 0x73, 0x32, 0xe8, 0x09, 0x18, 0xa1, 0x47, 0xc7, 0xa2, 0x17, 0xcb, 0xc8, 0x9c, 0x31, 0xca, 0xc4, - 0x17, 0x05, 0x0c, 0xab, 0x52, 0xf7, 0x37, 0x0a, 0x30, 0xb8, 0xc0, 0xd5, 0xb5, 0xa1, 0x38, 0xec, - 0x44, 0x55, 0x22, 0xc4, 0x76, 0x0b, 0x6b, 0x9a, 0xe2, 0xad, 0x30, 0x9c, 0x9a, 0xc2, 0xc4, 0x7e, - 0x63, 0x41, 0x0b, 0x7d, 0xc9, 0x81, 0x89, 0x24, 0xf2, 0x82, 0x78, 0x93, 0x39, 0x5c, 0xfc, 0x30, - 0x10, 0x53, 0x64, 0x61, 0x15, 0xae, 0x1b, 0x78, 0x2b, 0x09, 0x69, 0xa7, 0x7e, 0x1f, 0xb3, 0x0c, - 0x67, 0xfa, 0xe0, 0xfe, 0xa6, 0x03, 0x90, 0xf6, 0x1e, 0x7d, 0xd6, 0x81, 0x71, 0x4f, 0x8f, 0x08, - 0x15, 0x73, 0xb4, 0x6a, 0xcf, 0x3b, 0xcb, 0xd0, 0x72, 0x4b, 0x85, 0x01, 0xc2, 0x26, 0x61, 0xf7, - 0xdd, 0x50, 0x64, 0xbb, 0x83, 0xa9, 0x34, 0xc2, 0xb2, 0x9d, 0x35, 0x65, 0x49, 0x8b, 0x37, 0x56, - 0x35, 0xdc, 0x97, 0x60, 0xe2, 0xe2, 0x2d, 0x52, 0xed, 0x24, 0x61, 0xc4, 0xed, 0xfa, 0x3d, 0x6e, - 0x00, 0x39, 0x07, 0xba, 0x01, 0xf4, 0x1d, 0x07, 0x4a, 0x5a, 0x78, 0x20, 0x3d, 0xa9, 0xeb, 0xf3, - 0x15, 0x6e, 0xbe, 0x10, 0x53, 0xb5, 0x6c, 0x25, 0x00, 0x91, 0xa3, 0x4c, 0x8f, 0x11, 0x05, 0xc2, - 0x29, 0xc1, 0xbb, 0x84, 0xef, 0xb9, 0x7f, 0xe0, 0xc0, 0xa9, 0xdc, 0x58, 0xc6, 0xfb, 0xdc, 0x6d, - 0xc3, 0x85, 0x5e, 0xe8, 0xc3, 0x85, 0xfe, 0x3b, 0x0e, 0xa4, 0x98, 0x28, 0x2b, 0xda, 0x48, 0x7b, - 0xae, 0xb1, 0x22, 0x41, 0x49, 0x94, 0xa2, 0xd7, 0xe1, 0x8c, 0xf9, 0x05, 0x0f, 0xe8, 0x4d, 0xe1, - 0xaa, 0x67, 0x3e, 0x26, 0xdc, 0x8b, 0x84, 0xfb, 0x35, 0x07, 0x8a, 0x4b, 0x5e, 0xa7, 0x4e, 0xfa, - 0x32, 0x86, 0x51, 0x3e, 0x16, 0x11, 0xaf, 0x99, 0x48, 0xd5, 0x41, 0xf0, 0x31, 0x2c, 0x60, 0x58, - 0x95, 0xa2, 0x59, 0x18, 0x0d, 0xdb, 0xc4, 0xf0, 0x00, 0x3e, 0x2a, 0x67, 0x6f, 0x55, 0x16, 0xd0, - 0x63, 0x87, 0x51, 0x57, 0x10, 0x9c, 0xb6, 0x72, 0x7f, 0x50, 0x84, 0x92, 0x76, 0xeb, 0x85, 0xca, - 0x02, 0x11, 0x69, 0x87, 0x59, 0x79, 0x99, 0x2e, 0x18, 0xcc, 0x4a, 0xe8, 0x1e, 0x8c, 0xc8, 0xb6, - 0x1f, 0x73, 0xb6, 0x65, 0xec, 0x41, 0x2c, 0xe0, 0x58, 0xd5, 0x40, 0xd3, 0x50, 0xac, 0x91, 0x76, - 0xd2, 0x60, 0xdd, 0x1b, 0xe4, 0xa1, 0x7f, 0x0b, 0x14, 0x80, 0x39, 0x9c, 0x56, 0xd8, 0x24, 0x49, - 0xb5, 0xc1, 0xec, 0xbe, 0x22, 0x36, 0x70, 0x91, 0x02, 0x30, 0x87, 0xe7, 0xf8, 0x28, 0x8b, 0x87, - 0xef, 0xa3, 0x1c, 0xb2, 0xec, 0xa3, 0x44, 0x6d, 0x38, 0x11, 0xc7, 0x8d, 0xb5, 0xc8, 0xdf, 0xf6, - 0x12, 0x92, 0xae, 0xbe, 0xe1, 0xfd, 0xd0, 0x39, 0xc3, 0xee, 0xa1, 0x57, 0x2e, 0x65, 0xb1, 0xe0, - 0x3c, 0xd4, 0xa8, 0x02, 0xa7, 0xfc, 0x20, 0x26, 0xd5, 0x4e, 0x44, 0x2e, 0xd7, 0x83, 0x30, 0x22, - 0x97, 0xc2, 0x98, 0xa2, 0x13, 0xb7, 0x68, 0x55, 0xb4, 0xec, 0xe5, 0xbc, 0x4a, 0x38, 0xbf, 0x2d, - 0x5a, 0x82, 0xe3, 0x35, 0x3f, 0xf6, 0x36, 0x9a, 0xa4, 0xd2, 0xd9, 0x68, 0x85, 0x5c, 0xf1, 0x1e, - 0x65, 0x08, 0x1f, 0x94, 0x56, 0xa2, 0x85, 0x6c, 0x05, 0xdc, 0xdd, 0x06, 0x3d, 0x0b, 0x63, 0xb1, - 0x1f, 0xd4, 0x9b, 0x64, 0x2e, 0xf2, 0x82, 0x6a, 0x43, 0x5c, 0xbf, 0x55, 0xd6, 0xf4, 0x8a, 0x56, - 0x86, 0x8d, 0x9a, 0x6c, 0xcf, 0xf3, 0x36, 0x19, 0x69, 0x50, 0xd4, 0x16, 0xa5, 0xee, 0x0f, 0x1d, - 0x18, 0xd3, 0x23, 0xd5, 0xa9, 0xa4, 0x0d, 0x8d, 0x85, 0xc5, 0x0a, 0x3f, 0x0b, 0xec, 0x9d, 0xf8, - 0x97, 0x14, 0xce, 0x54, 0x59, 0x4e, 0x61, 0x58, 0xa3, 0xd9, 0xc7, 0xbd, 0xf3, 0x47, 0xa1, 0xb8, - 0x19, 0x52, 0x81, 0x64, 0xc0, 0x34, 0xc3, 0x2f, 0x52, 0x20, 0xe6, 0x65, 0xee, 0x7f, 0x77, 0xe0, - 0x74, 0x7e, 0x10, 0xfe, 0xcf, 0xc2, 0x20, 0x2f, 0x00, 0xd0, 0xa1, 0x18, 0x4c, 0x5d, 0xcb, 0x3c, - 0x21, 0x4b, 0xb0, 0x56, 0xab, 0xbf, 0x61, 0xff, 0xab, 0x02, 0x68, 0x34, 0xd1, 0xe7, 0x1d, 0x18, - 0xa7, 0x64, 0x97, 0xa3, 0x0d, 0x63, 0xb4, 0xab, 0x76, 0x46, 0xab, 0xd0, 0xa6, 0xde, 0x06, 0x03, - 0x8c, 0x4d, 0xe2, 0xe8, 0x17, 0x60, 0xd4, 0xab, 0xd5, 0x22, 0x12, 0xc7, 0xca, 0x6f, 0xc7, 0x6c, - 0x51, 0xb3, 0x12, 0x88, 0xd3, 0x72, 0xca, 0x44, 0x1b, 0xb5, 0xcd, 0x98, 0xf2, 0x25, 0xc1, 0xb8, - 0x15, 0x13, 0xa5, 0x44, 0x28, 0x1c, 0xab, 0x1a, 0xe8, 0x3a, 0x9c, 0xae, 0x79, 0x89, 0xc7, 0xe5, - 0x37, 0x12, 0xad, 0x45, 0x61, 0x42, 0xaa, 0x8c, 0xe9, 0xf3, 0xf8, 0xd2, 0x73, 0xa2, 0xed, 0xe9, - 0x85, 0xdc, 0x5a, 0xb8, 0x47, 0x6b, 0xf7, 0x57, 0x07, 0xc1, 0x1c, 0x13, 0xaa, 0xc1, 0xb1, 0xad, - 0x68, 0x63, 0x9e, 0x85, 0x53, 0x1c, 0x24, 0xac, 0x81, 0x85, 0x1b, 0x2c, 0x9b, 0x18, 0x70, 0x16, - 0xa5, 0xa0, 0xb2, 0x4c, 0x76, 0x12, 0x6f, 0xe3, 0xc0, 0x41, 0x0d, 0xcb, 0x26, 0x06, 0x9c, 0x45, - 0x89, 0xde, 0x0d, 0xa5, 0xad, 0x68, 0x43, 0xb2, 0xfe, 0x6c, 0x84, 0xcc, 0x72, 0x5a, 0x84, 0xf5, - 0x7a, 0xf4, 0xd3, 0x6c, 0x45, 0x1b, 0xf4, 0xb4, 0x95, 0xf9, 0x1d, 0xd4, 0xa7, 0x59, 0x16, 0x70, - 0xac, 0x6a, 0xa0, 0x36, 0xa0, 0x2d, 0x39, 0x7b, 0x2a, 0x78, 0x44, 0x9c, 0x50, 0xfd, 0xc7, 0x9e, - 0xb0, 0xa8, 0xfd, 0xe5, 0x2e, 0x3c, 0x38, 0x07, 0x37, 0x7a, 0x01, 0xce, 0x6c, 0x45, 0x1b, 0x42, - 0x08, 0x59, 0x8b, 0xfc, 0xa0, 0xea, 0xb7, 0x8d, 0x5c, 0x0e, 0xd3, 0xa2, 0xbb, 0x67, 0x96, 0xf3, - 0xab, 0xe1, 0x5e, 0xed, 0xdd, 0xdf, 0x1d, 0x04, 0x76, 0x0b, 0x95, 0xf2, 0xd8, 0x16, 0x49, 0x1a, - 0x61, 0x2d, 0x2b, 0x57, 0xad, 0x30, 0x28, 0x16, 0xa5, 0x32, 0x36, 0xb5, 0xd0, 0x23, 0x36, 0xf5, - 0x26, 0x0c, 0x37, 0x88, 0x57, 0x23, 0x91, 0xb4, 0x4c, 0x5e, 0xb1, 0x73, 0x6f, 0xf6, 0x12, 0x43, - 0x9a, 0xaa, 0xf7, 0xfc, 0x77, 0x8c, 0x25, 0x35, 0xf4, 0x1e, 0x98, 0xa0, 0x02, 0x52, 0xd8, 0x49, - 0xa4, 0xeb, 0x80, 0x5b, 0x26, 0xd9, 0x49, 0xbd, 0x6e, 0x94, 0xe0, 0x4c, 0x4d, 0xb4, 0x00, 0x93, - 0xc2, 0xcc, 0xaf, 0x2c, 0x9e, 0x62, 0x62, 0x55, 0x92, 0x8d, 0x4a, 0xa6, 0x1c, 0x77, 0xb5, 0x60, - 0xb1, 0x85, 0x61, 0x8d, 0x7b, 0x7a, 0xf5, 0xd8, 0xc2, 0xb0, 0xb6, 0x83, 0x59, 0x09, 0x7a, 0x15, - 0x46, 0xe8, 0xdf, 0xc5, 0x28, 0x6c, 0x09, 0x9b, 0xcf, 0x9a, 0x9d, 0xd9, 0xa1, 0x34, 0x84, 0x06, - 0xca, 0x04, 0xc7, 0x39, 0x41, 0x05, 0x2b, 0x7a, 0x54, 0x0f, 0x92, 0xe7, 0x7b, 0x65, 0xcb, 0x6f, - 0x5f, 0x27, 0x91, 0xbf, 0xb9, 0xc3, 0x84, 0x91, 0x91, 0x54, 0x0f, 0xba, 0xdc, 0x55, 0x03, 0xe7, - 0xb4, 0x72, 0x3f, 0x5f, 0x80, 0x31, 0xfd, 0x32, 0xf3, 0xdd, 0x02, 0x96, 0xe3, 0x74, 0x51, 0x70, - 0xad, 0xf7, 0x92, 0x85, 0x61, 0xdf, 0x6d, 0x41, 0x34, 0x60, 0xd0, 0xeb, 0x08, 0x29, 0xd4, 0x8a, - 0x71, 0x8d, 0x8d, 0xb8, 0x93, 0x34, 0xf8, 0xad, 0x37, 0x16, 0x4a, 0xcc, 0x28, 0xb8, 0x9f, 0x1a, - 0x80, 0x11, 0x59, 0x88, 0x3e, 0xe9, 0x00, 0xa4, 0x21, 0x5d, 0x82, 0x95, 0xae, 0xd9, 0x88, 0xf7, - 0xd1, 0xa3, 0xd1, 0x34, 0x1b, 0xbd, 0x82, 0x63, 0x8d, 0x2e, 0x4a, 0x60, 0x28, 0xa4, 0x9d, 0xbb, - 0x60, 0xef, 0x42, 0xfe, 0x2a, 0x25, 0x7c, 0x81, 0x51, 0x4f, 0xcd, 0x71, 0x0c, 0x86, 0x05, 0x2d, - 0xaa, 0x59, 0x6e, 0xc8, 0x48, 0x43, 0x7b, 0xa6, 0x6b, 0x15, 0xbc, 0x98, 0x2a, 0x8a, 0x0a, 0x84, - 0x53, 0x82, 0xee, 0xd3, 0x30, 0x61, 0x6e, 0x06, 0xaa, 0x69, 0x6c, 0xec, 0x24, 0x84, 0xdb, 0x31, - 0xc6, 0xb8, 0xa6, 0x31, 0x47, 0x01, 0x98, 0xc3, 0xdd, 0xef, 0x3b, 0x00, 0x29, 0x7b, 0xe9, 0xc3, - 0x75, 0xf0, 0xa8, 0x6e, 0x84, 0xeb, 0xa5, 0xce, 0x7d, 0x0c, 0x46, 0xd9, 0x3f, 0x6c, 0xa3, 0x0f, - 0xd8, 0x8a, 0x0b, 0x48, 0xfb, 0x29, 0xb6, 0x3a, 0x93, 0x35, 0xae, 0x4b, 0x42, 0x38, 0xa5, 0xe9, - 0x86, 0x30, 0x99, 0xad, 0x8d, 0x3e, 0x08, 0x63, 0xb1, 0x3c, 0x56, 0xd3, 0xab, 0x79, 0x7d, 0x1e, - 0xbf, 0xdc, 0x2b, 0xa7, 0x35, 0xc7, 0x06, 0x32, 0x77, 0x15, 0x86, 0xac, 0x4e, 0xa1, 0xfb, 0x6d, - 0x07, 0x46, 0x99, 0x63, 0xb4, 0x1e, 0x79, 0xad, 0xb4, 0xc9, 0xc0, 0x1e, 0xb3, 0x1e, 0xc3, 0x30, - 0xd7, 0xfd, 0x65, 0x40, 0x91, 0x05, 0x2e, 0xc3, 0xf3, 0xe8, 0xa5, 0x5c, 0x86, 0x1b, 0x19, 0x62, - 0x2c, 0x29, 0xb9, 0x9f, 0x2e, 0xc0, 0xd0, 0xe5, 0xa0, 0xdd, 0xf9, 0x4b, 0x9f, 0xcb, 0x6d, 0x05, - 0x06, 0x2f, 0x27, 0xa4, 0x65, 0xa6, 0x1c, 0x1c, 0x9b, 0x7b, 0x4c, 0x4f, 0x37, 0x58, 0x36, 0xd3, - 0x0d, 0x62, 0xef, 0xa6, 0x8c, 0xb7, 0x13, 0xb6, 0xe7, 0xf4, 0x7a, 0xe2, 0x53, 0x30, 0x7a, 0xc5, - 0xdb, 0x20, 0xcd, 0x65, 0xb2, 0xc3, 0x2e, 0x13, 0xf2, 0xd8, 0x0f, 0x27, 0x35, 0x18, 0x18, 0x71, - 0x1a, 0x0b, 0x30, 0xc1, 0x6a, 0xab, 0xcd, 0x40, 0x35, 0x12, 0x92, 0xe6, 0x6b, 0x72, 0x4c, 0x8d, - 0x44, 0xcb, 0xd5, 0xa4, 0xd5, 0x72, 0x67, 0xa0, 0x94, 0x62, 0xe9, 0x83, 0xea, 0x4f, 0x0b, 0x30, - 0x6e, 0x98, 0xd0, 0x0d, 0xc7, 0xa2, 0x73, 0x57, 0xc7, 0xa2, 0xe1, 0xe8, 0x2b, 0xdc, 0x6f, 0x47, - 0xdf, 0xc0, 0xd1, 0x3b, 0xfa, 0xcc, 0x8f, 0x34, 0xd8, 0xd7, 0x47, 0x6a, 0xc2, 0xe0, 0x15, 0x3f, - 0xd8, 0xea, 0x8f, 0xcf, 0xc4, 0xd5, 0xb0, 0xdd, 0xc5, 0x67, 0x2a, 0x14, 0x88, 0x79, 0x99, 0x94, - 0x5c, 0x06, 0xf2, 0x25, 0x17, 0xf7, 0x93, 0x0e, 0x8c, 0xad, 0x78, 0x81, 0xbf, 0x49, 0xe2, 0x84, - 0xad, 0xab, 0xe4, 0x50, 0x2f, 0x95, 0x8d, 0xf5, 0x48, 0x8f, 0xf0, 0xa6, 0x03, 0xc7, 0x57, 0x48, - 0x2b, 0xf4, 0x5f, 0xf5, 0xd2, 0x70, 0x56, 0xda, 0xf7, 0x86, 0x9f, 0x88, 0xe8, 0x3d, 0xd5, 0xf7, - 0x4b, 0x7e, 0x82, 0x29, 0xfc, 0x2e, 0xf6, 0x61, 0x76, 0x5d, 0x83, 0x2a, 0x68, 0xda, 0x45, 0xc7, - 0x34, 0x50, 0x55, 0x16, 0xe0, 0xb4, 0x8e, 0xfb, 0x7b, 0x0e, 0x0c, 0xf3, 0x4e, 0xa8, 0x08, 0x60, - 0xa7, 0x07, 0xee, 0x06, 0x14, 0x59, 0x3b, 0xb1, 0xaa, 0x97, 0x2c, 0x88, 0x3f, 0x14, 0x1d, 0xdf, - 0x83, 0xec, 0x5f, 0xcc, 0x09, 0x30, 0xb5, 0xc5, 0xbb, 0x35, 0xab, 0x22, 0x79, 0x53, 0xb5, 0x85, - 0x41, 0xb1, 0x28, 0x75, 0xbf, 0x3e, 0x00, 0x23, 0x2a, 0x2b, 0x18, 0xcb, 0xd9, 0x10, 0x04, 0x61, - 0xe2, 0xf1, 0x18, 0x0a, 0xce, 0xab, 0x3f, 0x68, 0x2f, 0x2b, 0xd9, 0xcc, 0x6c, 0x8a, 0x9d, 0xfb, - 0x05, 0x95, 0x12, 0xaa, 0x95, 0x60, 0xbd, 0x13, 0xe8, 0xa3, 0x30, 0xd4, 0xa4, 0xdc, 0x47, 0xb2, - 0xee, 0xeb, 0x16, 0xbb, 0xc3, 0xd8, 0x9a, 0xe8, 0x89, 0x9a, 0x21, 0x0e, 0xc4, 0x82, 0xea, 0xd4, - 0xfb, 0x60, 0x32, 0xdb, 0xeb, 0xbb, 0xdd, 0xc3, 0x1c, 0xd5, 0x6f, 0x71, 0xfe, 0x55, 0xc1, 0x3d, - 0xf7, 0xdf, 0xd4, 0x7d, 0x1e, 0x4a, 0x2b, 0x24, 0x89, 0xfc, 0x2a, 0x43, 0x70, 0xb7, 0xc5, 0xd5, - 0x97, 0xfc, 0xf0, 0x19, 0xb6, 0x58, 0x29, 0xce, 0x18, 0xbd, 0x0e, 0xd0, 0x8e, 0x42, 0xaa, 0xbf, - 0x92, 0x8e, 0xfc, 0xd8, 0x16, 0xe4, 0xe1, 0x35, 0x85, 0x93, 0xbb, 0xb2, 0xd3, 0xdf, 0x58, 0xa3, - 0xe7, 0xbe, 0x08, 0xc5, 0x95, 0x4e, 0x42, 0x6e, 0xf5, 0xc1, 0xb1, 0xf6, 0x9b, 0x98, 0xc0, 0xfd, - 0x20, 0x8c, 0x31, 0xdc, 0x97, 0xc2, 0x26, 0x3d, 0x56, 0xe9, 0xd4, 0xb4, 0xe8, 0xef, 0xac, 0xb3, - 0x81, 0x55, 0xc2, 0xbc, 0x8c, 0x6e, 0x99, 0x46, 0xd8, 0xac, 0xa9, 0x4b, 0x5a, 0x6a, 0x41, 0x5c, - 0x62, 0x50, 0x2c, 0x4a, 0xdd, 0x4f, 0x14, 0xa0, 0xc4, 0x1a, 0x0a, 0x76, 0xb3, 0x03, 0xc3, 0x0d, - 0x4e, 0x47, 0xcc, 0xa1, 0x85, 0xd0, 0x2f, 0xbd, 0xf7, 0x9a, 0x2e, 0xc7, 0x01, 0x58, 0xd2, 0xa3, - 0xa4, 0x6f, 0x7a, 0x7e, 0x42, 0x49, 0x17, 0x0e, 0x97, 0xf4, 0x0d, 0x4e, 0x06, 0x4b, 0x7a, 0xee, - 0x2f, 0x03, 0xbb, 0xfc, 0xbc, 0xd8, 0xf4, 0xea, 0x7c, 0xe6, 0xc2, 0x2d, 0x52, 0x13, 0x3c, 0x57, - 0x9b, 0x39, 0x0a, 0xc5, 0xa2, 0x94, 0x5f, 0x28, 0x4d, 0x22, 0x5f, 0x05, 0x4d, 0x6b, 0x17, 0x4a, - 0x19, 0x58, 0x86, 0xc8, 0xd7, 0xdc, 0x2f, 0x17, 0x00, 0x58, 0x0e, 0x39, 0x7e, 0x67, 0xf9, 0x17, - 0x65, 0x04, 0x94, 0xe9, 0xa0, 0x54, 0x11, 0x50, 0xec, 0x56, 0xb6, 0x1e, 0xf9, 0xa4, 0xdf, 0x65, - 0x28, 0xec, 0x7d, 0x97, 0x01, 0xb5, 0x61, 0x38, 0xec, 0x24, 0x54, 0x56, 0x15, 0x87, 0xbd, 0x05, - 0xff, 0xfc, 0x2a, 0x47, 0xc8, 0x2f, 0x00, 0x88, 0x1f, 0x58, 0x92, 0x41, 0xcf, 0xc2, 0x48, 0x3b, - 0x0a, 0xeb, 0xf4, 0xec, 0x16, 0xc7, 0xfb, 0x43, 0x52, 0x1e, 0x5a, 0x13, 0xf0, 0x3b, 0xda, 0xff, - 0x58, 0xd5, 0x76, 0xff, 0x78, 0x92, 0xcf, 0x8b, 0x58, 0x7b, 0x53, 0x50, 0xf0, 0xa5, 0x65, 0x0a, - 0x04, 0x8a, 0xc2, 0xe5, 0x05, 0x5c, 0xf0, 0x6b, 0x6a, 0x5f, 0x15, 0x7a, 0xee, 0xab, 0x77, 0x43, - 0xa9, 0xe6, 0xc7, 0xed, 0xa6, 0xb7, 0x73, 0x35, 0xc7, 0x2c, 0xb8, 0x90, 0x16, 0x61, 0xbd, 0x1e, - 0x7a, 0x4a, 0xdc, 0x5c, 0x19, 0x34, 0x4c, 0x41, 0xf2, 0xe6, 0x4a, 0x7a, 0x27, 0x9e, 0x5f, 0x5a, - 0xc9, 0xe6, 0x0e, 0x28, 0xf6, 0x9d, 0x3b, 0x20, 0x2b, 0x89, 0x0d, 0x1d, 0xbd, 0x24, 0xf6, 0x5e, - 0x18, 0x97, 0x3f, 0x99, 0x78, 0x54, 0x3e, 0xc9, 0x7a, 0xaf, 0xcc, 0xe0, 0xeb, 0x7a, 0x21, 0x36, - 0xeb, 0xa6, 0x8b, 0x76, 0xb8, 0xdf, 0x45, 0x7b, 0x01, 0x60, 0x23, 0xec, 0x04, 0x35, 0x2f, 0xda, - 0xb9, 0xbc, 0x20, 0xe2, 0x5c, 0x95, 0xe0, 0x37, 0xa7, 0x4a, 0xb0, 0x56, 0x4b, 0x5f, 0xe8, 0xa3, - 0x77, 0x59, 0xe8, 0x1f, 0x84, 0x51, 0x16, 0x13, 0x4c, 0x6a, 0xb3, 0x89, 0x08, 0x5d, 0xda, 0x4f, - 0x28, 0x66, 0x1a, 0xcc, 0x28, 0x91, 0xe0, 0x14, 0x1f, 0xfa, 0x10, 0xc0, 0xa6, 0x1f, 0xf8, 0x71, - 0x83, 0x61, 0x2f, 0xed, 0x1b, 0xbb, 0x1a, 0xe7, 0xa2, 0xc2, 0x82, 0x35, 0x8c, 0xe8, 0x25, 0x38, - 0x4e, 0xe2, 0xc4, 0x6f, 0x79, 0x09, 0xa9, 0xa9, 0xbb, 0x9e, 0x65, 0x66, 0xcb, 0x54, 0x51, 0xd9, - 0x17, 0xb3, 0x15, 0xee, 0xe4, 0x01, 0x71, 0x37, 0x22, 0x63, 0x47, 0x4e, 0xed, 0x67, 0x47, 0xa2, - 0x3f, 0x73, 0xe0, 0x78, 0x44, 0x78, 0x3c, 0x4b, 0xac, 0x3a, 0x76, 0x8a, 0xb1, 0xe3, 0xaa, 0x8d, - 0xf4, 0xec, 0x2a, 0x0f, 0x0b, 0xce, 0x52, 0xe1, 0x82, 0x0b, 0x91, 0xa3, 0xef, 0x2a, 0xbf, 0x93, - 0x07, 0x7c, 0xf3, 0xed, 0xe9, 0xe9, 0xee, 0x67, 0x02, 0x14, 0x72, 0xba, 0xf3, 0xfe, 0xe6, 0xdb, - 0xd3, 0x93, 0xf2, 0x77, 0x3a, 0x69, 0x5d, 0x83, 0xa4, 0xc7, 0x6a, 0x3b, 0xac, 0x5d, 0x5e, 0x13, - 0x31, 0x66, 0xea, 0x58, 0x5d, 0xa3, 0x40, 0xcc, 0xcb, 0xd0, 0x13, 0x30, 0x52, 0xf3, 0x48, 0x2b, - 0x0c, 0x54, 0xa2, 0x5d, 0x26, 0xcd, 0x2f, 0x08, 0x18, 0x56, 0xa5, 0x54, 0x87, 0x08, 0xc4, 0x91, - 0x52, 0x3e, 0x6b, 0x4b, 0x87, 0x90, 0x87, 0x14, 0xa7, 0x2a, 0x7f, 0x61, 0x45, 0x09, 0x35, 0x61, - 0xc8, 0x67, 0x86, 0x0a, 0x11, 0xc6, 0x6a, 0xc1, 0x3a, 0xc2, 0x0d, 0x1f, 0x32, 0x88, 0x95, 0xb1, - 0x7e, 0x41, 0x43, 0x3f, 0x6b, 0x8e, 0x1d, 0xcd, 0x59, 0xf3, 0x04, 0x8c, 0x54, 0x1b, 0x7e, 0xb3, - 0x16, 0x91, 0xa0, 0x3c, 0xc9, 0x34, 0x76, 0x36, 0x13, 0xf3, 0x02, 0x86, 0x55, 0x29, 0xfa, 0x2b, - 0x30, 0x1e, 0x76, 0x12, 0xc6, 0x5a, 0xe8, 0x3c, 0xc5, 0xe5, 0xe3, 0xac, 0x3a, 0x0b, 0x4a, 0x5a, - 0xd5, 0x0b, 0xb0, 0x59, 0x8f, 0xb2, 0xf8, 0x46, 0x18, 0xb3, 0x94, 0x41, 0x8c, 0xc5, 0x9f, 0x36, - 0x59, 0xfc, 0x25, 0xad, 0x0c, 0x1b, 0x35, 0xd1, 0x57, 0x1d, 0x38, 0xde, 0xca, 0x2a, 0x70, 0xe5, - 0x33, 0x6c, 0x66, 0x2a, 0x36, 0x04, 0xfd, 0x0c, 0x6a, 0x1e, 0x4e, 0xde, 0x05, 0xc6, 0xdd, 0x9d, - 0x60, 0xc9, 0xbb, 0xe2, 0x9d, 0xa0, 0xda, 0x88, 0xc2, 0xc0, 0xec, 0xde, 0x83, 0xb6, 0xae, 0xac, - 0xb1, 0xbd, 0x9d, 0x47, 0x62, 0xee, 0xc1, 0xdb, 0xbb, 0xd3, 0xa7, 0x72, 0x8b, 0x70, 0x7e, 0xa7, - 0xa6, 0x16, 0xe0, 0x74, 0x3e, 0x7f, 0xb8, 0x9b, 0xc6, 0x31, 0xa0, 0x6b, 0x1c, 0x8b, 0xf0, 0x60, - 0xcf, 0x4e, 0xd1, 0x93, 0x46, 0x4a, 0x9b, 0x8e, 0x79, 0xd2, 0x74, 0x49, 0x87, 0x13, 0x30, 0xa6, - 0xbf, 0x2b, 0xe1, 0xfe, 0x9f, 0x01, 0x80, 0xd4, 0x4e, 0x8e, 0x3c, 0x98, 0xe0, 0x36, 0xf9, 0xcb, - 0x0b, 0x07, 0xbe, 0x6c, 0x3f, 0x6f, 0x20, 0xc0, 0x19, 0x84, 0xa8, 0x05, 0x88, 0x43, 0xf8, 0xef, - 0x83, 0xf8, 0x56, 0x99, 0x2b, 0x72, 0xbe, 0x0b, 0x09, 0xce, 0x41, 0x4c, 0x47, 0x94, 0x84, 0x5b, - 0x24, 0xb8, 0x86, 0xaf, 0x1c, 0x24, 0x63, 0x03, 0xf7, 0xc6, 0x19, 0x08, 0x70, 0x06, 0x21, 0x72, - 0x61, 0x88, 0xd9, 0x66, 0x64, 0xe0, 0x37, 0x63, 0x2f, 0x4c, 0xd2, 0x88, 0xb1, 0x28, 0x41, 0x5f, - 0x76, 0x60, 0x42, 0x26, 0x9e, 0x60, 0xd6, 0x50, 0x19, 0xf2, 0x7d, 0xcd, 0x96, 0x9f, 0xe3, 0xa2, - 0x8e, 0x3d, 0x0d, 0xa8, 0x34, 0xc0, 0x31, 0xce, 0x74, 0xc2, 0x7d, 0x01, 0x4e, 0xe4, 0x34, 0xb7, - 0xa2, 0xd1, 0x7e, 0xc7, 0x81, 0x92, 0x96, 0x0f, 0x11, 0xbd, 0x0e, 0xa3, 0x61, 0xc5, 0x7a, 0x14, - 0xdf, 0x6a, 0xa5, 0x2b, 0x8a, 0x4f, 0x81, 0x70, 0x4a, 0xb0, 0x9f, 0xe0, 0xc3, 0xdc, 0xe4, 0x8d, - 0xf7, 0xb9, 0xdb, 0xfb, 0x0e, 0x3e, 0xfc, 0xd5, 0x22, 0xa4, 0x98, 0xf6, 0x99, 0x10, 0x25, 0x0d, - 0x55, 0x2c, 0xec, 0x19, 0xaa, 0x58, 0x83, 0x63, 0x1e, 0xf3, 0x25, 0x1f, 0x30, 0x0d, 0x0a, 0x4f, - 0x87, 0x6b, 0x62, 0xc0, 0x59, 0x94, 0x94, 0x4a, 0x9c, 0x36, 0x65, 0x54, 0x06, 0xf7, 0x4d, 0xa5, - 0x62, 0x62, 0xc0, 0x59, 0x94, 0xe8, 0x25, 0x28, 0x57, 0xd9, 0xb5, 0x5e, 0x3e, 0xc6, 0xcb, 0x9b, - 0x57, 0xc3, 0x64, 0x2d, 0x22, 0x31, 0x09, 0x12, 0x91, 0xf0, 0xec, 0x11, 0x31, 0x0b, 0xe5, 0xf9, - 0x1e, 0xf5, 0x70, 0x4f, 0x0c, 0x54, 0x4d, 0x61, 0xce, 0x68, 0x3f, 0xd9, 0x61, 0x4c, 0x44, 0x78, - 0xe9, 0x95, 0x9a, 0x52, 0xd1, 0x0b, 0xb1, 0x59, 0x17, 0xfd, 0x8a, 0x03, 0xe3, 0x4d, 0x69, 0xae, - 0xc7, 0x9d, 0xa6, 0xcc, 0xde, 0x89, 0xad, 0x2c, 0xbf, 0x2b, 0x3a, 0x66, 0x2e, 0x4b, 0x18, 0x20, - 0x6c, 0xd2, 0xce, 0xe6, 0xa4, 0x19, 0xe9, 0x33, 0x27, 0xcd, 0xf7, 0x1d, 0x98, 0xcc, 0x52, 0x43, - 0x5b, 0xf0, 0x70, 0xcb, 0x8b, 0xb6, 0x2e, 0x07, 0x9b, 0x11, 0xbb, 0xe0, 0x91, 0xf0, 0xc5, 0x30, - 0xbb, 0x99, 0x90, 0x68, 0xc1, 0xdb, 0xe1, 0xee, 0xcf, 0xa2, 0x7a, 0xfe, 0xe9, 0xe1, 0x95, 0xbd, - 0x2a, 0xe3, 0xbd, 0x71, 0xa1, 0x0a, 0x9c, 0xa2, 0x15, 0x58, 0xca, 0x3a, 0x3f, 0x0c, 0x52, 0x22, - 0x05, 0x46, 0x44, 0x05, 0x19, 0xae, 0xe4, 0x55, 0xc2, 0xf9, 0x6d, 0xdd, 0x8b, 0x30, 0xc4, 0xef, - 0xdb, 0xdd, 0x93, 0xff, 0xc8, 0xfd, 0xb7, 0x05, 0x90, 0x82, 0xe1, 0x5f, 0x6e, 0x77, 0x1c, 0x3d, - 0x44, 0x23, 0x66, 0x52, 0x12, 0xd6, 0x0e, 0x76, 0x88, 0x8a, 0xe4, 0x90, 0xa2, 0x84, 0x4a, 0xcc, - 0xe4, 0x96, 0x9f, 0xcc, 0x87, 0x35, 0x69, 0xe3, 0x60, 0x12, 0xf3, 0x45, 0x01, 0xc3, 0xaa, 0xd4, - 0xfd, 0xa4, 0x03, 0xe3, 0x74, 0x94, 0xcd, 0x26, 0x69, 0x56, 0x12, 0xd2, 0x8e, 0x51, 0x0c, 0xc5, - 0x98, 0xfe, 0x63, 0xcf, 0x14, 0x98, 0xde, 0xd1, 0x24, 0x6d, 0xcd, 0x59, 0x43, 0x89, 0x60, 0x4e, - 0xcb, 0x7d, 0x6b, 0x00, 0x46, 0xd5, 0x64, 0xf7, 0x61, 0x4f, 0xbd, 0x90, 0xe6, 0x6d, 0xe5, 0x1c, - 0xb8, 0xac, 0xe5, 0x6c, 0xbd, 0x43, 0xa7, 0x2e, 0xd8, 0xe1, 0x09, 0x2c, 0xd2, 0x04, 0xae, 0x4f, - 0x99, 0xae, 0xe6, 0xd3, 0xfa, 0xfa, 0xd3, 0xea, 0x0b, 0x9f, 0xf3, 0x2d, 0xdd, 0xd3, 0x3f, 0x68, - 0xeb, 0x34, 0x53, 0x6e, 0xcc, 0xde, 0x2e, 0xfe, 0xcc, 0x93, 0x3e, 0xc5, 0xbe, 0x9e, 0xf4, 0x79, - 0x12, 0x06, 0x49, 0xd0, 0x69, 0x31, 0x51, 0x69, 0x94, 0xa9, 0x08, 0x83, 0x17, 0x83, 0x4e, 0xcb, - 0x1c, 0x19, 0xab, 0x82, 0xde, 0x07, 0xa5, 0x1a, 0x89, 0xab, 0x91, 0xcf, 0xb2, 0x32, 0x08, 0xcb, - 0xce, 0x43, 0xcc, 0x5c, 0x96, 0x82, 0xcd, 0x86, 0x7a, 0x03, 0xf7, 0x55, 0x18, 0x5a, 0x6b, 0x76, - 0xea, 0x7e, 0x80, 0xda, 0x30, 0xc4, 0x73, 0x34, 0x88, 0xd3, 0xde, 0x82, 0xde, 0xc9, 0x59, 0x85, - 0x16, 0x85, 0xc2, 0xaf, 0xea, 0x0a, 0x3a, 0xee, 0x27, 0x0a, 0x40, 0x55, 0xf3, 0xa5, 0x79, 0xf4, - 0xd7, 0xbb, 0x5e, 0xb0, 0xf9, 0xb9, 0x9c, 0x17, 0x6c, 0xc6, 0x59, 0xe5, 0x9c, 0xc7, 0x6b, 0x9a, - 0x30, 0xce, 0x9c, 0x23, 0xf2, 0x0c, 0x14, 0x62, 0xf5, 0x33, 0x7d, 0xa6, 0x35, 0xd0, 0x9b, 0x8a, - 0x13, 0x41, 0x07, 0x61, 0x13, 0x39, 0x5a, 0x81, 0x13, 0x3c, 0xfd, 0xe7, 0x02, 0x69, 0x7a, 0x3b, - 0x99, 0x34, 0x5f, 0x67, 0xe5, 0xa3, 0x64, 0x0b, 0xdd, 0x55, 0x70, 0x5e, 0x3b, 0xf7, 0xf7, 0x07, - 0x41, 0x73, 0x49, 0xf4, 0xb1, 0x5b, 0x5e, 0xc9, 0x38, 0xa0, 0x56, 0xac, 0x38, 0xa0, 0xa4, 0x57, - 0x87, 0x73, 0x20, 0xd3, 0xe7, 0x44, 0x3b, 0xd5, 0x20, 0xcd, 0xb6, 0x18, 0xa3, 0xea, 0xd4, 0x25, - 0xd2, 0x6c, 0x63, 0x56, 0xa2, 0x2e, 0x2a, 0x0e, 0xf6, 0xbc, 0xa8, 0xd8, 0x80, 0x62, 0xdd, 0xeb, - 0xd4, 0x89, 0x88, 0xc0, 0xb4, 0xe0, 0x6b, 0x64, 0x57, 0x27, 0xb8, 0xaf, 0x91, 0xfd, 0x8b, 0x39, - 0x01, 0xba, 0xd9, 0x1b, 0x32, 0x24, 0x45, 0x18, 0x69, 0x2d, 0x6c, 0x76, 0x15, 0xe5, 0xc2, 0x37, - 0xbb, 0xfa, 0x89, 0x53, 0x62, 0xa8, 0x0d, 0xc3, 0x55, 0x9e, 0x5c, 0x45, 0xc8, 0x2c, 0x97, 0x6d, - 0xdc, 0xc4, 0x64, 0x08, 0xb9, 0x35, 0x45, 0xfc, 0xc0, 0x92, 0x8c, 0x7b, 0x1e, 0x4a, 0xda, 0x43, - 0x1a, 0xf4, 0x33, 0xa8, 0xbc, 0x1e, 0xda, 0x67, 0x58, 0xf0, 0x12, 0x0f, 0xb3, 0x12, 0xf7, 0x9b, - 0x83, 0xa0, 0x6c, 0x69, 0xfa, 0xbd, 0x41, 0xaf, 0xaa, 0x65, 0x21, 0x32, 0xee, 0xd0, 0x87, 0x01, - 0x16, 0xa5, 0x54, 0xae, 0x6b, 0x91, 0xa8, 0xae, 0xf4, 0x68, 0xc1, 0xae, 0x95, 0x5c, 0xb7, 0xa2, - 0x17, 0x62, 0xb3, 0x2e, 0x15, 0xca, 0x5b, 0xc2, 0x45, 0x9f, 0x0d, 0xac, 0x96, 0xae, 0x7b, 0xac, - 0x6a, 0xb0, 0x34, 0x06, 0x2d, 0xcd, 0xa3, 0x2f, 0x02, 0x31, 0x6d, 0x38, 0x94, 0x34, 0xac, 0x3c, - 0x60, 0x4a, 0x87, 0x60, 0x83, 0x2a, 0x5a, 0x82, 0xe3, 0x31, 0x49, 0x56, 0x6f, 0x06, 0x24, 0x52, - 0x29, 0x06, 0x44, 0x9e, 0x0c, 0x75, 0xab, 0xa2, 0x92, 0xad, 0x80, 0xbb, 0xdb, 0xe4, 0xc6, 0xae, - 0x16, 0xf7, 0x1d, 0xbb, 0xba, 0x00, 0x93, 0x9b, 0x9e, 0xdf, 0xec, 0x44, 0xa4, 0x67, 0x04, 0xec, - 0x62, 0xa6, 0x1c, 0x77, 0xb5, 0x60, 0x17, 0x7b, 0x9a, 0x5e, 0x3d, 0x2e, 0x0f, 0x6b, 0x17, 0x7b, - 0x28, 0x00, 0x73, 0xb8, 0xfb, 0x5b, 0x0e, 0xf0, 0x04, 0x45, 0xb3, 0x9b, 0x9b, 0x7e, 0xe0, 0x27, - 0x3b, 0xe8, 0x6b, 0x0e, 0x4c, 0x06, 0x61, 0x8d, 0xcc, 0x06, 0x89, 0x2f, 0x81, 0xf6, 0xb2, 0xc6, - 0x33, 0x5a, 0x57, 0x33, 0xe8, 0x79, 0xb6, 0x8b, 0x2c, 0x14, 0x77, 0x75, 0xc3, 0x3d, 0x03, 0xa7, - 0x72, 0x11, 0xb8, 0xdf, 0x1f, 0x00, 0x33, 0xcf, 0x12, 0x7a, 0x1e, 0x8a, 0x4d, 0x96, 0xf9, 0xc3, - 0x39, 0x60, 0x02, 0x2d, 0x36, 0x57, 0x3c, 0x35, 0x08, 0xc7, 0x84, 0x16, 0xa0, 0xc4, 0x92, 0x37, - 0x89, 0xbc, 0x2c, 0x05, 0x23, 0x25, 0x42, 0x09, 0xa7, 0x45, 0x77, 0xcc, 0x9f, 0x58, 0x6f, 0x86, - 0x5e, 0x83, 0xe1, 0x0d, 0x9e, 0xc2, 0xd2, 0x9e, 0xcf, 0x4f, 0xe4, 0xc4, 0x64, 0xb2, 0x91, 0x4c, - 0x90, 0x79, 0x27, 0xfd, 0x17, 0x4b, 0x8a, 0x68, 0x07, 0x46, 0x3c, 0xf9, 0x4d, 0x07, 0x6d, 0x5d, - 0xd4, 0x30, 0xd6, 0x8f, 0x88, 0x98, 0x91, 0xdf, 0x50, 0x91, 0xcb, 0x84, 0x16, 0x15, 0xfb, 0x0a, - 0x2d, 0xfa, 0xb6, 0x03, 0x90, 0xbe, 0xf7, 0x81, 0x6e, 0xc1, 0x48, 0xfc, 0x8c, 0x61, 0xa8, 0xb0, - 0x71, 0x43, 0x5f, 0x60, 0xd4, 0x6e, 0xb1, 0x0a, 0x08, 0x56, 0xd4, 0xee, 0x66, 0x5c, 0xf9, 0xa9, - 0x03, 0x27, 0xf3, 0xde, 0x25, 0xb9, 0x8f, 0x3d, 0xde, 0xaf, 0x5d, 0x45, 0x34, 0x58, 0x8b, 0xc8, - 0xa6, 0x7f, 0x2b, 0x27, 0x91, 0x32, 0x2f, 0xc0, 0x69, 0x1d, 0xf7, 0xcd, 0x61, 0x50, 0x84, 0x0f, - 0xc9, 0x0e, 0xf3, 0x38, 0xd5, 0x99, 0xea, 0xa9, 0xcc, 0xa5, 0xea, 0x61, 0x06, 0xc5, 0xa2, 0x94, - 0xea, 0x4d, 0x32, 0x28, 0x5e, 0xb0, 0x6c, 0xb6, 0x0a, 0x65, 0xf0, 0x3c, 0x56, 0xa5, 0x79, 0x96, - 0x9d, 0xe2, 0x91, 0x58, 0x76, 0x86, 0xec, 0x5b, 0x76, 0x9e, 0x84, 0xe1, 0x28, 0x6c, 0x92, 0x59, - 0x7c, 0x55, 0x68, 0x03, 0x69, 0x50, 0x03, 0x07, 0x63, 0x59, 0x7e, 0x40, 0xdb, 0x06, 0xfa, 0x1d, - 0x67, 0x0f, 0xe3, 0xd1, 0xa8, 0xad, 0x33, 0x21, 0x37, 0xeb, 0x1c, 0x53, 0x6d, 0x0e, 0x62, 0x91, - 0xfa, 0xba, 0x03, 0xc7, 0x49, 0x50, 0x8d, 0x76, 0x18, 0x1e, 0x81, 0x4d, 0xf8, 0x9c, 0xaf, 0xd9, - 0xd8, 0x7c, 0x17, 0xb3, 0xc8, 0xb9, 0x6b, 0xa7, 0x0b, 0x8c, 0xbb, 0xbb, 0x81, 0x56, 0x61, 0xa4, - 0xea, 0x89, 0x15, 0x51, 0xda, 0xcf, 0x8a, 0xe0, 0x9e, 0xb3, 0x59, 0xb1, 0x14, 0x14, 0x12, 0xf7, - 0xc7, 0x05, 0x38, 0x91, 0xd3, 0x25, 0x76, 0x81, 0xaa, 0x45, 0x57, 0xe4, 0xe5, 0x5a, 0x76, 0x3f, - 0x2e, 0x0b, 0x38, 0x56, 0x35, 0xd0, 0x1a, 0x9c, 0xdc, 0x6a, 0xc5, 0x29, 0x96, 0xf9, 0x30, 0x48, - 0xc8, 0x2d, 0xb9, 0x3b, 0xa5, 0x3f, 0xfa, 0xe4, 0x72, 0x4e, 0x1d, 0x9c, 0xdb, 0x92, 0x8a, 0x2f, - 0x24, 0xf0, 0x36, 0x9a, 0x24, 0x2d, 0x12, 0xd7, 0x0a, 0x95, 0xf8, 0x72, 0x31, 0x53, 0x8e, 0xbb, - 0x5a, 0xa0, 0xcf, 0x3a, 0x70, 0x36, 0x26, 0xd1, 0x36, 0x89, 0x2a, 0x7e, 0x8d, 0xcc, 0x77, 0xe2, - 0x24, 0x6c, 0x91, 0xe8, 0x80, 0xe6, 0xd2, 0xe9, 0xdb, 0xbb, 0xd3, 0x67, 0x2b, 0xbd, 0xb1, 0xe1, - 0xbd, 0x48, 0xb9, 0x9f, 0x75, 0x60, 0xa2, 0xc2, 0x94, 0x69, 0x25, 0x4b, 0xdb, 0xce, 0x3b, 0xfa, - 0xb8, 0x4a, 0x84, 0x91, 0xe1, 0x8a, 0x66, 0xea, 0x0a, 0xf7, 0x65, 0x98, 0xac, 0x90, 0x96, 0xd7, - 0x6e, 0xb0, 0x3b, 0xc1, 0x3c, 0x1e, 0xeb, 0x3c, 0x8c, 0xc6, 0x12, 0x96, 0x7d, 0x6a, 0x48, 0x55, - 0xc6, 0x69, 0x1d, 0xf4, 0x18, 0x8f, 0x1d, 0x93, 0x37, 0x80, 0x46, 0xb9, 0xd6, 0xc1, 0x03, 0xce, - 0x62, 0x2c, 0xcb, 0xdc, 0xb7, 0x1c, 0x18, 0x4b, 0xdb, 0x93, 0x4d, 0x54, 0x87, 0x63, 0x55, 0xed, - 0xf6, 0x5c, 0x7a, 0x6f, 0xa1, 0xff, 0x8b, 0x76, 0x3c, 0x1d, 0xb2, 0x89, 0x04, 0x67, 0xb1, 0xee, - 0x3f, 0xf4, 0xee, 0x0b, 0x05, 0x38, 0xa6, 0xba, 0x2a, 0x1c, 0x87, 0x6f, 0x64, 0x23, 0xe4, 0xb0, - 0x8d, 0x94, 0x3e, 0xe6, 0xdc, 0xef, 0x11, 0x25, 0xf7, 0x46, 0x36, 0x4a, 0xee, 0x50, 0xc9, 0x77, - 0xf9, 0x42, 0xbf, 0x5d, 0x80, 0x11, 0x95, 0x60, 0xe8, 0x79, 0x28, 0x32, 0x55, 0xf2, 0xde, 0x04, - 0x62, 0xa6, 0x96, 0x62, 0x8e, 0x89, 0xa2, 0x64, 0x51, 0x38, 0x07, 0x4e, 0x52, 0x3b, 0xca, 0x0d, - 0x8a, 0x5e, 0x94, 0x60, 0x8e, 0x09, 0x2d, 0xc3, 0x00, 0x09, 0x6a, 0x42, 0x32, 0xde, 0x3f, 0x42, - 0xf6, 0x28, 0xd8, 0xc5, 0xa0, 0x86, 0x29, 0x16, 0x96, 0xe5, 0x8c, 0x0b, 0x40, 0x99, 0x27, 0x60, - 0x84, 0xf4, 0x23, 0x4a, 0xdd, 0xf7, 0x83, 0x91, 0xdf, 0x4e, 0xe4, 0xcd, 0x17, 0x4a, 0x57, 0xf7, - 0xbb, 0x5d, 0x42, 0xdb, 0x4a, 0xeb, 0xb8, 0xbf, 0x32, 0x00, 0x43, 0x95, 0xce, 0x06, 0x55, 0x12, - 0xbe, 0xe5, 0xc0, 0x89, 0x9b, 0x99, 0x14, 0xd0, 0xe9, 0x26, 0xb9, 0x66, 0xcf, 0x2a, 0xab, 0x87, - 0x92, 0x29, 0x5b, 0x54, 0x4e, 0x21, 0xce, 0xeb, 0x8e, 0x91, 0x85, 0x75, 0xe0, 0x50, 0xb2, 0xb0, - 0xde, 0x3a, 0xe4, 0xbb, 0x14, 0xe3, 0xbd, 0xee, 0x51, 0xb8, 0xbf, 0x5f, 0x04, 0xe0, 0x5f, 0x63, - 0xb5, 0x9d, 0xf4, 0x63, 0x67, 0x7b, 0x16, 0xc6, 0xea, 0x24, 0x20, 0x91, 0x0c, 0x14, 0xcc, 0x3c, - 0x4f, 0xb4, 0xa4, 0x95, 0x61, 0xa3, 0x26, 0x53, 0x6a, 0x82, 0x24, 0xda, 0xe1, 0x82, 0x6f, 0xf6, - 0xbe, 0x84, 0x2a, 0xc1, 0x5a, 0x2d, 0x34, 0x63, 0xb8, 0x41, 0xb8, 0x47, 0x7d, 0x62, 0x0f, 0xaf, - 0xc5, 0xfb, 0x60, 0xc2, 0x4c, 0x6a, 0x22, 0xa4, 0x3d, 0xe5, 0x01, 0x37, 0x73, 0xa1, 0xe0, 0x4c, - 0x6d, 0xba, 0x0b, 0x6a, 0xd1, 0x0e, 0xee, 0x04, 0x42, 0xec, 0x53, 0xbb, 0x60, 0x81, 0x41, 0xb1, - 0x28, 0x65, 0xd9, 0x20, 0xd8, 0x01, 0xc8, 0xe1, 0x22, 0xa3, 0x44, 0x9a, 0x0d, 0x42, 0x2b, 0xc3, - 0x46, 0x4d, 0x4a, 0x41, 0xd8, 0x29, 0xc1, 0xdc, 0x67, 0x19, 0xe3, 0x62, 0x1b, 0x26, 0x42, 0xd3, - 0xbe, 0xc2, 0x65, 0xa0, 0x77, 0xf5, 0xb9, 0xf4, 0x8c, 0xb6, 0x3c, 0x72, 0x21, 0x63, 0x8e, 0xc9, - 0xe0, 0xa7, 0x72, 0xaf, 0x7e, 0xad, 0x60, 0xcc, 0x8c, 0x33, 0xed, 0x19, 0xf9, 0xbf, 0x06, 0x27, - 0xdb, 0x61, 0x6d, 0x2d, 0xf2, 0xc3, 0xc8, 0x4f, 0x76, 0xe6, 0x9b, 0x5e, 0x1c, 0xb3, 0x85, 0x31, - 0x6e, 0xca, 0x43, 0x6b, 0x39, 0x75, 0x70, 0x6e, 0x4b, 0xaa, 0xa1, 0xb4, 0x05, 0x90, 0x45, 0x7b, - 0x15, 0xb9, 0x44, 0x27, 0x2b, 0x62, 0x55, 0xea, 0x9e, 0x80, 0xe3, 0x95, 0x4e, 0xbb, 0xdd, 0xf4, - 0x49, 0x4d, 0xb9, 0x19, 0xdc, 0xf7, 0xc3, 0x31, 0x91, 0xa3, 0x55, 0x49, 0x1f, 0xfb, 0xca, 0x28, - 0xee, 0xfe, 0x99, 0x03, 0xc7, 0x32, 0xb1, 0x35, 0xe8, 0xb5, 0xac, 0xcc, 0x60, 0x27, 0x77, 0xa8, - 0x26, 0x2d, 0x88, 0x44, 0xa0, 0x79, 0xf2, 0x47, 0x43, 0x06, 0xc6, 0x5b, 0xbb, 0x90, 0xc2, 0xc2, - 0xc7, 0xf9, 0x91, 0xa2, 0x47, 0xd7, 0xbb, 0x9f, 0x29, 0x40, 0x7e, 0x40, 0x13, 0xfa, 0x68, 0xf7, - 0x04, 0x3c, 0x6f, 0x71, 0x02, 0x44, 0x44, 0x55, 0xef, 0x39, 0x08, 0xcc, 0x39, 0x58, 0xb1, 0x34, - 0x07, 0x82, 0x6e, 0xf7, 0x4c, 0xfc, 0x4f, 0x07, 0x4a, 0xeb, 0xeb, 0x57, 0xd4, 0x39, 0x87, 0xe1, - 0x74, 0xcc, 0x2f, 0xdc, 0x33, 0xbf, 0xef, 0x7c, 0xd8, 0x6a, 0x73, 0x37, 0xb0, 0x70, 0x4f, 0xb3, - 0x74, 0xb9, 0x95, 0xdc, 0x1a, 0xb8, 0x47, 0x4b, 0x74, 0x19, 0x4e, 0xe8, 0x25, 0x15, 0xed, 0x75, - 0xc2, 0xa2, 0x48, 0x9e, 0xd3, 0x5d, 0x8c, 0xf3, 0xda, 0x64, 0x51, 0x09, 0x73, 0x27, 0x3b, 0xae, - 0x72, 0x50, 0x89, 0x62, 0x9c, 0xd7, 0xc6, 0x5d, 0x85, 0xd2, 0xba, 0x17, 0xa9, 0x81, 0x7f, 0x00, - 0x26, 0xab, 0x61, 0x4b, 0x9a, 0x99, 0xae, 0x90, 0x6d, 0xd2, 0x14, 0x43, 0xe6, 0x4f, 0x82, 0x64, - 0xca, 0x70, 0x57, 0x6d, 0xf7, 0xbf, 0x9e, 0x03, 0x75, 0x81, 0xb0, 0x8f, 0x13, 0xa6, 0xad, 0x42, - 0x3d, 0x8b, 0x96, 0x43, 0x3d, 0x15, 0xaf, 0xcd, 0x84, 0x7b, 0x26, 0x69, 0xb8, 0xe7, 0x90, 0xed, - 0x70, 0x4f, 0x25, 0x71, 0x76, 0x85, 0x7c, 0x7e, 0xc5, 0x81, 0xb1, 0x20, 0xac, 0x11, 0xe5, 0x9f, - 0x1b, 0x66, 0x62, 0xef, 0x4b, 0xf6, 0x22, 0xe7, 0x79, 0xe8, 0xa2, 0x40, 0xcf, 0xc3, 0x90, 0xd5, - 0x11, 0xa5, 0x17, 0x61, 0xa3, 0x1f, 0x68, 0x51, 0x33, 0x7c, 0x72, 0xff, 0xc2, 0x43, 0x79, 0xfa, - 0xca, 0x5d, 0xad, 0x98, 0xb7, 0x34, 0xb9, 0x69, 0xd4, 0x96, 0x41, 0x4f, 0xde, 0x0a, 0xd3, 0xdc, - 0x24, 0x32, 0xe3, 0x73, 0x2a, 0x4f, 0xb9, 0x30, 0xc4, 0xe3, 0x95, 0x45, 0x9a, 0x26, 0xe6, 0xbd, - 0xe3, 0xb1, 0xcc, 0x58, 0x94, 0xa0, 0x44, 0xc6, 0x00, 0x94, 0x6c, 0xbd, 0xdf, 0x60, 0xc4, 0x18, - 0xe4, 0x07, 0x01, 0xa0, 0xe7, 0x74, 0x3d, 0x78, 0xac, 0x1f, 0x3d, 0x78, 0xbc, 0xa7, 0x0e, 0xfc, - 0x79, 0x07, 0xc6, 0xaa, 0xda, 0x7b, 0x0a, 0xe5, 0x27, 0x6c, 0xbd, 0x1b, 0x9d, 0xf7, 0xec, 0x05, - 0x77, 0x0a, 0x19, 0xef, 0x37, 0x18, 0xd4, 0x59, 0x6e, 0x4a, 0xa6, 0xf4, 0xb3, 0xa3, 0xdf, 0x4a, - 0xda, 0x08, 0xd3, 0x88, 0x20, 0x63, 0x29, 0x29, 0x0c, 0x0b, 0x5a, 0xe8, 0x75, 0x18, 0x91, 0x21, - 0xef, 0x22, 0x34, 0x1c, 0xdb, 0xb0, 0xd2, 0x9b, 0xae, 0x40, 0x99, 0xd0, 0x8e, 0x43, 0xb1, 0xa2, - 0x88, 0x1a, 0x30, 0x50, 0xf3, 0xea, 0x22, 0x48, 0x7c, 0xc5, 0x4e, 0xc2, 0x50, 0x49, 0x93, 0xe9, - 0x67, 0x0b, 0xb3, 0x4b, 0x98, 0x92, 0x40, 0xb7, 0xd2, 0x84, 0xf4, 0x93, 0xd6, 0x4e, 0x5f, 0x53, - 0x4c, 0xe2, 0x66, 0x8d, 0xae, 0xfc, 0xf6, 0x35, 0xe1, 0x3d, 0xfd, 0xff, 0x18, 0xd9, 0x45, 0x3b, - 0x19, 0x47, 0x79, 0x1a, 0x92, 0xd4, 0x03, 0x4b, 0xa9, 0x34, 0x92, 0xa4, 0x5d, 0xfe, 0x79, 0x5b, - 0x54, 0x58, 0x32, 0x0d, 0xfe, 0xc4, 0xf7, 0xfa, 0xfa, 0x1a, 0x66, 0xd8, 0x51, 0x13, 0x86, 0xda, - 0x2c, 0xb0, 0xa3, 0xfc, 0x0b, 0xb6, 0xce, 0x16, 0x1e, 0x28, 0xc2, 0xd7, 0x26, 0xff, 0x1f, 0x0b, - 0x1a, 0xe8, 0x22, 0x0c, 0xf3, 0x77, 0x55, 0x78, 0x90, 0x7e, 0xe9, 0xc2, 0x54, 0xef, 0xd7, 0x59, - 0xd2, 0x83, 0x82, 0xff, 0x8e, 0xb1, 0x6c, 0x8b, 0xbe, 0xe0, 0xc0, 0x04, 0xe5, 0xa8, 0xe9, 0x43, - 0x30, 0x65, 0x64, 0x8b, 0x67, 0x5d, 0x8b, 0xa9, 0x44, 0x22, 0x79, 0x8d, 0x52, 0x93, 0x2e, 0x1b, - 0xe4, 0x70, 0x86, 0x3c, 0x7a, 0x03, 0x46, 0x62, 0xbf, 0x46, 0xaa, 0x5e, 0x14, 0x97, 0x4f, 0x1c, - 0x4e, 0x57, 0x52, 0x7f, 0x8d, 0x20, 0x84, 0x15, 0x49, 0xf4, 0xeb, 0xec, 0x25, 0x4e, 0xf1, 0x6a, - 0x7e, 0x95, 0x8b, 0xf5, 0x27, 0x6d, 0xed, 0x7d, 0xe9, 0x99, 0x92, 0x98, 0x85, 0x1b, 0xc3, 0x24, - 0x87, 0xb3, 0xf4, 0xd1, 0xdf, 0x70, 0xe0, 0x14, 0xcf, 0xa9, 0x9f, 0x7d, 0x04, 0xe2, 0xd4, 0x01, - 0xed, 0x33, 0xec, 0x76, 0xc1, 0x6c, 0x1e, 0x4a, 0x9c, 0x4f, 0x89, 0x65, 0xc0, 0x35, 0xdf, 0xed, - 0x39, 0x6d, 0xd5, 0x6f, 0xd9, 0xff, 0x5b, 0x3d, 0xe8, 0x69, 0x28, 0xb5, 0xc5, 0x71, 0xe8, 0xc7, - 0x2d, 0x76, 0x57, 0x64, 0x80, 0xdf, 0xe2, 0x5b, 0x4b, 0xc1, 0x58, 0xaf, 0x63, 0xa4, 0x43, 0x7e, - 0x72, 0xaf, 0x74, 0xc8, 0xe8, 0x1a, 0x94, 0x92, 0xb0, 0x29, 0x32, 0x82, 0xc6, 0xe5, 0x32, 0x5b, - 0x81, 0xe7, 0xf2, 0xf6, 0xd6, 0xba, 0xaa, 0x96, 0x6a, 0xb2, 0x29, 0x2c, 0xc6, 0x3a, 0x1e, 0x16, - 0x9f, 0x2b, 0xde, 0x2a, 0x88, 0x98, 0x0a, 0xfb, 0x60, 0x26, 0x3e, 0x57, 0x2f, 0xc4, 0x66, 0x5d, - 0xb4, 0x04, 0xc7, 0xdb, 0x5d, 0x3a, 0x30, 0xbf, 0xa3, 0xa6, 0x42, 0x22, 0xba, 0x15, 0xe0, 0xee, - 0x36, 0x86, 0xf6, 0x7b, 0x76, 0x2f, 0xed, 0xb7, 0x47, 0x72, 0xe0, 0x87, 0x0e, 0x92, 0x1c, 0x18, - 0xd5, 0xe0, 0x21, 0xaf, 0x93, 0x84, 0x2c, 0x61, 0x8c, 0xd9, 0x84, 0x87, 0x2a, 0x3f, 0xc2, 0xa3, - 0x9f, 0x6f, 0xef, 0x4e, 0x3f, 0x34, 0xbb, 0x47, 0x3d, 0xbc, 0x27, 0x16, 0xf4, 0x2a, 0x8c, 0x10, - 0x91, 0xe0, 0xb8, 0xfc, 0x73, 0xb6, 0x84, 0x04, 0x33, 0x65, 0xb2, 0x8c, 0x02, 0xe5, 0x30, 0xac, - 0xe8, 0xa1, 0x75, 0x28, 0x35, 0xc2, 0x38, 0x99, 0x6d, 0xfa, 0x5e, 0x4c, 0xe2, 0xf2, 0xc3, 0x6c, - 0xd1, 0xe4, 0xca, 0x5e, 0x97, 0x64, 0xb5, 0x74, 0xcd, 0x5c, 0x4a, 0x5b, 0x62, 0x1d, 0x0d, 0x22, - 0xcc, 0x7b, 0xc9, 0xe2, 0xb4, 0xa5, 0x23, 0xe8, 0x1c, 0x1b, 0xd8, 0xe3, 0x79, 0x98, 0xd7, 0xc2, - 0x5a, 0xc5, 0xac, 0xad, 0xdc, 0x97, 0x3a, 0x10, 0x67, 0x71, 0xa2, 0x67, 0x61, 0xac, 0x1d, 0xd6, - 0x2a, 0x6d, 0x52, 0x5d, 0xf3, 0x92, 0x6a, 0xa3, 0x3c, 0x6d, 0x5a, 0xdd, 0xd6, 0xb4, 0x32, 0x6c, - 0xd4, 0x44, 0x6d, 0x18, 0x6e, 0xf1, 0x4c, 0x02, 0xe5, 0x47, 0x6d, 0xe9, 0x36, 0x22, 0x35, 0x01, - 0x97, 0x17, 0xc4, 0x0f, 0x2c, 0xc9, 0xa0, 0xbf, 0xef, 0xc0, 0xb1, 0xcc, 0xed, 0xa7, 0xf2, 0x3b, - 0xac, 0x89, 0x2c, 0x26, 0xe2, 0xb9, 0xc7, 0xd9, 0xf4, 0x99, 0xc0, 0x3b, 0xdd, 0x20, 0x9c, 0xed, - 0x11, 0x9f, 0x17, 0x96, 0x0e, 0xa4, 0xfc, 0x98, 0xbd, 0x79, 0x61, 0x08, 0xe5, 0xbc, 0xb0, 0x1f, - 0x58, 0x92, 0x41, 0x4f, 0xc2, 0xb0, 0xc8, 0xdc, 0x57, 0x7e, 0xdc, 0x74, 0x41, 0x8b, 0x04, 0x7f, - 0x58, 0x96, 0x4f, 0xbd, 0x1f, 0x8e, 0x77, 0xa9, 0x6e, 0xfb, 0xca, 0x49, 0xf1, 0x9b, 0x0e, 0xe8, - 0xd7, 0xa5, 0xad, 0xbf, 0x2a, 0xf2, 0x2c, 0x8c, 0x55, 0xf9, 0x13, 0x8e, 0xfc, 0xc2, 0xf5, 0xa0, - 0x69, 0xff, 0x9c, 0xd7, 0xca, 0xb0, 0x51, 0xd3, 0xbd, 0x04, 0xa8, 0x3b, 0xe5, 0xfb, 0x81, 0x12, - 0x1e, 0xfd, 0x43, 0x07, 0xc6, 0x0d, 0x99, 0xc1, 0xba, 0x93, 0x71, 0x11, 0x50, 0xcb, 0x8f, 0xa2, - 0x30, 0xd2, 0xdf, 0xca, 0x13, 0x49, 0x11, 0xd8, 0xb5, 0xb3, 0x95, 0xae, 0x52, 0x9c, 0xd3, 0xc2, - 0xfd, 0xc7, 0x83, 0x90, 0x86, 0x41, 0xab, 0x9c, 0xba, 0x4e, 0xcf, 0x9c, 0xba, 0x4f, 0xc1, 0xc8, - 0xcb, 0x71, 0x18, 0xac, 0xa5, 0x99, 0x77, 0xd5, 0xb7, 0x78, 0xae, 0xb2, 0x7a, 0x95, 0xd5, 0x54, - 0x35, 0x58, 0xed, 0x57, 0x16, 0xfd, 0x66, 0xd2, 0x9d, 0x9a, 0xf5, 0xb9, 0xe7, 0x39, 0x1c, 0xab, - 0x1a, 0xec, 0xd9, 0xbc, 0x6d, 0xa2, 0x0c, 0xe3, 0xe9, 0xb3, 0x79, 0xfc, 0x35, 0x07, 0x56, 0x86, - 0xce, 0xc3, 0xa8, 0x32, 0xaa, 0x0b, 0x4b, 0xbd, 0x9a, 0x29, 0x65, 0x79, 0xc7, 0x69, 0x1d, 0x26, - 0x10, 0x0a, 0x43, 0xac, 0x30, 0xa1, 0x54, 0x6c, 0xa8, 0x27, 0x19, 0xd3, 0x2e, 0xe7, 0xed, 0x12, - 0x8c, 0x15, 0xc9, 0x3c, 0x47, 0xeb, 0xe8, 0xa1, 0x38, 0x5a, 0xb5, 0x98, 0xfc, 0x62, 0xbf, 0x31, - 0xf9, 0xe6, 0xda, 0x1e, 0xe9, 0x6b, 0x6d, 0x7f, 0x6a, 0x00, 0x86, 0xaf, 0x93, 0x88, 0x65, 0x24, - 0x7f, 0x12, 0x86, 0xb7, 0xf9, 0xbf, 0xd9, 0x0b, 0x9d, 0xa2, 0x06, 0x96, 0xe5, 0xf4, 0xbb, 0x6d, - 0x74, 0xfc, 0x66, 0x6d, 0x21, 0xdd, 0xc5, 0x69, 0xd2, 0x41, 0x59, 0x80, 0xd3, 0x3a, 0xb4, 0x41, - 0x9d, 0x4a, 0xf6, 0xad, 0x96, 0xdf, 0xf5, 0x22, 0xfc, 0x92, 0x2c, 0xc0, 0x69, 0x1d, 0xf4, 0x38, - 0x0c, 0xd5, 0xfd, 0x64, 0xdd, 0xab, 0x67, 0xdd, 0x84, 0x4b, 0x0c, 0x8a, 0x45, 0x29, 0x73, 0x13, - 0xf9, 0xc9, 0x7a, 0x44, 0x98, 0x65, 0xb7, 0x2b, 0x9f, 0xc4, 0x92, 0x56, 0x86, 0x8d, 0x9a, 0xac, - 0x4b, 0xa1, 0x18, 0x99, 0x88, 0xe2, 0x4c, 0xbb, 0x24, 0x0b, 0x70, 0x5a, 0x87, 0xae, 0xff, 0x6a, - 0xd8, 0x6a, 0xfb, 0x4d, 0x11, 0x5f, 0xac, 0xad, 0xff, 0x79, 0x01, 0xc7, 0xaa, 0x06, 0xad, 0x4d, - 0x59, 0x18, 0x65, 0x3f, 0xd9, 0x27, 0xca, 0xd6, 0x04, 0x1c, 0xab, 0x1a, 0xee, 0x75, 0x18, 0xe7, - 0x3b, 0x79, 0xbe, 0xe9, 0xf9, 0xad, 0xa5, 0x79, 0x74, 0xb1, 0x2b, 0x26, 0xff, 0xc9, 0x9c, 0x98, - 0xfc, 0x53, 0x46, 0xa3, 0xee, 0xd8, 0x7c, 0xf7, 0x87, 0x05, 0x18, 0x39, 0xc2, 0x57, 0x1e, 0x8f, - 0xfc, 0xc1, 0x62, 0x74, 0x2b, 0xf3, 0xc2, 0xe3, 0x9a, 0xcd, 0x2b, 0x36, 0x7b, 0xbe, 0xee, 0xf8, - 0x9f, 0x0a, 0x70, 0x5a, 0x56, 0x95, 0xba, 0xdc, 0xd2, 0x3c, 0x7b, 0x5b, 0xeb, 0xf0, 0x27, 0x3a, - 0x32, 0x26, 0x7a, 0xcd, 0x9e, 0x36, 0xba, 0x34, 0xdf, 0x73, 0xaa, 0x5f, 0xcd, 0x4c, 0x35, 0xb6, - 0x4a, 0x75, 0xef, 0xc9, 0xfe, 0x73, 0x07, 0xa6, 0xf2, 0x27, 0xfb, 0x08, 0x1e, 0xd5, 0x7c, 0xc3, - 0x7c, 0x54, 0xf3, 0x97, 0xec, 0x2d, 0x31, 0x73, 0x28, 0x3d, 0x9e, 0xd7, 0xfc, 0x1f, 0x0e, 0x9c, - 0x94, 0x0d, 0xd8, 0xe9, 0x39, 0xe7, 0x07, 0x2c, 0x92, 0xe5, 0xf0, 0x97, 0xd9, 0xeb, 0xc6, 0x32, - 0x7b, 0xd1, 0xde, 0xc0, 0xf5, 0x71, 0xf4, 0x7c, 0x8c, 0xfc, 0x4f, 0x1d, 0x28, 0xe7, 0x35, 0x38, - 0x82, 0x4f, 0xfe, 0x9a, 0xf9, 0xc9, 0xaf, 0x1f, 0xce, 0xc8, 0x7b, 0x7f, 0xf0, 0x72, 0xaf, 0x89, - 0x42, 0x4d, 0x29, 0x57, 0x39, 0xb6, 0x7c, 0xb4, 0x9c, 0x44, 0xbe, 0x80, 0xd6, 0x84, 0xa1, 0x98, - 0x45, 0x6d, 0x88, 0x25, 0x70, 0xc9, 0x86, 0xb4, 0x45, 0xf1, 0x09, 0x1b, 0x3b, 0xfb, 0x1f, 0x0b, - 0x1a, 0xee, 0x6f, 0x15, 0xe0, 0x8c, 0x7a, 0x2c, 0x97, 0x6c, 0x93, 0x66, 0xba, 0x3f, 0xd8, 0xfb, - 0x0d, 0x9e, 0xfa, 0x69, 0xef, 0xfd, 0x86, 0x94, 0x44, 0xba, 0x17, 0x52, 0x18, 0xd6, 0x68, 0xa2, - 0x0a, 0x9c, 0x62, 0xef, 0x2d, 0x2c, 0xfa, 0x81, 0xd7, 0xf4, 0x5f, 0x25, 0x11, 0x26, 0xad, 0x70, - 0xdb, 0x6b, 0x0a, 0x49, 0x5d, 0xdd, 0xe9, 0x5d, 0xcc, 0xab, 0x84, 0xf3, 0xdb, 0x76, 0x69, 0xdc, - 0x03, 0xfd, 0x6a, 0xdc, 0xee, 0x9f, 0x38, 0x30, 0x76, 0x84, 0x4f, 0x0b, 0x87, 0xe6, 0x96, 0x78, - 0xce, 0xde, 0x96, 0xe8, 0xb1, 0x0d, 0x76, 0x8b, 0xd0, 0xf5, 0xda, 0x2a, 0xfa, 0xb4, 0xa3, 0xe2, - 0x5a, 0x78, 0xf0, 0xe0, 0x87, 0xec, 0xf5, 0x63, 0x3f, 0x89, 0x20, 0xd1, 0xd7, 0x33, 0xd9, 0x31, - 0x0b, 0xb6, 0x52, 0x3c, 0x75, 0xf5, 0xe6, 0x00, 0x59, 0x32, 0xbf, 0xe2, 0x00, 0xf0, 0x7e, 0x8a, - 0xe4, 0xda, 0xb4, 0x6f, 0x1b, 0x87, 0x36, 0x53, 0x94, 0x08, 0xef, 0x9a, 0xda, 0x42, 0x69, 0x01, - 0xd6, 0x7a, 0x72, 0x0f, 0xe9, 0x2f, 0xef, 0x39, 0xf3, 0xe6, 0x17, 0x1c, 0x38, 0x96, 0xe9, 0x6e, - 0x4e, 0xfb, 0x4d, 0xf3, 0xf9, 0x40, 0x0b, 0x92, 0x95, 0x99, 0x72, 0x59, 0x37, 0x9e, 0xfc, 0x17, - 0x17, 0x8c, 0x67, 0xaa, 0xd1, 0x6b, 0x30, 0x2a, 0x2d, 0x1f, 0x72, 0x79, 0xdb, 0x7c, 0x46, 0x55, - 0xa9, 0x37, 0x12, 0x12, 0xe3, 0x94, 0x5e, 0x26, 0x6c, 0xae, 0xd0, 0x57, 0xd8, 0xdc, 0xfd, 0x7d, - 0x84, 0x35, 0xdf, 0x2e, 0x3d, 0x78, 0x28, 0x76, 0xe9, 0x87, 0xac, 0xdb, 0xa5, 0x1f, 0x3e, 0x62, - 0xbb, 0xb4, 0xe6, 0x24, 0x2c, 0xde, 0x83, 0x93, 0xf0, 0x35, 0x38, 0xb9, 0x9d, 0x2a, 0x9d, 0x6a, - 0x25, 0x89, 0xc4, 0x42, 0x4f, 0xe6, 0x5a, 0xa3, 0xa9, 0x02, 0x1d, 0x27, 0x24, 0x48, 0x34, 0x75, - 0x35, 0x8d, 0xd8, 0xbb, 0x9e, 0x83, 0x0e, 0xe7, 0x12, 0xc9, 0x7a, 0x7b, 0x86, 0xfb, 0xf0, 0xf6, - 0xbc, 0xe5, 0xc0, 0x29, 0xaf, 0xeb, 0x12, 0x18, 0x26, 0x9b, 0x22, 0xe4, 0xe4, 0x86, 0x3d, 0x11, - 0xc2, 0x40, 0x2f, 0xdc, 0x6a, 0x79, 0x45, 0x38, 0xbf, 0x43, 0xe8, 0xb1, 0xd4, 0xf5, 0xce, 0xe3, - 0x3c, 0xf3, 0xfd, 0xe4, 0x5f, 0xcf, 0xc6, 0xf3, 0x00, 0x9b, 0xfa, 0x8f, 0xd8, 0xd5, 0xb6, 0x2d, - 0xc4, 0xf4, 0x94, 0xee, 0x21, 0xa6, 0x27, 0xe3, 0x7a, 0x1b, 0xb3, 0xe4, 0x7a, 0x0b, 0x60, 0xd2, - 0x6f, 0x79, 0x75, 0xb2, 0xd6, 0x69, 0x36, 0xf9, 0x25, 0x12, 0xf9, 0xd0, 0x6d, 0xae, 0x05, 0xef, - 0x4a, 0x58, 0xf5, 0x9a, 0xd9, 0x27, 0xce, 0xd5, 0x65, 0x99, 0xcb, 0x19, 0x4c, 0xb8, 0x0b, 0x37, - 0x5d, 0xb0, 0x2c, 0xc3, 0x1d, 0x49, 0xe8, 0x6c, 0xb3, 0xc0, 0x91, 0x11, 0xbe, 0x60, 0x2f, 0xa5, - 0x60, 0xac, 0xd7, 0x41, 0xcb, 0x30, 0x5a, 0x0b, 0x62, 0x71, 0x9f, 0xf5, 0x18, 0x63, 0x66, 0xef, - 0xa4, 0x2c, 0x70, 0xe1, 0x6a, 0x45, 0xdd, 0x64, 0x7d, 0x28, 0x27, 0x65, 0xa3, 0x2a, 0xc7, 0x69, - 0x7b, 0xb4, 0xc2, 0x90, 0x89, 0x57, 0xc0, 0x78, 0x3c, 0xc7, 0x23, 0x3d, 0x1c, 0x46, 0x0b, 0x57, - 0xe5, 0x3b, 0x66, 0xe3, 0x82, 0x9c, 0x78, 0xce, 0x2b, 0xc5, 0xa0, 0x3d, 0x38, 0x7c, 0x7c, 0xcf, - 0x07, 0x87, 0x59, 0xae, 0xd6, 0xa4, 0xa9, 0xdc, 0xc3, 0xe7, 0xac, 0xe5, 0x6a, 0x4d, 0x23, 0x25, - 0x45, 0xae, 0xd6, 0x14, 0x80, 0x75, 0x92, 0x68, 0xb5, 0x97, 0x9b, 0xfc, 0x04, 0x63, 0x1a, 0xfb, - 0x77, 0x7a, 0xeb, 0xfe, 0xd2, 0x93, 0x7b, 0xfa, 0x4b, 0xbb, 0xfc, 0xbb, 0xa7, 0xf6, 0xe1, 0xdf, - 0x6d, 0xb0, 0x2c, 0x9a, 0x4b, 0xf3, 0xc2, 0xa5, 0x6e, 0x41, 0xbf, 0x63, 0x79, 0x3b, 0x78, 0xe4, - 0x29, 0xfb, 0x17, 0x73, 0x02, 0x3d, 0x03, 0xaa, 0xcf, 0x1c, 0x38, 0xa0, 0x9a, 0xb2, 0xe7, 0x14, - 0xce, 0xd2, 0xb1, 0x16, 0x05, 0x7b, 0x4e, 0xc1, 0x58, 0xaf, 0x93, 0xf5, 0x96, 0x3e, 0x78, 0x68, - 0xde, 0xd2, 0xa9, 0x23, 0xf0, 0x96, 0x9e, 0xed, 0xdb, 0x5b, 0x7a, 0x0b, 0x4e, 0xb4, 0xc3, 0xda, - 0x82, 0x1f, 0x47, 0x1d, 0x76, 0xab, 0x6e, 0xae, 0x53, 0xab, 0x93, 0x84, 0xb9, 0x5b, 0x4b, 0x17, - 0xde, 0xa9, 0x77, 0xb2, 0xcd, 0x36, 0xb2, 0xdc, 0xa3, 0x99, 0x06, 0xcc, 0x74, 0xc2, 0xa2, 0x6e, - 0x73, 0x0a, 0x71, 0x1e, 0x09, 0xdd, 0x4f, 0xfb, 0xc8, 0xd1, 0xf8, 0x69, 0x3f, 0x00, 0x23, 0x71, - 0xa3, 0x93, 0xd4, 0xc2, 0x9b, 0x01, 0x73, 0xc6, 0x8f, 0xce, 0xbd, 0x43, 0x99, 0xb2, 0x05, 0xfc, - 0xce, 0xee, 0xf4, 0xa4, 0xfc, 0x5f, 0xb3, 0x62, 0x0b, 0x08, 0xfa, 0x46, 0x8f, 0xfb, 0x3b, 0xee, - 0x61, 0xde, 0xdf, 0x39, 0xb3, 0xaf, 0xbb, 0x3b, 0x79, 0xce, 0xe8, 0x47, 0x7f, 0xe6, 0x9c, 0xd1, - 0x5f, 0x73, 0x60, 0x7c, 0x5b, 0x77, 0x19, 0x08, 0x87, 0xb9, 0x85, 0xc0, 0x1d, 0xc3, 0x13, 0x31, - 0xe7, 0x52, 0x3e, 0x67, 0x80, 0xee, 0x64, 0x01, 0xd8, 0xec, 0x49, 0x4e, 0x50, 0xd1, 0x63, 0xf7, - 0x2b, 0xa8, 0xe8, 0x0d, 0xc6, 0xc7, 0xa4, 0x92, 0xcb, 0xbc, 0xe8, 0x76, 0x63, 0x8a, 0x25, 0x4f, - 0x54, 0x21, 0xc5, 0x3a, 0x3d, 0xf4, 0x79, 0x07, 0x26, 0xa5, 0x5e, 0x26, 0x5c, 0x7e, 0xb1, 0x88, - 0x8a, 0xb4, 0xa9, 0x0e, 0xb2, 0xb0, 0xfa, 0xf5, 0x0c, 0x1d, 0xdc, 0x45, 0x99, 0x72, 0x75, 0x15, - 0x84, 0x56, 0x8f, 0x59, 0xf0, 0xaf, 0x90, 0x61, 0x66, 0x53, 0x30, 0xd6, 0xeb, 0xa0, 0x6f, 0x3a, - 0xc0, 0xdf, 0xeb, 0x2f, 0x3f, 0xc9, 0x18, 0xfa, 0x0b, 0x96, 0x65, 0xd3, 0x4b, 0x14, 0x37, 0x17, - 0x4a, 0x9f, 0x96, 0xb6, 0x23, 0x06, 0xbb, 0xb3, 0x3b, 0x3d, 0x61, 0x3c, 0x36, 0x14, 0xbf, 0xf9, - 0xb6, 0x06, 0x11, 0xb6, 0x4d, 0xd6, 0x35, 0xf4, 0x25, 0x07, 0x26, 0x6f, 0x66, 0x0c, 0x1a, 0x22, - 0x2c, 0x14, 0xdb, 0x37, 0x95, 0xf0, 0xe9, 0xce, 0x42, 0x71, 0x57, 0x0f, 0xd0, 0xe7, 0x4c, 0x43, - 0x27, 0x8f, 0x1f, 0xb5, 0x38, 0x81, 0x19, 0xc3, 0x2a, 0xbf, 0xe6, 0x96, 0x6f, 0xf1, 0xbc, 0xe7, - 0xf8, 0x90, 0x29, 0x3a, 0x98, 0xf4, 0x63, 0xe5, 0x34, 0x25, 0xa6, 0xbd, 0xc5, 0xc2, 0x66, 0x37, - 0x3e, 0xbf, 0x6e, 0x6e, 0xf9, 0xd2, 0x69, 0x98, 0x30, 0x7d, 0x7b, 0xe8, 0x5d, 0xe6, 0x43, 0x12, - 0xe7, 0xb2, 0x39, 0xf9, 0xc7, 0x65, 0x7d, 0x23, 0x2f, 0xbf, 0x91, 0x38, 0xbf, 0x70, 0xa8, 0x89, - 0xf3, 0x07, 0x8e, 0x26, 0x71, 0xfe, 0xe4, 0x61, 0x24, 0xce, 0x3f, 0xbe, 0xaf, 0xc4, 0xf9, 0xda, - 0xc3, 0x05, 0x83, 0x77, 0x79, 0xb8, 0x60, 0x16, 0x8e, 0xc9, 0xbb, 0x3f, 0x44, 0xe4, 0x26, 0xe7, - 0x6e, 0xff, 0x33, 0xa2, 0xc9, 0xb1, 0x79, 0xb3, 0x18, 0x67, 0xeb, 0xd3, 0x4d, 0x56, 0x0c, 0x58, - 0xcb, 0x21, 0x5b, 0xaf, 0x1a, 0x99, 0x4b, 0x8b, 0xa9, 0xcf, 0x82, 0x45, 0xc9, 0x68, 0xe7, 0x22, - 0x83, 0xdd, 0x91, 0xff, 0x60, 0xde, 0x03, 0xf4, 0x12, 0x94, 0xc3, 0xcd, 0xcd, 0x66, 0xe8, 0xd5, - 0xd2, 0xec, 0xfe, 0x32, 0x2e, 0x81, 0xdf, 0xdd, 0x54, 0xc9, 0x60, 0x57, 0x7b, 0xd4, 0xc3, 0x3d, - 0x31, 0xa0, 0xb7, 0xa8, 0x60, 0x92, 0x84, 0x11, 0xa9, 0xa5, 0xb6, 0x9a, 0x51, 0x36, 0x66, 0x62, - 0x7d, 0xcc, 0x15, 0x93, 0x0e, 0x1f, 0xbd, 0xfa, 0x28, 0x99, 0x52, 0x9c, 0xed, 0x16, 0x8a, 0xe0, - 0x74, 0x3b, 0xcf, 0x54, 0x14, 0x8b, 0x1b, 0x4b, 0x7b, 0x19, 0xac, 0xd4, 0x4b, 0xcf, 0xb9, 0xc6, - 0xa6, 0x18, 0xf7, 0xc0, 0xac, 0x67, 0xe0, 0x1f, 0x39, 0x9a, 0x0c, 0xfc, 0x1f, 0x03, 0x50, 0x97, - 0xd4, 0xa5, 0xf1, 0x61, 0xd9, 0xca, 0x55, 0x1a, 0x8e, 0x53, 0x7b, 0xf4, 0x54, 0x91, 0xc1, 0x1a, - 0x49, 0xf4, 0xbf, 0x73, 0x9f, 0xa8, 0xe0, 0x16, 0x96, 0xba, 0xf5, 0x35, 0xf1, 0x33, 0xf7, 0x4c, - 0xc5, 0x3f, 0x70, 0x60, 0x8a, 0xaf, 0xbc, 0xac, 0x70, 0x4f, 0x45, 0x0b, 0x71, 0xb7, 0xc7, 0x76, - 0xe8, 0x0a, 0x8b, 0xe2, 0xab, 0x18, 0x54, 0x99, 0xa3, 0x7b, 0x8f, 0x9e, 0xa0, 0xaf, 0xe4, 0xa8, - 0x14, 0xc7, 0x6c, 0xd9, 0x2c, 0xf3, 0x1f, 0x1a, 0x38, 0x71, 0xbb, 0x1f, 0x2d, 0xe2, 0x1f, 0xf5, - 0x34, 0xa9, 0x22, 0xd6, 0xbd, 0x5f, 0x3e, 0x24, 0x93, 0xaa, 0xfe, 0x1a, 0xc2, 0xbe, 0x0c, 0xab, - 0x5f, 0x70, 0x60, 0xd2, 0xcb, 0x84, 0x9a, 0x30, 0x3b, 0x90, 0x15, 0x9b, 0xd4, 0x6c, 0x94, 0xc6, - 0xaf, 0x30, 0x21, 0x2f, 0x1b, 0xd5, 0x82, 0xbb, 0x88, 0xa3, 0x1f, 0x3a, 0x70, 0x36, 0xf1, 0xe2, - 0x2d, 0x9e, 0x6b, 0x38, 0x4e, 0xef, 0xea, 0x8a, 0xce, 0x9d, 0x64, 0xbb, 0xf1, 0x15, 0xeb, 0xbb, - 0x71, 0xbd, 0x37, 0x4d, 0xbe, 0x2f, 0x1f, 0x15, 0xfb, 0xf2, 0xec, 0x1e, 0x35, 0xf1, 0x5e, 0x5d, - 0x9f, 0xfa, 0xb4, 0xc3, 0xdf, 0xa4, 0xea, 0x29, 0xf2, 0x6d, 0x98, 0x22, 0xdf, 0x15, 0x9b, 0xaf, - 0xe2, 0xe8, 0xb2, 0xe7, 0xaf, 0x39, 0x70, 0x32, 0xef, 0x44, 0xca, 0xe9, 0xd2, 0x47, 0xcc, 0x2e, - 0x59, 0xd4, 0xb2, 0xf4, 0x0e, 0x59, 0x79, 0x94, 0x63, 0xea, 0x2a, 0x3c, 0x72, 0xb7, 0xaf, 0x78, - 0x37, 0x7c, 0x23, 0xba, 0x58, 0xfc, 0xa7, 0xa3, 0x9a, 0x17, 0x32, 0x21, 0x6d, 0xeb, 0x31, 0xdc, - 0x01, 0x0c, 0xf9, 0x41, 0xd3, 0x0f, 0x88, 0xb8, 0xaf, 0x69, 0x53, 0x87, 0x15, 0x8f, 0xea, 0x50, - 0xec, 0x58, 0x50, 0xb9, 0xcf, 0x4e, 0xc9, 0xec, 0x33, 0x65, 0x83, 0x47, 0xff, 0x4c, 0xd9, 0x4d, - 0x18, 0xbd, 0xe9, 0x27, 0x0d, 0x16, 0x4c, 0x21, 0x7c, 0x7d, 0x16, 0xee, 0x39, 0x52, 0x74, 0xe9, - 0xd8, 0x6f, 0x48, 0x02, 0x38, 0xa5, 0x85, 0xce, 0x73, 0xc2, 0x2c, 0x72, 0x3b, 0x1b, 0x52, 0x7b, - 0x43, 0x16, 0xe0, 0xb4, 0x0e, 0x9d, 0xac, 0x31, 0xfa, 0x4b, 0x26, 0x44, 0x12, 0x79, 0x7b, 0x6d, - 0xe4, 0x63, 0x14, 0x18, 0xf9, 0x6d, 0xe2, 0x1b, 0x1a, 0x0d, 0x6c, 0x50, 0x54, 0xa9, 0x93, 0x47, - 0x7a, 0xa6, 0x4e, 0x7e, 0x9d, 0x09, 0x6c, 0x89, 0x1f, 0x74, 0xc8, 0x6a, 0x20, 0xe2, 0xbd, 0xaf, - 0xd8, 0xb9, 0xfb, 0xcc, 0x71, 0x72, 0x15, 0x3c, 0xfd, 0x8d, 0x35, 0x7a, 0x9a, 0xcb, 0xa5, 0xb4, - 0xa7, 0xcb, 0x25, 0x35, 0xb9, 0x8c, 0x59, 0x37, 0xb9, 0x24, 0xa4, 0x6d, 0xc5, 0xe4, 0xf2, 0x33, - 0x65, 0x0e, 0xf8, 0x73, 0x07, 0x90, 0x92, 0xbb, 0x14, 0x43, 0x3d, 0x82, 0xa0, 0xca, 0x8f, 0x3b, - 0x00, 0x81, 0x7a, 0xcc, 0xd2, 0xee, 0x29, 0xc8, 0x71, 0xa6, 0x1d, 0x48, 0x61, 0x58, 0xa3, 0xe9, - 0xfe, 0x37, 0x27, 0x8d, 0x5d, 0x4e, 0xc7, 0x7e, 0x04, 0x41, 0x64, 0x3b, 0x66, 0x10, 0xd9, 0xba, - 0x45, 0xd3, 0xbd, 0x1a, 0x46, 0x8f, 0x70, 0xb2, 0x9f, 0x14, 0xe0, 0x98, 0x5e, 0xb9, 0x42, 0x8e, - 0xe2, 0x63, 0xdf, 0x34, 0x22, 0x68, 0xaf, 0xd9, 0x1d, 0x6f, 0x45, 0x78, 0x80, 0xf2, 0xa2, 0xb5, - 0x3f, 0x96, 0x89, 0xd6, 0xbe, 0x61, 0x9f, 0xf4, 0xde, 0x21, 0xdb, 0xff, 0xd9, 0x81, 0x13, 0x99, - 0x16, 0x47, 0xb0, 0xc0, 0xb6, 0xcd, 0x05, 0xf6, 0xbc, 0xf5, 0x51, 0xf7, 0x58, 0x5d, 0xdf, 0x2a, - 0x74, 0x8d, 0x96, 0x29, 0x71, 0x9f, 0x72, 0xa0, 0x48, 0xa5, 0x65, 0x19, 0xcf, 0xf5, 0x91, 0x43, - 0x59, 0x01, 0x4c, 0xae, 0x17, 0xdc, 0x59, 0xf5, 0x8f, 0xc1, 0x30, 0xa7, 0x3e, 0xf5, 0x49, 0x07, - 0x20, 0xad, 0x74, 0xbf, 0x44, 0x60, 0xf7, 0x3b, 0x05, 0x38, 0x95, 0xbb, 0x8c, 0xd0, 0x67, 0x94, - 0x45, 0xce, 0xb1, 0x1d, 0xad, 0x68, 0x10, 0xd2, 0x0d, 0x73, 0xe3, 0x86, 0x61, 0x4e, 0xd8, 0xe3, - 0xee, 0x97, 0x02, 0x23, 0xd8, 0xb4, 0x36, 0x59, 0x3f, 0x76, 0xd2, 0x00, 0x58, 0x95, 0xd7, 0xe8, - 0x2f, 0xe0, 0x25, 0x1e, 0xf7, 0x27, 0xda, 0x0d, 0x07, 0x39, 0xd0, 0x23, 0xe0, 0x15, 0x37, 0x4d, - 0x5e, 0x81, 0xed, 0xfb, 0x91, 0x7b, 0x30, 0x8b, 0x57, 0x20, 0xcf, 0xb1, 0xdc, 0x5f, 0x52, 0x44, - 0xe3, 0x3a, 0x6c, 0xa1, 0xef, 0xeb, 0xb0, 0xe3, 0x50, 0x7a, 0xd1, 0x57, 0xd9, 0x34, 0xe7, 0x66, - 0xbe, 0xfb, 0xa3, 0x73, 0x0f, 0x7c, 0xef, 0x47, 0xe7, 0x1e, 0xf8, 0xe1, 0x8f, 0xce, 0x3d, 0xf0, - 0xf1, 0xdb, 0xe7, 0x9c, 0xef, 0xde, 0x3e, 0xe7, 0x7c, 0xef, 0xf6, 0x39, 0xe7, 0x87, 0xb7, 0xcf, - 0x39, 0xff, 0xee, 0xf6, 0x39, 0xe7, 0x6f, 0xfd, 0xfb, 0x73, 0x0f, 0xbc, 0x38, 0x22, 0x07, 0xf6, - 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x9b, 0x57, 0x41, 0xee, 0x0e, 0xd7, 0x00, 0x00, + // 11105 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x6b, 0x70, 0x24, 0xc7, + 0x79, 0x18, 0x67, 0x81, 0xc5, 0xe3, 0x5b, 0x00, 0x87, 0xeb, 0x7b, 0x2d, 0x71, 0xe4, 0x81, 0x1e, + 0x8a, 0x0c, 0x69, 0x53, 0x38, 0xf3, 0x28, 0x25, 0x8c, 0x95, 0x48, 0xc2, 0xe3, 0x80, 0x3b, 0xe2, + 0x70, 0x00, 0x7b, 0x71, 0x77, 0x26, 0x45, 0x4b, 0x1a, 0xec, 0x36, 0x76, 0x87, 0xd8, 0x9d, 0x59, + 0xce, 0xcc, 0xe2, 0x0e, 0x7c, 0x48, 0x0a, 0xf5, 0x8e, 0x65, 0x2b, 0x96, 0x25, 0x59, 0x52, 0x92, + 0x2a, 0x45, 0x91, 0x12, 0x96, 0xec, 0x4a, 0xca, 0xfe, 0x95, 0xb2, 0x2b, 0x7f, 0x52, 0x29, 0x97, + 0x52, 0x4e, 0x25, 0x72, 0x45, 0x29, 0xe9, 0x87, 0x0d, 0x46, 0x97, 0x44, 0x3f, 0x92, 0xa8, 0x2a, + 0x56, 0xc5, 0x89, 0x7d, 0x79, 0x54, 0xaa, 0x9f, 0xd3, 0x3d, 0x3b, 0x8b, 0x5b, 0xe0, 0x1a, 0x38, + 0x95, 0xfd, 0x0b, 0xd8, 0xaf, 0xbb, 0xbf, 0xaf, 0xbb, 0xa7, 0xfb, 0xeb, 0xef, 0xd5, 0x5f, 0xc3, + 0x5a, 0xdd, 0x4f, 0x1a, 0x9d, 0x8d, 0x99, 0x6a, 0xd8, 0x3a, 0xef, 0x45, 0xf5, 0xb0, 0x1d, 0x85, + 0x2f, 0xb3, 0x7f, 0xde, 0x79, 0x33, 0x8c, 0xb6, 0x36, 0x9b, 0xe1, 0xcd, 0xf8, 0xfc, 0xf6, 0x33, + 0xe7, 0xdb, 0x5b, 0xf5, 0xf3, 0x5e, 0xdb, 0x8f, 0xcf, 0x4b, 0xe8, 0xf9, 0xed, 0xa7, 0xbd, 0x66, + 0xbb, 0xe1, 0x3d, 0x7d, 0xbe, 0x4e, 0x02, 0x12, 0x79, 0x09, 0xa9, 0xcd, 0xb4, 0xa3, 0x30, 0x09, + 0xd1, 0xfb, 0x53, 0x8c, 0x33, 0x12, 0x23, 0xfb, 0xe7, 0x43, 0x0a, 0xe3, 0xcc, 0xf6, 0x33, 0x33, + 0xed, 0xad, 0xfa, 0x0c, 0xc5, 0x38, 0x23, 0xa1, 0x33, 0x12, 0xe3, 0xd4, 0x3b, 0xb5, 0x3e, 0xd5, + 0xc3, 0x7a, 0x78, 0x9e, 0x21, 0xde, 0xe8, 0x6c, 0xb2, 0x5f, 0xec, 0x07, 0xfb, 0x8f, 0x13, 0x9c, + 0x72, 0xb7, 0x9e, 0x8d, 0x67, 0xfc, 0x90, 0xf6, 0xef, 0x7c, 0x35, 0x8c, 0xc8, 0xf9, 0xed, 0xae, + 0x4e, 0x4d, 0xbd, 0x43, 0xab, 0xd3, 0x0e, 0x9b, 0x7e, 0x75, 0x27, 0xaf, 0xd6, 0xbb, 0xd2, 0x5a, + 0x2d, 0xaf, 0xda, 0xf0, 0x03, 0x12, 0xed, 0xa4, 0x43, 0x6f, 0x91, 0xc4, 0xcb, 0x6b, 0x75, 0xbe, + 0x57, 0xab, 0xa8, 0x13, 0x24, 0x7e, 0x8b, 0x74, 0x35, 0xf8, 0xab, 0x77, 0x6b, 0x10, 0x57, 0x1b, + 0xa4, 0xe5, 0x75, 0xb5, 0x7b, 0xa6, 0x57, 0xbb, 0x4e, 0xe2, 0x37, 0xcf, 0xfb, 0x41, 0x12, 0x27, + 0x51, 0xb6, 0x91, 0x7b, 0x11, 0x86, 0x66, 0x5b, 0x61, 0x27, 0x48, 0xd0, 0x7b, 0xa0, 0xb8, 0xed, + 0x35, 0x3b, 0xa4, 0xec, 0x3c, 0xe2, 0x3c, 0x31, 0x3a, 0xf7, 0xd8, 0x77, 0x76, 0xa7, 0x1f, 0xb8, + 0xbd, 0x3b, 0x5d, 0xbc, 0x4e, 0x81, 0x77, 0x76, 0xa7, 0x4f, 0x92, 0xa0, 0x1a, 0xd6, 0xfc, 0xa0, + 0x7e, 0xfe, 0xe5, 0x38, 0x0c, 0x66, 0xae, 0x76, 0x5a, 0x1b, 0x24, 0xc2, 0xbc, 0x8d, 0xfb, 0xef, + 0x0a, 0x70, 0x6c, 0x36, 0xaa, 0x36, 0xfc, 0x6d, 0x52, 0x49, 0x28, 0xfe, 0xfa, 0x0e, 0x6a, 0xc0, + 0x40, 0xe2, 0x45, 0x0c, 0x5d, 0xe9, 0xc2, 0xca, 0xcc, 0xbd, 0x7e, 0xf7, 0x99, 0x75, 0x2f, 0x92, + 0xb8, 0xe7, 0x86, 0x6f, 0xef, 0x4e, 0x0f, 0xac, 0x7b, 0x11, 0xa6, 0x24, 0x50, 0x13, 0x06, 0x83, + 0x30, 0x20, 0xe5, 0x02, 0x23, 0x75, 0xf5, 0xde, 0x49, 0x5d, 0x0d, 0x03, 0x35, 0x8e, 0xb9, 0x91, + 0xdb, 0xbb, 0xd3, 0x83, 0x14, 0x82, 0x19, 0x15, 0x3a, 0xae, 0x57, 0xfd, 0x76, 0x79, 0xc0, 0xd6, + 0xb8, 0x5e, 0xf4, 0xdb, 0xe6, 0xb8, 0x5e, 0xf4, 0xdb, 0x98, 0x92, 0x70, 0x3f, 0x5b, 0x80, 0xd1, + 0xd9, 0xa8, 0xde, 0x69, 0x91, 0x20, 0x89, 0xd1, 0x47, 0x01, 0xda, 0x5e, 0xe4, 0xb5, 0x48, 0x42, + 0xa2, 0xb8, 0xec, 0x3c, 0x32, 0xf0, 0x44, 0xe9, 0xc2, 0xf2, 0xbd, 0x93, 0x5f, 0x93, 0x38, 0xe7, + 0x90, 0xf8, 0xe4, 0xa0, 0x40, 0x31, 0xd6, 0x48, 0xa2, 0xd7, 0x60, 0xd4, 0x8b, 0x12, 0x7f, 0xd3, + 0xab, 0x26, 0x71, 0xb9, 0xc0, 0xe8, 0x3f, 0x77, 0xef, 0xf4, 0x67, 0x05, 0xca, 0xb9, 0xe3, 0x82, + 0xfc, 0xa8, 0x84, 0xc4, 0x38, 0xa5, 0xe7, 0xfe, 0xee, 0x20, 0x94, 0x66, 0xa3, 0x64, 0x69, 0xbe, + 0x92, 0x78, 0x49, 0x27, 0x46, 0x7f, 0xe0, 0xc0, 0x89, 0x98, 0x4f, 0x9b, 0x4f, 0xe2, 0xb5, 0x28, + 0xac, 0x92, 0x38, 0x26, 0x35, 0x31, 0x2f, 0x9b, 0x56, 0xfa, 0x25, 0x89, 0xcd, 0x54, 0xba, 0x09, + 0x5d, 0x0c, 0x92, 0x68, 0x67, 0xee, 0x69, 0xd1, 0xe7, 0x13, 0x39, 0x35, 0xde, 0x7c, 0x7b, 0x1a, + 0xc9, 0xa1, 0x50, 0x4c, 0xfc, 0x13, 0xe3, 0xbc, 0x5e, 0xa3, 0xaf, 0x3a, 0x30, 0xd6, 0x0e, 0x6b, + 0x31, 0x26, 0xd5, 0xb0, 0xd3, 0x26, 0x35, 0x31, 0xbd, 0x1f, 0xb2, 0x3b, 0x8c, 0x35, 0x8d, 0x02, + 0xef, 0xff, 0x49, 0xd1, 0xff, 0x31, 0xbd, 0x08, 0x1b, 0x5d, 0x41, 0xcf, 0xc2, 0x58, 0x10, 0x26, + 0x95, 0x36, 0xa9, 0xfa, 0x9b, 0x3e, 0xa9, 0xb1, 0x85, 0x3f, 0x92, 0xb6, 0xbc, 0xaa, 0x95, 0x61, + 0xa3, 0xe6, 0xd4, 0x22, 0x94, 0x7b, 0xcd, 0x1c, 0x9a, 0x84, 0x81, 0x2d, 0xb2, 0xc3, 0x99, 0x0d, + 0xa6, 0xff, 0xa2, 0x93, 0x92, 0x01, 0xd1, 0x6d, 0x3c, 0x22, 0x38, 0xcb, 0x2f, 0x14, 0x9e, 0x75, + 0xa6, 0xde, 0x07, 0xc7, 0xbb, 0xba, 0xbe, 0x1f, 0x04, 0xee, 0x77, 0x87, 0x60, 0x44, 0x7e, 0x0a, + 0xf4, 0x08, 0x0c, 0x06, 0x5e, 0x4b, 0xf2, 0xb9, 0x31, 0x31, 0x8e, 0xc1, 0xab, 0x5e, 0x8b, 0xee, + 0x70, 0xaf, 0x45, 0x68, 0x8d, 0xb6, 0x97, 0x34, 0x18, 0x1e, 0xad, 0xc6, 0x9a, 0x97, 0x34, 0x30, + 0x2b, 0x41, 0x0f, 0xc1, 0x60, 0x2b, 0xac, 0x11, 0x36, 0x17, 0x45, 0xce, 0x21, 0x56, 0xc2, 0x1a, + 0xc1, 0x0c, 0x4a, 0xdb, 0x6f, 0x46, 0x61, 0xab, 0x3c, 0x68, 0xb6, 0x5f, 0x8c, 0xc2, 0x16, 0x66, + 0x25, 0xe8, 0x2b, 0x0e, 0x4c, 0xca, 0xb5, 0x7d, 0x25, 0xac, 0x7a, 0x89, 0x1f, 0x06, 0xe5, 0x22, + 0xe3, 0x28, 0xd8, 0xde, 0x96, 0x92, 0x98, 0xe7, 0xca, 0xa2, 0x0b, 0x93, 0xd9, 0x12, 0xdc, 0xd5, + 0x0b, 0x74, 0x01, 0xa0, 0xde, 0x0c, 0x37, 0xbc, 0x26, 0x9d, 0x90, 0xf2, 0x10, 0x1b, 0x82, 0xe2, + 0x0c, 0x4b, 0xaa, 0x04, 0x6b, 0xb5, 0xd0, 0x2d, 0x18, 0xf6, 0x38, 0xf7, 0x2f, 0x0f, 0xb3, 0x41, + 0x3c, 0x6f, 0x63, 0x10, 0xc6, 0x71, 0x32, 0x57, 0xba, 0xbd, 0x3b, 0x3d, 0x2c, 0x80, 0x58, 0x92, + 0x43, 0x4f, 0xc1, 0x48, 0xd8, 0xa6, 0xfd, 0xf6, 0x9a, 0xe5, 0x11, 0xb6, 0x30, 0x27, 0x45, 0x5f, + 0x47, 0x56, 0x05, 0x1c, 0xab, 0x1a, 0xe8, 0x49, 0x18, 0x8e, 0x3b, 0x1b, 0xf4, 0x3b, 0x96, 0x47, + 0xd9, 0xc0, 0x8e, 0x89, 0xca, 0xc3, 0x15, 0x0e, 0xc6, 0xb2, 0x1c, 0xbd, 0x1b, 0x4a, 0x11, 0xa9, + 0x76, 0xa2, 0x98, 0xd0, 0x0f, 0x5b, 0x06, 0x86, 0xfb, 0x84, 0xa8, 0x5e, 0xc2, 0x69, 0x11, 0xd6, + 0xeb, 0xa1, 0xf7, 0xc2, 0x04, 0xfd, 0xc0, 0x17, 0x6f, 0xb5, 0x23, 0x12, 0xc7, 0xf4, 0xab, 0x96, + 0x18, 0xa1, 0xd3, 0xa2, 0xe5, 0xc4, 0xa2, 0x51, 0x8a, 0x33, 0xb5, 0xd1, 0xeb, 0x00, 0x9e, 0xe2, + 0x19, 0xe5, 0x31, 0x36, 0x99, 0x57, 0xec, 0xad, 0x88, 0xa5, 0xf9, 0xb9, 0x09, 0xfa, 0x1d, 0xd3, + 0xdf, 0x58, 0xa3, 0x47, 0xe7, 0xa7, 0x46, 0x9a, 0x24, 0x21, 0xb5, 0xf2, 0x38, 0x1b, 0xb0, 0x9a, + 0x9f, 0x05, 0x0e, 0xc6, 0xb2, 0xdc, 0xfd, 0xbb, 0x05, 0xd0, 0xb0, 0xa0, 0x39, 0x18, 0x11, 0x7c, + 0x4d, 0x6c, 0xc9, 0xb9, 0xc7, 0xe5, 0x77, 0x90, 0x5f, 0xf0, 0xce, 0x6e, 0x2e, 0x3f, 0x54, 0xed, + 0xd0, 0x1b, 0x50, 0x6a, 0x87, 0xb5, 0x15, 0x92, 0x78, 0x35, 0x2f, 0xf1, 0xc4, 0x69, 0x6e, 0xe1, + 0x84, 0x91, 0x18, 0xe7, 0x8e, 0xd1, 0x4f, 0xb7, 0x96, 0x92, 0xc0, 0x3a, 0x3d, 0xf4, 0x1c, 0xa0, + 0x98, 0x44, 0xdb, 0x7e, 0x95, 0xcc, 0x56, 0xab, 0x54, 0x24, 0x62, 0x1b, 0x60, 0x80, 0x0d, 0x66, + 0x4a, 0x0c, 0x06, 0x55, 0xba, 0x6a, 0xe0, 0x9c, 0x56, 0xee, 0xf7, 0x0a, 0x30, 0xa1, 0x8d, 0xb5, + 0x4d, 0xaa, 0xe8, 0x2d, 0x07, 0x8e, 0xa9, 0xe3, 0x6c, 0x6e, 0xe7, 0x2a, 0x5d, 0x55, 0xfc, 0xb0, + 0x22, 0x36, 0xbf, 0x2f, 0xa5, 0xa5, 0x7e, 0x0a, 0x3a, 0x9c, 0xd7, 0x9f, 0x11, 0x63, 0x38, 0x96, + 0x29, 0xc5, 0xd9, 0x6e, 0x4d, 0x7d, 0xd9, 0x81, 0x93, 0x79, 0x28, 0x72, 0x78, 0x6e, 0x43, 0xe7, + 0xb9, 0x56, 0x99, 0x17, 0xa5, 0x4a, 0x07, 0xa3, 0xf3, 0xf1, 0xff, 0x57, 0x80, 0x49, 0x7d, 0x09, + 0x31, 0x49, 0xe0, 0x5f, 0x38, 0x70, 0x4a, 0x8e, 0x00, 0x93, 0xb8, 0xd3, 0xcc, 0x4c, 0x6f, 0xcb, + 0xea, 0xf4, 0xf2, 0x93, 0x74, 0x36, 0x8f, 0x1e, 0x9f, 0xe6, 0x87, 0xc5, 0x34, 0x9f, 0xca, 0xad, + 0x83, 0xf3, 0xbb, 0x3a, 0xf5, 0x4d, 0x07, 0xa6, 0x7a, 0x23, 0xcd, 0x99, 0xf8, 0xb6, 0x39, 0xf1, + 0x2f, 0xda, 0x1b, 0x24, 0x27, 0xcf, 0xa6, 0x9f, 0x0d, 0x56, 0xff, 0x00, 0xbf, 0x35, 0x02, 0x5d, + 0x67, 0x08, 0x7a, 0x1a, 0x4a, 0x82, 0x1d, 0x5f, 0x09, 0xeb, 0x31, 0xeb, 0xe4, 0x08, 0xdf, 0x6b, + 0xb3, 0x29, 0x18, 0xeb, 0x75, 0x50, 0x0d, 0x0a, 0xf1, 0x33, 0xa2, 0xeb, 0x16, 0xd8, 0x5b, 0xe5, + 0x19, 0x25, 0x45, 0x0e, 0xdd, 0xde, 0x9d, 0x2e, 0x54, 0x9e, 0xc1, 0x85, 0xf8, 0x19, 0x2a, 0xa9, + 0xd7, 0xfd, 0xc4, 0x9e, 0xa4, 0xbe, 0xe4, 0x27, 0x8a, 0x0e, 0x93, 0xd4, 0x97, 0xfc, 0x04, 0x53, + 0x12, 0x54, 0x03, 0x69, 0x24, 0x49, 0x9b, 0x9d, 0xf8, 0x56, 0x34, 0x90, 0x4b, 0xeb, 0xeb, 0x6b, + 0x8a, 0x16, 0x93, 0x2f, 0x28, 0x04, 0x33, 0x2a, 0xe8, 0x33, 0x0e, 0x9d, 0x71, 0x5e, 0x18, 0x46, + 0x3b, 0x42, 0x70, 0xb8, 0x66, 0x6f, 0x09, 0x84, 0xd1, 0x8e, 0x22, 0x2e, 0x3e, 0xa4, 0x2a, 0xc0, + 0x3a, 0x69, 0x36, 0xf0, 0xda, 0x66, 0xcc, 0xe4, 0x04, 0x3b, 0x03, 0x5f, 0x58, 0xac, 0x64, 0x06, + 0xbe, 0xb0, 0x58, 0xc1, 0x8c, 0x0a, 0xfd, 0xa0, 0x91, 0x77, 0x53, 0xc8, 0x18, 0x16, 0x3e, 0x28, + 0xf6, 0x6e, 0x9a, 0x1f, 0x14, 0x7b, 0x37, 0x31, 0x25, 0x41, 0x29, 0x85, 0x71, 0xcc, 0x44, 0x0a, + 0x2b, 0x94, 0x56, 0x2b, 0x15, 0x93, 0xd2, 0x6a, 0xa5, 0x82, 0x29, 0x09, 0xb6, 0x48, 0xab, 0x31, + 0x93, 0x47, 0xec, 0x2c, 0xd2, 0xf9, 0x0c, 0xa5, 0xa5, 0xf9, 0x0a, 0xa6, 0x24, 0x28, 0xcb, 0xf0, + 0x5e, 0xed, 0x44, 0x5c, 0x98, 0x29, 0x5d, 0x58, 0xb5, 0xb0, 0x5e, 0x28, 0x3a, 0x45, 0x6d, 0xf4, + 0xf6, 0xee, 0x74, 0x91, 0x81, 0x30, 0x27, 0xe4, 0xfe, 0xfe, 0x40, 0xca, 0x2e, 0x24, 0x3f, 0x47, + 0xbf, 0xc6, 0x0e, 0x42, 0xc1, 0x0b, 0x84, 0xe8, 0xeb, 0x1c, 0x9a, 0xe8, 0x7b, 0x82, 0x9f, 0x78, + 0x06, 0x39, 0x9c, 0xa5, 0x8f, 0xbe, 0xe0, 0x74, 0xeb, 0xb6, 0x9e, 0xfd, 0xb3, 0x2c, 0x3d, 0x98, + 0xf9, 0x59, 0xb1, 0xa7, 0xca, 0x3b, 0xf5, 0x19, 0x27, 0x15, 0x22, 0xe2, 0x5e, 0xe7, 0xc0, 0x87, + 0xcd, 0x73, 0xc0, 0xa2, 0x42, 0xae, 0xf3, 0xfd, 0xcf, 0x3a, 0x30, 0x2e, 0xe1, 0x54, 0x3c, 0x8e, + 0xd1, 0x2d, 0x18, 0x91, 0x3d, 0x15, 0x5f, 0xcf, 0xa6, 0x2d, 0x40, 0x09, 0xf1, 0xaa, 0x33, 0x8a, + 0x9a, 0xfb, 0xd6, 0x10, 0xa0, 0xf4, 0xac, 0x6a, 0x87, 0xb1, 0xcf, 0x38, 0xd1, 0x01, 0x4e, 0xa1, + 0x40, 0x3b, 0x85, 0xae, 0xdb, 0x3c, 0x85, 0xd2, 0x6e, 0x19, 0xe7, 0xd1, 0x17, 0x32, 0x7c, 0x9b, + 0x1f, 0x4c, 0x1f, 0x3a, 0x14, 0xbe, 0xad, 0x75, 0x61, 0x6f, 0x0e, 0xbe, 0x2d, 0x38, 0x38, 0x3f, + 0xba, 0x7e, 0xd1, 0x2e, 0x07, 0xd7, 0x7a, 0x91, 0xe5, 0xe5, 0x11, 0xe7, 0xb0, 0xfc, 0xec, 0xba, + 0x61, 0x95, 0xc3, 0x6a, 0x54, 0x4d, 0x5e, 0x1b, 0x71, 0x5e, 0x3b, 0x64, 0x8b, 0xa6, 0xc6, 0x6b, + 0xb3, 0x34, 0x15, 0xd7, 0x7d, 0x55, 0x72, 0x5d, 0x7e, 0x6a, 0xbd, 0x60, 0x99, 0xeb, 0x6a, 0x74, + 0xbb, 0xf9, 0xef, 0x2b, 0x70, 0xaa, 0xbb, 0x1e, 0x26, 0x9b, 0xe8, 0x3c, 0x8c, 0x56, 0xc3, 0x60, + 0xd3, 0xaf, 0xaf, 0x78, 0x6d, 0xa1, 0xaf, 0x29, 0x5e, 0x34, 0x2f, 0x0b, 0x70, 0x5a, 0x07, 0x3d, + 0xcc, 0x19, 0x0f, 0xb7, 0x88, 0x94, 0x44, 0xd5, 0x81, 0x65, 0xb2, 0xc3, 0xb8, 0xd0, 0x2f, 0x8c, + 0x7c, 0xe5, 0xeb, 0xd3, 0x0f, 0x7c, 0xec, 0x8f, 0x1e, 0x79, 0xc0, 0xfd, 0xc3, 0x01, 0x38, 0x9b, + 0x4b, 0x53, 0x48, 0xeb, 0xbf, 0x65, 0x48, 0xeb, 0x5a, 0xb9, 0xe0, 0x22, 0x37, 0x6c, 0x0a, 0xb2, + 0x1a, 0xfa, 0x3c, 0xb9, 0x5c, 0x2b, 0xc6, 0xf9, 0x9d, 0xa2, 0x13, 0x15, 0x78, 0x2d, 0x12, 0xb7, + 0xbd, 0x2a, 0x11, 0xa3, 0x57, 0x13, 0x75, 0x55, 0x16, 0xe0, 0xb4, 0x0e, 0x57, 0xa1, 0x37, 0xbd, + 0x4e, 0x33, 0x11, 0x86, 0x32, 0x4d, 0x85, 0x66, 0x60, 0x2c, 0xcb, 0xd1, 0xdf, 0x73, 0x00, 0x75, + 0x53, 0x15, 0x1b, 0x71, 0xfd, 0x30, 0xe6, 0x61, 0xee, 0xf4, 0x6d, 0x4d, 0x09, 0xd7, 0x46, 0x9a, + 0xd3, 0x0f, 0xed, 0x9b, 0x7e, 0x24, 0x3d, 0x87, 0xb8, 0x72, 0xd0, 0x87, 0x0d, 0x8d, 0x99, 0x5a, + 0xaa, 0x55, 0x12, 0xc7, 0xdc, 0x1c, 0xa7, 0x9b, 0x5a, 0x18, 0x18, 0xcb, 0x72, 0x34, 0x0d, 0x45, + 0x12, 0x45, 0x61, 0x24, 0x74, 0x6d, 0xb6, 0x8c, 0x2f, 0x52, 0x00, 0xe6, 0x70, 0xf7, 0x47, 0x05, + 0x28, 0xf7, 0xd2, 0x4e, 0xd0, 0xef, 0x68, 0x7a, 0xb5, 0xd0, 0x9c, 0x84, 0xe2, 0x17, 0x1e, 0x9e, + 0x4e, 0x94, 0x55, 0x00, 0x7b, 0x68, 0xd8, 0xa2, 0x14, 0x67, 0x3b, 0x38, 0xf5, 0x45, 0x4d, 0xc3, + 0xd6, 0x51, 0xe4, 0x1c, 0xf0, 0x9b, 0xe6, 0x01, 0xbf, 0x66, 0x7b, 0x50, 0xfa, 0x31, 0xff, 0xc7, + 0x45, 0x38, 0x21, 0x4b, 0x2b, 0x84, 0x1e, 0x95, 0xcf, 0x77, 0x48, 0xb4, 0x83, 0xbe, 0xef, 0xc0, + 0x49, 0x2f, 0x6b, 0xba, 0xf1, 0xc9, 0x21, 0x4c, 0xb4, 0x46, 0x75, 0x66, 0x36, 0x87, 0x22, 0x9f, + 0xe8, 0x0b, 0x62, 0xa2, 0x4f, 0xe6, 0x55, 0xe9, 0x61, 0x77, 0xcf, 0x1d, 0x00, 0x7a, 0x16, 0xc6, + 0x24, 0x9c, 0x99, 0x7b, 0xf8, 0x16, 0x57, 0xc6, 0xed, 0x59, 0xad, 0x0c, 0x1b, 0x35, 0x69, 0xcb, + 0x84, 0xb4, 0xda, 0x4d, 0x2f, 0x21, 0x9a, 0xa1, 0x48, 0xb5, 0x5c, 0xd7, 0xca, 0xb0, 0x51, 0x13, + 0x3d, 0x0e, 0x43, 0x41, 0x58, 0x23, 0x97, 0x6b, 0xc2, 0x40, 0x3c, 0x21, 0xda, 0x0c, 0x5d, 0x65, + 0x50, 0x2c, 0x4a, 0xd1, 0x63, 0xa9, 0x35, 0xae, 0xc8, 0xb6, 0x50, 0x29, 0xcf, 0x12, 0x87, 0xfe, + 0x81, 0x03, 0xa3, 0xb4, 0xc5, 0xfa, 0x4e, 0x9b, 0xd0, 0xb3, 0x8d, 0x7e, 0x91, 0xda, 0xe1, 0x7c, + 0x91, 0xab, 0x92, 0x8c, 0x69, 0xea, 0x18, 0x55, 0xf0, 0x37, 0xdf, 0x9e, 0x1e, 0x91, 0x3f, 0x70, + 0xda, 0xab, 0xa9, 0x25, 0x78, 0xb0, 0xe7, 0xd7, 0xdc, 0x97, 0x2b, 0xe0, 0x6f, 0xc0, 0x84, 0xd9, + 0x89, 0x7d, 0xf9, 0x01, 0xfe, 0x99, 0xb6, 0xed, 0xf8, 0xb8, 0x04, 0x3f, 0xbb, 0x6f, 0xd2, 0xac, + 0x5a, 0x0c, 0x0b, 0x62, 0xe9, 0x99, 0x8b, 0x61, 0x41, 0x2c, 0x86, 0x05, 0xf7, 0x0f, 0x9c, 0x74, + 0x6b, 0x6a, 0x62, 0x1e, 0x3d, 0x98, 0x3b, 0x51, 0x53, 0x30, 0x62, 0x75, 0x30, 0x5f, 0xc3, 0x57, + 0x30, 0x85, 0xa3, 0x2f, 0x6a, 0xdc, 0x91, 0x36, 0xeb, 0x08, 0xb7, 0x86, 0x25, 0x13, 0xbd, 0x81, + 0xb8, 0x9b, 0xff, 0x89, 0x02, 0x9c, 0xed, 0x82, 0xfb, 0x85, 0x02, 0x3c, 0xbc, 0xa7, 0xd0, 0x9a, + 0xdb, 0x71, 0xe7, 0xbe, 0x77, 0x9c, 0x1e, 0x6b, 0x11, 0x69, 0x87, 0xd7, 0xf0, 0x15, 0xf1, 0xbd, + 0xd4, 0xb1, 0x86, 0x39, 0x18, 0xcb, 0x72, 0x2a, 0x3a, 0x6c, 0x91, 0x9d, 0xc5, 0x30, 0x6a, 0x79, + 0x89, 0xe0, 0x0e, 0x4a, 0x74, 0x58, 0x96, 0x05, 0x38, 0xad, 0xe3, 0x7e, 0xdf, 0x81, 0x6c, 0x07, + 0x90, 0x07, 0x13, 0x9d, 0x98, 0x44, 0xf4, 0x48, 0xad, 0x90, 0x6a, 0x44, 0xe4, 0xf2, 0x7c, 0x6c, + 0x86, 0x7b, 0xfb, 0xe9, 0x08, 0x67, 0xaa, 0x61, 0x44, 0x66, 0xb6, 0x9f, 0x9e, 0xe1, 0x35, 0x96, + 0xc9, 0x4e, 0x85, 0x34, 0x09, 0xc5, 0x31, 0x87, 0x6e, 0xef, 0x4e, 0x4f, 0x5c, 0x33, 0x10, 0xe0, + 0x0c, 0x42, 0x4a, 0xa2, 0xed, 0xc5, 0xf1, 0xcd, 0x30, 0xaa, 0x09, 0x12, 0x85, 0x7d, 0x93, 0x58, + 0x33, 0x10, 0xe0, 0x0c, 0x42, 0xf7, 0x7b, 0x54, 0x7d, 0xd4, 0xa5, 0x56, 0xf4, 0x75, 0x2a, 0xfb, + 0x50, 0xc8, 0x5c, 0x33, 0xdc, 0x98, 0x0f, 0x83, 0xc4, 0xf3, 0x03, 0x22, 0x83, 0x05, 0xd6, 0x2d, + 0xc9, 0xc8, 0x06, 0xee, 0xd4, 0x86, 0xdf, 0x5d, 0x86, 0x73, 0xfa, 0x42, 0x65, 0x9c, 0x8d, 0x66, + 0xb8, 0x91, 0xf5, 0x02, 0xd2, 0x4a, 0x98, 0x95, 0xb8, 0x3f, 0x71, 0xe0, 0x4c, 0x0f, 0x61, 0x1c, + 0x7d, 0xd9, 0x81, 0xf1, 0x8d, 0x9f, 0x8a, 0xb1, 0x99, 0xdd, 0x40, 0xef, 0x85, 0x09, 0x0a, 0xa0, + 0x27, 0x91, 0x58, 0x9b, 0x05, 0xd3, 0x43, 0x35, 0x67, 0x94, 0xe2, 0x4c, 0x6d, 0xf7, 0xd7, 0x0b, + 0x90, 0x43, 0x05, 0x3d, 0x05, 0x23, 0x24, 0xa8, 0xb5, 0x43, 0x3f, 0x48, 0x04, 0x33, 0x52, 0x5c, + 0xef, 0xa2, 0x80, 0x63, 0x55, 0x43, 0xe8, 0x1f, 0x62, 0x62, 0x0a, 0x5d, 0xfa, 0x87, 0xe8, 0x79, + 0x5a, 0x07, 0xd5, 0x61, 0xd2, 0xe3, 0xfe, 0x15, 0xb6, 0xf6, 0xd8, 0x32, 0x1d, 0xd8, 0xcf, 0x32, + 0x3d, 0xc9, 0xdc, 0x9f, 0x19, 0x14, 0xb8, 0x0b, 0x29, 0x7a, 0x37, 0x94, 0x3a, 0x31, 0xa9, 0x2c, + 0x2c, 0xcf, 0x47, 0xa4, 0xc6, 0xb5, 0x62, 0xcd, 0xef, 0x77, 0x2d, 0x2d, 0xc2, 0x7a, 0x3d, 0xf7, + 0x5f, 0x3a, 0x30, 0x3c, 0xe7, 0x55, 0xb7, 0xc2, 0xcd, 0x4d, 0x3a, 0x15, 0xb5, 0x4e, 0x94, 0x1a, + 0xb6, 0xb4, 0xa9, 0x58, 0x10, 0x70, 0xac, 0x6a, 0xa0, 0x75, 0x18, 0xe2, 0x1b, 0x5e, 0x6c, 0xbb, + 0x9f, 0xd7, 0xc6, 0xa3, 0xe2, 0x78, 0xd8, 0x72, 0xe8, 0x24, 0x7e, 0x73, 0x86, 0xc7, 0xf1, 0xcc, + 0x5c, 0x0e, 0x92, 0xd5, 0xa8, 0x92, 0x44, 0x7e, 0x50, 0x9f, 0x03, 0x7a, 0x5c, 0x2c, 0x32, 0x1c, + 0x58, 0xe0, 0xa2, 0xc3, 0x68, 0x79, 0xb7, 0x24, 0x39, 0xc1, 0x7e, 0xd4, 0x30, 0x56, 0xd2, 0x22, + 0xac, 0xd7, 0x73, 0xff, 0xd0, 0x81, 0xd1, 0x39, 0x2f, 0xf6, 0xab, 0x7f, 0x81, 0x98, 0xcf, 0x07, + 0xa1, 0x38, 0xef, 0x55, 0x1b, 0x04, 0x5d, 0xcb, 0x2a, 0xbd, 0xa5, 0x0b, 0x4f, 0xe4, 0x91, 0x51, + 0x0a, 0xb0, 0x4e, 0x69, 0xbc, 0x97, 0x6a, 0xec, 0xbe, 0xed, 0xc0, 0xc4, 0x7c, 0xd3, 0x27, 0x41, + 0x32, 0x4f, 0xa2, 0x84, 0x4d, 0x5c, 0x1d, 0x26, 0xab, 0x0a, 0x72, 0x90, 0xa9, 0x63, 0xab, 0x75, + 0x3e, 0x83, 0x02, 0x77, 0x21, 0x45, 0x35, 0x38, 0xc6, 0x61, 0xe9, 0xae, 0xd8, 0xd7, 0xfc, 0x31, + 0xeb, 0xe8, 0xbc, 0x89, 0x01, 0x67, 0x51, 0xba, 0x3f, 0x76, 0xe0, 0xcc, 0x7c, 0xb3, 0x13, 0x27, + 0x24, 0xba, 0x21, 0xb8, 0x91, 0x14, 0x6f, 0xd1, 0x87, 0x61, 0xa4, 0x25, 0x3d, 0xb6, 0xce, 0x5d, + 0x16, 0x30, 0xe3, 0x67, 0xb4, 0x36, 0xed, 0xcc, 0xea, 0xc6, 0xcb, 0xa4, 0x9a, 0xac, 0x90, 0xc4, + 0x4b, 0xc3, 0x0b, 0x52, 0x18, 0x56, 0x58, 0x51, 0x1b, 0x06, 0xe3, 0x36, 0xa9, 0xda, 0x8b, 0xee, + 0x92, 0x63, 0xa8, 0xb4, 0x49, 0x35, 0xe5, 0xeb, 0xcc, 0xd7, 0xc8, 0x28, 0xb9, 0xff, 0xdb, 0x81, + 0xb3, 0x3d, 0xc6, 0x7b, 0xc5, 0x8f, 0x13, 0xf4, 0x52, 0xd7, 0x98, 0x67, 0xfa, 0x1b, 0x33, 0x6d, + 0xcd, 0x46, 0xac, 0x18, 0x82, 0x84, 0x68, 0xe3, 0xfd, 0x08, 0x14, 0xfd, 0x84, 0xb4, 0xa4, 0x19, + 0xda, 0x82, 0xc1, 0xa8, 0xc7, 0x58, 0xe6, 0xc6, 0x65, 0x8c, 0xdf, 0x65, 0x4a, 0x0f, 0x73, 0xb2, + 0xee, 0x16, 0x0c, 0xcd, 0x87, 0xcd, 0x4e, 0x2b, 0xe8, 0x2f, 0x52, 0x26, 0xd9, 0x69, 0x93, 0xec, + 0x19, 0xc9, 0xc4, 0x7f, 0x56, 0x22, 0x0d, 0x47, 0x03, 0xf9, 0x86, 0x23, 0xf7, 0x5f, 0x39, 0x40, + 0x77, 0x55, 0xcd, 0x17, 0x9e, 0x44, 0x8e, 0x8e, 0x13, 0x7c, 0x58, 0x47, 0x77, 0x67, 0x77, 0x7a, + 0x5c, 0x55, 0xd4, 0xf0, 0x7f, 0x10, 0x86, 0x62, 0xa6, 0x92, 0x8b, 0x3e, 0x2c, 0x4a, 0xf9, 0x99, + 0x2b, 0xea, 0x77, 0x76, 0xa7, 0xfb, 0x0a, 0xdb, 0x9c, 0x51, 0xb8, 0x85, 0xd3, 0x53, 0x60, 0xa5, + 0x02, 0x5f, 0x8b, 0xc4, 0xb1, 0x57, 0x97, 0x1a, 0x9e, 0x12, 0xf8, 0x56, 0x38, 0x18, 0xcb, 0x72, + 0xf7, 0x4b, 0x0e, 0x8c, 0xab, 0xc3, 0x8b, 0x8a, 0xef, 0xe8, 0xaa, 0x7e, 0xcc, 0xf1, 0x95, 0xf2, + 0x70, 0x0f, 0x8e, 0x23, 0x0e, 0xf2, 0xbd, 0x4f, 0xc1, 0x77, 0xc1, 0x58, 0x8d, 0xb4, 0x49, 0x50, + 0x23, 0x41, 0x95, 0xaa, 0xdf, 0x74, 0x85, 0x8c, 0xce, 0x4d, 0x52, 0x7d, 0x73, 0x41, 0x83, 0x63, + 0xa3, 0x96, 0xfb, 0x0d, 0x07, 0x1e, 0x54, 0xe8, 0x2a, 0x24, 0xc1, 0x24, 0x89, 0x76, 0x54, 0x98, + 0xe6, 0xfe, 0x4e, 0xab, 0x1b, 0x54, 0xfe, 0x4d, 0x22, 0x4e, 0xfc, 0x60, 0xc7, 0x55, 0x89, 0x4b, + 0xcb, 0x0c, 0x09, 0x96, 0xd8, 0xdc, 0x5f, 0x1d, 0x80, 0x93, 0x7a, 0x27, 0x15, 0x83, 0xf9, 0xb8, + 0x03, 0xa0, 0x66, 0x80, 0x1e, 0xc8, 0x03, 0x76, 0x7c, 0x57, 0xc6, 0x97, 0x4a, 0x59, 0x90, 0x02, + 0xc7, 0x58, 0x23, 0x8b, 0x5e, 0x80, 0xb1, 0x6d, 0xba, 0x29, 0xc8, 0x0a, 0x15, 0x17, 0xe2, 0xf2, + 0x00, 0xeb, 0xc6, 0x74, 0xde, 0xc7, 0xbc, 0x9e, 0xd6, 0x4b, 0xcd, 0x01, 0x1a, 0x30, 0xc6, 0x06, + 0x2a, 0xaa, 0xe9, 0x8c, 0x47, 0xfa, 0x27, 0x11, 0x36, 0xf1, 0x0f, 0x58, 0x1c, 0x63, 0xf6, 0xab, + 0xcf, 0x1d, 0xbf, 0xbd, 0x3b, 0x3d, 0x6e, 0x80, 0xb0, 0xd9, 0x09, 0xf7, 0x05, 0x60, 0x73, 0xe1, + 0x07, 0x1d, 0xb2, 0x1a, 0xa0, 0x47, 0xa5, 0x8d, 0x8e, 0xfb, 0x55, 0x14, 0xe7, 0xd0, 0xed, 0x74, + 0x54, 0x97, 0xdd, 0xf4, 0xfc, 0x26, 0x0b, 0x5f, 0xa4, 0xb5, 0x94, 0x2e, 0xbb, 0xc8, 0xa0, 0x58, + 0x94, 0xba, 0x33, 0x30, 0x3c, 0x4f, 0xc7, 0x4e, 0x22, 0x8a, 0x57, 0x8f, 0x3a, 0x1e, 0x37, 0xa2, + 0x8e, 0x65, 0x74, 0xf1, 0x3a, 0x9c, 0x9a, 0x8f, 0x88, 0x97, 0x90, 0xca, 0x33, 0x73, 0x9d, 0xea, + 0x16, 0x49, 0x78, 0x68, 0x57, 0x8c, 0xde, 0x03, 0xe3, 0x21, 0x3b, 0x32, 0xae, 0x84, 0xd5, 0x2d, + 0x3f, 0xa8, 0x0b, 0x93, 0xeb, 0x29, 0x81, 0x65, 0x7c, 0x55, 0x2f, 0xc4, 0x66, 0x5d, 0xf7, 0x3f, + 0x15, 0x60, 0x6c, 0x3e, 0x0a, 0x03, 0xc9, 0x16, 0x8f, 0xe0, 0x28, 0x4b, 0x8c, 0xa3, 0xcc, 0x82, + 0xbb, 0x53, 0xef, 0x7f, 0xaf, 0xe3, 0x0c, 0xbd, 0xae, 0x58, 0xe4, 0x80, 0x2d, 0x15, 0xc4, 0xa0, + 0xcb, 0x70, 0xa7, 0x1f, 0xdb, 0x64, 0xa0, 0xee, 0x7f, 0x76, 0x60, 0x52, 0xaf, 0x7e, 0x04, 0x27, + 0x68, 0x6c, 0x9e, 0xa0, 0x57, 0xed, 0x8e, 0xb7, 0xc7, 0xb1, 0xf9, 0xcf, 0x87, 0xcd, 0x71, 0x32, + 0x5f, 0xf7, 0x57, 0x1c, 0x18, 0xbb, 0xa9, 0x01, 0xc4, 0x60, 0x6d, 0x0b, 0x31, 0xef, 0x90, 0x6c, + 0x46, 0x87, 0xde, 0xc9, 0xfc, 0xc6, 0x46, 0x4f, 0x28, 0xdf, 0x8f, 0xab, 0x0d, 0x52, 0xeb, 0x34, + 0xe5, 0xf1, 0xad, 0xa6, 0xb4, 0x22, 0xe0, 0x58, 0xd5, 0x40, 0x2f, 0xc1, 0xf1, 0x6a, 0x18, 0x54, + 0x3b, 0x51, 0x44, 0x82, 0xea, 0xce, 0x1a, 0xbb, 0x23, 0x21, 0x0e, 0xc4, 0x19, 0xd1, 0xec, 0xf8, + 0x7c, 0xb6, 0xc2, 0x9d, 0x3c, 0x20, 0xee, 0x46, 0xc4, 0x9d, 0x05, 0x31, 0x3d, 0xb2, 0x84, 0xc2, + 0xa5, 0x39, 0x0b, 0x18, 0x18, 0xcb, 0x72, 0x74, 0x0d, 0xce, 0xc4, 0x89, 0x17, 0x25, 0x7e, 0x50, + 0x5f, 0x20, 0x5e, 0xad, 0xe9, 0x07, 0x54, 0x95, 0x08, 0x83, 0x1a, 0x77, 0x25, 0x0e, 0xcc, 0x9d, + 0xbd, 0xbd, 0x3b, 0x7d, 0xa6, 0x92, 0x5f, 0x05, 0xf7, 0x6a, 0x8b, 0x3e, 0x08, 0x53, 0xc2, 0x1d, + 0xb1, 0xd9, 0x69, 0x3e, 0x17, 0x6e, 0xc4, 0x97, 0xfc, 0x98, 0xea, 0xf1, 0x57, 0xfc, 0x96, 0x9f, + 0x30, 0x87, 0x61, 0x71, 0xee, 0xdc, 0xed, 0xdd, 0xe9, 0xa9, 0x4a, 0xcf, 0x5a, 0x78, 0x0f, 0x0c, + 0x08, 0xc3, 0x69, 0xce, 0xfc, 0xba, 0x70, 0x0f, 0x33, 0xdc, 0x53, 0xb7, 0x77, 0xa7, 0x4f, 0x2f, + 0xe6, 0xd6, 0xc0, 0x3d, 0x5a, 0xd2, 0x2f, 0x98, 0xf8, 0x2d, 0xf2, 0x6a, 0x18, 0x10, 0x16, 0xa8, + 0xa2, 0x7d, 0xc1, 0x75, 0x01, 0xc7, 0xaa, 0x06, 0x7a, 0x39, 0x5d, 0x89, 0x74, 0xbb, 0x88, 0x80, + 0x93, 0xfd, 0x73, 0x38, 0xa6, 0x9a, 0xdc, 0xd0, 0x30, 0xb1, 0x48, 0x4a, 0x03, 0x37, 0xfa, 0x84, + 0x03, 0x63, 0x71, 0x12, 0xaa, 0x7b, 0x0d, 0x22, 0xe2, 0xc4, 0xc2, 0xb2, 0xaf, 0x68, 0x58, 0xb9, + 0xe0, 0xa3, 0x43, 0xb0, 0x41, 0x15, 0xfd, 0x1c, 0x8c, 0xca, 0x05, 0x1c, 0x97, 0x4b, 0x4c, 0x56, + 0x62, 0x6a, 0x9c, 0x5c, 0xdf, 0x31, 0x4e, 0xcb, 0xdd, 0x1f, 0x0d, 0x00, 0xea, 0x66, 0x6b, 0x68, + 0x19, 0x86, 0xbc, 0x6a, 0xe2, 0x6f, 0xcb, 0x68, 0xc2, 0x47, 0xf3, 0x8e, 0x7c, 0x3e, 0x3d, 0x98, + 0x6c, 0x12, 0xba, 0xaa, 0x49, 0xca, 0x0b, 0x67, 0x59, 0x53, 0x2c, 0x50, 0xa0, 0x10, 0x8e, 0x37, + 0xbd, 0x38, 0x91, 0xf4, 0x6b, 0xf4, 0x33, 0x89, 0xc3, 0xe0, 0x67, 0xfb, 0xfb, 0x10, 0xb4, 0xc5, + 0xdc, 0x29, 0xba, 0xdb, 0xae, 0x64, 0x11, 0xe1, 0x6e, 0xdc, 0xe8, 0xa3, 0x4c, 0x76, 0xe2, 0x82, + 0xad, 0x14, 0x5a, 0x96, 0xad, 0xc8, 0x15, 0x1c, 0xa7, 0x21, 0x37, 0x09, 0x32, 0x58, 0x23, 0x89, + 0xce, 0xc3, 0x28, 0xdb, 0x15, 0xa4, 0x46, 0xf8, 0xde, 0x1e, 0x48, 0x45, 0xdc, 0x8a, 0x2c, 0xc0, + 0x69, 0x1d, 0x4d, 0x86, 0xe0, 0xdb, 0xb9, 0x87, 0x0c, 0x81, 0x9e, 0x85, 0x62, 0xbb, 0xe1, 0xc5, + 0x32, 0x42, 0xdd, 0x95, 0x3c, 0x79, 0x8d, 0x02, 0x19, 0xe3, 0xd1, 0xbe, 0x25, 0x03, 0x62, 0xde, + 0xc0, 0xfd, 0xd7, 0x00, 0xc3, 0x0b, 0xb3, 0x4b, 0xeb, 0x5e, 0xbc, 0xd5, 0x87, 0x86, 0x43, 0x37, + 0x99, 0x10, 0x45, 0xb3, 0x6c, 0x52, 0x8a, 0xa8, 0x58, 0xd5, 0x40, 0x01, 0x0c, 0xf9, 0x01, 0xe5, + 0x2b, 0xe5, 0x09, 0x5b, 0x5e, 0x04, 0xa5, 0xad, 0x31, 0x33, 0xcf, 0x65, 0x86, 0x1d, 0x0b, 0x2a, + 0xe8, 0x75, 0x18, 0xf5, 0xe4, 0x05, 0x21, 0x71, 0xba, 0x2f, 0xdb, 0x30, 0x8f, 0x0b, 0x94, 0x7a, + 0x80, 0x92, 0x00, 0xe1, 0x94, 0x20, 0xfa, 0x98, 0x03, 0x25, 0x39, 0x74, 0x4c, 0x36, 0x85, 0xe7, + 0x7a, 0xc5, 0xde, 0x98, 0x31, 0xd9, 0xe4, 0xd1, 0x2b, 0x1a, 0x00, 0xeb, 0x24, 0xbb, 0x34, 0xa2, + 0x62, 0x3f, 0x1a, 0x11, 0xba, 0x09, 0xa3, 0x37, 0xfd, 0xa4, 0xc1, 0xce, 0x6f, 0xe1, 0x31, 0x5b, + 0xbc, 0xf7, 0x5e, 0x53, 0x74, 0xe9, 0x8c, 0xdd, 0x90, 0x04, 0x70, 0x4a, 0x8b, 0x6e, 0x07, 0xfa, + 0x83, 0x5d, 0xb0, 0x62, 0x9c, 0x7f, 0xd4, 0x6c, 0xc0, 0x0a, 0x70, 0x5a, 0x87, 0x4e, 0xf1, 0x18, + 0xfd, 0x55, 0x21, 0xaf, 0x74, 0x28, 0x6b, 0x11, 0x11, 0x89, 0x16, 0xd6, 0x95, 0xc4, 0xc8, 0x27, + 0xeb, 0x86, 0x46, 0x03, 0x1b, 0x14, 0xe9, 0x1e, 0xb9, 0xd9, 0x20, 0x81, 0xb8, 0x31, 0xa1, 0xf6, + 0xc8, 0x8d, 0x06, 0x09, 0x30, 0x2b, 0x41, 0xaf, 0x73, 0x0d, 0x8d, 0xab, 0x0a, 0x82, 0xd7, 0x5f, + 0xb1, 0xa3, 0xbd, 0x70, 0x9c, 0xfc, 0xd2, 0x42, 0xfa, 0x1b, 0x6b, 0xf4, 0x28, 0xc7, 0x08, 0x83, + 0x8b, 0xb7, 0xfc, 0x44, 0x5c, 0xb5, 0x50, 0x1c, 0x63, 0x95, 0x41, 0xb1, 0x28, 0xe5, 0x91, 0x19, + 0x74, 0x11, 0xc4, 0xec, 0x5e, 0xc5, 0xa8, 0x1e, 0x99, 0xc1, 0xc0, 0x58, 0x96, 0xa3, 0xbf, 0xef, + 0x40, 0xb1, 0x11, 0x86, 0x5b, 0x71, 0x79, 0x9c, 0x2d, 0x0e, 0x0b, 0x12, 0xb3, 0xe0, 0x38, 0x33, + 0x97, 0x28, 0x5a, 0xf3, 0xf2, 0x58, 0x91, 0xc1, 0xee, 0xec, 0x4e, 0x4f, 0x5c, 0xf1, 0x37, 0x49, + 0x75, 0xa7, 0xda, 0x24, 0x0c, 0xf2, 0xe6, 0xdb, 0x1a, 0xe4, 0xe2, 0x36, 0x09, 0x12, 0xcc, 0x7b, + 0x35, 0xf5, 0x59, 0x07, 0x20, 0x45, 0x94, 0xe3, 0x02, 0x25, 0x66, 0xd0, 0x80, 0x05, 0x75, 0xd9, + 0xe8, 0x9a, 0xee, 0x53, 0xfd, 0xb7, 0x0e, 0x94, 0xe8, 0xe0, 0x24, 0x0b, 0x7c, 0x1c, 0x86, 0x12, + 0x2f, 0xaa, 0x13, 0xe9, 0x06, 0x50, 0x9f, 0x63, 0x9d, 0x41, 0xb1, 0x28, 0x45, 0x01, 0x14, 0x13, + 0x2f, 0xde, 0x92, 0x42, 0xfa, 0x65, 0x6b, 0x53, 0x9c, 0xca, 0xe7, 0xf4, 0x57, 0x8c, 0x39, 0x19, + 0xf4, 0x04, 0x8c, 0xd0, 0xa3, 0x63, 0xd1, 0x8b, 0x65, 0x64, 0xce, 0x18, 0x65, 0xe2, 0x8b, 0x02, + 0x86, 0x55, 0xa9, 0xfb, 0xeb, 0x05, 0x18, 0x5c, 0xe0, 0xea, 0xda, 0x50, 0x1c, 0x76, 0xa2, 0x2a, + 0x11, 0x62, 0xbb, 0x85, 0x35, 0x4d, 0xf1, 0x56, 0x18, 0x4e, 0x4d, 0x61, 0x62, 0xbf, 0xb1, 0xa0, + 0x85, 0xbe, 0xe8, 0xc0, 0x44, 0x12, 0x79, 0x41, 0xbc, 0xc9, 0x1c, 0x2e, 0x7e, 0x18, 0x88, 0x29, + 0xb2, 0xb0, 0x0a, 0xd7, 0x0d, 0xbc, 0x95, 0x84, 0xb4, 0x53, 0xbf, 0x8f, 0x59, 0x86, 0x33, 0x7d, + 0x70, 0x7f, 0xc3, 0x01, 0x48, 0x7b, 0x8f, 0x3e, 0xe3, 0xc0, 0xb8, 0xa7, 0x47, 0x84, 0x8a, 0x39, + 0x5a, 0xb5, 0xe7, 0x9d, 0x65, 0x68, 0xb9, 0xa5, 0xc2, 0x00, 0x61, 0x93, 0xb0, 0xfb, 0x6e, 0x28, + 0xb2, 0xdd, 0xc1, 0x54, 0x1a, 0x61, 0xd9, 0xce, 0x9a, 0xb2, 0xa4, 0xc5, 0x1b, 0xab, 0x1a, 0xee, + 0x4b, 0x30, 0x71, 0xf1, 0x16, 0xa9, 0x76, 0x92, 0x30, 0xe2, 0x76, 0xfd, 0x1e, 0x37, 0x80, 0x9c, + 0x03, 0xdd, 0x00, 0xfa, 0xb6, 0x03, 0x25, 0x2d, 0x3c, 0x90, 0x9e, 0xd4, 0xf5, 0xf9, 0x0a, 0x37, + 0x5f, 0x88, 0xa9, 0x5a, 0xb6, 0x12, 0x80, 0xc8, 0x51, 0xa6, 0xc7, 0x88, 0x02, 0xe1, 0x94, 0xe0, + 0x5d, 0xc2, 0xf7, 0xdc, 0xdf, 0x77, 0xe0, 0x54, 0x6e, 0x2c, 0xe3, 0x7d, 0xee, 0xb6, 0xe1, 0x42, + 0x2f, 0xf4, 0xe1, 0x42, 0xff, 0x6d, 0x07, 0x52, 0x4c, 0x94, 0x15, 0x6d, 0xa4, 0x3d, 0xd7, 0x58, + 0x91, 0xa0, 0x24, 0x4a, 0xd1, 0xeb, 0x70, 0xc6, 0xfc, 0x82, 0x07, 0xf4, 0xa6, 0x70, 0xd5, 0x33, + 0x1f, 0x13, 0xee, 0x45, 0xc2, 0xfd, 0xaa, 0x03, 0xc5, 0x25, 0xaf, 0x53, 0x27, 0x7d, 0x19, 0xc3, + 0x28, 0x1f, 0x8b, 0x88, 0xd7, 0x4c, 0xa4, 0xea, 0x20, 0xf8, 0x18, 0x16, 0x30, 0xac, 0x4a, 0xd1, + 0x2c, 0x8c, 0x86, 0x6d, 0x62, 0x78, 0x00, 0x1f, 0x95, 0xb3, 0xb7, 0x2a, 0x0b, 0xe8, 0xb1, 0xc3, + 0xa8, 0x2b, 0x08, 0x4e, 0x5b, 0xb9, 0xdf, 0x2f, 0x42, 0x49, 0xbb, 0xf5, 0x42, 0x65, 0x81, 0x88, + 0xb4, 0xc3, 0xac, 0xbc, 0x4c, 0x17, 0x0c, 0x66, 0x25, 0x74, 0x0f, 0x46, 0x64, 0xdb, 0x8f, 0x39, + 0xdb, 0x32, 0xf6, 0x20, 0x16, 0x70, 0xac, 0x6a, 0xa0, 0x69, 0x28, 0xd6, 0x48, 0x3b, 0x69, 0xb0, + 0xee, 0x0d, 0xf2, 0xd0, 0xbf, 0x05, 0x0a, 0xc0, 0x1c, 0x4e, 0x2b, 0x6c, 0x92, 0xa4, 0xda, 0x60, + 0x76, 0x5f, 0x11, 0x1b, 0xb8, 0x48, 0x01, 0x98, 0xc3, 0x73, 0x7c, 0x94, 0xc5, 0xc3, 0xf7, 0x51, + 0x0e, 0x59, 0xf6, 0x51, 0xa2, 0x36, 0x9c, 0x88, 0xe3, 0xc6, 0x5a, 0xe4, 0x6f, 0x7b, 0x09, 0x49, + 0x57, 0xdf, 0xf0, 0x7e, 0xe8, 0x9c, 0x61, 0xf7, 0xd0, 0x2b, 0x97, 0xb2, 0x58, 0x70, 0x1e, 0x6a, + 0x54, 0x81, 0x53, 0x7e, 0x10, 0x93, 0x6a, 0x27, 0x22, 0x97, 0xeb, 0x41, 0x18, 0x91, 0x4b, 0x61, + 0x4c, 0xd1, 0x89, 0x5b, 0xb4, 0x2a, 0x5a, 0xf6, 0x72, 0x5e, 0x25, 0x9c, 0xdf, 0x16, 0x2d, 0xc1, + 0xf1, 0x9a, 0x1f, 0x7b, 0x1b, 0x4d, 0x52, 0xe9, 0x6c, 0xb4, 0x42, 0xae, 0x78, 0x8f, 0x32, 0x84, + 0x0f, 0x4a, 0x2b, 0xd1, 0x42, 0xb6, 0x02, 0xee, 0x6e, 0x83, 0x9e, 0x85, 0xb1, 0xd8, 0x0f, 0xea, + 0x4d, 0x32, 0x17, 0x79, 0x41, 0xb5, 0x21, 0xae, 0xdf, 0x2a, 0x6b, 0x7a, 0x45, 0x2b, 0xc3, 0x46, + 0x4d, 0xb6, 0xe7, 0x79, 0x9b, 0x8c, 0x34, 0x28, 0x6a, 0x8b, 0x52, 0xf7, 0x07, 0x0e, 0x8c, 0xe9, + 0x91, 0xea, 0x54, 0xd2, 0x86, 0xc6, 0xc2, 0x62, 0x85, 0x9f, 0x05, 0xf6, 0x4e, 0xfc, 0x4b, 0x0a, + 0x67, 0xaa, 0x2c, 0xa7, 0x30, 0xac, 0xd1, 0xec, 0xe3, 0xde, 0xf9, 0xa3, 0x50, 0xdc, 0x0c, 0xa9, + 0x40, 0x32, 0x60, 0x9a, 0xe1, 0x17, 0x29, 0x10, 0xf3, 0x32, 0xf7, 0x7f, 0x38, 0x70, 0x3a, 0x3f, + 0x08, 0xff, 0xa7, 0x61, 0x90, 0x17, 0x00, 0xe8, 0x50, 0x0c, 0xa6, 0xae, 0x65, 0x9e, 0x90, 0x25, + 0x58, 0xab, 0xd5, 0xdf, 0xb0, 0xff, 0x4d, 0x01, 0x34, 0x9a, 0xe8, 0x73, 0x0e, 0x8c, 0x53, 0xb2, + 0xcb, 0xd1, 0x86, 0x31, 0xda, 0x55, 0x3b, 0xa3, 0x55, 0x68, 0x53, 0x6f, 0x83, 0x01, 0xc6, 0x26, + 0x71, 0xf4, 0x73, 0x30, 0xea, 0xd5, 0x6a, 0x11, 0x89, 0x63, 0xe5, 0xb7, 0x63, 0xb6, 0xa8, 0x59, + 0x09, 0xc4, 0x69, 0x39, 0x65, 0xa2, 0x8d, 0xda, 0x66, 0x4c, 0xf9, 0x92, 0x60, 0xdc, 0x8a, 0x89, + 0x52, 0x22, 0x14, 0x8e, 0x55, 0x0d, 0x74, 0x1d, 0x4e, 0xd7, 0xbc, 0xc4, 0xe3, 0xf2, 0x1b, 0x89, + 0xd6, 0xa2, 0x30, 0x21, 0x55, 0xc6, 0xf4, 0x79, 0x7c, 0xe9, 0x39, 0xd1, 0xf6, 0xf4, 0x42, 0x6e, + 0x2d, 0xdc, 0xa3, 0xb5, 0xfb, 0x2b, 0x83, 0x60, 0x8e, 0x09, 0xd5, 0xe0, 0xd8, 0x56, 0xb4, 0x31, + 0xcf, 0xc2, 0x29, 0x0e, 0x12, 0xd6, 0xc0, 0xc2, 0x0d, 0x96, 0x4d, 0x0c, 0x38, 0x8b, 0x52, 0x50, + 0x59, 0x26, 0x3b, 0x89, 0xb7, 0x71, 0xe0, 0xa0, 0x86, 0x65, 0x13, 0x03, 0xce, 0xa2, 0x44, 0xef, + 0x86, 0xd2, 0x56, 0xb4, 0x21, 0x59, 0x7f, 0x36, 0x42, 0x66, 0x39, 0x2d, 0xc2, 0x7a, 0x3d, 0xfa, + 0x69, 0xb6, 0xa2, 0x0d, 0x7a, 0xda, 0xca, 0xfc, 0x0e, 0xea, 0xd3, 0x2c, 0x0b, 0x38, 0x56, 0x35, + 0x50, 0x1b, 0xd0, 0x96, 0x9c, 0x3d, 0x15, 0x3c, 0x22, 0x4e, 0xa8, 0xfe, 0x63, 0x4f, 0x58, 0xd4, + 0xfe, 0x72, 0x17, 0x1e, 0x9c, 0x83, 0x1b, 0xbd, 0x00, 0x67, 0xb6, 0xa2, 0x0d, 0x21, 0x84, 0xac, + 0x45, 0x7e, 0x50, 0xf5, 0xdb, 0x46, 0x2e, 0x87, 0x69, 0xd1, 0xdd, 0x33, 0xcb, 0xf9, 0xd5, 0x70, + 0xaf, 0xf6, 0xee, 0xef, 0x0c, 0x02, 0xbb, 0x85, 0x4a, 0x79, 0x6c, 0x8b, 0x24, 0x8d, 0xb0, 0x96, + 0x95, 0xab, 0x56, 0x18, 0x14, 0x8b, 0x52, 0x19, 0x9b, 0x5a, 0xe8, 0x11, 0x9b, 0x7a, 0x13, 0x86, + 0x1b, 0xc4, 0xab, 0x91, 0x48, 0x5a, 0x26, 0xaf, 0xd8, 0xb9, 0x37, 0x7b, 0x89, 0x21, 0x4d, 0xd5, + 0x7b, 0xfe, 0x3b, 0xc6, 0x92, 0x1a, 0xfa, 0x05, 0x98, 0xa0, 0x02, 0x52, 0xd8, 0x49, 0xa4, 0xeb, + 0x80, 0x5b, 0x26, 0xd9, 0x49, 0xbd, 0x6e, 0x94, 0xe0, 0x4c, 0x4d, 0xb4, 0x00, 0x93, 0xc2, 0xcc, + 0xaf, 0x2c, 0x9e, 0x62, 0x62, 0x55, 0x92, 0x8d, 0x4a, 0xa6, 0x1c, 0x77, 0xb5, 0x60, 0xb1, 0x85, + 0x61, 0x8d, 0x7b, 0x7a, 0xf5, 0xd8, 0xc2, 0xb0, 0xb6, 0x83, 0x59, 0x09, 0x7a, 0x15, 0x46, 0xe8, + 0xdf, 0xc5, 0x28, 0x6c, 0x09, 0x9b, 0xcf, 0x9a, 0x9d, 0xd9, 0xa1, 0x34, 0x84, 0x06, 0xca, 0x04, + 0xc7, 0x39, 0x41, 0x05, 0x2b, 0x7a, 0x54, 0x0f, 0x92, 0xe7, 0x7b, 0x65, 0xcb, 0x6f, 0x5f, 0x27, + 0x91, 0xbf, 0xb9, 0xc3, 0x84, 0x91, 0x91, 0x54, 0x0f, 0xba, 0xdc, 0x55, 0x03, 0xe7, 0xb4, 0x72, + 0x3f, 0x57, 0x80, 0x31, 0xfd, 0x32, 0xf3, 0xdd, 0x02, 0x96, 0xe3, 0x74, 0x51, 0x70, 0xad, 0xf7, + 0x92, 0x85, 0x61, 0xdf, 0x6d, 0x41, 0x34, 0x60, 0xd0, 0xeb, 0x08, 0x29, 0xd4, 0x8a, 0x71, 0x8d, + 0x8d, 0xb8, 0x93, 0x34, 0xf8, 0xad, 0x37, 0x16, 0x4a, 0xcc, 0x28, 0xb8, 0x9f, 0x1c, 0x80, 0x11, + 0x59, 0x88, 0x3e, 0xe1, 0x00, 0xa4, 0x21, 0x5d, 0x82, 0x95, 0xae, 0xd9, 0x88, 0xf7, 0xd1, 0xa3, + 0xd1, 0x34, 0x1b, 0xbd, 0x82, 0x63, 0x8d, 0x2e, 0x4a, 0x60, 0x28, 0xa4, 0x9d, 0xbb, 0x60, 0xef, + 0x42, 0xfe, 0x2a, 0x25, 0x7c, 0x81, 0x51, 0x4f, 0xcd, 0x71, 0x0c, 0x86, 0x05, 0x2d, 0xaa, 0x59, + 0x6e, 0xc8, 0x48, 0x43, 0x7b, 0xa6, 0x6b, 0x15, 0xbc, 0x98, 0x2a, 0x8a, 0x0a, 0x84, 0x53, 0x82, + 0xee, 0xd3, 0x30, 0x61, 0x6e, 0x06, 0xaa, 0x69, 0x6c, 0xec, 0x24, 0x84, 0xdb, 0x31, 0xc6, 0xb8, + 0xa6, 0x31, 0x47, 0x01, 0x98, 0xc3, 0xdd, 0xef, 0x39, 0x00, 0x29, 0x7b, 0xe9, 0xc3, 0x75, 0xf0, + 0xa8, 0x6e, 0x84, 0xeb, 0xa5, 0xce, 0x7d, 0x14, 0x46, 0xd9, 0x3f, 0x6c, 0xa3, 0x0f, 0xd8, 0x8a, + 0x0b, 0x48, 0xfb, 0x29, 0xb6, 0x3a, 0x93, 0x35, 0xae, 0x4b, 0x42, 0x38, 0xa5, 0xe9, 0x86, 0x30, + 0x99, 0xad, 0x8d, 0x3e, 0x00, 0x63, 0xb1, 0x3c, 0x56, 0xd3, 0xab, 0x79, 0x7d, 0x1e, 0xbf, 0xdc, + 0x2b, 0xa7, 0x35, 0xc7, 0x06, 0x32, 0x77, 0x15, 0x86, 0xac, 0x4e, 0xa1, 0xfb, 0x2d, 0x07, 0x46, + 0x99, 0x63, 0xb4, 0x1e, 0x79, 0xad, 0xb4, 0xc9, 0xc0, 0x1e, 0xb3, 0x1e, 0xc3, 0x30, 0xd7, 0xfd, + 0x65, 0x40, 0x91, 0x05, 0x2e, 0xc3, 0xf3, 0xe8, 0xa5, 0x5c, 0x86, 0x1b, 0x19, 0x62, 0x2c, 0x29, + 0xb9, 0x9f, 0x2a, 0xc0, 0xd0, 0xe5, 0xa0, 0xdd, 0xf9, 0x4b, 0x9f, 0xcb, 0x6d, 0x05, 0x06, 0x2f, + 0x27, 0xa4, 0x65, 0xa6, 0x1c, 0x1c, 0x9b, 0x7b, 0x4c, 0x4f, 0x37, 0x58, 0x36, 0xd3, 0x0d, 0x62, + 0xef, 0xa6, 0x8c, 0xb7, 0x13, 0xb6, 0xe7, 0xf4, 0x7a, 0xe2, 0x53, 0x30, 0x7a, 0xc5, 0xdb, 0x20, + 0xcd, 0x65, 0xb2, 0xc3, 0x2e, 0x13, 0xf2, 0xd8, 0x0f, 0x27, 0x35, 0x18, 0x18, 0x71, 0x1a, 0x0b, + 0x30, 0xc1, 0x6a, 0xab, 0xcd, 0x40, 0x35, 0x12, 0x92, 0xe6, 0x6b, 0x72, 0x4c, 0x8d, 0x44, 0xcb, + 0xd5, 0xa4, 0xd5, 0x72, 0x67, 0xa0, 0x94, 0x62, 0xe9, 0x83, 0xea, 0x4f, 0x0a, 0x30, 0x6e, 0x98, + 0xd0, 0x0d, 0xc7, 0xa2, 0x73, 0x57, 0xc7, 0xa2, 0xe1, 0xe8, 0x2b, 0xdc, 0x6f, 0x47, 0xdf, 0xc0, + 0xd1, 0x3b, 0xfa, 0xcc, 0x8f, 0x34, 0xd8, 0xd7, 0x47, 0x6a, 0xc2, 0xe0, 0x15, 0x3f, 0xd8, 0xea, + 0x8f, 0xcf, 0xc4, 0xd5, 0xb0, 0xdd, 0xc5, 0x67, 0x2a, 0x14, 0x88, 0x79, 0x99, 0x94, 0x5c, 0x06, + 0xf2, 0x25, 0x17, 0xf7, 0x13, 0x0e, 0x8c, 0xad, 0x78, 0x81, 0xbf, 0x49, 0xe2, 0x84, 0xad, 0xab, + 0xe4, 0x50, 0x2f, 0x95, 0x8d, 0xf5, 0x48, 0x8f, 0xf0, 0xa6, 0x03, 0xc7, 0x57, 0x48, 0x2b, 0xf4, + 0x5f, 0xf5, 0xd2, 0x70, 0x56, 0xda, 0xf7, 0x86, 0x9f, 0x88, 0xe8, 0x3d, 0xd5, 0xf7, 0x4b, 0x7e, + 0x82, 0x29, 0xfc, 0x2e, 0xf6, 0x61, 0x76, 0x5d, 0x83, 0x2a, 0x68, 0xda, 0x45, 0xc7, 0x34, 0x50, + 0x55, 0x16, 0xe0, 0xb4, 0x8e, 0xfb, 0xbb, 0x0e, 0x0c, 0xf3, 0x4e, 0xa8, 0x08, 0x60, 0xa7, 0x07, + 0xee, 0x06, 0x14, 0x59, 0x3b, 0xb1, 0xaa, 0x97, 0x2c, 0x88, 0x3f, 0x14, 0x1d, 0xdf, 0x83, 0xec, + 0x5f, 0xcc, 0x09, 0x30, 0xb5, 0xc5, 0xbb, 0x35, 0xab, 0x22, 0x79, 0x53, 0xb5, 0x85, 0x41, 0xb1, + 0x28, 0x75, 0xbf, 0x36, 0x00, 0x23, 0x2a, 0x2b, 0x18, 0xcb, 0xd9, 0x10, 0x04, 0x61, 0xe2, 0xf1, + 0x18, 0x0a, 0xce, 0xab, 0x3f, 0x60, 0x2f, 0x2b, 0xd9, 0xcc, 0x6c, 0x8a, 0x9d, 0xfb, 0x05, 0x95, + 0x12, 0xaa, 0x95, 0x60, 0xbd, 0x13, 0xe8, 0x23, 0x30, 0xd4, 0xa4, 0xdc, 0x47, 0xb2, 0xee, 0xeb, + 0x16, 0xbb, 0xc3, 0xd8, 0x9a, 0xe8, 0x89, 0x9a, 0x21, 0x0e, 0xc4, 0x82, 0xea, 0xd4, 0x7b, 0x61, + 0x32, 0xdb, 0xeb, 0xbb, 0xdd, 0xc3, 0x1c, 0xd5, 0x6f, 0x71, 0xfe, 0x75, 0xc1, 0x3d, 0xf7, 0xdf, + 0xd4, 0x7d, 0x1e, 0x4a, 0x2b, 0x24, 0x89, 0xfc, 0x2a, 0x43, 0x70, 0xb7, 0xc5, 0xd5, 0x97, 0xfc, + 0xf0, 0x69, 0xb6, 0x58, 0x29, 0xce, 0x18, 0xbd, 0x0e, 0xd0, 0x8e, 0x42, 0xaa, 0xbf, 0x92, 0x8e, + 0xfc, 0xd8, 0x16, 0xe4, 0xe1, 0x35, 0x85, 0x93, 0xbb, 0xb2, 0xd3, 0xdf, 0x58, 0xa3, 0xe7, 0xbe, + 0x08, 0xc5, 0x95, 0x4e, 0x42, 0x6e, 0xf5, 0xc1, 0xb1, 0xf6, 0x9b, 0x98, 0xc0, 0xfd, 0x00, 0x8c, + 0x31, 0xdc, 0x97, 0xc2, 0x26, 0x3d, 0x56, 0xe9, 0xd4, 0xb4, 0xe8, 0xef, 0xac, 0xb3, 0x81, 0x55, + 0xc2, 0xbc, 0x8c, 0x6e, 0x99, 0x46, 0xd8, 0xac, 0xa9, 0x4b, 0x5a, 0x6a, 0x41, 0x5c, 0x62, 0x50, + 0x2c, 0x4a, 0xdd, 0x8f, 0x17, 0xa0, 0xc4, 0x1a, 0x0a, 0x76, 0xb3, 0x03, 0xc3, 0x0d, 0x4e, 0x47, + 0xcc, 0xa1, 0x85, 0xd0, 0x2f, 0xbd, 0xf7, 0x9a, 0x2e, 0xc7, 0x01, 0x58, 0xd2, 0xa3, 0xa4, 0x6f, + 0x7a, 0x7e, 0x42, 0x49, 0x17, 0x0e, 0x97, 0xf4, 0x0d, 0x4e, 0x06, 0x4b, 0x7a, 0xee, 0x2f, 0x01, + 0xbb, 0xfc, 0xbc, 0xd8, 0xf4, 0xea, 0x7c, 0xe6, 0xc2, 0x2d, 0x52, 0x13, 0x3c, 0x57, 0x9b, 0x39, + 0x0a, 0xc5, 0xa2, 0x94, 0x5f, 0x28, 0x4d, 0x22, 0x5f, 0x05, 0x4d, 0x6b, 0x17, 0x4a, 0x19, 0x58, + 0x86, 0xc8, 0xd7, 0xdc, 0x2f, 0x15, 0x00, 0x58, 0x0e, 0x39, 0x7e, 0x67, 0xf9, 0xe7, 0x65, 0x04, + 0x94, 0xe9, 0xa0, 0x54, 0x11, 0x50, 0xec, 0x56, 0xb6, 0x1e, 0xf9, 0xa4, 0xdf, 0x65, 0x28, 0xec, + 0x7d, 0x97, 0x01, 0xb5, 0x61, 0x38, 0xec, 0x24, 0x54, 0x56, 0x15, 0x87, 0xbd, 0x05, 0xff, 0xfc, + 0x2a, 0x47, 0xc8, 0x2f, 0x00, 0x88, 0x1f, 0x58, 0x92, 0x41, 0xcf, 0xc2, 0x48, 0x3b, 0x0a, 0xeb, + 0xf4, 0xec, 0x16, 0xc7, 0xfb, 0x43, 0x52, 0x1e, 0x5a, 0x13, 0xf0, 0x3b, 0xda, 0xff, 0x58, 0xd5, + 0x76, 0xff, 0x68, 0x92, 0xcf, 0x8b, 0x58, 0x7b, 0x53, 0x50, 0xf0, 0xa5, 0x65, 0x0a, 0x04, 0x8a, + 0xc2, 0xe5, 0x05, 0x5c, 0xf0, 0x6b, 0x6a, 0x5f, 0x15, 0x7a, 0xee, 0xab, 0x77, 0x43, 0xa9, 0xe6, + 0xc7, 0xed, 0xa6, 0xb7, 0x73, 0x35, 0xc7, 0x2c, 0xb8, 0x90, 0x16, 0x61, 0xbd, 0x1e, 0x7a, 0x4a, + 0xdc, 0x5c, 0x19, 0x34, 0x4c, 0x41, 0xf2, 0xe6, 0x4a, 0x7a, 0x27, 0x9e, 0x5f, 0x5a, 0xc9, 0xe6, + 0x0e, 0x28, 0xf6, 0x9d, 0x3b, 0x20, 0x2b, 0x89, 0x0d, 0x1d, 0xbd, 0x24, 0xf6, 0x1e, 0x18, 0x97, + 0x3f, 0x99, 0x78, 0x54, 0x3e, 0xc9, 0x7a, 0xaf, 0xcc, 0xe0, 0xeb, 0x7a, 0x21, 0x36, 0xeb, 0xa6, + 0x8b, 0x76, 0xb8, 0xdf, 0x45, 0x7b, 0x01, 0x60, 0x23, 0xec, 0x04, 0x35, 0x2f, 0xda, 0xb9, 0xbc, + 0x20, 0xe2, 0x5c, 0x95, 0xe0, 0x37, 0xa7, 0x4a, 0xb0, 0x56, 0x4b, 0x5f, 0xe8, 0xa3, 0x77, 0x59, + 0xe8, 0x1f, 0x80, 0x51, 0x16, 0x13, 0x4c, 0x6a, 0xb3, 0x89, 0x08, 0x5d, 0xda, 0x4f, 0x28, 0x66, + 0x1a, 0xcc, 0x28, 0x91, 0xe0, 0x14, 0x1f, 0xfa, 0x20, 0xc0, 0xa6, 0x1f, 0xf8, 0x71, 0x83, 0x61, + 0x2f, 0xed, 0x1b, 0xbb, 0x1a, 0xe7, 0xa2, 0xc2, 0x82, 0x35, 0x8c, 0xe8, 0x25, 0x38, 0x4e, 0xe2, + 0xc4, 0x6f, 0x79, 0x09, 0xa9, 0xa9, 0xbb, 0x9e, 0x65, 0x66, 0xcb, 0x54, 0x51, 0xd9, 0x17, 0xb3, + 0x15, 0xee, 0xe4, 0x01, 0x71, 0x37, 0x22, 0x63, 0x47, 0x4e, 0xed, 0x67, 0x47, 0xa2, 0x3f, 0x73, + 0xe0, 0x78, 0x44, 0x78, 0x3c, 0x4b, 0xac, 0x3a, 0x76, 0x8a, 0xb1, 0xe3, 0xaa, 0x8d, 0xf4, 0xec, + 0x2a, 0x0f, 0x0b, 0xce, 0x52, 0xe1, 0x82, 0x0b, 0x91, 0xa3, 0xef, 0x2a, 0xbf, 0x93, 0x07, 0x7c, + 0xf3, 0xed, 0xe9, 0xe9, 0xee, 0x67, 0x02, 0x14, 0x72, 0xba, 0xf3, 0xfe, 0xf6, 0xdb, 0xd3, 0x93, + 0xf2, 0x77, 0x3a, 0x69, 0x5d, 0x83, 0xa4, 0xc7, 0x6a, 0x3b, 0xac, 0x5d, 0x5e, 0x13, 0x31, 0x66, + 0xea, 0x58, 0x5d, 0xa3, 0x40, 0xcc, 0xcb, 0xd0, 0x13, 0x30, 0x52, 0xf3, 0x48, 0x2b, 0x0c, 0x54, + 0xa2, 0x5d, 0x26, 0xcd, 0x2f, 0x08, 0x18, 0x56, 0xa5, 0x54, 0x87, 0x08, 0xc4, 0x91, 0x52, 0x3e, + 0x6b, 0x4b, 0x87, 0x90, 0x87, 0x14, 0xa7, 0x2a, 0x7f, 0x61, 0x45, 0x09, 0x35, 0x61, 0xc8, 0x67, + 0x86, 0x0a, 0x11, 0xc6, 0x6a, 0xc1, 0x3a, 0xc2, 0x0d, 0x1f, 0x32, 0x88, 0x95, 0xb1, 0x7e, 0x41, + 0x43, 0x3f, 0x6b, 0x8e, 0x1d, 0xcd, 0x59, 0xf3, 0x04, 0x8c, 0x54, 0x1b, 0x7e, 0xb3, 0x16, 0x91, + 0xa0, 0x3c, 0xc9, 0x34, 0x76, 0x36, 0x13, 0xf3, 0x02, 0x86, 0x55, 0x29, 0xfa, 0x6b, 0x30, 0x1e, + 0x76, 0x12, 0xc6, 0x5a, 0xe8, 0x3c, 0xc5, 0xe5, 0xe3, 0xac, 0x3a, 0x0b, 0x4a, 0x5a, 0xd5, 0x0b, + 0xb0, 0x59, 0x8f, 0xb2, 0xf8, 0x46, 0x18, 0xb3, 0x94, 0x41, 0x8c, 0xc5, 0x9f, 0x36, 0x59, 0xfc, + 0x25, 0xad, 0x0c, 0x1b, 0x35, 0xd1, 0x57, 0x1c, 0x38, 0xde, 0xca, 0x2a, 0x70, 0xe5, 0x33, 0x6c, + 0x66, 0x2a, 0x36, 0x04, 0xfd, 0x0c, 0x6a, 0x1e, 0x4e, 0xde, 0x05, 0xc6, 0xdd, 0x9d, 0x60, 0xc9, + 0xbb, 0xe2, 0x9d, 0xa0, 0xda, 0x88, 0xc2, 0xc0, 0xec, 0xde, 0x83, 0xb6, 0xae, 0xac, 0xb1, 0xbd, + 0x9d, 0x47, 0x62, 0xee, 0xc1, 0xdb, 0xbb, 0xd3, 0xa7, 0x72, 0x8b, 0x70, 0x7e, 0xa7, 0xa6, 0x16, + 0xe0, 0x74, 0x3e, 0x7f, 0xb8, 0x9b, 0xc6, 0x31, 0xa0, 0x6b, 0x1c, 0x8b, 0xf0, 0x60, 0xcf, 0x4e, + 0xd1, 0x93, 0x46, 0x4a, 0x9b, 0x8e, 0x79, 0xd2, 0x74, 0x49, 0x87, 0x13, 0x30, 0xa6, 0xbf, 0x2b, + 0xe1, 0xfe, 0xdf, 0x01, 0x80, 0xd4, 0x4e, 0x8e, 0x3c, 0x98, 0xe0, 0x36, 0xf9, 0xcb, 0x0b, 0x07, + 0xbe, 0x6c, 0x3f, 0x6f, 0x20, 0xc0, 0x19, 0x84, 0xa8, 0x05, 0x88, 0x43, 0xf8, 0xef, 0x83, 0xf8, + 0x56, 0x99, 0x2b, 0x72, 0xbe, 0x0b, 0x09, 0xce, 0x41, 0x4c, 0x47, 0x94, 0x84, 0x5b, 0x24, 0xb8, + 0x86, 0xaf, 0x1c, 0x24, 0x63, 0x03, 0xf7, 0xc6, 0x19, 0x08, 0x70, 0x06, 0x21, 0x72, 0x61, 0x88, + 0xd9, 0x66, 0x64, 0xe0, 0x37, 0x63, 0x2f, 0x4c, 0xd2, 0x88, 0xb1, 0x28, 0x41, 0x5f, 0x72, 0x60, + 0x42, 0x26, 0x9e, 0x60, 0xd6, 0x50, 0x19, 0xf2, 0x7d, 0xcd, 0x96, 0x9f, 0xe3, 0xa2, 0x8e, 0x3d, + 0x0d, 0xa8, 0x34, 0xc0, 0x31, 0xce, 0x74, 0xc2, 0x7d, 0x01, 0x4e, 0xe4, 0x34, 0xb7, 0xa2, 0xd1, + 0x7e, 0xdb, 0x81, 0x92, 0x96, 0x0f, 0x11, 0xbd, 0x0e, 0xa3, 0x61, 0xc5, 0x7a, 0x14, 0xdf, 0x6a, + 0xa5, 0x2b, 0x8a, 0x4f, 0x81, 0x70, 0x4a, 0xb0, 0x9f, 0xe0, 0xc3, 0xdc, 0xe4, 0x8d, 0xf7, 0xb9, + 0xdb, 0xfb, 0x0e, 0x3e, 0xfc, 0x95, 0x22, 0xa4, 0x98, 0xf6, 0x99, 0x10, 0x25, 0x0d, 0x55, 0x2c, + 0xec, 0x19, 0xaa, 0x58, 0x83, 0x63, 0x1e, 0xf3, 0x25, 0x1f, 0x30, 0x0d, 0x0a, 0x4f, 0x87, 0x6b, + 0x62, 0xc0, 0x59, 0x94, 0x94, 0x4a, 0x9c, 0x36, 0x65, 0x54, 0x06, 0xf7, 0x4d, 0xa5, 0x62, 0x62, + 0xc0, 0x59, 0x94, 0xe8, 0x25, 0x28, 0x57, 0xd9, 0xb5, 0x5e, 0x3e, 0xc6, 0xcb, 0x9b, 0x57, 0xc3, + 0x64, 0x2d, 0x22, 0x31, 0x09, 0x12, 0x91, 0xf0, 0xec, 0x11, 0x31, 0x0b, 0xe5, 0xf9, 0x1e, 0xf5, + 0x70, 0x4f, 0x0c, 0x54, 0x4d, 0x61, 0xce, 0x68, 0x3f, 0xd9, 0x61, 0x4c, 0x44, 0x78, 0xe9, 0x95, + 0x9a, 0x52, 0xd1, 0x0b, 0xb1, 0x59, 0x17, 0xfd, 0xb2, 0x03, 0xe3, 0x4d, 0x69, 0xae, 0xc7, 0x9d, + 0xa6, 0xcc, 0xde, 0x89, 0xad, 0x2c, 0xbf, 0x2b, 0x3a, 0x66, 0x2e, 0x4b, 0x18, 0x20, 0x6c, 0xd2, + 0xce, 0xe6, 0xa4, 0x19, 0xe9, 0x33, 0x27, 0xcd, 0xf7, 0x1c, 0x98, 0xcc, 0x52, 0x43, 0x5b, 0xf0, + 0x70, 0xcb, 0x8b, 0xb6, 0x2e, 0x07, 0x9b, 0x11, 0xbb, 0xe0, 0x91, 0xf0, 0xc5, 0x30, 0xbb, 0x99, + 0x90, 0x68, 0xc1, 0xdb, 0xe1, 0xee, 0xcf, 0xa2, 0x7a, 0xfe, 0xe9, 0xe1, 0x95, 0xbd, 0x2a, 0xe3, + 0xbd, 0x71, 0xa1, 0x0a, 0x9c, 0xa2, 0x15, 0x58, 0xca, 0x3a, 0x3f, 0x0c, 0x52, 0x22, 0x05, 0x46, + 0x44, 0x05, 0x19, 0xae, 0xe4, 0x55, 0xc2, 0xf9, 0x6d, 0xdd, 0x8b, 0x30, 0xc4, 0xef, 0xdb, 0xdd, + 0x93, 0xff, 0xc8, 0xfd, 0xf7, 0x05, 0x90, 0x82, 0xe1, 0x5f, 0x6e, 0x77, 0x1c, 0x3d, 0x44, 0x23, + 0x66, 0x52, 0x12, 0xd6, 0x0e, 0x76, 0x88, 0x8a, 0xe4, 0x90, 0xa2, 0x84, 0x4a, 0xcc, 0xe4, 0x96, + 0x9f, 0xcc, 0x87, 0x35, 0x69, 0xe3, 0x60, 0x12, 0xf3, 0x45, 0x01, 0xc3, 0xaa, 0xd4, 0xfd, 0x84, + 0x03, 0xe3, 0x74, 0x94, 0xcd, 0x26, 0x69, 0x56, 0x12, 0xd2, 0x8e, 0x51, 0x0c, 0xc5, 0x98, 0xfe, + 0x63, 0xcf, 0x14, 0x98, 0xde, 0xd1, 0x24, 0x6d, 0xcd, 0x59, 0x43, 0x89, 0x60, 0x4e, 0xcb, 0x7d, + 0x6b, 0x00, 0x46, 0xd5, 0x64, 0xf7, 0x61, 0x4f, 0xbd, 0x90, 0xe6, 0x6d, 0xe5, 0x1c, 0xb8, 0xac, + 0xe5, 0x6c, 0xbd, 0x43, 0xa7, 0x2e, 0xd8, 0xe1, 0x09, 0x2c, 0xd2, 0x04, 0xae, 0x4f, 0x99, 0xae, + 0xe6, 0xd3, 0xfa, 0xfa, 0xd3, 0xea, 0x0b, 0x9f, 0xf3, 0x2d, 0xdd, 0xd3, 0x3f, 0x68, 0xeb, 0x34, + 0x53, 0x6e, 0xcc, 0xde, 0x2e, 0xfe, 0xcc, 0x93, 0x3e, 0xc5, 0xbe, 0x9e, 0xf4, 0x79, 0x12, 0x06, + 0x49, 0xd0, 0x69, 0x31, 0x51, 0x69, 0x94, 0xa9, 0x08, 0x83, 0x17, 0x83, 0x4e, 0xcb, 0x1c, 0x19, + 0xab, 0x82, 0xde, 0x0b, 0xa5, 0x1a, 0x89, 0xab, 0x91, 0xcf, 0xb2, 0x32, 0x08, 0xcb, 0xce, 0x43, + 0xcc, 0x5c, 0x96, 0x82, 0xcd, 0x86, 0x7a, 0x03, 0xf7, 0x55, 0x18, 0x5a, 0x6b, 0x76, 0xea, 0x7e, + 0x80, 0xda, 0x30, 0xc4, 0x73, 0x34, 0x88, 0xd3, 0xde, 0x82, 0xde, 0xc9, 0x59, 0x85, 0x16, 0x85, + 0xc2, 0xaf, 0xea, 0x0a, 0x3a, 0xee, 0xc7, 0x0b, 0x40, 0x55, 0xf3, 0xa5, 0x79, 0xf4, 0x37, 0xbb, + 0x5e, 0xb0, 0xf9, 0x99, 0x9c, 0x17, 0x6c, 0xc6, 0x59, 0xe5, 0x9c, 0xc7, 0x6b, 0x9a, 0x30, 0xce, + 0x9c, 0x23, 0xf2, 0x0c, 0x14, 0x62, 0xf5, 0x33, 0x7d, 0xa6, 0x35, 0xd0, 0x9b, 0x8a, 0x13, 0x41, + 0x07, 0x61, 0x13, 0x39, 0x5a, 0x81, 0x13, 0x3c, 0xfd, 0xe7, 0x02, 0x69, 0x7a, 0x3b, 0x99, 0x34, + 0x5f, 0x67, 0xe5, 0xa3, 0x64, 0x0b, 0xdd, 0x55, 0x70, 0x5e, 0x3b, 0xf7, 0xf7, 0x06, 0x41, 0x73, + 0x49, 0xf4, 0xb1, 0x5b, 0x5e, 0xc9, 0x38, 0xa0, 0x56, 0xac, 0x38, 0xa0, 0xa4, 0x57, 0x87, 0x73, + 0x20, 0xd3, 0xe7, 0x44, 0x3b, 0xd5, 0x20, 0xcd, 0xb6, 0x18, 0xa3, 0xea, 0xd4, 0x25, 0xd2, 0x6c, + 0x63, 0x56, 0xa2, 0x2e, 0x2a, 0x0e, 0xf6, 0xbc, 0xa8, 0xd8, 0x80, 0x62, 0xdd, 0xeb, 0xd4, 0x89, + 0x88, 0xc0, 0xb4, 0xe0, 0x6b, 0x64, 0x57, 0x27, 0xb8, 0xaf, 0x91, 0xfd, 0x8b, 0x39, 0x01, 0xba, + 0xd9, 0x1b, 0x32, 0x24, 0x45, 0x18, 0x69, 0x2d, 0x6c, 0x76, 0x15, 0xe5, 0xc2, 0x37, 0xbb, 0xfa, + 0x89, 0x53, 0x62, 0xa8, 0x0d, 0xc3, 0x55, 0x9e, 0x5c, 0x45, 0xc8, 0x2c, 0x97, 0x6d, 0xdc, 0xc4, + 0x64, 0x08, 0xb9, 0x35, 0x45, 0xfc, 0xc0, 0x92, 0x8c, 0x7b, 0x1e, 0x4a, 0xda, 0x43, 0x1a, 0xf4, + 0x33, 0xa8, 0xbc, 0x1e, 0xda, 0x67, 0x58, 0xf0, 0x12, 0x0f, 0xb3, 0x12, 0xf7, 0x1b, 0x83, 0xa0, + 0x6c, 0x69, 0xfa, 0xbd, 0x41, 0xaf, 0xaa, 0x65, 0x21, 0x32, 0xee, 0xd0, 0x87, 0x01, 0x16, 0xa5, + 0x54, 0xae, 0x6b, 0x91, 0xa8, 0xae, 0xf4, 0x68, 0xc1, 0xae, 0x95, 0x5c, 0xb7, 0xa2, 0x17, 0x62, + 0xb3, 0x2e, 0x15, 0xca, 0x5b, 0xc2, 0x45, 0x9f, 0x0d, 0xac, 0x96, 0xae, 0x7b, 0xac, 0x6a, 0xb0, + 0x34, 0x06, 0x2d, 0xcd, 0xa3, 0x2f, 0x02, 0x31, 0x6d, 0x38, 0x94, 0x34, 0xac, 0x3c, 0x60, 0x4a, + 0x87, 0x60, 0x83, 0x2a, 0x5a, 0x82, 0xe3, 0x31, 0x49, 0x56, 0x6f, 0x06, 0x24, 0x52, 0x29, 0x06, + 0x44, 0x9e, 0x0c, 0x75, 0xab, 0xa2, 0x92, 0xad, 0x80, 0xbb, 0xdb, 0xe4, 0xc6, 0xae, 0x16, 0xf7, + 0x1d, 0xbb, 0xba, 0x00, 0x93, 0x9b, 0x9e, 0xdf, 0xec, 0x44, 0xa4, 0x67, 0x04, 0xec, 0x62, 0xa6, + 0x1c, 0x77, 0xb5, 0x60, 0x17, 0x7b, 0x9a, 0x5e, 0x3d, 0x2e, 0x0f, 0x6b, 0x17, 0x7b, 0x28, 0x00, + 0x73, 0xb8, 0xfb, 0x9b, 0x0e, 0xf0, 0x04, 0x45, 0xb3, 0x9b, 0x9b, 0x7e, 0xe0, 0x27, 0x3b, 0xe8, + 0xab, 0x0e, 0x4c, 0x06, 0x61, 0x8d, 0xcc, 0x06, 0x89, 0x2f, 0x81, 0xf6, 0xb2, 0xc6, 0x33, 0x5a, + 0x57, 0x33, 0xe8, 0x79, 0xb6, 0x8b, 0x2c, 0x14, 0x77, 0x75, 0xc3, 0x3d, 0x03, 0xa7, 0x72, 0x11, + 0xb8, 0xdf, 0x1b, 0x00, 0x33, 0xcf, 0x12, 0x7a, 0x1e, 0x8a, 0x4d, 0x96, 0xf9, 0xc3, 0x39, 0x60, + 0x02, 0x2d, 0x36, 0x57, 0x3c, 0x35, 0x08, 0xc7, 0x84, 0x16, 0xa0, 0xc4, 0x92, 0x37, 0x89, 0xbc, + 0x2c, 0x05, 0x23, 0x25, 0x42, 0x09, 0xa7, 0x45, 0x77, 0xcc, 0x9f, 0x58, 0x6f, 0x86, 0x5e, 0x83, + 0xe1, 0x0d, 0x9e, 0xc2, 0xd2, 0x9e, 0xcf, 0x4f, 0xe4, 0xc4, 0x64, 0xb2, 0x91, 0x4c, 0x90, 0x79, + 0x27, 0xfd, 0x17, 0x4b, 0x8a, 0x68, 0x07, 0x46, 0x3c, 0xf9, 0x4d, 0x07, 0x6d, 0x5d, 0xd4, 0x30, + 0xd6, 0x8f, 0x88, 0x98, 0x91, 0xdf, 0x50, 0x91, 0xcb, 0x84, 0x16, 0x15, 0xfb, 0x0a, 0x2d, 0xfa, + 0x96, 0x03, 0x90, 0xbe, 0xf7, 0x81, 0x6e, 0xc1, 0x48, 0xfc, 0x8c, 0x61, 0xa8, 0xb0, 0x71, 0x43, + 0x5f, 0x60, 0xd4, 0x6e, 0xb1, 0x0a, 0x08, 0x56, 0xd4, 0xee, 0x66, 0x5c, 0xf9, 0x89, 0x03, 0x27, + 0xf3, 0xde, 0x25, 0xb9, 0x8f, 0x3d, 0xde, 0xaf, 0x5d, 0x45, 0x34, 0x58, 0x8b, 0xc8, 0xa6, 0x7f, + 0x2b, 0x27, 0x91, 0x32, 0x2f, 0xc0, 0x69, 0x1d, 0xf7, 0x4f, 0x86, 0x41, 0x11, 0x3e, 0x24, 0x3b, + 0xcc, 0xe3, 0x54, 0x67, 0xaa, 0xa7, 0x32, 0x97, 0xaa, 0x87, 0x19, 0x14, 0x8b, 0x52, 0xaa, 0x37, + 0xc9, 0xa0, 0x78, 0xc1, 0xb2, 0xd9, 0x2a, 0x94, 0xc1, 0xf3, 0x58, 0x95, 0xe6, 0x59, 0x76, 0x8a, + 0x47, 0x62, 0xd9, 0x19, 0xb2, 0x6f, 0xd9, 0x69, 0x01, 0x8a, 0xf9, 0x46, 0x61, 0xe6, 0x14, 0x41, + 0x68, 0x6c, 0xdf, 0x86, 0xe6, 0x4a, 0x17, 0x12, 0x9c, 0x83, 0x98, 0xc5, 0x50, 0x84, 0x4d, 0x32, + 0x8b, 0xaf, 0x0a, 0xe5, 0x23, 0x8d, 0xa1, 0xe0, 0x60, 0x2c, 0xcb, 0x0f, 0x68, 0x4a, 0x41, 0xbf, + 0xed, 0xec, 0x61, 0xab, 0x1a, 0xb5, 0x75, 0x04, 0xe5, 0x26, 0xb9, 0x63, 0x9a, 0xd4, 0x41, 0x0c, + 0x60, 0x5f, 0x73, 0xe0, 0x38, 0x09, 0xaa, 0xd1, 0x0e, 0xc3, 0x23, 0xb0, 0x09, 0x17, 0xf7, 0x35, + 0x1b, 0x7b, 0xfd, 0x62, 0x16, 0x39, 0xf7, 0x24, 0x75, 0x81, 0x71, 0x77, 0x37, 0xd0, 0x2a, 0x8c, + 0x54, 0x3d, 0xb1, 0x2e, 0x4a, 0xfb, 0x59, 0x17, 0xdc, 0x51, 0x37, 0x2b, 0x56, 0x83, 0x42, 0xe2, + 0xfe, 0xa8, 0x00, 0x27, 0x72, 0xba, 0xc4, 0xee, 0x6b, 0xb5, 0xe8, 0x06, 0xb8, 0x5c, 0xcb, 0x6e, + 0xff, 0x65, 0x01, 0xc7, 0xaa, 0x06, 0x5a, 0x83, 0x93, 0x5b, 0xad, 0x38, 0xc5, 0x32, 0x1f, 0x06, + 0x09, 0xb9, 0x25, 0x99, 0x81, 0x74, 0x7f, 0x9f, 0x5c, 0xce, 0xa9, 0x83, 0x73, 0x5b, 0x52, 0x69, + 0x89, 0x04, 0xde, 0x46, 0x93, 0xa4, 0x45, 0xe2, 0x16, 0xa3, 0x92, 0x96, 0x2e, 0x66, 0xca, 0x71, + 0x57, 0x0b, 0xf4, 0x19, 0x07, 0xce, 0xc6, 0x24, 0xda, 0x26, 0x51, 0xc5, 0xaf, 0x91, 0xf9, 0x4e, + 0x9c, 0x84, 0x2d, 0x12, 0x1d, 0xd0, 0x3a, 0x3b, 0x7d, 0x7b, 0x77, 0xfa, 0x6c, 0xa5, 0x37, 0x36, + 0xbc, 0x17, 0x29, 0xf7, 0x33, 0x0e, 0x4c, 0x54, 0x98, 0xee, 0xae, 0x44, 0x77, 0xdb, 0x69, 0x4e, + 0x1f, 0x57, 0x79, 0x37, 0x32, 0x4c, 0xd8, 0xcc, 0x94, 0xe1, 0xbe, 0x0c, 0x93, 0x15, 0xd2, 0xf2, + 0xda, 0x0d, 0x76, 0x05, 0x99, 0x87, 0x7f, 0x9d, 0x87, 0xd1, 0x58, 0xc2, 0xb2, 0x2f, 0x1b, 0xa9, + 0xca, 0x38, 0xad, 0x83, 0x1e, 0xe3, 0xa1, 0x6a, 0xf2, 0xc2, 0xd1, 0x28, 0x57, 0x72, 0x78, 0x7c, + 0x5b, 0x8c, 0x65, 0x99, 0xfb, 0x96, 0x03, 0x63, 0x69, 0x7b, 0xb2, 0x89, 0xea, 0x70, 0xac, 0xaa, + 0x5d, 0xd6, 0x4b, 0xaf, 0x49, 0xf4, 0x7f, 0xaf, 0x8f, 0x67, 0x5f, 0x36, 0x91, 0xe0, 0x2c, 0xd6, + 0xfd, 0x47, 0xfa, 0x7d, 0xbe, 0x00, 0xc7, 0x54, 0x57, 0x85, 0x9f, 0xf2, 0x8d, 0x6c, 0x40, 0x1e, + 0xb6, 0x91, 0x41, 0xc8, 0x9c, 0xfb, 0x3d, 0x82, 0xf2, 0xde, 0xc8, 0x06, 0xe5, 0x1d, 0x2a, 0xf9, + 0x2e, 0xd7, 0xeb, 0xb7, 0x0a, 0x30, 0xa2, 0xf2, 0x19, 0x3d, 0x0f, 0x45, 0xa6, 0xb9, 0xde, 0x9b, + 0xfc, 0xcd, 0xb4, 0x60, 0xcc, 0x31, 0x51, 0x94, 0x2c, 0xe8, 0xe7, 0xc0, 0x39, 0x71, 0x47, 0xb9, + 0xfd, 0xd2, 0x8b, 0x12, 0xcc, 0x31, 0xa1, 0x65, 0x18, 0x20, 0x41, 0x4d, 0x08, 0xe2, 0xfb, 0x47, + 0xc8, 0xde, 0x20, 0xbb, 0x18, 0xd4, 0x30, 0xc5, 0xc2, 0x92, 0xaa, 0x71, 0x79, 0x2b, 0xf3, 0xe2, + 0x8c, 0x10, 0xb6, 0x44, 0xa9, 0xfb, 0x3e, 0x30, 0xd2, 0xe9, 0x89, 0x34, 0xfd, 0x42, 0xc7, 0xeb, + 0x7e, 0x26, 0x4c, 0x28, 0x77, 0x69, 0x1d, 0xf7, 0x97, 0x07, 0x60, 0xa8, 0xd2, 0xd9, 0xa0, 0x3a, + 0xc9, 0x37, 0x1d, 0x38, 0x71, 0x33, 0x93, 0x71, 0x3a, 0xdd, 0x24, 0xd7, 0xec, 0x19, 0x81, 0xf5, + 0xc8, 0x35, 0x65, 0xfa, 0xca, 0x29, 0xc4, 0x79, 0xdd, 0x31, 0x92, 0xbe, 0x0e, 0x1c, 0x4a, 0xd2, + 0xd7, 0x5b, 0x87, 0x7c, 0x75, 0x63, 0xbc, 0xd7, 0xb5, 0x0d, 0xf7, 0xf7, 0x8a, 0x00, 0xfc, 0x6b, + 0xac, 0xb6, 0x93, 0x7e, 0xcc, 0x7a, 0xcf, 0xc2, 0x58, 0x9d, 0x04, 0x24, 0x92, 0x71, 0x89, 0x99, + 0xd7, 0x90, 0x96, 0xb4, 0x32, 0x6c, 0xd4, 0x64, 0x3a, 0x54, 0x90, 0x44, 0x3b, 0x5c, 0xce, 0xce, + 0x5e, 0xcf, 0x50, 0x25, 0x58, 0xab, 0x85, 0x66, 0x0c, 0xaf, 0x0b, 0x77, 0xe0, 0x4f, 0xec, 0xe1, + 0x24, 0x79, 0x2f, 0x4c, 0x98, 0x39, 0x54, 0x84, 0xb4, 0xa7, 0x1c, 0xee, 0x66, 0xea, 0x15, 0x9c, + 0xa9, 0x4d, 0x77, 0x41, 0x2d, 0xda, 0xc1, 0x9d, 0x40, 0x88, 0x7d, 0x6a, 0x17, 0x2c, 0x30, 0x28, + 0x16, 0xa5, 0x2c, 0xf9, 0x04, 0x3b, 0x00, 0x39, 0x5c, 0x24, 0xb0, 0x48, 0x93, 0x4f, 0x68, 0x65, + 0xd8, 0xa8, 0x49, 0x29, 0x08, 0xb3, 0x28, 0x98, 0xfb, 0x2c, 0x63, 0xcb, 0x6c, 0xc3, 0x44, 0x68, + 0x9a, 0x73, 0xb8, 0x0c, 0xf4, 0xae, 0x3e, 0x97, 0x9e, 0xd1, 0x96, 0x07, 0x4a, 0x64, 0xac, 0x3f, + 0x19, 0xfc, 0x54, 0xee, 0xd5, 0x6f, 0x31, 0x8c, 0x99, 0x61, 0xad, 0x3d, 0x2f, 0x1a, 0xac, 0xc1, + 0xc9, 0x76, 0x58, 0x5b, 0x8b, 0xfc, 0x30, 0xf2, 0x93, 0x9d, 0xf9, 0xa6, 0x17, 0xc7, 0x6c, 0x61, + 0x8c, 0x9b, 0xf2, 0xd0, 0x5a, 0x4e, 0x1d, 0x9c, 0xdb, 0x92, 0x2a, 0x44, 0x6d, 0x01, 0x64, 0xc1, + 0x65, 0x45, 0x2e, 0xd1, 0xc9, 0x8a, 0x58, 0x95, 0xba, 0x27, 0xe0, 0x78, 0xa5, 0xd3, 0x6e, 0x37, + 0x7d, 0x52, 0x53, 0x5e, 0x0d, 0xf7, 0x7d, 0x70, 0x4c, 0xa4, 0x84, 0x55, 0xd2, 0xc7, 0xbe, 0x12, + 0x98, 0xbb, 0x7f, 0xe6, 0xc0, 0xb1, 0x4c, 0x28, 0x0f, 0x7a, 0x2d, 0x2b, 0x33, 0xd8, 0x49, 0x55, + 0xaa, 0x49, 0x0b, 0x22, 0xef, 0x68, 0x9e, 0xfc, 0xd1, 0x90, 0x71, 0xf8, 0xd6, 0xee, 0xbf, 0xb0, + 0x68, 0x75, 0x7e, 0xa4, 0xe8, 0xc1, 0xfc, 0xee, 0xa7, 0x0b, 0x90, 0x1f, 0x3f, 0x85, 0x3e, 0xd2, + 0x3d, 0x01, 0xcf, 0x5b, 0x9c, 0x00, 0x11, 0xc0, 0xd5, 0x7b, 0x0e, 0x02, 0x73, 0x0e, 0x56, 0x2c, + 0xcd, 0x81, 0xa0, 0xdb, 0x3d, 0x13, 0xff, 0xcb, 0x81, 0xd2, 0xfa, 0xfa, 0x15, 0x75, 0xce, 0x61, + 0x38, 0x1d, 0xf3, 0xfb, 0xfd, 0xcc, 0xcd, 0x3c, 0x1f, 0xb6, 0xda, 0xdc, 0xeb, 0x2c, 0xbc, 0xe1, + 0x2c, 0x3b, 0x6f, 0x25, 0xb7, 0x06, 0xee, 0xd1, 0x12, 0x5d, 0x86, 0x13, 0x7a, 0x49, 0x45, 0x7b, + 0x0c, 0xb1, 0x28, 0x72, 0xf5, 0x74, 0x17, 0xe3, 0xbc, 0x36, 0x59, 0x54, 0xc2, 0xba, 0xca, 0x8e, + 0xab, 0x1c, 0x54, 0xa2, 0x18, 0xe7, 0xb5, 0x71, 0x57, 0xa1, 0xb4, 0xee, 0x45, 0x6a, 0xe0, 0xef, + 0x87, 0xc9, 0x6a, 0xd8, 0x92, 0x56, 0xad, 0x2b, 0x64, 0x9b, 0x34, 0xc5, 0x90, 0xf9, 0x0b, 0x24, + 0x99, 0x32, 0xdc, 0x55, 0xdb, 0xfd, 0xef, 0xe7, 0x40, 0xdd, 0x57, 0xec, 0xe3, 0x84, 0x69, 0xab, + 0xc8, 0xd2, 0xa2, 0xe5, 0xc8, 0x52, 0xc5, 0x6b, 0x33, 0xd1, 0xa5, 0x49, 0x1a, 0x5d, 0x3a, 0x64, + 0x3b, 0xba, 0x54, 0x49, 0x9c, 0x5d, 0x11, 0xa6, 0x5f, 0x76, 0x60, 0x2c, 0x08, 0x6b, 0x44, 0xb9, + 0x03, 0x87, 0x99, 0xd8, 0xfb, 0x92, 0xbd, 0x40, 0x7d, 0x1e, 0x29, 0x29, 0xd0, 0xf3, 0xa8, 0x67, + 0x75, 0x44, 0xe9, 0x45, 0xd8, 0xe8, 0x07, 0x5a, 0xd4, 0xec, 0xac, 0xdc, 0x9d, 0xf1, 0x50, 0x9e, + 0xbe, 0x72, 0x57, 0xa3, 0xe9, 0x2d, 0x4d, 0x6e, 0x1a, 0xb5, 0x65, 0x3f, 0x94, 0x97, 0xd0, 0x34, + 0xaf, 0x8c, 0x4c, 0x30, 0x9d, 0xca, 0x53, 0x2e, 0x0c, 0xf1, 0xf0, 0x68, 0x91, 0x15, 0x8a, 0x39, + 0x0b, 0x79, 0xe8, 0x34, 0x16, 0x25, 0x28, 0x91, 0x21, 0x07, 0x25, 0x5b, 0xcf, 0x45, 0x18, 0x21, + 0x0d, 0xf9, 0x31, 0x07, 0xe8, 0x39, 0x5d, 0x0f, 0x1e, 0xeb, 0x47, 0x0f, 0x1e, 0xef, 0xa9, 0x03, + 0x7f, 0xce, 0x81, 0xb1, 0xaa, 0xf6, 0x7c, 0x43, 0xf9, 0x09, 0x5b, 0xcf, 0x54, 0xe7, 0xbd, 0xb2, + 0xc1, 0x7d, 0x50, 0xc6, 0x73, 0x11, 0x06, 0x75, 0x96, 0x0a, 0x93, 0x29, 0xfd, 0xec, 0xe8, 0xb7, + 0x92, 0xa5, 0xc2, 0x34, 0x22, 0xc8, 0xd0, 0x4d, 0x0a, 0xc3, 0x82, 0x16, 0x7a, 0x1d, 0x46, 0x64, + 0x84, 0xbd, 0x88, 0x44, 0xc7, 0x36, 0x9c, 0x02, 0xa6, 0xe7, 0x51, 0xe6, 0xcf, 0xe3, 0x50, 0xac, + 0x28, 0xa2, 0x06, 0x0c, 0xd4, 0xbc, 0xba, 0x88, 0x49, 0x5f, 0xb1, 0x93, 0x9f, 0x54, 0xd2, 0x64, + 0xfa, 0xd9, 0xc2, 0xec, 0x12, 0xa6, 0x24, 0xd0, 0xad, 0x34, 0xff, 0xfd, 0xa4, 0xb5, 0xd3, 0xd7, + 0x14, 0x93, 0xb8, 0x59, 0xa3, 0x2b, 0x9d, 0x7e, 0x4d, 0x38, 0x6b, 0xff, 0x0a, 0x23, 0xbb, 0x68, + 0x27, 0xc1, 0x29, 0xcf, 0x7a, 0x92, 0x3a, 0x7c, 0x29, 0x95, 0x46, 0x92, 0xb4, 0xcb, 0x3f, 0x6b, + 0x8b, 0x0a, 0xcb, 0xdd, 0xc1, 0x5f, 0x14, 0x5f, 0x5f, 0x5f, 0xc3, 0x0c, 0x3b, 0x6a, 0xc2, 0x50, + 0x9b, 0xc5, 0x91, 0x94, 0x7f, 0xce, 0xd6, 0xd9, 0xc2, 0xe3, 0x52, 0xf8, 0xda, 0xe4, 0xff, 0x63, + 0x41, 0x03, 0x5d, 0x84, 0x61, 0xfe, 0x8c, 0x0b, 0xbf, 0x13, 0x50, 0xba, 0x30, 0xd5, 0xfb, 0x31, + 0x98, 0xf4, 0xa0, 0xe0, 0xbf, 0x63, 0x2c, 0xdb, 0xa2, 0xcf, 0x3b, 0x30, 0x41, 0x39, 0x6a, 0xfa, + 0xee, 0x4c, 0x19, 0xd9, 0xe2, 0x59, 0xd7, 0x62, 0x2a, 0x91, 0x48, 0x5e, 0xa3, 0xd4, 0xa4, 0xcb, + 0x06, 0x39, 0x9c, 0x21, 0x8f, 0xde, 0x80, 0x91, 0xd8, 0xaf, 0x91, 0xaa, 0x17, 0xc5, 0xe5, 0x13, + 0x87, 0xd3, 0x95, 0xd4, 0x3d, 0x24, 0x08, 0x61, 0x45, 0x12, 0xfd, 0x1a, 0x7b, 0xf8, 0x53, 0x3c, + 0xd2, 0x5f, 0xe5, 0x62, 0xfd, 0x49, 0x5b, 0x7b, 0x5f, 0x3a, 0xc2, 0x24, 0x66, 0xe1, 0x35, 0x31, + 0xc9, 0xe1, 0x2c, 0x7d, 0xf4, 0xb7, 0x1c, 0x38, 0xc5, 0x53, 0xf8, 0x67, 0xdf, 0x9c, 0x38, 0x75, + 0x40, 0xfb, 0x0c, 0xbb, 0xcc, 0x30, 0x9b, 0x87, 0x12, 0xe7, 0x53, 0x62, 0x09, 0x77, 0xcd, 0x67, + 0x82, 0x4e, 0x5b, 0x75, 0x93, 0xf6, 0xff, 0x34, 0x10, 0x7a, 0x1a, 0x4a, 0x6d, 0x71, 0x1c, 0xfa, + 0x71, 0x8b, 0x5d, 0x4d, 0x19, 0xe0, 0x97, 0x06, 0xd7, 0x52, 0x30, 0xd6, 0xeb, 0x18, 0xd9, 0x97, + 0x9f, 0xdc, 0x2b, 0xfb, 0x32, 0xba, 0x06, 0xa5, 0x24, 0x6c, 0x8a, 0x04, 0xa4, 0x71, 0xb9, 0xcc, + 0x56, 0xe0, 0xb9, 0xbc, 0xbd, 0xb5, 0xae, 0xaa, 0xa5, 0x9a, 0x6c, 0x0a, 0x8b, 0xb1, 0x8e, 0x87, + 0x85, 0x03, 0x8b, 0xa7, 0x11, 0x22, 0xa6, 0xc2, 0x3e, 0x98, 0x09, 0x07, 0xd6, 0x0b, 0xb1, 0x59, + 0x17, 0x2d, 0xc1, 0xf1, 0x76, 0x97, 0x0e, 0xcc, 0xaf, 0xc4, 0xa9, 0x08, 0x8c, 0x6e, 0x05, 0xb8, + 0xbb, 0x8d, 0xa1, 0xfd, 0x9e, 0xdd, 0x4b, 0xfb, 0xed, 0x91, 0x8b, 0xf8, 0xa1, 0x83, 0xe4, 0x22, + 0x46, 0x35, 0x78, 0xc8, 0xeb, 0x24, 0x21, 0xcb, 0x4f, 0x63, 0x36, 0xe1, 0x91, 0xd1, 0x8f, 0xf0, + 0x60, 0xeb, 0xdb, 0xbb, 0xd3, 0x0f, 0xcd, 0xee, 0x51, 0x0f, 0xef, 0x89, 0x05, 0xbd, 0x0a, 0x23, + 0x44, 0xe4, 0x53, 0x2e, 0xff, 0x8c, 0x2d, 0x21, 0xc1, 0xcc, 0xd0, 0x2c, 0x83, 0x4e, 0x39, 0x0c, + 0x2b, 0x7a, 0x68, 0x1d, 0x4a, 0x8d, 0x30, 0x4e, 0x66, 0x9b, 0xbe, 0x17, 0x93, 0xb8, 0xfc, 0x30, + 0x5b, 0x34, 0xb9, 0xb2, 0xd7, 0x25, 0x59, 0x2d, 0x5d, 0x33, 0x97, 0xd2, 0x96, 0x58, 0x47, 0x83, + 0x08, 0x73, 0x96, 0xb2, 0xb0, 0x70, 0xe9, 0x08, 0x3a, 0xc7, 0x06, 0xf6, 0x78, 0x1e, 0xe6, 0xb5, + 0xb0, 0x56, 0x31, 0x6b, 0x2b, 0x6f, 0xa9, 0x0e, 0xc4, 0x59, 0x9c, 0xe8, 0x59, 0x18, 0x6b, 0x87, + 0xb5, 0x4a, 0x9b, 0x54, 0xd7, 0xbc, 0xa4, 0xda, 0x28, 0x4f, 0x9b, 0x56, 0xb7, 0x35, 0xad, 0x0c, + 0x1b, 0x35, 0x51, 0x1b, 0x86, 0x5b, 0x3c, 0x71, 0x41, 0xf9, 0x51, 0x5b, 0xba, 0x8d, 0xc8, 0x84, + 0xc0, 0xe5, 0x05, 0xf1, 0x03, 0x4b, 0x32, 0xe8, 0x1f, 0x3a, 0x70, 0x2c, 0x73, 0xd9, 0xaa, 0xfc, + 0x0e, 0x6b, 0x22, 0x8b, 0x89, 0x78, 0xee, 0x71, 0x36, 0x7d, 0x26, 0xf0, 0x4e, 0x37, 0x08, 0x67, + 0x7b, 0xc4, 0xe7, 0x85, 0x65, 0x1f, 0x29, 0x3f, 0x66, 0x6f, 0x5e, 0x18, 0x42, 0x39, 0x2f, 0xec, + 0x07, 0x96, 0x64, 0xd0, 0x93, 0x30, 0x2c, 0x12, 0x05, 0x96, 0x1f, 0x37, 0x5d, 0xd0, 0x22, 0x9f, + 0x20, 0x96, 0xe5, 0x53, 0xef, 0x83, 0xe3, 0x5d, 0xaa, 0xdb, 0xbe, 0x52, 0x60, 0xfc, 0x86, 0x03, + 0xfa, 0xed, 0x6c, 0xeb, 0x8f, 0x98, 0x3c, 0x0b, 0x63, 0x55, 0xfe, 0x62, 0x24, 0xbf, 0xdf, 0x3d, + 0x68, 0xda, 0x3f, 0xe7, 0xb5, 0x32, 0x6c, 0xd4, 0x74, 0x2f, 0x01, 0xea, 0xce, 0x30, 0x7f, 0xa0, + 0xfc, 0x4a, 0xff, 0xd8, 0x81, 0x71, 0x43, 0x66, 0xb0, 0xee, 0x64, 0x5c, 0x04, 0xd4, 0xf2, 0xa3, + 0x28, 0x8c, 0xf4, 0xa7, 0xf9, 0x44, 0x0e, 0x06, 0x16, 0x7c, 0xb0, 0xd2, 0x55, 0x8a, 0x73, 0x5a, + 0xb8, 0xff, 0x74, 0x10, 0xd2, 0xa8, 0x6b, 0x95, 0xc2, 0xd7, 0xe9, 0x99, 0xc2, 0xf7, 0x29, 0x18, + 0x79, 0x39, 0x0e, 0x83, 0xb5, 0x34, 0xd1, 0xaf, 0xfa, 0x16, 0xcf, 0x55, 0x56, 0xaf, 0xb2, 0x9a, + 0xaa, 0x06, 0xab, 0xfd, 0xca, 0xa2, 0xdf, 0x4c, 0xba, 0x33, 0xc1, 0x3e, 0xf7, 0x3c, 0x87, 0x63, + 0x55, 0x83, 0xbd, 0xd2, 0xb7, 0x4d, 0x94, 0x61, 0x3c, 0x7d, 0xa5, 0x8f, 0x3f, 0x1e, 0xc1, 0xca, + 0xd0, 0x79, 0x18, 0x55, 0x46, 0x75, 0x61, 0xa9, 0x57, 0x33, 0xa5, 0x2c, 0xef, 0x38, 0xad, 0xc3, + 0x04, 0x42, 0x61, 0x88, 0x15, 0x26, 0x94, 0x8a, 0x0d, 0xf5, 0x24, 0x63, 0xda, 0xe5, 0xbc, 0x5d, + 0x82, 0xb1, 0x22, 0x99, 0xe7, 0x68, 0x1d, 0x3d, 0x14, 0x47, 0xab, 0x76, 0x05, 0xa0, 0xd8, 0xef, + 0x15, 0x00, 0x73, 0x6d, 0x8f, 0xf4, 0xb5, 0xb6, 0x3f, 0x39, 0x00, 0xc3, 0xd7, 0x49, 0xc4, 0x12, + 0xa0, 0x3f, 0x09, 0xc3, 0xdb, 0xfc, 0xdf, 0xec, 0xfd, 0x51, 0x51, 0x03, 0xcb, 0x72, 0xfa, 0xdd, + 0x36, 0x3a, 0x7e, 0xb3, 0xb6, 0x90, 0xee, 0xe2, 0x34, 0xc7, 0xa1, 0x2c, 0xc0, 0x69, 0x1d, 0xda, + 0xa0, 0x4e, 0x25, 0xfb, 0x56, 0xcb, 0xef, 0x7a, 0x80, 0x7e, 0x49, 0x16, 0xe0, 0xb4, 0x0e, 0x7a, + 0x1c, 0x86, 0xea, 0x7e, 0xb2, 0xee, 0xd5, 0xb3, 0x6e, 0xc2, 0x25, 0x06, 0xc5, 0xa2, 0x94, 0xb9, + 0x89, 0xfc, 0x64, 0x3d, 0x22, 0xcc, 0xb2, 0xdb, 0x95, 0xbe, 0x62, 0x49, 0x2b, 0xc3, 0x46, 0x4d, + 0xd6, 0xa5, 0x50, 0x8c, 0x4c, 0x04, 0x8d, 0xa6, 0x5d, 0x92, 0x05, 0x38, 0xad, 0x43, 0xd7, 0x7f, + 0x35, 0x6c, 0xb5, 0xfd, 0xa6, 0x08, 0x67, 0xd6, 0xd6, 0xff, 0xbc, 0x80, 0x63, 0x55, 0x83, 0xd6, + 0xa6, 0x2c, 0x8c, 0xb2, 0x9f, 0xec, 0x8b, 0x68, 0x6b, 0x02, 0x8e, 0x55, 0x0d, 0xf7, 0x3a, 0x8c, + 0xf3, 0x9d, 0x3c, 0xdf, 0xf4, 0xfc, 0xd6, 0xd2, 0x3c, 0xba, 0xd8, 0x75, 0x05, 0xe0, 0xc9, 0x9c, + 0x2b, 0x00, 0xa7, 0x8c, 0x46, 0xdd, 0x57, 0x01, 0xdc, 0x1f, 0x14, 0x60, 0xe4, 0x08, 0x1f, 0x95, + 0x3c, 0xf2, 0xf7, 0x91, 0xd1, 0xad, 0xcc, 0x83, 0x92, 0x6b, 0x36, 0x6f, 0xf4, 0xec, 0xf9, 0x98, + 0xe4, 0x7f, 0x29, 0xc0, 0x69, 0x59, 0x55, 0xea, 0x72, 0x4b, 0xf3, 0xec, 0x29, 0xaf, 0xc3, 0x9f, + 0xe8, 0xc8, 0x98, 0xe8, 0x35, 0x7b, 0xda, 0xe8, 0xd2, 0x7c, 0xcf, 0xa9, 0x7e, 0x35, 0x33, 0xd5, + 0xd8, 0x2a, 0xd5, 0xbd, 0x27, 0xfb, 0xcf, 0x1d, 0x98, 0xca, 0x9f, 0xec, 0x23, 0x78, 0xc3, 0xf3, + 0x0d, 0xf3, 0x0d, 0xcf, 0x5f, 0xb4, 0xb7, 0xc4, 0xcc, 0xa1, 0xf4, 0x78, 0xcd, 0xf3, 0x7f, 0x3a, + 0x70, 0x52, 0x36, 0x60, 0xa7, 0xe7, 0x9c, 0x1f, 0xb0, 0x48, 0x96, 0xc3, 0x5f, 0x66, 0xaf, 0x1b, + 0xcb, 0xec, 0x45, 0x7b, 0x03, 0xd7, 0xc7, 0xd1, 0xf3, 0xed, 0xf3, 0x3f, 0x75, 0xa0, 0x9c, 0xd7, + 0xe0, 0x08, 0x3e, 0xf9, 0x6b, 0xe6, 0x27, 0xbf, 0x7e, 0x38, 0x23, 0xef, 0xfd, 0xc1, 0xcb, 0xbd, + 0x26, 0x0a, 0x35, 0xa5, 0x5c, 0xe5, 0xd8, 0xf2, 0xd1, 0x72, 0x12, 0xf9, 0x02, 0x5a, 0x13, 0x86, + 0x62, 0x16, 0xb5, 0x21, 0x96, 0xc0, 0x25, 0x1b, 0xd2, 0x16, 0xc5, 0x27, 0x6c, 0xec, 0xec, 0x7f, + 0x2c, 0x68, 0xb8, 0xbf, 0x59, 0x80, 0x33, 0xea, 0x6d, 0x5e, 0xb2, 0x4d, 0x9a, 0xe9, 0xfe, 0x60, + 0xcf, 0x45, 0x78, 0xea, 0xa7, 0xbd, 0xe7, 0x22, 0x52, 0x12, 0xe9, 0x5e, 0x48, 0x61, 0x58, 0xa3, + 0x89, 0x2a, 0x70, 0x8a, 0x3d, 0xef, 0xb0, 0xe8, 0x07, 0x5e, 0xd3, 0x7f, 0x95, 0x44, 0x98, 0xb4, + 0xc2, 0x6d, 0xaf, 0x29, 0x24, 0x75, 0x75, 0x85, 0x78, 0x31, 0xaf, 0x12, 0xce, 0x6f, 0xdb, 0xa5, + 0x71, 0x0f, 0xf4, 0xab, 0x71, 0xbb, 0x7f, 0xec, 0xc0, 0xd8, 0x11, 0xbe, 0x64, 0x1c, 0x9a, 0x5b, + 0xe2, 0x39, 0x7b, 0x5b, 0xa2, 0xc7, 0x36, 0xd8, 0x2d, 0x42, 0xd7, 0xe3, 0xae, 0xe8, 0x53, 0x8e, + 0x8a, 0x6b, 0xe1, 0xc1, 0x83, 0x1f, 0xb4, 0xd7, 0x8f, 0xfd, 0xe4, 0x9d, 0x44, 0x5f, 0xcb, 0x24, + 0xe3, 0x2c, 0xd8, 0xca, 0x28, 0xd5, 0xd5, 0x9b, 0x03, 0x24, 0xe5, 0xfc, 0xb2, 0x03, 0xc0, 0xfb, + 0x29, 0x72, 0x79, 0xd3, 0xbe, 0x6d, 0x1c, 0xda, 0x4c, 0x51, 0x22, 0xbc, 0x6b, 0x6a, 0x0b, 0xa5, + 0x05, 0x58, 0xeb, 0xc9, 0x3d, 0x64, 0xdb, 0xbc, 0xe7, 0x44, 0x9f, 0x9f, 0x77, 0xe0, 0x58, 0xa6, + 0xbb, 0x39, 0xed, 0x37, 0xcd, 0xd7, 0x0a, 0x2d, 0x48, 0x56, 0x66, 0x86, 0x67, 0xdd, 0x78, 0xf2, + 0xdf, 0x5c, 0x30, 0x5e, 0xc5, 0x46, 0xaf, 0xc1, 0xa8, 0xb4, 0x7c, 0xc8, 0xe5, 0x6d, 0xf3, 0xd5, + 0x56, 0xa5, 0xde, 0x48, 0x48, 0x8c, 0x53, 0x7a, 0x99, 0xb0, 0xb9, 0x42, 0x5f, 0x61, 0x73, 0xf7, + 0xf7, 0xcd, 0xd7, 0x7c, 0xbb, 0xf4, 0xe0, 0xa1, 0xd8, 0xa5, 0x1f, 0xb2, 0x6e, 0x97, 0x7e, 0xf8, + 0x88, 0xed, 0xd2, 0x9a, 0x93, 0xb0, 0x78, 0x0f, 0x4e, 0xc2, 0xd7, 0xe0, 0xe4, 0x76, 0xaa, 0x74, + 0xaa, 0x95, 0x24, 0xf2, 0x18, 0x3d, 0x99, 0x6b, 0x8d, 0xa6, 0x0a, 0x74, 0x9c, 0x90, 0x20, 0xd1, + 0xd4, 0xd5, 0x34, 0x62, 0xef, 0x7a, 0x0e, 0x3a, 0x9c, 0x4b, 0x24, 0xeb, 0xed, 0x19, 0xee, 0xc3, + 0xdb, 0xf3, 0x96, 0x03, 0xa7, 0xbc, 0xae, 0x3b, 0x67, 0x98, 0x6c, 0x8a, 0x90, 0x93, 0x1b, 0xf6, + 0x44, 0x08, 0x03, 0xbd, 0x70, 0xab, 0xe5, 0x15, 0xe1, 0xfc, 0x0e, 0xa1, 0xc7, 0x52, 0xd7, 0x3b, + 0x8f, 0xf3, 0xcc, 0xf7, 0x93, 0x7f, 0x2d, 0x1b, 0xcf, 0x03, 0x6c, 0xea, 0x3f, 0x6c, 0x57, 0xdb, + 0xb6, 0x10, 0xd3, 0x53, 0xba, 0x87, 0x98, 0x9e, 0x8c, 0xeb, 0x6d, 0xcc, 0x92, 0xeb, 0x2d, 0x80, + 0x49, 0xbf, 0xe5, 0xd5, 0xc9, 0x5a, 0xa7, 0xd9, 0xe4, 0x97, 0x48, 0xe4, 0xbb, 0xba, 0xb9, 0x16, + 0xbc, 0x2b, 0x61, 0xd5, 0x6b, 0x66, 0x5f, 0x54, 0x57, 0x97, 0x65, 0x2e, 0x67, 0x30, 0xe1, 0x2e, + 0xdc, 0x74, 0xc1, 0xb2, 0x84, 0x7a, 0x24, 0xa1, 0xb3, 0xcd, 0x02, 0x47, 0x46, 0xf8, 0x82, 0xbd, + 0x94, 0x82, 0xb1, 0x5e, 0x07, 0x2d, 0xc3, 0x68, 0x2d, 0x88, 0xc5, 0xf5, 0xd9, 0x63, 0x8c, 0x99, + 0xbd, 0x93, 0xb2, 0xc0, 0x85, 0xab, 0x15, 0x75, 0x71, 0xf6, 0xa1, 0x9c, 0x0c, 0x91, 0xaa, 0x1c, + 0xa7, 0xed, 0xd1, 0x0a, 0x43, 0x26, 0x1e, 0x1d, 0xe3, 0xf1, 0x1c, 0x8f, 0xf4, 0x70, 0x18, 0x2d, + 0x5c, 0x95, 0xcf, 0xa6, 0x8d, 0x0b, 0x72, 0xe2, 0xf5, 0xb0, 0x14, 0x83, 0xf6, 0xbe, 0xf1, 0xf1, + 0x3d, 0xdf, 0x37, 0x66, 0xa9, 0x61, 0x93, 0xa6, 0x72, 0x0f, 0x9f, 0xb3, 0x96, 0x1a, 0x36, 0x8d, + 0x94, 0x14, 0xa9, 0x61, 0x53, 0x00, 0xd6, 0x49, 0xa2, 0xd5, 0x5e, 0x6e, 0xf2, 0x13, 0x8c, 0x69, + 0xec, 0xdf, 0xe9, 0xad, 0xfb, 0x4b, 0x4f, 0xee, 0xe9, 0x2f, 0xed, 0xf2, 0xef, 0x9e, 0xda, 0x87, + 0x7f, 0xb7, 0xc1, 0x92, 0x76, 0x2e, 0xcd, 0x0b, 0x97, 0xba, 0x05, 0xfd, 0x8e, 0xa5, 0x09, 0xe1, + 0x91, 0xa7, 0xec, 0x5f, 0xcc, 0x09, 0xf4, 0x0c, 0xa8, 0x3e, 0x73, 0xe0, 0x80, 0x6a, 0xca, 0x9e, + 0x53, 0x38, 0xcb, 0xfe, 0x5a, 0x14, 0xec, 0x39, 0x05, 0x63, 0xbd, 0x4e, 0xd6, 0x5b, 0xfa, 0xe0, + 0xa1, 0x79, 0x4b, 0xa7, 0x8e, 0xc0, 0x5b, 0x7a, 0xb6, 0x6f, 0x6f, 0xe9, 0x2d, 0x38, 0xd1, 0x0e, + 0x6b, 0x0b, 0x7e, 0x1c, 0x75, 0xd8, 0xad, 0xba, 0xb9, 0x4e, 0xad, 0x4e, 0x12, 0xe6, 0x6e, 0x2d, + 0x5d, 0x78, 0xa7, 0xde, 0xc9, 0x36, 0xdb, 0xc8, 0x72, 0x8f, 0x66, 0x1a, 0x30, 0xd3, 0x09, 0x8b, + 0xba, 0xcd, 0x29, 0xc4, 0x79, 0x24, 0x74, 0x3f, 0xed, 0x23, 0x47, 0xe3, 0xa7, 0x7d, 0x3f, 0x8c, + 0xc4, 0x8d, 0x4e, 0x52, 0x0b, 0x6f, 0x06, 0xcc, 0x19, 0x3f, 0x3a, 0xf7, 0x0e, 0x65, 0xca, 0x16, + 0xf0, 0x3b, 0xbb, 0xd3, 0x93, 0xf2, 0x7f, 0xcd, 0x8a, 0x2d, 0x20, 0xe8, 0xeb, 0x3d, 0xee, 0xef, + 0xb8, 0x87, 0x79, 0x7f, 0xe7, 0xcc, 0xbe, 0xee, 0xee, 0xe4, 0x39, 0xa3, 0x1f, 0xfd, 0xa9, 0x73, + 0x46, 0x7f, 0xd5, 0x81, 0xf1, 0x6d, 0xdd, 0x65, 0x20, 0x1c, 0xe6, 0x16, 0x02, 0x77, 0x0c, 0x4f, + 0xc4, 0x9c, 0x4b, 0xf9, 0x9c, 0x01, 0xba, 0x93, 0x05, 0x60, 0xb3, 0x27, 0x39, 0x41, 0x45, 0x8f, + 0xdd, 0xaf, 0xa0, 0xa2, 0x37, 0x18, 0x1f, 0x93, 0x4a, 0x2e, 0xf3, 0xa2, 0xdb, 0x8d, 0x29, 0x96, + 0x3c, 0x51, 0x85, 0x14, 0xeb, 0xf4, 0xd0, 0xe7, 0x1c, 0x98, 0x94, 0x7a, 0x99, 0x70, 0xf9, 0xc5, + 0x22, 0x2a, 0xd2, 0xa6, 0x3a, 0xc8, 0xc2, 0xea, 0xd7, 0x33, 0x74, 0x70, 0x17, 0x65, 0xca, 0xd5, + 0x55, 0x10, 0x5a, 0x3d, 0x66, 0xc1, 0xbf, 0x42, 0x86, 0x99, 0x4d, 0xc1, 0x58, 0xaf, 0x83, 0xbe, + 0xe1, 0x40, 0xb1, 0x11, 0x86, 0x5b, 0x71, 0xf9, 0x49, 0xc6, 0xd0, 0x5f, 0xb0, 0x2c, 0x9b, 0x5e, + 0xa2, 0xb8, 0xb9, 0x50, 0xfa, 0xb4, 0xb4, 0x1d, 0x31, 0xd8, 0x9d, 0xdd, 0xe9, 0x09, 0xe3, 0x6d, + 0xa3, 0xf8, 0xcd, 0xb7, 0x35, 0x88, 0xb0, 0x6d, 0xb2, 0xae, 0xa1, 0x2f, 0x3a, 0x30, 0x79, 0x33, + 0x63, 0xd0, 0x10, 0x61, 0xa1, 0xd8, 0xbe, 0xa9, 0x84, 0x4f, 0x77, 0x16, 0x8a, 0xbb, 0x7a, 0x80, + 0x3e, 0x6b, 0x1a, 0x3a, 0x79, 0xfc, 0xa8, 0xc5, 0x09, 0xcc, 0x18, 0x56, 0xf9, 0x35, 0xb7, 0x7c, + 0x8b, 0xe7, 0x3d, 0xc7, 0x87, 0x4c, 0xd1, 0xc1, 0xa4, 0x1f, 0x2b, 0xa7, 0x29, 0x31, 0xed, 0x2d, + 0x16, 0x36, 0xbb, 0xf1, 0xf9, 0x75, 0x73, 0xcb, 0x17, 0x4f, 0xc3, 0x84, 0xe9, 0xdb, 0x43, 0xef, + 0x32, 0xdf, 0xad, 0x38, 0x97, 0x7d, 0x02, 0x60, 0x5c, 0xd6, 0x37, 0x9e, 0x01, 0x30, 0xf2, 0xf4, + 0x17, 0x0e, 0x35, 0x4f, 0xff, 0xc0, 0xd1, 0xe4, 0xe9, 0x9f, 0x3c, 0x8c, 0x3c, 0xfd, 0xc7, 0xf7, + 0x95, 0xa7, 0x5f, 0x7b, 0x27, 0x61, 0xf0, 0x2e, 0xef, 0x24, 0xcc, 0xc2, 0x31, 0x79, 0xf7, 0x87, + 0x88, 0x54, 0xe8, 0xdc, 0xed, 0x7f, 0x46, 0x34, 0x39, 0x36, 0x6f, 0x16, 0xe3, 0x6c, 0x7d, 0xba, + 0xc9, 0x8a, 0x01, 0x6b, 0x39, 0x64, 0xeb, 0x11, 0x25, 0x73, 0x69, 0x31, 0xf5, 0x59, 0xb0, 0x28, + 0x19, 0xed, 0x5c, 0x64, 0xb0, 0x3b, 0xf2, 0x1f, 0xcc, 0x7b, 0x80, 0x5e, 0x82, 0x72, 0xb8, 0xb9, + 0xd9, 0x0c, 0xbd, 0x5a, 0xfa, 0x98, 0x80, 0x8c, 0x4b, 0xe0, 0x77, 0x37, 0x55, 0xee, 0xd9, 0xd5, + 0x1e, 0xf5, 0x70, 0x4f, 0x0c, 0xe8, 0x2d, 0x2a, 0x98, 0x24, 0x61, 0x44, 0x6a, 0xa9, 0xad, 0x66, + 0x94, 0x8d, 0x99, 0x58, 0x1f, 0x73, 0xc5, 0xa4, 0xc3, 0x47, 0xaf, 0x3e, 0x4a, 0xa6, 0x14, 0x67, + 0xbb, 0x85, 0x22, 0x38, 0xdd, 0xce, 0x33, 0x15, 0xc5, 0xe2, 0xc6, 0xd2, 0x5e, 0x06, 0x2b, 0xf5, + 0xb0, 0x74, 0xae, 0xb1, 0x29, 0xc6, 0x3d, 0x30, 0xeb, 0x09, 0xff, 0x47, 0x8e, 0x26, 0xe1, 0xff, + 0x47, 0x01, 0xd4, 0x25, 0x75, 0x69, 0x7c, 0x58, 0xb6, 0x72, 0x95, 0x86, 0xe3, 0xd4, 0xde, 0x58, + 0x55, 0x64, 0xb0, 0x46, 0x12, 0xfd, 0x9f, 0xdc, 0x17, 0x31, 0xb8, 0x85, 0xa5, 0x6e, 0x7d, 0x4d, + 0xfc, 0xd4, 0xbd, 0x8a, 0xf1, 0x8f, 0x1c, 0x98, 0xe2, 0x2b, 0x2f, 0x2b, 0xdc, 0x53, 0xd1, 0x42, + 0xdc, 0xed, 0xb1, 0x1d, 0xba, 0xc2, 0x53, 0x08, 0x19, 0x54, 0x99, 0xa3, 0x7b, 0x8f, 0x9e, 0xa0, + 0x2f, 0xe7, 0xa8, 0x14, 0xc7, 0x6c, 0xd9, 0x2c, 0xf3, 0xdf, 0x35, 0x38, 0x71, 0xbb, 0x1f, 0x2d, + 0xe2, 0x9f, 0xf4, 0x34, 0xa9, 0x22, 0xd6, 0xbd, 0x5f, 0x3a, 0x24, 0x93, 0xaa, 0xfe, 0xf8, 0xc2, + 0xbe, 0x0c, 0xab, 0x9f, 0x77, 0x60, 0xd2, 0xcb, 0x84, 0x9a, 0x30, 0x3b, 0x90, 0x15, 0x9b, 0xd4, + 0x6c, 0x94, 0xc6, 0xaf, 0x30, 0x21, 0x2f, 0x1b, 0xd5, 0x82, 0xbb, 0x88, 0xa3, 0x1f, 0x38, 0x70, + 0x36, 0xf1, 0xe2, 0x2d, 0x9e, 0xda, 0x38, 0x4e, 0xef, 0xea, 0x8a, 0xce, 0x9d, 0x64, 0xbb, 0xf1, + 0x15, 0xeb, 0xbb, 0x71, 0xbd, 0x37, 0x4d, 0xbe, 0x2f, 0x1f, 0x15, 0xfb, 0xf2, 0xec, 0x1e, 0x35, + 0xf1, 0x5e, 0x5d, 0x9f, 0xfa, 0x94, 0xc3, 0x9f, 0xc0, 0xea, 0x29, 0xf2, 0x6d, 0x98, 0x22, 0xdf, + 0x15, 0x9b, 0x8f, 0xf0, 0xe8, 0xb2, 0xe7, 0xaf, 0x3a, 0x70, 0x32, 0xef, 0x44, 0xca, 0xe9, 0xd2, + 0x87, 0xcd, 0x2e, 0x59, 0xd4, 0xb2, 0xf4, 0x0e, 0x59, 0x79, 0x03, 0x64, 0xea, 0x2a, 0x3c, 0x72, + 0xb7, 0xaf, 0x78, 0x37, 0x7c, 0x23, 0xba, 0x58, 0xfc, 0xa7, 0xa3, 0x9a, 0x17, 0x32, 0x21, 0x6d, + 0xeb, 0x31, 0xdc, 0x01, 0x0c, 0xf9, 0x41, 0xd3, 0x0f, 0x88, 0xb8, 0xaf, 0x69, 0x53, 0x87, 0x15, + 0x6f, 0xf8, 0x50, 0xec, 0x58, 0x50, 0xb9, 0xcf, 0x4e, 0xc9, 0xec, 0xab, 0x68, 0x83, 0x47, 0xff, + 0x2a, 0xda, 0x4d, 0x18, 0xbd, 0xe9, 0x27, 0x0d, 0x16, 0x4c, 0x21, 0x7c, 0x7d, 0x16, 0xee, 0x39, + 0x52, 0x74, 0xe9, 0xd8, 0x6f, 0x48, 0x02, 0x38, 0xa5, 0x85, 0xce, 0x73, 0xc2, 0x2c, 0x72, 0x3b, + 0x1b, 0x52, 0x7b, 0x43, 0x16, 0xe0, 0xb4, 0x0e, 0x9d, 0xac, 0x31, 0xfa, 0x4b, 0x26, 0x44, 0x12, + 0x69, 0x82, 0x6d, 0xa4, 0x7f, 0x14, 0x18, 0xf9, 0x6d, 0xe2, 0x1b, 0x1a, 0x0d, 0x6c, 0x50, 0x54, + 0x99, 0x9a, 0x47, 0x7a, 0x66, 0x6a, 0x7e, 0x9d, 0x09, 0x6c, 0x89, 0x1f, 0x74, 0xc8, 0x6a, 0x20, + 0xe2, 0xbd, 0xaf, 0xd8, 0xb9, 0xfb, 0xcc, 0x71, 0x72, 0x15, 0x3c, 0xfd, 0x8d, 0x35, 0x7a, 0x9a, + 0xcb, 0xa5, 0xb4, 0xa7, 0xcb, 0x25, 0x35, 0xb9, 0x8c, 0x59, 0x37, 0xb9, 0x24, 0xa4, 0x6d, 0xc5, + 0xe4, 0xf2, 0x53, 0x65, 0x0e, 0xf8, 0x73, 0x07, 0x90, 0x92, 0xbb, 0x14, 0x43, 0x3d, 0x82, 0xa0, + 0xca, 0x8f, 0x39, 0x00, 0x81, 0x7a, 0x3b, 0xd3, 0xee, 0x29, 0xc8, 0x71, 0xa6, 0x1d, 0x48, 0x61, + 0x58, 0xa3, 0xe9, 0xfe, 0x89, 0x93, 0xc6, 0x2e, 0xa7, 0x63, 0x3f, 0x82, 0x20, 0xb2, 0x1d, 0x33, + 0x88, 0x6c, 0xdd, 0xa2, 0xe9, 0x5e, 0x0d, 0xa3, 0x47, 0x38, 0xd9, 0x8f, 0x0b, 0x70, 0x4c, 0xaf, + 0x5c, 0x21, 0x47, 0xf1, 0xb1, 0x6f, 0x1a, 0x11, 0xb4, 0xd7, 0xec, 0x8e, 0xb7, 0x22, 0x3c, 0x40, + 0x79, 0xd1, 0xda, 0x1f, 0xcd, 0x44, 0x6b, 0xdf, 0xb0, 0x4f, 0x7a, 0xef, 0x90, 0xed, 0xff, 0xea, + 0xc0, 0x89, 0x4c, 0x8b, 0x23, 0x58, 0x60, 0xdb, 0xe6, 0x02, 0x7b, 0xde, 0xfa, 0xa8, 0x7b, 0xac, + 0xae, 0x6f, 0x16, 0xba, 0x46, 0xcb, 0x94, 0xb8, 0x4f, 0x3a, 0x50, 0xa4, 0xd2, 0xb2, 0x8c, 0xe7, + 0xfa, 0xf0, 0xa1, 0xac, 0x00, 0x26, 0xd7, 0x0b, 0xee, 0xac, 0xfa, 0xc7, 0x60, 0x98, 0x53, 0x9f, + 0xfa, 0x84, 0x03, 0x90, 0x56, 0xba, 0x5f, 0x22, 0xb0, 0xfb, 0xed, 0x02, 0x9c, 0xca, 0x5d, 0x46, + 0xe8, 0xd3, 0xca, 0x22, 0xe7, 0xd8, 0x8e, 0x56, 0x34, 0x08, 0xe9, 0x86, 0xb9, 0x71, 0xc3, 0x30, + 0x27, 0xec, 0x71, 0xf7, 0x4b, 0x81, 0x11, 0x6c, 0x5a, 0x9b, 0xac, 0x1f, 0x39, 0x69, 0x00, 0xac, + 0xca, 0x6b, 0xf4, 0x17, 0xf0, 0x12, 0x8f, 0xfb, 0x63, 0xed, 0x86, 0x83, 0x1c, 0xe8, 0x11, 0xf0, + 0x8a, 0x9b, 0x26, 0xaf, 0xc0, 0xf6, 0xfd, 0xc8, 0x3d, 0x98, 0xc5, 0x2b, 0x90, 0xe7, 0x58, 0xee, + 0x2f, 0x29, 0xa2, 0x71, 0x1d, 0xb6, 0xd0, 0xf7, 0x75, 0xd8, 0x71, 0x28, 0xbd, 0xe8, 0xab, 0x6c, + 0x9a, 0x73, 0x33, 0xdf, 0xf9, 0xe1, 0xb9, 0x07, 0xbe, 0xfb, 0xc3, 0x73, 0x0f, 0xfc, 0xe0, 0x87, + 0xe7, 0x1e, 0xf8, 0xd8, 0xed, 0x73, 0xce, 0x77, 0x6e, 0x9f, 0x73, 0xbe, 0x7b, 0xfb, 0x9c, 0xf3, + 0x83, 0xdb, 0xe7, 0x9c, 0xff, 0x70, 0xfb, 0x9c, 0xf3, 0x77, 0xfe, 0xe3, 0xb9, 0x07, 0x5e, 0x1c, + 0x91, 0x03, 0xfb, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xec, 0xb4, 0x38, 0x2f, 0x7d, 0xd7, 0x00, + 0x00, } func (m *Amount) Marshal() (dAtA []byte, err error) { @@ -10684,6 +10686,18 @@ func (m *S3Bucket) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.SessionTokenSecret != nil { + { + size, err := m.SessionTokenSecret.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } if m.CASecret != nil { { size, err := m.CASecret.MarshalToSizedBuffer(dAtA[:i]) @@ -16193,6 +16207,10 @@ func (m *S3Bucket) Size() (n int) { l = m.CASecret.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.SessionTokenSecret != nil { + l = m.SessionTokenSecret.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -18863,6 +18881,7 @@ func (this *S3Bucket) String() string { `CreateBucketIfNotPresent:` + strings.Replace(this.CreateBucketIfNotPresent.String(), "CreateS3BucketOptions", "CreateS3BucketOptions", 1) + `,`, `EncryptionOptions:` + strings.Replace(this.EncryptionOptions.String(), "S3EncryptionOptions", "S3EncryptionOptions", 1) + `,`, `CASecret:` + strings.Replace(fmt.Sprintf("%v", this.CASecret), "SecretKeySelector", "v1.SecretKeySelector", 1) + `,`, + `SessionTokenSecret:` + strings.Replace(fmt.Sprintf("%v", this.SessionTokenSecret), "SecretKeySelector", "v1.SecretKeySelector", 1) + `,`, `}`, }, "") return s @@ -37310,6 +37329,42 @@ func (m *S3Bucket) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SessionTokenSecret", 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 < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SessionTokenSecret == nil { + m.SessionTokenSecret = &v1.SecretKeySelector{} + } + if err := m.SessionTokenSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/workflow/v1alpha1/generated.proto b/pkg/apis/workflow/v1alpha1/generated.proto index d51eeba01ca7..00bd6a0de896 100644 --- a/pkg/apis/workflow/v1alpha1/generated.proto +++ b/pkg/apis/workflow/v1alpha1/generated.proto @@ -1405,6 +1405,9 @@ message S3Bucket { // SecretKeySecret is the secret selector to the bucket's secret key optional k8s.io.api.core.v1.SecretKeySelector secretKeySecret = 6; + // SessionTokenSecret is used for ephemeral credentials like an IAM assume role or S3 access grant + optional k8s.io.api.core.v1.SecretKeySelector sessionTokenSecret = 12; + // RoleARN is the Amazon Resource Name (ARN) of the role to assume. optional string roleARN = 7; diff --git a/pkg/apis/workflow/v1alpha1/openapi_generated.go b/pkg/apis/workflow/v1alpha1/openapi_generated.go index 3a8d7e11edc4..bc992d543b01 100644 --- a/pkg/apis/workflow/v1alpha1/openapi_generated.go +++ b/pkg/apis/workflow/v1alpha1/openapi_generated.go @@ -5161,6 +5161,12 @@ func schema_pkg_apis_workflow_v1alpha1_S3Artifact(ref common.ReferenceCallback) Ref: ref("k8s.io/api/core/v1.SecretKeySelector"), }, }, + "sessionTokenSecret": { + SchemaProps: spec.SchemaProps{ + Description: "SessionTokenSecret is used for ephemeral credentials like an IAM assume role or S3 access grant", + Ref: ref("k8s.io/api/core/v1.SecretKeySelector"), + }, + }, "roleARN": { SchemaProps: spec.SchemaProps{ Description: "RoleARN is the Amazon Resource Name (ARN) of the role to assume.", @@ -5254,6 +5260,12 @@ func schema_pkg_apis_workflow_v1alpha1_S3ArtifactRepository(ref common.Reference Ref: ref("k8s.io/api/core/v1.SecretKeySelector"), }, }, + "sessionTokenSecret": { + SchemaProps: spec.SchemaProps{ + Description: "SessionTokenSecret is used for ephemeral credentials like an IAM assume role or S3 access grant", + Ref: ref("k8s.io/api/core/v1.SecretKeySelector"), + }, + }, "roleARN": { SchemaProps: spec.SchemaProps{ Description: "RoleARN is the Amazon Resource Name (ARN) of the role to assume.", @@ -5354,6 +5366,12 @@ func schema_pkg_apis_workflow_v1alpha1_S3Bucket(ref common.ReferenceCallback) co Ref: ref("k8s.io/api/core/v1.SecretKeySelector"), }, }, + "sessionTokenSecret": { + SchemaProps: spec.SchemaProps{ + Description: "SessionTokenSecret is used for ephemeral credentials like an IAM assume role or S3 access grant", + Ref: ref("k8s.io/api/core/v1.SecretKeySelector"), + }, + }, "roleARN": { SchemaProps: spec.SchemaProps{ Description: "RoleARN is the Amazon Resource Name (ARN) of the role to assume.", diff --git a/pkg/apis/workflow/v1alpha1/workflow_types.go b/pkg/apis/workflow/v1alpha1/workflow_types.go index 878f82dfa0c2..07f132fcfca6 100644 --- a/pkg/apis/workflow/v1alpha1/workflow_types.go +++ b/pkg/apis/workflow/v1alpha1/workflow_types.go @@ -2521,6 +2521,9 @@ type S3Bucket struct { // SecretKeySecret is the secret selector to the bucket's secret key SecretKeySecret *apiv1.SecretKeySelector `json:"secretKeySecret,omitempty" protobuf:"bytes,6,opt,name=secretKeySecret"` + // SessionTokenSecret is used for ephemeral credentials like an IAM assume role or S3 access grant + SessionTokenSecret *apiv1.SecretKeySelector `json:"sessionTokenSecret,omitempty" protobuf:"bytes,12,opt,name=sessionTokenSecret"` + // RoleARN is the Amazon Resource Name (ARN) of the role to assume. RoleARN string `json:"roleARN,omitempty" protobuf:"bytes,7,opt,name=roleARN"` diff --git a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go index 149a3951cfae..9862a4d1eee4 100644 --- a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go @@ -2766,6 +2766,11 @@ func (in *S3Bucket) DeepCopyInto(out *S3Bucket) { *out = new(v1.SecretKeySelector) (*in).DeepCopyInto(*out) } + if in.SessionTokenSecret != nil { + in, out := &in.SessionTokenSecret, &out.SessionTokenSecret + *out = new(v1.SecretKeySelector) + (*in).DeepCopyInto(*out) + } if in.CreateBucketIfNotPresent != nil { in, out := &in.CreateBucketIfNotPresent, &out.CreateBucketIfNotPresent *out = new(CreateS3BucketOptions) diff --git a/pkg/plugins/executor/swagger.yml b/pkg/plugins/executor/swagger.yml index 8efc36b85b49..62e21d2b22a4 100644 --- a/pkg/plugins/executor/swagger.yml +++ b/pkg/plugins/executor/swagger.yml @@ -3355,6 +3355,8 @@ definitions: type: string secretKeySecret: $ref: '#/definitions/SecretKeySelector' + sessionTokenSecret: + $ref: '#/definitions/SecretKeySelector' useSDKCreds: description: UseSDKCreds tells the driver to figure out credentials based on sdk defaults. type: boolean diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1S3Artifact.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1S3Artifact.md index 1be6bf86bdc8..30c169da0a1f 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1S3Artifact.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1S3Artifact.md @@ -19,6 +19,7 @@ Name | Type | Description | Notes **region** | **String** | Region contains the optional bucket region | [optional] **roleARN** | **String** | RoleARN is the Amazon Resource Name (ARN) of the role to assume. | [optional] **secretKeySecret** | [**io.kubernetes.client.openapi.models.V1SecretKeySelector**](io.kubernetes.client.openapi.models.V1SecretKeySelector.md) | | [optional] +**sessionTokenSecret** | [**io.kubernetes.client.openapi.models.V1SecretKeySelector**](io.kubernetes.client.openapi.models.V1SecretKeySelector.md) | | [optional] **useSDKCreds** | **Boolean** | UseSDKCreds tells the driver to figure out credentials based on sdk defaults. | [optional] diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1S3ArtifactRepository.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1S3ArtifactRepository.md index 94e6711f1831..15d0f0effa1a 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1S3ArtifactRepository.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1S3ArtifactRepository.md @@ -20,6 +20,7 @@ Name | Type | Description | Notes **region** | **String** | Region contains the optional bucket region | [optional] **roleARN** | **String** | RoleARN is the Amazon Resource Name (ARN) of the role to assume. | [optional] **secretKeySecret** | [**io.kubernetes.client.openapi.models.V1SecretKeySelector**](io.kubernetes.client.openapi.models.V1SecretKeySelector.md) | | [optional] +**sessionTokenSecret** | [**io.kubernetes.client.openapi.models.V1SecretKeySelector**](io.kubernetes.client.openapi.models.V1SecretKeySelector.md) | | [optional] **useSDKCreds** | **Boolean** | UseSDKCreds tells the driver to figure out credentials based on sdk defaults. | [optional] diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_s3_artifact.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_s3_artifact.py index fd019b40a4b6..9b6e62a81885 100644 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_s3_artifact.py +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_s3_artifact.py @@ -102,6 +102,7 @@ def openapi_types(): 'region': (str,), # noqa: E501 'role_arn': (str,), # noqa: E501 'secret_key_secret': (SecretKeySelector,), # noqa: E501 + 'session_token_secret': (SecretKeySelector,), # noqa: E501 'use_sdk_creds': (bool,), # noqa: E501 } @@ -122,6 +123,7 @@ def discriminator(): 'region': 'region', # noqa: E501 'role_arn': 'roleARN', # noqa: E501 'secret_key_secret': 'secretKeySecret', # noqa: E501 + 'session_token_secret': 'sessionTokenSecret', # noqa: E501 'use_sdk_creds': 'useSDKCreds', # noqa: E501 } @@ -177,6 +179,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 region (str): Region contains the optional bucket region. [optional] # noqa: E501 role_arn (str): RoleARN is the Amazon Resource Name (ARN) of the role to assume.. [optional] # noqa: E501 secret_key_secret (SecretKeySelector): [optional] # noqa: E501 + session_token_secret (SecretKeySelector): [optional] # noqa: E501 use_sdk_creds (bool): UseSDKCreds tells the driver to figure out credentials based on sdk defaults.. [optional] # noqa: E501 """ @@ -270,6 +273,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 region (str): Region contains the optional bucket region. [optional] # noqa: E501 role_arn (str): RoleARN is the Amazon Resource Name (ARN) of the role to assume.. [optional] # noqa: E501 secret_key_secret (SecretKeySelector): [optional] # noqa: E501 + session_token_secret (SecretKeySelector): [optional] # noqa: E501 use_sdk_creds (bool): UseSDKCreds tells the driver to figure out credentials based on sdk defaults.. [optional] # noqa: E501 """ diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_s3_artifact_repository.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_s3_artifact_repository.py index c61fa854ac92..18f16fa8237f 100644 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_s3_artifact_repository.py +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_s3_artifact_repository.py @@ -103,6 +103,7 @@ def openapi_types(): 'region': (str,), # noqa: E501 'role_arn': (str,), # noqa: E501 'secret_key_secret': (SecretKeySelector,), # noqa: E501 + 'session_token_secret': (SecretKeySelector,), # noqa: E501 'use_sdk_creds': (bool,), # noqa: E501 } @@ -124,6 +125,7 @@ def discriminator(): 'region': 'region', # noqa: E501 'role_arn': 'roleARN', # noqa: E501 'secret_key_secret': 'secretKeySecret', # noqa: E501 + 'session_token_secret': 'sessionTokenSecret', # noqa: E501 'use_sdk_creds': 'useSDKCreds', # noqa: E501 } @@ -180,6 +182,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 region (str): Region contains the optional bucket region. [optional] # noqa: E501 role_arn (str): RoleARN is the Amazon Resource Name (ARN) of the role to assume.. [optional] # noqa: E501 secret_key_secret (SecretKeySelector): [optional] # noqa: E501 + session_token_secret (SecretKeySelector): [optional] # noqa: E501 use_sdk_creds (bool): UseSDKCreds tells the driver to figure out credentials based on sdk defaults.. [optional] # noqa: E501 """ @@ -274,6 +277,7 @@ def __init__(self, *args, **kwargs): # noqa: E501 region (str): Region contains the optional bucket region. [optional] # noqa: E501 role_arn (str): RoleARN is the Amazon Resource Name (ARN) of the role to assume.. [optional] # noqa: E501 secret_key_secret (SecretKeySelector): [optional] # noqa: E501 + session_token_secret (SecretKeySelector): [optional] # noqa: E501 use_sdk_creds (bool): UseSDKCreds tells the driver to figure out credentials based on sdk defaults.. [optional] # noqa: E501 """ diff --git a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md index 7a3ec30d91e0..5f0ee3f6bcec 100644 --- a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md @@ -554,6 +554,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -867,6 +872,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -1487,6 +1497,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -2298,6 +2313,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -2581,6 +2601,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -2886,6 +2911,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -3446,6 +3476,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -3771,6 +3806,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -4057,6 +4097,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -4900,6 +4945,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -5179,6 +5229,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -6063,6 +6118,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -6874,6 +6934,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -7157,6 +7222,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -7462,6 +7532,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -8022,6 +8097,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -8347,6 +8427,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -8633,6 +8718,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -9476,6 +9566,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -9755,6 +9850,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -11506,6 +11606,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -11819,6 +11924,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -12439,6 +12549,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -13250,6 +13365,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -13533,6 +13653,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -13838,6 +13963,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -14398,6 +14528,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -14723,6 +14858,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -15009,6 +15149,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -15852,6 +15997,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -16131,6 +16281,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -17015,6 +17170,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -17826,6 +17986,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -18109,6 +18274,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -18414,6 +18584,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -18974,6 +19149,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -19299,6 +19479,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -19585,6 +19770,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -20428,6 +20618,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -20707,6 +20902,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -22362,6 +22562,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -22675,6 +22880,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -23295,6 +23505,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -24106,6 +24321,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -24389,6 +24609,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -24694,6 +24919,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -25254,6 +25484,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -25579,6 +25814,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -25865,6 +26105,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -26708,6 +26953,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -26987,6 +27237,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -27871,6 +28126,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -28682,6 +28942,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -28965,6 +29230,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -29270,6 +29540,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -29830,6 +30105,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -30155,6 +30435,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -30441,6 +30726,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -31284,6 +31574,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -31563,6 +31858,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", diff --git a/sdks/python/client/docs/CronWorkflowServiceApi.md b/sdks/python/client/docs/CronWorkflowServiceApi.md index ca8d73de1950..974e60eaead6 100644 --- a/sdks/python/client/docs/CronWorkflowServiceApi.md +++ b/sdks/python/client/docs/CronWorkflowServiceApi.md @@ -614,6 +614,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -927,6 +932,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -1547,6 +1557,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -2358,6 +2373,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -2641,6 +2661,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -2946,6 +2971,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -3506,6 +3536,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -3831,6 +3866,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -4117,6 +4157,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -4960,6 +5005,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -5239,6 +5289,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -6123,6 +6178,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -6934,6 +6994,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -7217,6 +7282,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -7522,6 +7592,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -8082,6 +8157,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -8407,6 +8487,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -8693,6 +8778,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -9536,6 +9626,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -9815,6 +9910,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -11648,6 +11748,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -11961,6 +12066,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -12581,6 +12691,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -13392,6 +13507,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -13675,6 +13795,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -13980,6 +14105,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -14540,6 +14670,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -14865,6 +15000,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -15151,6 +15291,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -15994,6 +16139,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -16273,6 +16423,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -17157,6 +17312,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -17968,6 +18128,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -18251,6 +18416,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -18556,6 +18726,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -19116,6 +19291,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -19441,6 +19621,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -19727,6 +19912,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -20570,6 +20760,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -20849,6 +21044,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -22767,6 +22967,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -23080,6 +23285,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -23700,6 +23910,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -24511,6 +24726,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -24794,6 +25014,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -25099,6 +25324,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -25659,6 +25889,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -25984,6 +26219,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -26270,6 +26510,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -27113,6 +27358,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -27392,6 +27642,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -28276,6 +28531,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -29087,6 +29347,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -29370,6 +29635,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -29675,6 +29945,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -30235,6 +30510,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -30560,6 +30840,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -30846,6 +31131,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -31689,6 +31979,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -31968,6 +32263,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1S3Artifact.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1S3Artifact.md index ef36d6a0acb0..ca6bb8fcc0a8 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1S3Artifact.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1S3Artifact.md @@ -16,6 +16,7 @@ Name | Type | Description | Notes **region** | **str** | Region contains the optional bucket region | [optional] **role_arn** | **str** | RoleARN is the Amazon Resource Name (ARN) of the role to assume. | [optional] **secret_key_secret** | [**SecretKeySelector**](SecretKeySelector.md) | | [optional] +**session_token_secret** | [**SecretKeySelector**](SecretKeySelector.md) | | [optional] **use_sdk_creds** | **bool** | UseSDKCreds tells the driver to figure out credentials based on sdk defaults. | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1S3ArtifactRepository.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1S3ArtifactRepository.md index 1e46072155e5..70425c310d4d 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1S3ArtifactRepository.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1S3ArtifactRepository.md @@ -17,6 +17,7 @@ Name | Type | Description | Notes **region** | **str** | Region contains the optional bucket region | [optional] **role_arn** | **str** | RoleARN is the Amazon Resource Name (ARN) of the role to assume. | [optional] **secret_key_secret** | [**SecretKeySelector**](SecretKeySelector.md) | | [optional] +**session_token_secret** | [**SecretKeySelector**](SecretKeySelector.md) | | [optional] **use_sdk_creds** | **bool** | UseSDKCreds tells the driver to figure out credentials based on sdk defaults. | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] diff --git a/sdks/python/client/docs/WorkflowServiceApi.md b/sdks/python/client/docs/WorkflowServiceApi.md index a868d3a7f7a9..368143c604ed 100644 --- a/sdks/python/client/docs/WorkflowServiceApi.md +++ b/sdks/python/client/docs/WorkflowServiceApi.md @@ -569,6 +569,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -882,6 +887,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -1502,6 +1512,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -2313,6 +2328,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -2596,6 +2616,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -2901,6 +2926,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -3461,6 +3491,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -3786,6 +3821,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -4072,6 +4112,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -4915,6 +4960,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -5194,6 +5244,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -6078,6 +6133,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -6889,6 +6949,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -7172,6 +7237,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -7477,6 +7547,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -8037,6 +8112,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -8362,6 +8442,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -8648,6 +8733,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -9491,6 +9581,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -9770,6 +9865,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -10885,6 +10985,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -11156,6 +11261,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -11443,6 +11553,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -11739,6 +11854,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -12571,6 +12691,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -13382,6 +13507,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -13665,6 +13795,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -13970,6 +14105,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -14530,6 +14670,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -14855,6 +15000,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -15141,6 +15291,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -15984,6 +16139,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -16263,6 +16423,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -17178,6 +17343,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -17491,6 +17661,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -18111,6 +18286,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -18922,6 +19102,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -19205,6 +19390,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -19510,6 +19700,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -20070,6 +20265,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -20395,6 +20595,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -20681,6 +20886,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -21524,6 +21734,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -21803,6 +22018,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -22687,6 +22907,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -23498,6 +23723,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -23781,6 +24011,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -24086,6 +24321,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -24646,6 +24886,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -24971,6 +25216,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -25257,6 +25507,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -26100,6 +26355,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -26379,6 +26639,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -28172,6 +28437,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -28485,6 +28755,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -29105,6 +29380,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -29916,6 +30196,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -30199,6 +30484,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -30504,6 +30794,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -31064,6 +31359,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -31389,6 +31689,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -31675,6 +31980,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -32518,6 +32828,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -32797,6 +33112,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -33681,6 +34001,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -34492,6 +34817,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -34775,6 +35105,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -35080,6 +35415,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -35640,6 +35980,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -35965,6 +36310,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -36251,6 +36601,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -37094,6 +37449,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -37373,6 +37733,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -38488,6 +38853,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -38759,6 +39129,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -39046,6 +39421,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -39342,6 +39722,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -40174,6 +40559,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -40985,6 +41375,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -41268,6 +41663,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -41573,6 +41973,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -42133,6 +42538,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -42458,6 +42868,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -42744,6 +43159,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -43587,6 +44007,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -43866,6 +44291,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -44781,6 +45211,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -45094,6 +45529,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -45714,6 +46154,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -46525,6 +46970,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -46808,6 +47258,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -47113,6 +47568,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -47673,6 +48133,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -47998,6 +48463,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -48284,6 +48754,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -49127,6 +49602,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -49406,6 +49886,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -50290,6 +50775,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -51101,6 +51591,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -51384,6 +51879,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -51689,6 +52189,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -52249,6 +52754,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -52574,6 +53084,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -52860,6 +53375,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -53703,6 +54223,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -53982,6 +54507,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", diff --git a/sdks/python/client/docs/WorkflowTemplateServiceApi.md b/sdks/python/client/docs/WorkflowTemplateServiceApi.md index b2a8cb43ef7c..af2f115f5336 100644 --- a/sdks/python/client/docs/WorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/WorkflowTemplateServiceApi.md @@ -556,6 +556,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -869,6 +874,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -1489,6 +1499,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -2300,6 +2315,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -2583,6 +2603,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -2888,6 +2913,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -3448,6 +3478,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -3773,6 +3808,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -4059,6 +4099,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -4902,6 +4947,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -5181,6 +5231,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -6065,6 +6120,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -6876,6 +6936,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -7159,6 +7224,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -7464,6 +7534,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -8024,6 +8099,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -8349,6 +8429,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -8635,6 +8720,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -9478,6 +9568,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -9757,6 +9852,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -11515,6 +11615,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -11828,6 +11933,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -12448,6 +12558,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -13259,6 +13374,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -13542,6 +13662,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -13847,6 +13972,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -14407,6 +14537,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -14732,6 +14867,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -15018,6 +15158,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -15861,6 +16006,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -16140,6 +16290,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -17024,6 +17179,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -17835,6 +17995,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -18118,6 +18283,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -18423,6 +18593,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -18983,6 +19158,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -19308,6 +19488,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -19594,6 +19779,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -20437,6 +20627,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -20716,6 +20911,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -22385,6 +22585,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -22698,6 +22903,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -23318,6 +23528,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -24129,6 +24344,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -24412,6 +24632,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -24717,6 +24942,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -25277,6 +25507,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -25602,6 +25837,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -25888,6 +26128,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -26731,6 +26976,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -27010,6 +27260,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -27894,6 +28149,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), ), @@ -28705,6 +28965,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -28988,6 +29253,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -29293,6 +29563,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -29853,6 +30128,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -30178,6 +30458,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -30464,6 +30749,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -31307,6 +31597,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", @@ -31586,6 +31881,11 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", optional=True, ), + session_token_secret=SecretKeySelector( + key="key_example", + name="name_example", + optional=True, + ), use_sdk_creds=True, ), sub_path="sub_path_example", diff --git a/workflow/artifacts/artifacts.go b/workflow/artifacts/artifacts.go index 88c57267f0b1..8501242adb14 100644 --- a/workflow/artifacts/artifacts.go +++ b/workflow/artifacts/artifacts.go @@ -36,6 +36,7 @@ func newDriver(ctx context.Context, art *wfv1.Artifact, ri resource.Interface) ( if art.S3 != nil { var accessKey string var secretKey string + var sessionToken string var serverSideCustomerKey string var kmsKeyId string var kmsEncryptionContext string @@ -53,6 +54,14 @@ func newDriver(ctx context.Context, art *wfv1.Artifact, ri resource.Interface) ( return nil, err } secretKey = secretKeyBytes + + if art.S3.SessionTokenSecret != nil && art.S3.SessionTokenSecret.Name != "" { + sessionTokenBytes, err := ri.GetSecret(ctx, art.S3.SessionTokenSecret.Name, art.S3.SessionTokenSecret.Key) + if err != nil { + return nil, err + } + sessionToken = sessionTokenBytes + } } if art.S3.EncryptionOptions != nil { @@ -85,6 +94,7 @@ func newDriver(ctx context.Context, art *wfv1.Artifact, ri resource.Interface) ( Endpoint: art.S3.Endpoint, AccessKey: accessKey, SecretKey: secretKey, + SessionToken: sessionToken, Secure: art.S3.Insecure == nil || !*art.S3.Insecure, TrustedCA: caKey, Region: art.S3.Region, diff --git a/workflow/artifacts/artifacts_test.go b/workflow/artifacts/artifacts_test.go new file mode 100644 index 000000000000..e92c8c3205d5 --- /dev/null +++ b/workflow/artifacts/artifacts_test.go @@ -0,0 +1,64 @@ +package executor + +import ( + "context" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + apiv1 "k8s.io/api/core/v1" + + wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" + "github.com/argoproj/argo-workflows/v3/workflow/artifacts/s3" +) + +type mockResourceInterface struct{} + +func (*mockResourceInterface) GetSecret(ctx context.Context, name, key string) (string, error) { + // Mock getSecret that doesn't actually read from a store, just return a different value to assert it was called + return key + "-secret", nil +} + +func (*mockResourceInterface) GetConfigMapKey(ctx context.Context, name, key string) (string, error) { + // We don't need GetConfigMapKey for initialising the driver + return "", nil +} + +func TestNewDriverS3(t *testing.T) { + art := &wfv1.Artifact{ + ArtifactLocation: wfv1.ArtifactLocation{S3: &wfv1.S3Artifact{ + S3Bucket: wfv1.S3Bucket{ + Endpoint: "endpoint", + Bucket: "bucket", + Region: "us-east-1", + AccessKeySecret: &apiv1.SecretKeySelector{ + LocalObjectReference: apiv1.LocalObjectReference{ + Name: "accesskey", + }, + Key: "access-key", + }, + SecretKeySecret: &apiv1.SecretKeySelector{ + LocalObjectReference: apiv1.LocalObjectReference{ + Name: "secretkey", + }, + Key: "secret-key", + }, + SessionTokenSecret: &apiv1.SecretKeySelector{ + LocalObjectReference: apiv1.LocalObjectReference{ + Name: "sessiontoken", + }, + Key: "session-token", + }, + }, + Key: "art", + }}, + } + + got, err := newDriver(context.TODO(), art, &mockResourceInterface{}) + require.NoError(t, err) + + artDriver := got.(*s3.ArtifactDriver) + assert.Equal(t, art.S3.AccessKeySecret.Key+"-secret", artDriver.AccessKey) + assert.Equal(t, art.S3.SecretKeySecret.Key+"-secret", artDriver.SecretKey) + assert.Equal(t, art.S3.SessionTokenSecret.Key+"-secret", artDriver.SessionToken) +} diff --git a/workflow/artifacts/s3/s3.go b/workflow/artifacts/s3/s3.go index 3255bd0eb874..5ce08584bc48 100644 --- a/workflow/artifacts/s3/s3.go +++ b/workflow/artifacts/s3/s3.go @@ -31,6 +31,7 @@ type ArtifactDriver struct { TrustedCA string AccessKey string SecretKey string + SessionToken string RoleARN string UseSDKCreds bool Context context.Context @@ -45,14 +46,15 @@ var _ artifactscommon.ArtifactDriver = &ArtifactDriver{} // newS3Client instantiates a new S3 client object. func (s3Driver *ArtifactDriver) newS3Client(ctx context.Context) (argos3.S3Client, error) { opts := argos3.S3ClientOpts{ - Endpoint: s3Driver.Endpoint, - Region: s3Driver.Region, - Secure: s3Driver.Secure, - AccessKey: s3Driver.AccessKey, - SecretKey: s3Driver.SecretKey, - RoleARN: s3Driver.RoleARN, - Trace: os.Getenv(common.EnvVarArgoTrace) == "1", - UseSDKCreds: s3Driver.UseSDKCreds, + Endpoint: s3Driver.Endpoint, + Region: s3Driver.Region, + Secure: s3Driver.Secure, + AccessKey: s3Driver.AccessKey, + SecretKey: s3Driver.SecretKey, + SessionToken: s3Driver.SessionToken, + RoleARN: s3Driver.RoleARN, + Trace: os.Getenv(common.EnvVarArgoTrace) == "1", + UseSDKCreds: s3Driver.UseSDKCreds, EncryptOpts: argos3.EncryptOpts{ KmsKeyId: s3Driver.KmsKeyId, KmsEncryptionContext: s3Driver.KmsEncryptionContext, diff --git a/workflow/controller/workflowpod.go b/workflow/controller/workflowpod.go index 3d0810a635e5..9530898014b0 100644 --- a/workflow/controller/workflowpod.go +++ b/workflow/controller/workflowpod.go @@ -1308,6 +1308,9 @@ func createSecretVolumesFromArtifactLocations(volMap map[string]apiv1.Volume, ar if artifactLocation.S3 != nil { createSecretVal(volMap, artifactLocation.S3.AccessKeySecret, keyMap) createSecretVal(volMap, artifactLocation.S3.SecretKeySecret, keyMap) + if artifactLocation.S3.SessionTokenSecret != nil { + createSecretVal(volMap, artifactLocation.S3.SessionTokenSecret, keyMap) + } sseCUsed := artifactLocation.S3.EncryptionOptions != nil && artifactLocation.S3.EncryptionOptions.EnableEncryption && artifactLocation.S3.EncryptionOptions.ServerSideCustomerKeySecret != nil if sseCUsed { createSecretVal(volMap, artifactLocation.S3.EncryptionOptions.ServerSideCustomerKeySecret, keyMap) diff --git a/workflow/controller/workflowpod_test.go b/workflow/controller/workflowpod_test.go index 99ceefab4f0e..debbffecf830 100644 --- a/workflow/controller/workflowpod_test.go +++ b/workflow/controller/workflowpod_test.go @@ -1249,7 +1249,94 @@ func Test_createSecretVolumesFromArtifactLocations_SSECUsed(t *testing.T) { break } } +} + +func TestCreateSecretVolumesFromArtifactLocationsSessionToken(t *testing.T) { + ctx := context.Background() + cancel, controller := newControllerWithComplexDefaults() + defer cancel() + + wf := wfv1.MustUnmarshalWorkflow(helloWorldWf) + wf.Spec.Templates[0].Inputs = wfv1.Inputs{ + Artifacts: []wfv1.Artifact{ + { + Name: "foo", + Path: "/tmp/file", + ArtifactLocation: wfv1.ArtifactLocation{ + S3: &wfv1.S3Artifact{ + Key: "/foo/key", + }, + }, + Archive: &wfv1.ArchiveStrategy{ + None: &wfv1.NoneStrategy{}, + }, + }, + }, + } + woc := newWorkflowOperationCtx(wf, controller) + setArtifactRepository(woc.controller, + &wfv1.ArtifactRepository{ + S3: &wfv1.S3ArtifactRepository{ + S3Bucket: wfv1.S3Bucket{ + Bucket: "foo", + AccessKeySecret: &apiv1.SecretKeySelector{ + LocalObjectReference: apiv1.LocalObjectReference{ + Name: "accesskey", + }, + Key: "access-key", + }, + SecretKeySecret: &apiv1.SecretKeySelector{ + LocalObjectReference: apiv1.LocalObjectReference{ + Name: "secretkey", + }, + Key: "secret-key", + }, + SessionTokenSecret: &apiv1.SecretKeySelector{ + LocalObjectReference: apiv1.LocalObjectReference{ + Name: "sessiontoken", + }, + Key: "session-token", + }, + }, + }, + }, + ) + + wantedKeysVolume := apiv1.Volume{ + Name: "sessiontoken", + VolumeSource: apiv1.VolumeSource{ + Secret: &apiv1.SecretVolumeSource{ + SecretName: "sessiontoken", + Items: []apiv1.KeyToPath{ + { + Key: "session-token", + Path: "session-token", + }, + }, + }, + }, + } + wantedInitContainerVolumeMount := apiv1.VolumeMount{ + Name: "sessiontoken", + ReadOnly: true, + MountPath: path.Join(common.SecretVolMountPath, "sessiontoken"), + } + + err := woc.setExecWorkflow(ctx) + require.NoError(t, err) + woc.operate(ctx) + + mainCtr := woc.execWf.Spec.Templates[0].Container + for i := 1; i < 5; i++ { + pod, _ := woc.createWorkflowPod(ctx, wf.Name, []apiv1.Container{*mainCtr}, &wf.Spec.Templates[0], &createWorkflowPodOpts{}) + if pod != nil { + assert.Contains(t, pod.Spec.Volumes, wantedKeysVolume) + assert.Len(t, pod.Spec.InitContainers, 1) + assert.Contains(t, pod.Spec.InitContainers[0].VolumeMounts, wantedInitContainerVolumeMount) + break + } + } } var helloWorldWfWithPatch = ` From c1c1c53f85328dfafd954b9a8466e3e7316a0911 Mon Sep 17 00:00:00 2001 From: Mason Malone <651224+MasonM@users.noreply.github.com> Date: Mon, 16 Sep 2024 00:45:48 -0700 Subject: [PATCH 003/106] docs(contrib): remove outdated section on using multiple terminals (#13604) Signed-off-by: Mason Malone --- docs/running-locally.md | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/docs/running-locally.md b/docs/running-locally.md index 4d269818e9cd..8e5c53ced90d 100644 --- a/docs/running-locally.md +++ b/docs/running-locally.md @@ -245,15 +245,3 @@ go tool pprof http://localhost:6060/debug/pprof/profile # 30-second CPU profil go tool pprof http://localhost:6060/debug/pprof/heap # heap profile go tool pprof http://localhost:6060/debug/pprof/block # goroutine blocking profile ``` - -## Using Multiple Terminals - -I run the controller in one terminal, and the UI in another. I like the UI: it is much faster to debug workflows than -the terminal. This allows you to make changes to the controller and re-start it, without restarting the UI (which I -think takes too long to start-up). - -As a convenience, `CTRL=false` implies `UI=true`, so just run: - -```bash -make start CTRL=false -``` From a968943c034323605e15b49bdb90b4c4327a25f5 Mon Sep 17 00:00:00 2001 From: William Van Hevelingen Date: Mon, 16 Sep 2024 00:58:33 -0700 Subject: [PATCH 004/106] chore: update golangci-lint to v1.61.0 (#13602) Signed-off-by: william.vanhevelingen --- .golangci.yml | 2 +- Makefile | 2 +- pkg/apiclient/argo-kube-client.go | 2 +- pkg/apiclient/http1/facade.go | 2 +- test/e2e/argo_server_test.go | 4 ++-- test/e2e/cron_test.go | 12 ------------ util/file/fileutil_test.go | 1 - util/template/validate_test.go | 4 ++-- workflow/controller/config.go | 2 +- workflow/controller/container_set_template_test.go | 6 +++--- workflow/controller/operator.go | 2 +- workflow/controller/operator_test.go | 1 - workflow/controller/steps.go | 4 ++-- workflow/controller/workflowpod_test.go | 1 - workflow/executor/resource.go | 4 ++-- workflow/metrics/metrics_custom.go | 2 +- 16 files changed, 18 insertions(+), 33 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 76eb5794fa71..b8b0227bd4f6 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -15,8 +15,8 @@ linters: - asasalint - bidichk - bodyclose + - copyloopvar - errcheck - - exportloopref - goimports # only minor issues # - errorlint diff --git a/Makefile b/Makefile index e2ac5268bbeb..b540113196f5 100644 --- a/Makefile +++ b/Makefile @@ -444,7 +444,7 @@ dist/manifests/%: manifests/% # lint/test/etc $(GOPATH)/bin/golangci-lint: - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b `go env GOPATH`/bin v1.59.1 + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b `go env GOPATH`/bin v1.61.0 .PHONY: lint lint: server/static/files.go $(GOPATH)/bin/golangci-lint diff --git a/pkg/apiclient/argo-kube-client.go b/pkg/apiclient/argo-kube-client.go index d984fcd54211..6678de64d3d2 100644 --- a/pkg/apiclient/argo-kube-client.go +++ b/pkg/apiclient/argo-kube-client.go @@ -34,7 +34,7 @@ import ( var ( argoKubeOffloadNodeStatusRepo = sqldb.ExplosiveOffloadNodeStatusRepo - NoArgoServerErr = fmt.Errorf("this is impossible if you are not using the Argo Server, see " + help.CLI()) + NoArgoServerErr = fmt.Errorf("this is impossible if you are not using the Argo Server, see %s", help.CLI()) ) type argoKubeClient struct { diff --git a/pkg/apiclient/http1/facade.go b/pkg/apiclient/http1/facade.go index de89d4af87a8..91b6468d3074 100644 --- a/pkg/apiclient/http1/facade.go +++ b/pkg/apiclient/http1/facade.go @@ -164,7 +164,7 @@ func errFromResponse(r *http.Response) error { Message string `json:"message"` }{} if err := json.NewDecoder(r.Body).Decode(x); err == nil { - return status.Errorf(x.Code, x.Message) + return status.Error(x.Code, x.Message) } return status.Error(codes.Internal, fmt.Sprintf(": %v", r)) } diff --git a/test/e2e/argo_server_test.go b/test/e2e/argo_server_test.go index fc7d6e99b298..ffb0e02c1cb5 100644 --- a/test/e2e/argo_server_test.go +++ b/test/e2e/argo_server_test.go @@ -338,14 +338,14 @@ func (s *ArgoServerSuite) TestOauth() { func (s *ArgoServerSuite) TestUnauthorized() { token := s.bearerToken - s.T().Run("Bearer", func(t *testing.T) { + s.Run("Bearer", func() { s.bearerToken = "test-token" defer func() { s.bearerToken = token }() s.e().GET("/api/v1/workflows/argo"). Expect(). Status(401) }) - s.T().Run("Basic", func(t *testing.T) { + s.Run("Basic", func() { s.username = "garbage" defer func() { s.username = "" }() s.e().GET("/api/v1/workflows/argo"). diff --git a/test/e2e/cron_test.go b/test/e2e/cron_test.go index 9eb439a154b8..f3ea97d16eda 100644 --- a/test/e2e/cron_test.go +++ b/test/e2e/cron_test.go @@ -43,7 +43,6 @@ func (s *CronSuite) TearDownSuite() { func (s *CronSuite) TestBasic() { s.Run("TestBasic", func() { - s.T().Parallel() s.Given(). CronWorkflow(`apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow @@ -76,7 +75,6 @@ spec: }) }) s.Run("TestBasicTimezone", func() { - s.T().Parallel() // This test works by scheduling a CronWorkflow for the next minute, but using the local time of another timezone // then seeing if the Workflow was ran within the next minute. Since this test would be trivial if the selected // timezone was the same as the local timezone, a little-used timezone is used. @@ -115,7 +113,6 @@ spec: }) }) s.Run("TestSuspend", func() { - s.T().Parallel() s.Given(). CronWorkflow(`apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow @@ -147,7 +144,6 @@ spec: }) }) s.Run("TestResume", func() { - s.T().Parallel() s.Given(). CronWorkflow(`apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow @@ -179,7 +175,6 @@ spec: }) }) s.Run("TestBasicForbid", func() { - s.T().Parallel() s.Given(). CronWorkflow(`apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow @@ -213,7 +208,6 @@ spec: }) }) s.Run("TestBasicAllow", func() { - s.T().Parallel() s.Given(). CronWorkflow(`apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow @@ -248,7 +242,6 @@ spec: }) }) s.Run("TestBasicReplace", func() { - s.T().Parallel() s.Given(). CronWorkflow(`apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow @@ -283,7 +276,6 @@ spec: }) }) s.Run("TestSuccessfulJobHistoryLimit", func() { - s.T().Parallel() var listOptions v1.ListOptions wfInformerListOptionsFunc(&listOptions, "test-cron-wf-succeed-1") s.Given(). @@ -318,7 +310,6 @@ spec: }) }) s.Run("TestFailedJobHistoryLimit", func() { - s.T().Parallel() var listOptions v1.ListOptions wfInformerListOptionsFunc(&listOptions, "test-cron-wf-fail-1") s.Given(). @@ -354,7 +345,6 @@ spec: }) }) s.Run("TestStoppingConditionWithSucceeded", func() { - s.T().Parallel() s.Given(). CronWorkflow(`apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow @@ -392,7 +382,6 @@ spec: }) }) s.Run("TestStoppingConditionWithFailed", func() { - s.T().Parallel() s.Given(). CronWorkflow(`apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow @@ -427,7 +416,6 @@ spec: }) }) s.Run("TestMultipleWithTimezone", func() { - s.T().Parallel() s.Given(). CronWorkflow(`apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow diff --git a/util/file/fileutil_test.go b/util/file/fileutil_test.go index 695c513d4003..42c08a4d49c2 100644 --- a/util/file/fileutil_test.go +++ b/util/file/fileutil_test.go @@ -134,7 +134,6 @@ func TestExistsInTar(t *testing.T) { }, } for _, tc := range tests { - tc := tc t.Run("source path "+tc.sourcePath, func(t *testing.T) { t.Parallel() tarReader := newTarReader(t, tc.files) diff --git a/util/template/validate_test.go b/util/template/validate_test.go index 9de5c6fb1856..fa3700d9c1ed 100644 --- a/util/template/validate_test.go +++ b/util/template/validate_test.go @@ -13,7 +13,7 @@ func Test_Validate(t *testing.T) { require.Error(t, err) }) t.Run("InvalidTag", func(t *testing.T) { - err := Validate("{{foo}}", func(tag string) error { return fmt.Errorf(tag) }) + err := Validate("{{foo}}", func(tag string) error { return fmt.Errorf("%s", tag) }) require.EqualError(t, err, "foo") }) t.Run("Simple", func(t *testing.T) { @@ -21,7 +21,7 @@ func Test_Validate(t *testing.T) { require.NoError(t, err) }) t.Run("Expression", func(t *testing.T) { - err := Validate("{{=foo}}", func(tag string) error { return fmt.Errorf(tag) }) + err := Validate("{{=foo}}", func(tag string) error { return fmt.Errorf("%s", tag) }) require.NoError(t, err) }) } diff --git a/workflow/controller/config.go b/workflow/controller/config.go index 61529a70dffd..a9b23b713f77 100644 --- a/workflow/controller/config.go +++ b/workflow/controller/config.go @@ -109,7 +109,7 @@ func (wfc *WorkflowController) executorImage() string { if v := wfc.Config.GetExecutor().Image; v != "" { return v } - return fmt.Sprintf("quay.io/argoproj/argoexec:" + argo.ImageTag()) + return fmt.Sprintf("quay.io/argoproj/argoexec:%s", argo.ImageTag()) } func (wfc *WorkflowController) executorLogFormat() string { diff --git a/workflow/controller/container_set_template_test.go b/workflow/controller/container_set_template_test.go index 470546b1e6b3..c83dbdcb1a01 100644 --- a/workflow/controller/container_set_template_test.go +++ b/workflow/controller/container_set_template_test.go @@ -65,7 +65,7 @@ spec: {Name: "var-run-argo", MountPath: common.VarRunArgoPath}, }, c.VolumeMounts) default: - t.Fatalf(c.Name) + t.Fatal(c.Name) } } } @@ -143,7 +143,7 @@ spec: {Name: "var-run-argo", MountPath: common.VarRunArgoPath}, }, c.VolumeMounts) default: - t.Fatalf(c.Name) + t.Fatal(c.Name) } } } @@ -213,7 +213,7 @@ spec: {Name: "var-run-argo", MountPath: common.VarRunArgoPath}, }, c.VolumeMounts) default: - t.Fatalf(c.Name) + t.Fatal(c.Name) } } } diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index 42709564ddd7..d05b3e79cbae 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -501,7 +501,7 @@ func (woc *wfOperationCtx) operate(ctx context.Context) { case wfv1.NodeFailed: woc.markWorkflowFailed(ctx, onExitNode.Message) default: - woc.markWorkflowError(ctx, fmt.Errorf(onExitNode.Message)) + woc.markWorkflowError(ctx, fmt.Errorf("%s", onExitNode.Message)) } } else { woc.markWorkflowSuccess(ctx) diff --git a/workflow/controller/operator_test.go b/workflow/controller/operator_test.go index 9339c0bc2550..7c01b1b774e3 100644 --- a/workflow/controller/operator_test.go +++ b/workflow/controller/operator_test.go @@ -2259,7 +2259,6 @@ func TestSidecarResourceLimits(t *testing.T) { require.NoError(t, err) var waitCtr *apiv1.Container for _, ctr := range pod.Spec.Containers { - ctr := ctr if ctr.Name == "wait" { waitCtr = &ctr break diff --git a/workflow/controller/steps.go b/workflow/controller/steps.go index 183c301402a7..d7e2860f7fd9 100644 --- a/workflow/controller/steps.go +++ b/workflow/controller/steps.go @@ -312,8 +312,8 @@ func (woc *wfOperationCtx) executeStepGroup(ctx context.Context, stepGroup []wfv childNode, err := woc.wf.Status.Nodes.Get(childNodeID) if err != nil { errorMsg := fmt.Sprintf("was unable to obtain childNode for %s", childNodeID) - woc.log.Errorf(errorMsg) - return nil, fmt.Errorf(errorMsg) + woc.log.Error(errorMsg) + return nil, fmt.Errorf("%s", errorMsg) } step := nodeSteps[childNode.Name] stepsCtx.scope.addParamToScope(fmt.Sprintf("steps.%s.status", childNode.DisplayName), string(childNode.Phase)) diff --git a/workflow/controller/workflowpod_test.go b/workflow/controller/workflowpod_test.go index debbffecf830..3bc3c4769e5c 100644 --- a/workflow/controller/workflowpod_test.go +++ b/workflow/controller/workflowpod_test.go @@ -622,7 +622,6 @@ func Test_createWorkflowPod_rateLimited(t *testing.T) { {Limit: 0, Burst: 1}: false, {Limit: 1, Burst: 1}: false, } { - limit := limit t.Run(fmt.Sprintf("%v", limit), func(t *testing.T) { wf := wfv1.MustUnmarshalWorkflow(helloWorldWf) cancel, controller := newController(wf, func(c *WorkflowController) { diff --git a/workflow/executor/resource.go b/workflow/executor/resource.go index d714cef55b90..24d041224d48 100644 --- a/workflow/executor/resource.go +++ b/workflow/executor/resource.go @@ -270,10 +270,10 @@ func matchConditions(jsonBytes []byte, successReqs labels.Requirements, failReqs for _, req := range failReqs { failed := req.Matches(ls) msg := fmt.Sprintf("failure condition '%s' evaluated %v", req, failed) - log.Infof(msg) + log.Info(msg) if failed { // We return false here to not retry when failure conditions met. - return false, errors.Errorf(errors.CodeBadRequest, msg) + return false, errors.Errorf(errors.CodeBadRequest, "%s", msg) } } numMatched := 0 diff --git a/workflow/metrics/metrics_custom.go b/workflow/metrics/metrics_custom.go index f4057540408d..77897a5d417c 100644 --- a/workflow/metrics/metrics_custom.go +++ b/workflow/metrics/metrics_custom.go @@ -162,7 +162,7 @@ func (m *Metrics) ensureBaseMetric(metricSpec *wfv1.Prometheus, ownerKey string) func (m *Metrics) UpsertCustomMetric(ctx context.Context, metricSpec *wfv1.Prometheus, ownerKey string, valueFunc RealTimeValueFunc) error { if !IsValidMetricName(metricSpec.Name) { - return fmt.Errorf(invalidMetricNameError) + return fmt.Errorf("%s", invalidMetricNameError) } baseMetric, err := m.ensureBaseMetric(metricSpec, ownerKey) if err != nil { From 860c862c0b4b1a67444d1263ddcfcc00909e8725 Mon Sep 17 00:00:00 2001 From: Anton Gilgur <4970083+agilgur5@users.noreply.github.com> Date: Mon, 16 Sep 2024 04:42:18 -0400 Subject: [PATCH 005/106] refactor(ui): reorganize `shared/utils.ts` (#13339) Signed-off-by: Anton Gilgur Signed-off-by: Anton Gilgur <4970083+agilgur5@users.noreply.github.com> --- ui/src/app/app-router.tsx | 17 +- .../cluster-workflow-template-details.tsx | 4 +- .../cron-workflows/cron-workflow-creator.tsx | 6 +- .../app/cron-workflows/cron-workflow-list.tsx | 6 +- ui/src/app/event-flow/event-flow-page.tsx | 6 +- .../event-sources/event-source-creator.tsx | 6 +- .../app/event-sources/event-source-list.tsx | 10 +- ui/src/app/plugins/plugin-list.tsx | 6 +- ui/src/app/reports/reports.tsx | 6 +- ui/src/app/sensors/sensor-creator.tsx | 6 +- ui/src/app/sensors/sensor-list.tsx | 15 +- ui/src/app/sensors/utils.ts | 42 ++-- .../shared/components/namespace-filter.tsx | 4 +- .../shared/components/parameters-input.tsx | 15 +- ui/src/app/shared/components/phase-icon.tsx | 29 ++- ui/src/app/shared/history.test.ts | 4 +- ui/src/app/shared/history.ts | 4 +- ui/src/app/shared/namespaces.ts | 64 ++++++ .../shared/services/cron-workflow-service.ts | 4 +- ui/src/app/shared/services/utils.ts | 76 +++++++ .../services/workflow-template-service.ts | 4 +- .../app/shared/services/workflows-service.ts | 8 +- ui/src/app/shared/utils.ts | 204 ------------------ ui/src/app/shared/workflow-operations-map.tsx | 33 ++- .../workflow-event-bindings.tsx | 6 +- .../workflow-template-creator.tsx | 6 +- .../workflow-template-list.tsx | 6 +- .../components/resubmit-workflow-panel.tsx | 5 +- .../components/retry-workflow-panel.tsx | 5 +- .../components/submit-workflow-panel.tsx | 7 +- .../workflows/components/workflow-creator.tsx | 6 +- .../components/workflow-dag/workflow-dag.tsx | 4 +- .../workflow-timeline/workflow-timeline.tsx | 4 +- .../workflows-list/workflows-list.tsx | 8 +- ui/src/app/workflows/utils.ts | 3 + 35 files changed, 310 insertions(+), 329 deletions(-) create mode 100644 ui/src/app/shared/namespaces.ts create mode 100644 ui/src/app/shared/services/utils.ts delete mode 100644 ui/src/app/shared/utils.ts create mode 100644 ui/src/app/workflows/utils.ts diff --git a/ui/src/app/app-router.tsx b/ui/src/app/app-router.tsx index 95dcb5273598..1e1db258da62 100644 --- a/ui/src/app/app-router.tsx +++ b/ui/src/app/app-router.tsx @@ -24,7 +24,7 @@ import {uiUrl} from './shared/base'; import {ChatButton} from './shared/components/chat-button'; import ErrorBoundary from './shared/components/error-boundary'; import {services} from './shared/services'; -import {Utils} from './shared/utils'; +import * as nsUtils from './shared/namespaces'; import userinfo from './userinfo'; import {Widgets} from './widgets/widgets'; import workflowEventBindings from './workflow-event-bindings'; @@ -59,21 +59,21 @@ export function AppRouter({popupManager, history, notificationsManager}: {popupM type: NotificationType.Error }); }; - Utils.onNamespaceChange = setNamespace; + nsUtils.setOnNamespaceChange(setNamespace); useEffect(() => { const sub = popupManager.popupProps.subscribe(setPopupProps); return () => sub.unsubscribe(); }, [popupManager]); useEffect(() => { services.info.getUserInfo().then(userInfo => { - Utils.userNamespace = userInfo.serviceAccountNamespace; - setNamespace(Utils.currentNamespace); + nsUtils.setUserNamespace(userInfo.serviceAccountNamespace); + setNamespace(nsUtils.getCurrentNamespace()); }); services.info .getInfo() .then(info => { - Utils.managedNamespace = info.managedNamespace; - setNamespace(Utils.currentNamespace); + nsUtils.setManagedNamespace(info.managedNamespace); + setNamespace(nsUtils.getCurrentNamespace()); setModals(info.modals); setNavBarBackgroundColor(info.navColor); }) @@ -82,7 +82,8 @@ export function AppRouter({popupManager, history, notificationsManager}: {popupM .catch(setError); }, []); - const namespaceSuffix = Utils.managedNamespace ? '' : '/' + (namespace || ''); + const managedNamespace = nsUtils.getManagedNamespace(); + const namespaceSuffix = managedNamespace ? '' : '/' + (namespace || ''); return ( <> {popupProps && } @@ -179,7 +180,7 @@ export function AppRouter({popupManager, history, notificationsManager}: {popupM - {Utils.managedNamespace && } + {managedNamespace && } {namespace && } diff --git a/ui/src/app/cluster-workflow-templates/cluster-workflow-template-details.tsx b/ui/src/app/cluster-workflow-templates/cluster-workflow-template-details.tsx index 2cda172f8dab..1ca93761a5c4 100644 --- a/ui/src/app/cluster-workflow-templates/cluster-workflow-template-details.tsx +++ b/ui/src/app/cluster-workflow-templates/cluster-workflow-template-details.tsx @@ -16,7 +16,7 @@ import {Context} from '../shared/context'; import {historyUrl} from '../shared/history'; import {services} from '../shared/services'; import {useQueryParams} from '../shared/use-query-params'; -import {Utils} from '../shared/utils'; +import * as nsUtils from '../shared/namespaces'; import {WorkflowDetailsList} from '../workflows/components/workflow-details-list/workflow-details-list'; import {SubmitWorkflowPanel} from '../workflows/components/submit-workflow-panel'; import {ClusterWorkflowTemplateEditor} from './cluster-workflow-template-editor'; @@ -73,7 +73,7 @@ export function ClusterWorkflowTemplateDetails({history, location, match}: Route setWorkflows(workflowList.items); setColumns(info.columns); - setNamespace(Utils.getNamespaceWithDefault(info.managedNamespace)); + setNamespace(nsUtils.getNamespaceWithDefault(info.managedNamespace)); setError(null); } catch (err) { setError(err); diff --git a/ui/src/app/cron-workflows/cron-workflow-creator.tsx b/ui/src/app/cron-workflows/cron-workflow-creator.tsx index b15f42e15dec..773438ac11e4 100644 --- a/ui/src/app/cron-workflows/cron-workflow-creator.tsx +++ b/ui/src/app/cron-workflows/cron-workflow-creator.tsx @@ -8,11 +8,11 @@ import {ExampleManifests} from '../shared/components/example-manifests'; import {UploadButton} from '../shared/components/upload-button'; import {exampleCronWorkflow} from '../shared/examples'; import {services} from '../shared/services'; -import {Utils} from '../shared/utils'; +import * as nsUtils from '../shared/namespaces'; import {CronWorkflowEditor} from './cron-workflow-editor'; export function CronWorkflowCreator({onCreate, namespace}: {namespace: string; onCreate: (cronWorkflow: CronWorkflow) => void}) { - const [cronWorkflow, setCronWorkflow] = useState(exampleCronWorkflow(Utils.getNamespaceWithDefault(namespace))); + const [cronWorkflow, setCronWorkflow] = useState(exampleCronWorkflow(nsUtils.getNamespaceWithDefault(namespace))); const [error, setError] = useState(); return ( <> @@ -22,7 +22,7 @@ export function CronWorkflowCreator({onCreate, namespace}: {namespace: string; o icon='plus' onClick={async () => { try { - const newCronWorkflow = await services.cronWorkflows.create(cronWorkflow, Utils.getNamespaceWithDefault(cronWorkflow.metadata.namespace)); + const newCronWorkflow = await services.cronWorkflows.create(cronWorkflow, nsUtils.getNamespaceWithDefault(cronWorkflow.metadata.namespace)); onCreate(newCronWorkflow); } catch (err) { setError(err); diff --git a/ui/src/app/cron-workflows/cron-workflow-list.tsx b/ui/src/app/cron-workflows/cron-workflow-list.tsx index cbcf08627e84..15b8dbf95f87 100644 --- a/ui/src/app/cron-workflows/cron-workflow-list.tsx +++ b/ui/src/app/cron-workflows/cron-workflow-list.tsx @@ -21,7 +21,7 @@ import {Footnote} from '../shared/footnote'; import {historyUrl} from '../shared/history'; import {services} from '../shared/services'; import {useQueryParams} from '../shared/use-query-params'; -import {Utils} from '../shared/utils'; +import * as nsUtils from '../shared/namespaces'; import {CronWorkflowCreator} from './cron-workflow-creator'; import {CronWorkflowFilters} from './cron-workflow-filters'; import {PrettySchedule} from './pretty-schedule'; @@ -36,7 +36,7 @@ export function CronWorkflowList({match, location, history}: RouteComponentProps const {navigation} = useContext(Context); // state for URL, query, and label parameters - const [namespace, setNamespace] = useState(Utils.getNamespace(match.params.namespace) || ''); + const [namespace, setNamespace] = useState(nsUtils.getNamespace(match.params.namespace) || ''); const [sidePanel, setSidePanel] = useState(queryParams.get('sidePanel') === 'true'); const [labels, setLabels] = useState([]); const [states, setStates] = useState(['Running', 'Suspended']); // check all by default @@ -55,7 +55,7 @@ export function CronWorkflowList({match, location, history}: RouteComponentProps useEffect( () => history.push( - historyUrl('cron-workflows' + (Utils.managedNamespace ? '' : '/{namespace}'), { + historyUrl('cron-workflows' + (nsUtils.getManagedNamespace() ? '' : '/{namespace}'), { namespace, sidePanel }) diff --git a/ui/src/app/event-flow/event-flow-page.tsx b/ui/src/app/event-flow/event-flow-page.tsx index 4e7e211b15c5..721f79dfb612 100644 --- a/ui/src/app/event-flow/event-flow-page.tsx +++ b/ui/src/app/event-flow/event-flow-page.tsx @@ -28,7 +28,7 @@ import {ListWatch} from '../shared/list-watch'; import {RetryObservable} from '../shared/retry-observable'; import {services} from '../shared/services'; import {useQueryParams} from '../shared/use-query-params'; -import {Utils} from '../shared/utils'; +import * as nsUtils from '../shared/namespaces'; import {EventsPanel} from '../workflows/components/events-panel'; import {FullHeightLogsViewer} from '../workflows/components/workflow-logs-viewer/full-height-logs-viewer'; import {buildGraph} from './build-graph'; @@ -43,7 +43,7 @@ export function EventFlowPage({history, location, match}: RouteComponentProps history.push( - historyUrl('event-flow' + (Utils.managedNamespace ? '' : '/{namespace}'), { + historyUrl('event-flow' + (nsUtils.getManagedNamespace() ? '' : '/{namespace}'), { namespace, showFlow, showWorkflows, diff --git a/ui/src/app/event-sources/event-source-creator.tsx b/ui/src/app/event-sources/event-source-creator.tsx index 7ffaae028a3c..b226f8e9c8b3 100644 --- a/ui/src/app/event-sources/event-source-creator.tsx +++ b/ui/src/app/event-sources/event-source-creator.tsx @@ -7,11 +7,11 @@ import {ErrorNotice} from '../shared/components/error-notice'; import {UploadButton} from '../shared/components/upload-button'; import {exampleEventSource} from '../shared/examples'; import {services} from '../shared/services'; -import {Utils} from '../shared/utils'; +import * as nsUtils from '../shared/namespaces'; import {EventSourceEditor} from './event-source-editor'; export function EventSourceCreator({onCreate, namespace}: {namespace: string; onCreate: (eventSource: EventSource) => void}) { - const [eventSource, setEventSource] = useState(exampleEventSource(Utils.getNamespaceWithDefault(namespace))); + const [eventSource, setEventSource] = useState(exampleEventSource(nsUtils.getNamespaceWithDefault(namespace))); const [error, setError] = useState(); return ( <> @@ -21,7 +21,7 @@ export function EventSourceCreator({onCreate, namespace}: {namespace: string; on icon='plus' onClick={async () => { try { - const newEventSource = await services.eventSource.create(eventSource, Utils.getNamespaceWithDefault(eventSource.metadata.namespace)); + const newEventSource = await services.eventSource.create(eventSource, nsUtils.getNamespaceWithDefault(eventSource.metadata.namespace)); onCreate(newEventSource); } catch (err) { setError(err); diff --git a/ui/src/app/event-sources/event-source-list.tsx b/ui/src/app/event-sources/event-source-list.tsx index f6824cfc66a6..c9013115d0c2 100644 --- a/ui/src/app/event-sources/event-source-list.tsx +++ b/ui/src/app/event-sources/event-source-list.tsx @@ -8,7 +8,7 @@ import {Link, RouteComponentProps} from 'react-router-dom'; import {EventSource, kubernetes} from '../../models'; import {ID} from '../event-flow/id'; -import {Utils as EventsUtils} from '../sensors/utils'; +import {statusIconClasses} from '../sensors/utils'; import {uiUrl} from '../shared/base'; import {ErrorNotice} from '../shared/components/error-notice'; import {Node} from '../shared/components/graph/types'; @@ -22,7 +22,7 @@ import {Footnote} from '../shared/footnote'; import {historyUrl} from '../shared/history'; import {services} from '../shared/services'; import {useQueryParams} from '../shared/use-query-params'; -import {Utils} from '../shared/utils'; +import * as nsUtils from '../shared/namespaces'; import {EventsPanel} from '../workflows/components/events-panel'; import {EventSourceCreator} from './event-source-creator'; import {EventSourceLogsViewer} from './event-source-log-viewer'; @@ -36,7 +36,7 @@ export function EventSourceList({match, location, history}: RouteComponentProps< const {navigation} = useContext(Context); // state for URL and query parameters - const [namespace, setNamespace] = useState(Utils.getNamespace(match.params.namespace) || ''); + const [namespace, setNamespace] = useState(nsUtils.getNamespace(match.params.namespace) || ''); const [sidePanel, setSidePanel] = useState(queryParams.get('sidePanel') === 'true'); const [selectedNode, setSelectedNode] = useState(queryParams.get('selectedNode')); const [tab, setTab] = useState(queryParams.get('tab')); @@ -53,7 +53,7 @@ export function EventSourceList({match, location, history}: RouteComponentProps< useEffect( () => history.push( - historyUrl('event-sources' + (Utils.managedNamespace ? '' : '/{namespace}'), { + historyUrl('event-sources' + (nsUtils.getManagedNamespace() ? '' : '/{namespace}'), { namespace, sidePanel, selectedNode, @@ -140,7 +140,7 @@ export function EventSourceList({match, location, history}: RouteComponentProps< key={`${es.metadata.namespace}/${es.metadata.name}`} to={uiUrl(`event-sources/${es.metadata.namespace}/${es.metadata.name}`)}>
- +
{es.metadata.name}
{es.metadata.namespace}
diff --git a/ui/src/app/plugins/plugin-list.tsx b/ui/src/app/plugins/plugin-list.tsx index 46aca4b03538..4a65422639c8 100644 --- a/ui/src/app/plugins/plugin-list.tsx +++ b/ui/src/app/plugins/plugin-list.tsx @@ -7,15 +7,15 @@ import {uiUrl} from '../shared/base'; import {useCollectEvent} from '../shared/use-collect-event'; import {ZeroState} from '../shared/components/zero-state'; import {historyUrl} from '../shared/history'; -import {Utils} from '../shared/utils'; +import * as nsUtils from '../shared/namespaces'; export function PluginList({match, history}: RouteComponentProps) { // state for URL and query parameters - const [namespace] = useState(Utils.getNamespace(match.params.namespace) || ''); + const [namespace] = useState(nsUtils.getNamespace(match.params.namespace) || ''); useEffect( () => history.push( - historyUrl('plugins' + (Utils.managedNamespace ? '' : '/{namespace}'), { + historyUrl('plugins' + (nsUtils.getManagedNamespace() ? '' : '/{namespace}'), { namespace }) ), diff --git a/ui/src/app/reports/reports.tsx b/ui/src/app/reports/reports.tsx index aef2178380d6..b7cd2ca6e5d2 100644 --- a/ui/src/app/reports/reports.tsx +++ b/ui/src/app/reports/reports.tsx @@ -15,7 +15,7 @@ import {Context} from '../shared/context'; import {Footnote} from '../shared/footnote'; import {historyUrl} from '../shared/history'; import {services} from '../shared/services'; -import {Utils} from '../shared/utils'; +import * as nsUtils from '../shared/namespaces'; import {ReportFilters} from './reports-filters'; import {workflowsToChartData} from './workflows-to-chart-data'; @@ -31,7 +31,7 @@ export function Reports({match, location, history}: RouteComponentProps) { const {navigation} = useContext(Context); // state for URL, query, and label parameters - const [namespace, setNamespace] = useState(Utils.getNamespace(match.params.namespace) || ''); + const [namespace, setNamespace] = useState(nsUtils.getNamespace(match.params.namespace) || ''); const [labels, setLabels] = useState((queryParams.get('labels') || '').split(',').filter(v => v !== '')); // internal state const [charts, setCharts] = useState(); @@ -39,7 +39,7 @@ export function Reports({match, location, history}: RouteComponentProps) { // save history useEffect(() => { - history.push(historyUrl('reports' + (Utils.managedNamespace ? '' : '/{namespace}'), {namespace, labels: labels.join(',')})); + history.push(historyUrl('reports' + (nsUtils.getManagedNamespace() ? '' : '/{namespace}'), {namespace, labels: labels.join(',')})); }, [namespace, labels]); async function onChange(newNamespace: string, newLabels: string[]) { diff --git a/ui/src/app/sensors/sensor-creator.tsx b/ui/src/app/sensors/sensor-creator.tsx index 04a98020046a..57f908955b8a 100644 --- a/ui/src/app/sensors/sensor-creator.tsx +++ b/ui/src/app/sensors/sensor-creator.tsx @@ -7,11 +7,11 @@ import {ErrorNotice} from '../shared/components/error-notice'; import {UploadButton} from '../shared/components/upload-button'; import {exampleSensor} from '../shared/examples'; import {services} from '../shared/services'; -import {Utils} from '../shared/utils'; +import * as nsUtils from '../shared/namespaces'; import {SensorEditor} from './sensor-editor'; export function SensorCreator({namespace, onCreate}: {namespace: string; onCreate: (sensor: Sensor) => void}) { - const [sensor, setSensor] = useState(exampleSensor(Utils.getNamespaceWithDefault(namespace))); + const [sensor, setSensor] = useState(exampleSensor(nsUtils.getNamespaceWithDefault(namespace))); const [error, setError] = useState(); return ( <> @@ -21,7 +21,7 @@ export function SensorCreator({namespace, onCreate}: {namespace: string; onCreat icon='plus' onClick={async () => { try { - const newSensor = await services.sensor.create(sensor, Utils.getNamespaceWithDefault(sensor.metadata.namespace)); + const newSensor = await services.sensor.create(sensor, nsUtils.getNamespaceWithDefault(sensor.metadata.namespace)); onCreate(newSensor); } catch (err) { setError(err); diff --git a/ui/src/app/sensors/sensor-list.tsx b/ui/src/app/sensors/sensor-list.tsx index 75201aa0b3d3..deb9162a8093 100644 --- a/ui/src/app/sensors/sensor-list.tsx +++ b/ui/src/app/sensors/sensor-list.tsx @@ -20,11 +20,11 @@ import {Footnote} from '../shared/footnote'; import {historyUrl} from '../shared/history'; import {services} from '../shared/services'; import {useQueryParams} from '../shared/use-query-params'; -import {Utils} from '../shared/utils'; +import useTimestamp, {TIMESTAMP_KEYS} from '../shared/use-timestamp'; +import * as nsUtils from '../shared/namespaces'; import {SensorCreator} from './sensor-creator'; import {SensorSidePanel} from './sensor-side-panel'; -import {Utils as EventsUtils} from './utils'; -import useTimestamp, {TIMESTAMP_KEYS} from '../shared/use-timestamp'; +import {statusIconClasses} from './utils'; const learnMore = Learn more; @@ -34,7 +34,7 @@ export function SensorList({match, location, history}: RouteComponentProps) const {navigation} = useContext(Context); // state for URL and query parameters - const [namespace, setNamespace] = useState(Utils.getNamespace(match.params.namespace) || ''); + const [namespace, setNamespace] = useState(nsUtils.getNamespace(match.params.namespace) || ''); const [sidePanel, setSidePanel] = useState(queryParams.get('sidePanel') === 'true'); const [selectedNode, setSelectedNode] = useState(queryParams.get('selectedNode')); @@ -49,7 +49,7 @@ export function SensorList({match, location, history}: RouteComponentProps) useEffect( () => history.push( - historyUrl('sensors' + (Utils.managedNamespace ? '' : '/{namespace}'), { + historyUrl('sensors' + (nsUtils.getManagedNamespace() ? '' : '/{namespace}'), { namespace, sidePanel, selectedNode @@ -135,10 +135,7 @@ export function SensorList({match, location, history}: RouteComponentProps) key={`${s.metadata.namespace}/${s.metadata.name}`} to={uiUrl(`sensors/${s.metadata.namespace}/${s.metadata.name}`)}>
-