Fission事件溯源:构建可审计的Serverless应用

Fission事件溯源:构建可审计的Serverless应用

【免费下载链接】fission Fast and Simple Serverless Functions for Kubernetes 【免费下载链接】fission 项目地址: https://gitcode.com/gh_mirrors/fi/fission

在云原生Serverless架构中,函数的动态扩缩和事件驱动特性为业务带来了极大灵活性,但也为操作审计和问题排查带来了挑战。当一个函数因未知原因执行失败或产生异常结果时,如何快速定位问题根源?当业务数据出现异常时,如何追踪每一步操作的发起者和处理过程?Fission作为Kubernetes原生的Serverless框架,通过内置的事件发布机制和可扩展的追踪能力,为构建可审计的Serverless应用提供了基础设施支持。本文将从事件溯源的核心概念出发,详细介绍如何利用Fission的事件系统实现函数执行全链路追踪,并通过实际案例展示可审计架构的最佳实践。

事件溯源与Serverless的碰撞

事件溯源(Event Sourcing)是一种将系统状态变更记录为事件序列的设计模式,通过重放这些事件可以重建系统在任意时间点的状态。在Serverless场景中,这一模式具有特殊价值:函数的每次执行都是对特定事件的响应,而事件流本身就构成了系统行为的完整审计日志。Fission作为Kubernetes原生的Serverless框架,其设计理念与事件溯源高度契合——所有函数的创建、更新、触发和执行过程都可以被捕获为结构化事件,这些事件不仅记录了"发生了什么",还包含了"何时发生"、"由谁触发"等关键审计维度。

Fission的事件处理架构基于模块化的发布-订阅模式,核心定义在Publisher接口中。该接口要求所有事件发布者实现Publish方法,确保事件数据(body)、元数据(headers)、操作类型(method)和目标资源(target)能够被标准化捕获。这种设计使得Fission可以灵活对接不同的事件存储后端,从简单的日志文件到专业的事件总线(如Kafka、NATS),为构建符合企业级合规要求的审计系统提供了基础。

Fission事件捕获的技术实现

Fission的事件生成机制渗透在系统的各个关键流程中,从函数的生命周期管理到每次执行调用,形成了完整的事件采集网络。通过分析Fission的源代码,我们可以识别出三类核心审计事件:资源变更事件、函数执行事件和系统操作事件,这些事件分别由不同的组件负责生成和发布。

资源变更事件:追踪函数定义的每一次修改

当用户通过Fission CLI或API创建、更新或删除函数、环境或触发器时,Webhook服务器会记录这些操作并生成审计事件。以函数资源为例,在function.go中,每次函数创建或更新前都会触发验证逻辑,同时通过结构化日志记录操作详情:

functionlog.Debug("validate create", zap.String("name", new.Name))
functionlog.Debug("validate update", zap.String("name", new.Name))

这些日志条目包含函数名称、命名空间、操作类型等关键元数据,通过配置适当的日志收集规则,可以将其转化为审计事件。类似的日志记录模式同样存在于环境管理(environment.go)、HTTP触发器(httptrigger.go)等资源的处理流程中,形成了覆盖所有核心资源的变更审计能力。

函数执行事件:记录每次调用的完整上下文

函数执行是Serverless应用的核心行为,Fission通过两种机制捕获执行事件:同步的日志输出和异步的事件发布。在函数执行过程中,Executor组件会生成包含追踪ID的结构化日志,而更精细的执行详情可以通过扩展Publisher接口实现。例如,WebhookPublisher作为Publisher接口的HTTP实现,可以将函数执行事件以POST请求的形式发送到指定端点,事件体中包含函数名称、触发源、执行时长、返回状态等关键指标。

系统操作事件:监控平台自身的行为

除了用户层面的函数操作,Fission还会记录系统级事件,如构建器活动(builder.go)、环境镜像拉取(fetcher.go)等平台内部操作。这些事件对于排查平台级故障至关重要,例如当函数部署失败时,Buildermgr的日志可以提供构建过程的详细上下文:

logger.Error(
  "build error",
  zap.Error(err),
  zap.String("buildLog", string(output)),
  zap.String("functionName", req.FunctionName),
  zap.String("environmentName", req.EnvironmentName),
)

构建可审计的Fission应用:从配置到实践

基于Fission构建可审计的Serverless应用需要从事件采集、存储、分析三个层面进行系统设计。事件采集层负责捕获Fission的各类事件并标准化格式;存储层需要保证事件数据的完整性和不可篡改性;分析层则提供查询和可视化能力,满足日常审计和事后追溯需求。下面我们将通过一个实际案例,展示如何配置Fission以实现函数执行的全链路追踪。

事件采集配置:开启Fission的可观测性开关

Fission的事件采集能力默认通过日志系统实现,要启用结构化审计日志,需要在部署时配置适当的日志级别和输出格式。通过修改Fission部署的values.yaml文件,可以调整关键组件的日志参数:

# 在charts/fission-all/values.yaml中配置日志级别
logger:
  level: debug
  format: json

将日志级别设置为debug可以捕获更详细的事件信息,而json格式则便于日志系统解析结构化数据。对于生产环境,建议仅为审计关键路径(如webhook、executor)启用debug级别日志,以平衡可观测性和性能开销。

自定义事件处理器:扩展Publisher接口

虽然Fission提供了基础的事件发布能力,但企业级审计系统通常需要更灵活的事件处理逻辑。通过实现Publisher接口,我们可以创建自定义事件处理器,将事件数据发送到专用的审计服务。以下是一个将事件写入Kafka的示例实现:

type KafkaPublisher struct {
    producer *kafka.Producer
    topic    string
}

func (k *KafkaPublisher) Publish(ctx context.Context, body string, headers map[string]string, method, target string) {
    msg := &kafka.Message{
        TopicPartition: kafka.TopicPartition{Topic: &k.topic, Partition: kafka.PartitionAny},
        Value:          []byte(body),
    }
    // 添加审计相关头信息
    for k, v := range headers {
        msg.Headers = append(msg.Headers, kafka.Header{Key: k, Value: []byte(v)})
    }
    k.producer.SendMessage(msg)
}

将自定义的KafkaPublisher注册到Fission的事件系统后,所有函数执行事件都会被持久化到Kafka主题中,为后续的审计分析提供可靠的事件源。

审计事件的结构化设计

有效的事件溯源依赖于标准化的事件格式,建议遵循CloudEvents规范设计Fission的审计事件结构。一个典型的函数执行审计事件应包含以下字段:

字段名描述来源
id事件唯一标识符UUID生成
source事件产生组件Fission组件名称(如executor、router)
type事件类型如"function.executed"、"function.updated"
subject事件主体函数名称或资源ID
time事件发生时间RFC3339格式时间戳
data事件详细数据包含执行结果、触发参数等

通过统一的事件格式,不同类型的Fission事件可以被同一套审计系统处理,实现跨组件的关联分析。

案例实践:电商订单处理的审计追踪

为了具体展示Fission事件溯源的实际应用,我们以电商平台的订单处理流程为例,构建一个包含创建订单、库存扣减、支付处理三个步骤的Serverless应用,并实现全流程的审计追踪。这个案例将展示如何通过Fission的事件机制,记录每个函数的执行状态和数据变更,从而在出现订单异常时能够快速定位问题环节。

架构设计:事件驱动的订单处理流程

![订单处理事件流](https://mermaid.ink/img/pako:eNqFk81OAjEQx19l5k4k41C3dIJsU3aQ9aQdE121aYQdKpSdC01L4730kK1rQqK9l3PnNnN9nO4iRQ8Cg1gYt5g6rYlA1d4V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDdJ2XlD2WvYH1W1X0G1V0mXzDd

【免费下载链接】fission Fast and Simple Serverless Functions for Kubernetes 【免费下载链接】fission 项目地址: https://gitcode.com/gh_mirrors/fi/fission

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值