华为云用户手册
-
前提条件 已申请VPC、子网和安全组。 CDM 集群连接云上其它服务时,需确保CDM集群与待连接的云服务在同一个VPC。如果CDM集群与其它云服务所属不同VPC,则CDM集群需要通过EIP连接云服务。 当CDM集群与其他云服务所在的区域、VPC、子网、安全组一致时,可保证CDM集群与其他云服务内网互通,无需专门打通网络。 当CDM集群与其他云服务所在的区域和VPC一致、但子网或安全组不一致时,需配置路由规则及安全组规则以打通网络。配置路由规则请参见如何配置路由规则章节,配置安全组规则请参见如何配置安全组规则章节。 当CDM集群与其他云服务所在的区域一致、但VPC不一致时,可以通过对等连接打通网络。配置对等连接请参见如何配置对等连接章节。 注:如果配置了VPC对等连接,可能会出现对端VPC子网与CDM管理网重叠,从而无法访问对端VPC中数据源的情况。推荐使用公网做跨VPC数据迁移,或联系管理员在CDM后台为VPC对等连接添加特定路由。 当CDM集群与其他云服务所在的区域不一致时,则需要通过公网或者专线打通网络。通过公网互通时,需确保CDM集群已绑定EIP、CDM云上安全组出方向放通云下数据源所在的主机、数据源所在的主机可以访问公网且防火墙规则已开放连接端口。 另外,如果创建了企业项目,则企业项目也会影响CDM集群与其他云服务的网络互通,只有企业项目一致的云服务才能打通网络。
-
操作场景 DataArts Studio 实例中已经包含一个仅用于测试、试用等非正式业务场景的CDM集群(试用版除外)。 如果该集群已经满足您的使用需求,则无需再购买批量数据迁移增量包。 如果您需要CDM集群用于满足业务需求,请通过按需计费方式购买批量数据迁移增量包,详情请参考按需计费方式购买数据集成集群。 如果您需要为购买的CDM集群匹配套餐包用于降低使用成本,请通过套餐包方式购买批量数据迁移增量包,详情请参考套餐包方式购买数据集成集群。 DataArts Studio实例赠送的CDM集群,由于规格限制,仅用于测试、试用等非正式业务场景。用于业务场景的CDM集群可以通过“批量数据迁移增量包”进行购买,且不建议同时作为数据连接Agent代理和运行数据迁移作业使用。
-
启动作业调度 元数据采集完成后,系统基于最新的作业调度实例产生相关的数据血缘关系。 参考访问DataArts Studio实例控制台,登录DataArts Studio管理控制台。 在DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。 在数据开发控制台,单击左侧导航栏中的作业开发按钮,进入作业开发页面后,打开已完成血缘配置的作业。 在数据开发中,当作业进行“执行调度”时,系统开始解析血缘关系。 测试运行不会解析血缘。 图1 作业调度 待调度作业成功运行完成后,等待约1分钟左右,数据血缘关系即可生成成功。
-
自动血缘解析 自动血缘解析无需进行手动配置,当数据开发作业中包含如表1所示节点及场景时,系统支持自动解析血缘关系。 解析SQL节点的血缘时,支持多SQL解析及列级血缘解析,单条SQL语句不支持SQL中含有分号的场景。 表1 支持自动血缘解析的作业节点及场景 作业节点 支持场景 DLI SQL 支持解析DLI中表与表之间数据插入产生的血缘。 支持通过建表语句产生的OBS文件到DLI表之间的血缘。 DWS SQL 支持Insert into等DML操作产生的DWS表之间的血缘。 MRS Hive SQL 支持Insert into/overwrite等DML操作产生的MRS表之间的血缘。 MRS Spark SQL 支持Insert into/overwrite等DML操作产生的MRS表之间的血缘。 CDM Job 支持MRS Hive、DLI、DWS、RDS、OBS以及 CSS 之间表文件迁移所产生的血缘。 ETL Job 支持DLI、OBS、MySQL以及DWS之间的ETL任务产生的血缘。
-
DataArts Studio数据血缘实现方案 数据血缘的产生: DataArts Studio数据血缘解析方案包含自动分析血缘和手动配置血缘两种方式。一般推荐使用自动血缘解析的方式,无需手动配置即可生成血缘关系,在不支持自动血缘解析的场景下,再手动配置血缘关系。 自动血缘解析,是由系统解析数据开发作业中的数据处理和数据迁移类型节点后自动产生的,无需进行手动配置。支持自动血缘解析的节点类型和场景请参见自动血缘解析。 手动配置血缘,是在数据开发作业节点中,自定义血缘关系的输入表和输出表。注意手动配置血缘时,此节点的自动血缘解析将不生效。支持手动配置血缘的节点类型请参见手动配置血缘。 数据血缘的展示: 首先在数据目录组件完成元数据采集任务,当数据开发作业满足自动血缘解析要求或已手动配置血缘,然后成功完成作业调度后,则可以在数据目录模块可视化查看数据血缘关系。
-
什么是数据血缘 大数据时代,数据爆发性增长,海量的、各种类型的数据在快速产生。这些庞大复杂的数据信息,通过联姻融合、转换变换、流转流通,又生成新的数据,汇聚成数据的海洋。 数据的产生、加工融合、流转流通,到最终消亡,数据之间自然会形成一种关系。我们借鉴人类社会中类似的一种关系来表达数据之间的这种关系,称之为数据的血缘关系。与人类社会中的血缘关系不同,数据的血缘关系还包含了一些特有的特征: 归属性:一般来说,特定的数据归属特定的组织或者个人,数据具有归属性。 多源性:同一个数据可以有多个来源(多个父亲)。一个数据可以是多个数据经过加工而生成的,而且这种加工过程可以是多个。 可追溯性:数据的血缘关系,体现了数据的生命周期,体现了数据从产生到消亡的整个过程,具备可追溯性。 层次性:数据的血缘关系是有层次的。对数据的分类、归纳、总结等对数据进行的描述信息又形成了新的数据,不同程度的描述信息形成了数据的层次。 DataArts Studio生成的血缘关系图如图1所示,为数据表对象,为作业节点对象,通过对象和箭头的编排表示血缘信息。从血缘关系图中可以看到,wk_02表数据是由wk_01表数据经过hive_1作业节点加工而生成的,wk_02表数据经由hive_2作业节点加工又分别生成了wk_03、wk_04和wk_05的表数据。 图1 数据血缘关系示例
-
计划时间参数 计划时间是指在调度时间内,任务预期调度运行的时间点(即当天)。该参数是通过yyyy、yy、mm、dd、hh24、mi和ss自定义组合而生成的时间参数,其格式可自定义。例如,$[yyyymmdd]、$[yyyy-mm-dd]、$[hh24miss]、$[hh24:mi:ss]和$[yyyymmddhh24miss]等。 yyyy:表示4位的年份,取值为计划时间的年份。 yy:表示2位的年份,取值为计划时间的年份后两位。 mm:表示月份,取值为计划时间的月份。 dd:表示天,取值为计划时间的天。 hh:表示12小时制,取值为计划时间的小时。 hh24:表示24小时制,取值为计划时间的小时。 mi:表示分钟,取值为计划时间的分钟。 ss:表示秒,取值为计划时间的秒。 取N小时前、N分钟前的时间数据请参考表2,该参数不支持通过$[yyyy-N]、$[mm-N]等直接获取多少年前、多少月前的时间数据。 表2 计划时间参数获取说明 计划时间场景 获取方法 后N年 $[add_months(yyyymmdd,12*N)] 前N年 $[add_months(yyyymmdd,-12*N)] 后N月 $[add_months(yyyymmdd,N)] 前N月 $[add_months(yyyymmdd,-N)] 前/后N周 $[yyyymmdd±7*N] 前/后N天 $[yyyymmdd±N] 前/后N小时 获取该时间数据包含如下两种方式: $[hh24miss±N/24] $[自定义时间格式±N/24]。 例如,取前一个小时的不同时间格式: 取月:$[mm-1/24]。 取年:$[yyyy-1/24]。 取年月:$[yyyymm-1/24]。 取年月日:$[yyyymmdd-1/24]。 取前一天且前一小时:$[yyyymmdd-1-1/24] 前/后N分钟 获取该时间数据包含如下四种方式: $[hh24miss±N/24/60] $[yyyymmddhh24miss±N/24/60] $[mi±N/24/60] $[自定义时间格式±N/24/60] 例如,取计划时间15分钟前的不同时间格式: 取年:$[yyyy-15/24/60] 取年月:$[yyyymm-15/24/60] 取年月日:$[yyyymmdd-15/24/60] 取小时:$[hh24-15/24/60] 取分钟:$[mi-15/24/60] 调度参数替换值在实例生成时已经确定,所以调度参数的替换值不会随着实例实际运行时间的改变而改变。 当调度参数取小时、分钟时,参数替换值由实例的计划时间决定,即由节点调度配置的计划调度时间决定。举例如下: 如果当前节点为日调度节点,并且设置计划调度时间为01:00,则小时的参数取值为01。 如果当前节点为小时调度节点,并且设置计划调度时间为00:00~23:59,每小时调度一次,则:第一个小时实例计划时间为0点,小时的参数取值为00,第二个小时实例计划时间为1点,小时的参数取值为01,以此类推。
-
业务日期参数 业务日期是指在调度时间内,任务预期调度运行时间的前一天(即昨天)。例如,调度日期为2023年1月1日,那么业务日期就是2022年12月31日。该参数是通过yyyy、yy、mm和dd自定义组合而生成的时间参数,其格式可自定义。例如,${yyyy}、${yyyymm}、${yyyymmdd}和${yyyy-mm-dd}等。 yyyy:表示4位的年份,取值为业务日期的年份。 yy:表示2位的年份,取值为业务日期的年份后两位。 mm:表示月份,取值为业务日期的月份。 dd:表示天,取值为业务日期的天。 取N年前、N月前、N天前的时间数据请参考表1,参数只能精确到年月日,不支持小时、分钟、秒的写法。 表1 业务日期参数获取说明 业务日期场景 获取方法 前/后N年 ${yyyy±N} 前/后N月 ${yyyymm±N} 前/后N周 ${yyyymmdd±7*N} 前/后N天 ${yyyymmdd±N} 前/后N年(yy格式) ${yy±N}
-
方法 表1 方法说明 方法 说明 示例 boolean isExistOBSPath(String obsPath) 判断OBS文件或目录(目录请以“/”结尾)是否存在,存在返回true,不存在返回false。 判断OBS目录是否存在,目录请以“/”结尾,EL表达式如下: #{OBSUtil.isExistOBSPath("obs://test/jobs/")} 判断OBS文件是否存在,EL表达式如下: #{OBSUtil.isExistOBSPath("obs://test/jobs/job.log")}
-
数据架构使用流程 DataArts Studio数据架构的流程如下: 图1 数据架构流程 准备工作: 添加审核人:在数据架构中,业务流程中的步骤都需要经过审批,因此,需要先添加审核人。只有工作空间管理员角色的用户才具有添加审核人的权限。 管理配置中心:数据架构中提供了丰富的自定义选项,统一通过配置中心提供,您需要根据自己的业务需要进行自定义配置。 数据调研:基于现有业务数据、行业现状进行数据调查、需求梳理、业务调研,输出企业业务流程以及数据主题划分。 主题设计:通过分层架构表达对数据的分类和定义,帮助厘清数据资产,明确业务领域和业务对象的关联关系。 主题域分组:基于业务场景对主题域进行分组。 主题域:互不重叠数据的高层面的数据分类,用于管理其下一级的业务对象。 业务对象:指企业运作和管理中不可缺少的重要人、事、物信息。 流程设计:针对流程的一个结构化的整体框架,描述了企业流程的分类、层级以及边界、范围、输入/输出关系等,反映了企业的商业模式及业务特点。 数仓规划:对数仓分层以及数仓建模进行统一管理。支持用户自定义数仓分层。 标准设计:新建码表&数据标准。 新建码表:通常只包括一系列允许的值和附加文本描述,与数据标准关联用于生成值域校验质量监控。 新建数据标准:用于描述公司层面需共同遵守的属性层数据含义和业务规则。其描述了公司层面对某个数据的共同理解,这些理解一旦确定下来,就应作为企业层面的标准在企业内被共同遵守。 模型设计:应用逻辑模型、关系建模、维度建模和数据集市的方法,进行分层建模。 逻辑模型:用于创建逻辑模型以及逻辑模型的修改和删除,转化为物理模型。同时,可以对逻辑实体进行创建及发布,进行逆向数据库等操作。 关系建模:基于关系建模,新建SDI层和DWI层两个模型。 SDI:Source Data Integration,又称贴源数据层。SDI是源系统数据的简单落地。 DWI:Data Warehouse Integration,又称数据整合层。DWI整合多个源系统数据,对源系统进来的数据进行整合、清洗,并基于三范式进行关系建模。 维度建模:基于维度建模,新建DWR层模型并发布维度和事实表。 DWR:Data Warehouse Report,又称数据报告层。DWR基于多维模型,和DWI层数据粒度保持一致。 维度:维度是用于观察和分析业务数据的视角,支撑对数据进行汇聚、钻取、切片分析,用于SQL中的GROUP BY条件。 事实表:归属于某个业务过程的事实逻辑表,可以丰富具体业务过程所对应事务的详细信息。 数据集市:新建DM层并发布汇总表。 DM (Data Mart):又称数据集市。DM面向展现层,数据有多级汇总。 汇总表:汇总表是由一个特定的分析对象(如会员)及其相关的统计指标组成的。组成一个汇总逻辑表的统计指标都具有相同的统计粒度(如会员),汇总逻辑表面向用户提供了以统计粒度(如会员)为主题的所有统计数据(如会员主题集市)。 指标设计:新建业务指标和技术指标,技术指标又分为原子指标、衍生指标和复合指标。 业务指标:指标一般由指标名称和指标数值两部分组成,指标名称及其涵义体现了指标质的规定性和量的规定性两个方面的特点,指标数值反映了指标在具体时间、地点、条件下的数量表现。 业务指标用于指导技术指标,而技术指标是对业务指标的具体实现。 原子指标:原子指标中的度量和属性来源于多维模型中的维度表和事实表,与多维模型所属的业务对象保持一致,与多维模型中的最细数据粒度保持一致。 原子指标中仅含有唯一度量,所含其它所有与该度量、该业务对象相关的属性,旨在用于支撑指标的敏捷自助消费。 衍生指标:是原子指标通过添加限定、维度卷积而成,限定、维度均来源于原子指标关联表的属性。 复合指标:由一个或多个衍生指标叠加计算而成,其中的维度、限定均继承于衍生指标。 注意,不能脱离衍生指标、维度和限定的范围,去产生新的维度和限定。 父主题: 数据架构
-
功能 MRS Kafka主要是查询Topic未消费的消息数。 Kafka是一个分布式的、分区的、多副本的消息发布-订阅系统,它具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性,适用于离线和在线的消息消费,如常规的消息收集、网站活性跟踪、聚合统计系统运营数据(监控数据)、日志收集等大量数据的互联网服务的数据收集场景。Kafka作为一个消息发布-订阅系统,为整个大数据平台多个子系统之间数据的传递提供了高速数据流转方式。
-
功能 DLI Flink作业专为实时数据流处理设计,适用于低时延、需要快速响应的场景。适用于实时监控、在线分析等场景。 DLI Flink Job节点用于创建和执行一个DLI Flink作业,或者查询DLI作业是否正在运行,实现实时流式大数据分析。 DLI Flink流式作业提交到DLI之后,若处于运行中的状态,则认为节点执行成功。若作业配置了周期调度,则会周期检查该Flink作业是否依然处于运行中的状态,如果处于运行状态,则认为节点执行成功。
-
属性 表1 属性说明 属性 类型 描述 示例 dataArray String Loop.dataArray表示For Each节点“数据集”中定义的二维数组。 一般定义格式为#{Loop.dataArray[0][0]}、#{Loop.dataArray[0][1]}等类似样式。其中[0][0]表示数组中第一行的第一个值,[0][1]表示第一行的第二个值,以此类推。 作为For Each节点的“子作业参数”取值,表示For Each循环中,始终取“数据集”中二维数组的第二行的第一个值。 #{Loop.dataArray[1][0]} current String For Each节点在处理数据集的时候,是一行一行进行处理的。Loop.current表示当前遍历到的For Each节点“数据集”中定义的二维数组的某一行,该数据行为一维数组。 一般定义格式为#{Loop.current[0]}、#{Loop.current[1]}或其他。其中[0]表示遍历到的当前行的第一个值,[1]表示遍历到的当前行的第二个值,以此类推。 作为For Each节点的“子作业参数”取值,表示For Each循环遍历中,取“数据集”中二维数组的当前遍历行的第二个值。 #{Loop.current[1]} offset Int For循环当前的偏移量,从0开始。 Loop.dataArray[Loop.offset] = Loop.current。 获取For Each循环当前的偏移量,即遍历次数,从0开始。 #{Loop.offset}
-
在作业中引用Python脚本 创建一个作业。 选择Python节点,并配置节点属性。 选择已创建好的Python脚本,配置相关节点参数。在“参数”里面可以配置脚本参数,例如: 配置的参数是指执行Python语句时,向语句传递的参数,参数之间使用空格分隔,例如:Microsoft Oracle。此处的“参数”需要在Python语句中引用,否则配置无效。 图5 配置Python节点属性 单击“测试运行”,查看该作业的运行结果。 图6 查看作业运行结果 单击“保存”,作业配置信息创建完成。 单击“提交”,提交版本后对该作业进行调度。
-
环境准备 已开通弹性云服务器,并创建E CS ,ECS主机名为“ecs-dgc”。 本示例主机选择“CentOS 8.0 64bit with ARM(40GB)”的公共镜像,并且使用ECS自带的Python环境,您可登录主机后使用python命令确认服务器的Python环境。 已开通数据集成增量包,CDM集群名为“cdm-dlfpyhthon”,提供数据开发模块与ECS主机通信的代理。 请确保ECS主机与CDM集群网络互通,互通需满足如下条件: CDM集群与ECS主机同区域情况下,同虚拟私有云、同子网、同安全组的不同实例默认网络互通;如果同虚拟私有云但是子网或安全组不同,还需配置路由规则及安全组规则,配置路由规则请参见如何配置路由规则章节,配置安全组规则请参见如何配置安全组规则章节。 CDM集群与ECS主机处于不同区域的情况下,需要通过公网或者专线打通网络。通过公网互通时,需确保CDM集群已绑定EIP,数据源所在的主机可以访问公网且防火墙规则已开放连接端口。 此外,您还必须确保该ECS主机与CDM集群所属的企业项目必须相同,如果不同,需要修改工作空间的企业项目。
-
建立主机数据连接 开发Python脚本前,我们需要建立一个到弹性 云服务器ECS 的连接。 参考访问DataArts Studio实例控制台,登录DataArts Studio管理控制台。 在DataArts Studio控制台首页,选择对应工作空间的“管理中心”模块,进入管理中心页面。 在管理中心页面,单击“数据连接”,进入数据连接页面并单击“创建数据连接”。 参见表1配置相关参数,创建主机连接名称为“ecs”的数据连接,如图1所示。 表1 主机连接 参数 是否必选 说明 数据连接类型 是 主机连接固定选择为主机连接。 数据连接名称 是 数据连接的名称,只能包含字母、数字、下划线和中划线,且长度不超过100个字符。 描述 否 为更好地识别数据连接,此处加以描述信息,长度不能超过100个字符。 标签 否 标识数据连接的属性。设置标签后,便于统一管理。 说明: 标签的名称,只能包含中文、英文字母、数字和下划线,不能以下划线开头,且长度不能超过100个字符。 适用组件 是 选择此连接适用的组件。勾选组件后,才能在相应组件内使用本连接。 基础与网络连通配置 主机地址 是 Linux操作系统主机的IP地址。 请参考查看云服务器详细信息获取。 绑定Agent 是 选择CDM集群,CDM集群提供Agent。如果没有可用的CDM集群,请参考创建CDM集群进行创建。 说明: CDM集群作为管理中心数据连接Agent时,单集群的并发活动线程最大为200。即当多个数据连接共用同一Agent时,通过这些数据连接提交SQL脚本、Shell脚本、Python脚本等任务的同时运行上限为200,超出的任务将排队等待。建议您按照业务量情况规划多个Agent分担压力。 在调度Shell、Python脚本时,Agent会访问ECS主机,如果Shell、Python脚本的调度频率很高,ECS主机会将Agent的内网IP加入黑名单。为了保障作业的正常调度,强烈建议您使用ECS主机的root用户将绑定Agent(即CDM集群)的内网IP加到/etc/hosts.allow文件里面。 CDM集群的内网IP获取方式请参见查看并修改CDM集群配置。 端口 是 主机的SSH端口号。 Linux操作系统主机的默认登录端口为22,如有修改可通过主机路径“/etc/ssh/sshd_config”文件中的port字段确认端口号。 KMS密钥 是 通过KMS加解密数据源认证信息,选择KMS中的任一默认密钥或自定义密钥即可。 说明: 第一次通过DataArts Studio或KPS使用KMS加密时,会自动生成默认密钥dlf/default或kps/default。关于默认密钥的更多信息,请参见什么是默认密钥。 仅支持通过对称密钥加密,暂不支持非对称密钥。 数据源认证及其他功能配置 用户名 是 主机的登录用户名。 登录方式 是 选择主机的登录方式: 密钥对 密码 密钥对 是 “登录方式”为“密钥对”时,显示该配置项。 主机的登录方式为密钥对时,您需要获取并上传其私钥文件至OBS,在此处选择对应的OBS路径(OBS路径中不能存在中文字符)。 说明: 此处上传的私钥文件应和主机上配置的公钥是一个密钥对,详情请参见密钥对使用场景介绍。 密钥对密码 是 如果密钥对未设置密码,则不需要填写该配置项。 密码 是 “登录方式”为“密码”时,显示该配置项。 主机的登录方式为密码时,填写主机的登录密码。 主机连接描述 否 主机连接的描述信息。 图1 新建主机连接 关键参数说明: 主机地址:已开通ECS主机中开通的ECS主机的IP地址。 绑定Agent:已开通批量数据迁移增量包中开通的CDM集群。 单击“测试”,测试数据连接的连通性。如果无法连通,数据连接将无法创建。 测试通过后,单击“确定”,创建数据连接。
-
开发DWS SQL作业 DWS SQL脚本开发完成后,我们为DWS SQL脚本构建一个周期执行的作业,使得该脚本能定期执行。 创建一个批处理作业,作业名称为“job_dws_sql”。 然后进入到作业开发页面,拖动DWS SQL节点到画布中并单击,配置节点的属性。 图2 配置DWS SQL节点属性 关键属性说明: SQL脚本:关联开发DWS SQL脚本中开发完成的DWS SQL脚本“dws_sql”。 数据连接:默认选择SQL脚本“dws_sql”中设置的数据连接,支持修改。 数据库:默认选择SQL脚本“dws_sql”中设置的数据库,支持修改。 脚本参数:通过EL表达式获取"yesterday"的值,EL表达式如下: #{Job.getYesterday("yyyy-MM-dd")} 节点名称:默认显示为SQL脚本“dws_sql”的名称,支持修改。 作业编排完成后,单击,测试运行作业。 如果运行成功,单击画布空白处,在右侧的“调度配置”页面,配置作业的调度策略。 图3 配置调度方式 说明: 2021/08/06至2021/08/31,每天2点执行一次作业。 单击“提交”,执行调度作业,实现作业每天自动运行。
-
备份资产 参考访问DataArts Studio实例控制台,登录DataArts Studio管理控制台。 在DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。 在数据开发主界面的左侧导航栏,选择“备份管理”。 单击“启动每日备份”,打开“OBS文件浏览”页面,选择OBS文件夹,设置备份数据的存储位置。 图1 备份管理 每日备份在每日0点开始备份昨日的所有作业、脚本、资源和环境变量,启动当日不会备份昨日的作业、脚本、资源和环境变量。 选择OBS存储路径时,若仅选择至桶名层级,则备份对象自动存储在以“备份日期”命名的文件夹内。环境变量,资源,脚本和作业分别存储在1_env,2_resources,3_scripts和4_jobs文件夹内。 备份成功后,在以“备份日期”命名的文件夹内,自动生成backup.json文件,该文件按照节点类型存储了作业信息,支持恢复作业前进行修改。 启动每日备份后,若想结束备份任务,您可以单击右边的“停止每日备份”。
-
还原资产 在DataArts Studio控制台首页,选择对应工作空间的“数据开发”模块,进入数据开发页面。 在数据开发模块控制台的左侧导航栏,选择“备份管理”。 选择“还原管理”页签,单击“还原备份”。 在还原备份对话框中,从OBS桶中选择待还原的资产存储路径,设置重名处理策略。 待还原的资产存储路径为备份资产中生成的文件路径。 您可在还原资产前修改备份路径下的backup.json文件,支持修改连接名(connectionName)、数据库名(database)和集群名(clusterName)。 图2 还原资产 单击“确定”。
-
举例 字符串变量str的内容如下: { "cities": [{ "name": "city1", "areaCode": "1000" }, { "name": "city2", "areaCode": "2000" }, { "name": "city3", "areaCode": "3000" }] }
-
方法 表1 方法说明 方法 描述 示例 Object parse(String jsonStr) 将json字符串转换为对象。 假设变量a为JSON字符串,将json字符串转换为对象,EL表达式如下: #{JSONUtil.parse(a)} String toString(Object jsonObject) 将对象转换为json字符串。 假设变量b为对象,将对象转换为json字符串,EL表达式如下: #{JSONUtil.toString(b)} Object path(String jsonStr,String jsonPath) 返回json字符串指定路径下的字段值。类似于XPath,path方法可以通过路径检索或设置JSON,其路径中可以使用.或[]等访问成员、数值,例如:tables[0].table_name。 字符串变量str的内容如下: { "cities": [{ "name": "city1", "areaCode": "1000" }, { "name": "city2", "areaCode": "2000" }, { "name": "city3", "areaCode": "3000" }] } 获取city1的电话区号,EL表达式如下: #{JSONUtil.path(str,"cities[0].areaCode")}
-
方法 表1 方法说明 方法 描述 示例 String format(Date date, String pattern) 将Date类型时间按指定pattern格式为字符串。 将作业调度计划的时间,转换为毫秒格式。 #{DateUtil.format(Job.planTime,"yyyy-MM-dd HH:mm:ss:SSS")} 将作业调度计划减一天的时间,转换为周格式。 #{DateUtil.format(DateUtil.addDays(Job.planTime,-1),"yyyyw")} Job.planTime为2024年1月7日时,返回值为20241。 #{DateUtil.format(DateUtil.addDays(Job.planTime,-1),"yyyyww")} Job.planTime为2024年1月7日时,返回值为202401。 Date addMonths(Date date, int amount) 给date添加指定月数后,返回新Date对象,amount可以是负数。 将作业调度计划减一个月的时间,转换为月份格式。 #{DateUtil.format(DateUtil.addMonths(Job.planTime,-1),"yyyy-MM")} Date addDays(Date date, int amount) 给date添加指定天数后,返回新Date对象,amount可以是负数。 将作业调度计划减一天的时间,转换为年月日格式。 #{DateUtil.format(DateUtil.addDays(Job.planTime,-1),"yyyy-MM-dd")} 将作业调度计划减一天的时间,转换为周格式。(非跨年业务场景使用小写y) #{DateUtil.format(DateUtil.addDays(Job.planTime,-1),"yyyyw")} Job.planTime为2024年1月7日时,返回值为20241。 #{DateUtil.format(DateUtil.addDays(Job.planTime,-1),"yyyyww")} Job.planTime为2024年1月7日时,返回值为202401。 将作业调度计划减一天的时间,转换为周格式。(跨年业务场景使用大写Y) #{DateUtil.format(DateUtil.addDays(Job.planTime,-7),"YYYYww")} Job.planTime为2024年1月7日时,返回值为202401。 说明: yyyy和YYYY的使用区别: YYYY表示周年的年份,它可以正确处理跨年的周数。 yyyy表示日历年份,它可能会导致跨年的周数不准确。 因此,在处理跨年业务场景时,年份使用大写的YYYY,除此之外,请使用小写的yyyy。 目前自然周是周天到周六,暂不支持自然周是从星期一到星期天。 Date addHours(Date date, int amount) 给date添加指定小时数后,返回新Date对象,amount可以是负数。 将作业调度计划减一小时的时间,转换为小时格式。 #{DateUtil.format(DateUtil.addHours(Job.planTime,-1),"yyyy-MM-dd HH")} Date addMinutes(Date date, int amount) 给date添加指定分钟数后,返回新Date对象,amount可以是负数。 将作业调度计划减一分钟的时间,转换为分钟格式。 #{DateUtil.format(DateUtil.addMinutes(Job.planTime,-1),"yyyy-MM-dd HH:mm")} int getDay(Date date) 从date获取天,例如:date为2018-09-14,则返回14。 从作业调度计划获取具体的天。 #{DateUtil.getDay(Job.planTime)} int getMonth(Date date) 从date获取月,例如:date为2018-09-14,则返回9。 从日期获取具体的月。 #{DateUtil.getMonth(Job.planTime)} int getQuarter(Date date) 从date获取季度,例如:date为2018-09-14,则返回3。 从日期获取具体的季度。 #{DateUtil.getQuarter(Job.planTime)} int getYear(Date date) 从date获取年,例如:date为2018-09-14,则返回2018。 从日期获取具体的年。 #{DateUtil.getYear(Job.planTime)} Date now() 返回当前时间。 以秒格式返回当前的时间。 #{DateUtil.format(DateUtil.now(),"yyyy-MM-dd HH:mm:ss")} long getTime(Date date) 将Date类型时间转换为long类型时间戳。 将作业调度计划时间转换为时间戳。 #{DateUtil.getTime(Job.planTime)} Date parseDate(String str, String pattern) 字符串按pattern转换为Date类型,pattern为日期、时间模式,请参考日期和时间模式。 将字符串类型的作业启动时间转换为秒格式。 #{DateUtil.parseDate(Job.getPlanTime("yyyy-MM-dd HH:mm:ss:SSS"),"yyyy-MM-dd HH:mm:ss")}
-
属性和方法 表1 属性说明 属性 类型 描述 name String 作业名称。 planTime java.util.Date 作业调度计划时间,即周期调度配置的时间,例如每天凌晨1:01调度作业。 startTime java.util.Date 作业执行时间,有可能与planTime同一个时间,也有可能晚于planTime(由于作业引擎繁忙等)。 eventData String 当作业使用事件驱动调度时,从通道获取的消息。 projectId String 当前数据开发模块所处项目ID。 表2 方法说明 方法 描述 示例 String getNodeStatus(String nodeName) 获取指定节点运行状态,成功状态返回success,失败状态返回fail。 例如,判断节点是否运行成功,可以使用如下判断条件,其中test为节点名称: #{(Job.getNodeStatus("test")) == "success" } 获取test节点运行状态。 #{Job.getNodeStatus("test")} String getNodeOutput(String nodeName) 获取指定节点的输出。此方法只能获取前面依赖节点的输出。 获取test节点输出。 #{Job.getNodeOutput("test")} 当前一节点执行无结果时,输出结果为“null”。 当前一节点的输出结果是一个字段时,输出结果形如[["000"]]所示。此时可通过EL表达式分割字符串结果,获取前一节点输出的字段值,但注意输出结果类型为String。需要输出原数据类型时,仍需通过For Each节点及其支持的Loop内嵌对象EL表达式获取。 #{StringUtil.split(StringUtil.split(StringUtil.split(Job.getNodeOutput("前一节点名"),"]")[0],"[")[0],"\\"")[0]} 当前一节点的输出结果是多个(两个及以上)字段时,输出结果形如[["000"],["001"]]所示。此时需要结合For Each节点及其支持的Loop内嵌对象EL表达式如#{Loop.current[0]},循环获取输出结果,详见获取SQL节点的输出结果值。 String getParam(String key) 获取作业参数。 注意此方法只能直接获取当前作业里配置的参数值,并不能获取到父作业传递过来的参数值,也不能获取到工作空间里面配置的全局变量,作用域仅为本作业。 这种情况下建议使用表达式${job_param_name},既可以获取到父作业传递过来的参数值,也可以获取到全局配置的变量。 获取参数test的值: #{Job.getParam("test")} String getPlanTime(String pattern) 获取指定pattern的计划时间字符串,pattern为日期、时间模式,请参考日期和时间模式。 获取作业调度计划时间,具体到毫秒: #{Job.getPlanTime("yyyy-MM-dd HH:mm:ss:SSS")} String getYesterday(String pattern) 获取执行pattern的计划时间前一天的时间字符串,pattern为日期、时间模式,请参考日期和时间模式。 获取作业调度计划时间的前一天的时间,具体到日期: #{Job.getYesterday("yyyy-MM-dd HH:mm:ss:SSS")} String getLastHour(String pattern) 获取执行pattern的计划时间前一小时的时间字符串,pattern为日期、时间模式,请参考日期和时间模式。 获取作业调度计划时间前一小时的时间,具体到小时: #{Job.getLastHour("yyyy-MM-dd HH:mm:ss:SSS")} String getRunningData(String nodeName) 获取指定节点运行中记录的数据,当前只支持获取DLI SQL节点SQL语句运行的作业id。此方法只能获取前面依赖节点的输出。 例如,想要获取DLI节点第3条语句的job ID(DLI节点名为DLI_INSERT_DATA),可以这样使用:#{JSONUtil.path(Job.getRunningData("DLI_INSERT_DATA"),"jobIds[2]")}。 获取指定DLI SQL节点test中第三条语句的job ID: #{JSONUtil.path(Job.getRunningData("test"),"jobIds[2]")} String getInsertJobId(String nodeName) 返回指定DLI SQL或Transform Load节点第一个Insert SQL语句的作业ID,不指定参数nodeName时,获取前面一个节点第一个DLI Insert SQL语句的作业ID,如果无法获取到作业ID,返回null值。 获取DLI SQL节点test中第一个Insert SQL语句的job ID: #{Job.getInsertJobId("test")} String getPreviousWorkday(Integer num, String pattern) 按照指定的pattern返回计划时间前第num个工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 获取作业调度前五天的工作日的日期。 #{Job.getPreviousWorkday(5, "yyyyMMdd")} String getPreviousNonWorkday(Integer num, String pattern) 按照指定的pattern返回计划时间前第num个非工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 获取作业调度前一天的非工作日的日期。 #{Job.getPreviousNonWorkday(1, "yyyyMMdd")} String getCalendarPreviousWorkday(String calendarName, Integer num, String pattern) 按照指定的pattern返回指定日历计划时间前第num个工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 获取指定日历作业调度计划时间前五天的工作日的日期。 #{Job.getCalendarPreviousWorkday(5, "yyyyMMdd")} String getCalendarPreviousNonWorkday(String calendarName, Integer num, String pattern) 按照指定的pattern返回指定日历计划时间前第num个非工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 获取指定日历作业调度计划时间前一天的非工作日的日期。 #{Job.getCalendarPreviousNonWorkday(1, "yyyyMMdd")} String getCalendarNextWorkday(String calendarName, Integer num, String pattern) 按照指定的pattern返回指定日历计划时间后第num个工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 获取指定日历作业调度计划时间后五天的工作日的日期。 #{Job.getCalendarNextWorkday(5, "yyyyMMdd")} String getCalendarNextNonWorkday(String calendarName, Integer num, String pattern) 按照指定的pattern返回指定日历计划时间后第num个非工作日的时间字符串,num只可为正整数。若没有获取到符合条件的结果则返回null值。 该EL表达式适用于按照日历选择自定义日期进行周期调度。 获取指定日历作业调度计划时间后一天的非工作日的日期。 #{Job.getPreviousNonWorkday(1, "yyyyMMdd")}
-
举例 在Rest Client节点的参数“URL参数”中使用EL表达式“tableName=#{JSONUtil.path(Job.getNodeOutput("get_cluster"),"tables[0].table_name")}”,如图1所示。 表达式说明如下: 获取作业中“get_cluster”节点的执行结果(“Job.getNodeOutput("get_cluster")”),执行结果是一个JSON字符串。 通过JSON路径(“tables[0].table_name”),获取JSON字符串中字段的值。 图1 表达式示例 EL表达式在数据开发过程中被广泛应用,您可以参考最佳实践查看更多应用EL表达式的进阶实践。
-
调试方法介绍 下面介绍几种EL表达式的调试方法,能够在调试过程中方便地看到替换结果。 后文以#{DateUtil.now()}表达式为例进行介绍。 使用DIS Client节点。 前提:您需要具备DIS通道。 方法:选择DIS Client节点,将EL表达式直接写在要发送的数据中,单击“测试运行”,然后在节点上右键查看日志,日志中会把EL表达式的值打印出来。 使用Kafka Client节点。 前提:您需要具备MRS集群,且集群有Kafka组件。 方法:选择Kafka Client节点,将EL表达式直接写在要发送的数据中,单击“测试运行”,然后在节点上右键查看日志,日志中会把EL表达式的值打印出来。 使用Shell节点。 前提:您需要具备弹性云服务器ECS。 方法:创建一个主机连接,将EL表达式直接通过echo打印出来,单击“测试运行”之后查看日志,日志中会打印出EL表达式的值。 使用Create OBS节点。 如果上述方法均不可用,则可以通过Create OBS去创建一个OBS目录,目录名称就是EL表达式的值,单击“测试运行”后,再去OBS界面查看创建出来的目录名称。
-
配置节点调度任务(实时作业) 配置实时处理作业的节点调度任务,支持单次调度、周期调度、事件驱动调度三种方式。操作方法如下: 单击画布中的节点,在右侧显示“调度配置”页签,单击此页签,展开配置页面,配置如表4所示的参数。 表4 节点调度配置 参数 说明 调度方式 选择作业的调度方式: 单次调度:手动触发作业单次运行。 周期调度:周期性自动运行作业。 事件驱动调度:根据外部条件触发作业运行。 “周期调度”的参数 生效时间 调度任务的生效时间段。 调度周期 选择调度任务的执行周期,并配置相关参数: 分钟 小时 天 周 月 调度周期需要合理设置,如CDM、ETL作业的调度周期至少应在5分钟以上,并根据作业表的数据量、源端表更新频次等调整。 已经在运行中的作业,可以修改其调度周期。 跨周期依赖 选择作业下实例之间的依赖关系。 不依赖上一调度周期 选择“并发数”。多个作业实例并行执行的个数。如果并发数配置为1,前一个批次执行完成后(包括成功、取消、或失败),下一批次才开始执行。 自依赖(上一调度周期的作业实例执行成功下一周期才会执行,否则处于等待运行状态。) “事件驱动调度”的参数 触发事件类型 选择触发作业运行的事件类型。 DIS通道名称 选择DIS通道,当指定的DIS通道有新消息时,数据开发模块将新消息传递给作业,触发该作业运行。 当“触发事件类型”选择“DIS”或“OBS”时才需要配置。 连接名称 选择数据连接,需先在“管理中心”创建kafka数据连接。当“触发事件类型”选择“KAFKA”时才需要配置。 Topic 选择需要发往kafka的消息Topic。当“触发事件类型”选择“KAFKA”时才需要配置。 OBS路径 选择要监听的OBS路径,如果该路径下有新增文件,则触发调度;新增的文件的路径名,可以通过变量Job.trigger.obsNewFiles引用。前提条件:该OBS路径已经配置DIS 消息通知 。 最大处理文件数 节点被驱动运行时,每批次最多可处理的文件数。当“触发事件类型”选择“OBS”时才需要配置。 消费组 消费者组是kafka提供的可扩展且具有容错性的消费者机制。 它是一个组,所以内部可以有多个消费者,这些消费者共用一个ID,一个组内的所有消费者共同协作,完成对订阅的主题的所有分区进行消费。其中一个主题中的一个分区只能由一个消费者消费。 说明: 一个消费者组可以有多个消费者。 Group ID是一个字符串,在一个kafka集群中,它标识唯一的一个消费者组。 每个消费者组订阅的所有主题中,每个主题的每个分区只能由一个消费者消费。消费者组之间不影响。 当触发事件类型选择了DIS或KAFKA时,会自动关联出消费组的ID,用户也可以手动修改。 事件处理并发数 选择作业并行处理的数量,最大并发数为10。 事件检测间隔 配置时间间隔,检测DIS通道下是否有新的消息。时间间隔单位可以配置为秒或分钟。 读取策略 从上次位置读起 从最新位置读起 当“触发事件类型”选择“DIS”或“KAFKA”时才需要配置。 失败策略 选择节点执行失败后的策略: 挂起 忽略失败,继续调度
-
约束限制 调度周期需要合理设置,单个作业最多允许5个实例并行执行,如果作业实际执行时间大于作业配置的调度周期,会导致后面批次的作业实例堆积,从而出现计划时间和开始时间相差大。例如CDM、ETL作业的调度周期至少应在5分钟以上,并根据作业表的数据量、源端表更新频次等调整。 如果通过DataArts Studio数据开发调度CDM迁移作业,CDM迁移作业处也配置了定时任务,则两种调度均会生效。为了业务运行逻辑统一和避免调度冲突,推荐您启用数据开发调度即可,无需配置CDM定时任务。
-
功能 通过Rest Client节点执行一个华为云内的RESTful请求。该节点可执行各种服务请求,支持GET、POST、PUT、DELETE请求类型。 Rest Client算子的具体使用教程,请参见获取Rest Client算子返回值教程。 当由于网络限制,Rest Client某些API无法调通时,可以尝试使用Shell脚本进行API调用。您需要拥有弹性云服务器ECS,并确保ECS主机和待调用的API之间网络可通,然后在DataArts Studio创建主机连接,通过Shell脚本使用CURL命令进行API调用。 Rest Client算子目前不支持大量的response返回体,目前代码限制30M。
-
功能 通过CDM Job节点执行一个预先定义的CDM作业,实现数据迁移功能。该节点与 云数据迁移 (CDM)进行联动,把CDM作业在数据开发平台进行调度。此节点用于执行一个指定的CDM集群里面的一个作业。 如果CDM作业中配置了时间宏变量,通过DataArts Studio数据开发调度CDM迁移作业时,系统会将时间宏变量替换为(数据开发作业计划启动时间-偏移量),而不是(CDM作业实际启动时间-偏移量)。
-
配置作业参数 作业参数为全局参数,可用于作业中的任意节点。操作方法如下: Pipeline模式的批处理作业和实时处理作业,单击画布的空白处,在右侧显示“作业参数配置”页签,单击此页签,展开配置页面,配置如表3所示的参数。 表3 作业参数配置 功能 说明 变量 新增 单击“新增”,在文本框中填写作业参数的名称和参数值。 参数名称 名称只能包含字符:英文字母、数字、点号、中划线和下划线。 参数值 字符串类的参数直接填写字符串,例如:str1。 数值类的参数直接填写数值或运算表达式。 参数配置完成后,在作业中的引用格式为${参数名称}。 说明: 如果作业中有两个节点,比如第一个Rest Client节点返回了body,第二个节点使用返回的data。如果这个data的长度超过1000000个字符,内容就会被截断。在配置作业参数时,作业的参数值的结果最大不超过1000000个字符。 编辑参数表达式 在参数值文本框后方,单击,编辑参数表达式,更多表达式请参见表达式概述。 修改 在参数名和参数值的文本框中直接修改。 掩码显示 在参数值为密钥等情况下,从安全角度,请单击将参数值掩码显示。 删除 在参数值文本框后方,单击,删除作业参数。 常量 新增 单击“新增”,在文本框中填写作业常量的名称和参数值。 参数名称 名称只能包含字符:英文字母、数字、中划线和下划线。 参数值 字符串类的参数直接填写字符串,例如:str1。 数值类的参数直接填写数值或运算表达式。 参数配置完成后,在作业中的引用格式为${参数名称}。 编辑参数表达式 在参数值文本框后方,单击,编辑参数表达式,更多表达式请参见表达式概述。 修改 在参数名和参数值的文本框中直接修改,修改完成后,请保存。 删除 在参数值文本框后方,单击,删除作业常量。 工作空间环境变量 查看工作空间已配置的变量和常量。 单击“作业参数预览”页签,展开预览页面,配置如表4所示的参数。 MRS Flink Job、DLI Flink Job、DLI SQL、DWS SQL、MRS HetuEngine、MRS ClickHouse SQL、MRS Hive SQL、MRS Impala SQL、MRS Presto SQL、MRS Spark SQL、RDS SQL、DORIS SQL的算子脚本参数支持参数预览。 表4 作业参数预览 功能 说明 当前时间 仅单次调度才显示。系统默认为当前时间。 事件触发时间 仅事件驱动调度才显示。系统默认为事件触发时间。 周期调度 仅周期调度才显示。系统默认为调度周期。 具体时间 仅周期调度才显示。周期调度配置的具体运行时间。 起始日期 仅周期调度才显示。周期调度的生效时间。 后N个实例 作业运行调度的实例个数。 单次调度场景默认为1。 事件驱动调度场景默认为1。 周期调度场景 当实例数大于10时,系统最多展示10个日期实例,系统会自动提示“当前参数预览最多支持查看10个实例”。 在作业参数预览中,如果作业参数配置存在语法异常情况系统会给出提示信息。 如果参数配置了依赖作业实际运行时产生的数据,参数预览功能中无法模拟此类数据,则该数据不展示。
共100000条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- ...
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333