华为云用户手册
-
配置option(C SDK) 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。 在调用C SDK的功能函数时,都要传入obs_options参数,您可通过init_obs_options函数初始化obs_options配置,通过obs_options设置AK、SK、Endpoint、bucket、超时时间、临时鉴权。obs_options主要包括obs_bucket_context和obs_http_request_option两个结构,可以设置的参数见下表: 表1 obs_options.obs_bucket_context参数 参数 描述 默认值 建议值 host_name 请求使用的主机名,是指存放资源的服务器的 域名 ,就是终端节点endpoint。 NULL - bucket_name 操作的桶名。 NULL - protocol 请求使用的协议类型: http、https。(出于安全性考虑,建议使用https协议) HTTPS协议:OBS_PROTOCOL_HTTPS OBS_PROTOCOL_HTTPS access_key 连接对象存储服务的AK NULL - secret_access_key 鉴权使用的SK,可用于字符串的签名。 NULL - obs_storage_class 在PUT,POST请求中,需要配置存储类别时设置此参数。 标准存储:OBS_STORAGE_CLASS_STANDARD 默认值 token 临时访问密钥的SecurityToken。 NULL - bucket_type 创桶时,指定是对象桶还是并行文件系统 对象桶:OBS_BUCKET_OBJECT - bucket_list_type 列举桶时,确定列举桶的类型:所有桶、对象桶、并行文件系统 所有桶:OBS_BUCKET_LIST_ALL - 表2 obs_options.obs_http_request_option参数 参数 描述 默认值 建议值 connect_time 建立HTTP/HTTPS连接的超时时间(单位:毫秒)。默认为60000毫秒。 60000 [10000, 60000] max_connected_time 请求超时时间(单位:秒)。0代表永远不会断开连接。 0 0 proxy_auth 代理认证信息,格式username:password NULL - proxy_host 代理服务器 NULL - 如网络状况不佳,建议增大connect_time和max_connected_time的值。 父主题: 初始化(C SDK)
-
请求参数 表1 请求参数列表 参数名称 参数类型 是否必选 描述 Method HttpMethodType 必选 参数解释: HTTP方法类型,详情参见HttpMethodType。 Bucket string 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 取值范围: 长度为3~63个字符。 默认取值: 无 Key string 必选 参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 约束限制: 无 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 SpecialParam SpecialParam 可选 参数解释: 要访问的子资源。 约束限制: 无 取值范围: 详情参见SpecialParam。 默认取值: 无 Expires number 可选 参数解释: 带授权信息的URL的过期时间。 约束限制: 无 取值范围: 临时密钥取值范围为0~86400秒。 永久密钥取值范围为0~630720000秒。 默认取值: 300 Headers object 可选 参数解释: 请求中携带的头域。 约束限制: 无 取值范围: 无 默认取值: 无 QueryParams object 可选 参数解释: 请求中携带的查询参数。 约束限制: 无 取值范围: 无 默认取值: 无 表2 HttpMethodType 常量值 说明 GET HTTP GET请求。 POST HTTP POST请求。 PUT HTTP PUT请求。 DELETE HTTP DELETE请求。 HEAD HTTP HEAD请求。 OPTIONS HTTP OPTIONS请求。 表3 SpecialParam 常量值 适用接口 storagePolicy 设置/获取桶存储类型。 quota 设置/获取桶配额。 storageinfo 获取桶存量信息。 location 获取桶区域位置。 acl 设置/获取桶ACL、设置/获取对象ACL。 policy 设置/获取/删除桶策略。 cors 设置/获取/删除桶CORS配置。 versioning 设置/获取桶多版本状态。 website 设置/获取/删除桶Website配置。 logging 设置/获取桶日志管理配置。 lifecycle 设置/获取/删除桶生命周期配置。 notification 设置/获取桶时间通知配置。 tagging 设置/获取/删除桶标签。 append 追加上传对象 delete 批量删除对象。 versions 列举桶内多版本对象。 uploads 列举桶内分段上传任务、初始化分段上传任务。 restore 恢复归档存储或深度归档存储对象。
-
接口约束 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 如果遇到跨域报错、签名不匹配问题,请参考以下步骤排查问题: 未配置跨域,需要在控制台配置CORS规则,请参考配置桶允许跨域请求。 签名计算问题,请参考URL中携带签名排查签名参数是否正确;比如上传对象功能,后端将Content-Type参与计算签名生成授权URL,但是前端使用授权URL时没有设置Content-Type字段或者传入错误的值,此时会出现跨域错误。解决方案为:Content-Type字段前后端保持一致。
-
返回结果 表4 返回结果 参数类型 描述 表5 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见表5。 表5 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult 表7 参数解释: 操作成功后的结果数据,详见表7。 约束限制: 当Status大于300时为空。 表6 ICommonMsg 参数名称 参数类型 描述 Status number 参数解释: OBS服务端返回的HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 Code string 参数解释: OBS服务端返回的错误码。 Message string 参数解释: OBS服务端返回的错误描述。 HostId string 参数解释: OBS服务端返回的请求服务端ID。 RequestId string 参数解释: OBS服务端返回的请求ID。 Id2 string 参数解释: OBS服务端返回的请求ID2。 Indicator string 参数解释: OBS服务端返回的详细错误码。 表7 InitiateMultipartUploadOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。 Bucket string 参数解释: 分段上传任务的桶名。 Key string 参数解释: 分段上传任务的对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 UploadId string 参数解释: 分段上传任务的ID,例如:000001648453845DBB78F2340DD460D8。 SseKms string 参数解释: 表示服务端加密是SSE-KMS方式。对象使用SSE-KMS方式加密。 SseKmsKey string 参数解释: SSE-KMS加密方式下使用的KMS主密钥的ID值。 SseC string 参数解释: 表示服务端加密是SSE-C方式。对象使用SSE-C加密方式。 SseCKeyMd5 string 参数解释: SSE-C方式下加密使用密钥的MD5值,该值用于验证密钥传输过程中是否出错。 约束限制: 由密钥值经过MD5加密再经过Base64编码后得到,示例:4XvB3tbNTN+tIEVa0/fGaQ== EncodingType string 参数解释: 用于指定对响应中的Key进行指定类型的编码。如果Key包含xml 1.0标准不支持的控制字符,可通过设置该参数对响应中的Key进行编码。 取值范围: 可选值为url。 默认取值: 无,不设置则不编码。
-
功能说明 使用多段上传特性时,用户必须首先调用创建多段上传任务接口创建任务,系统会给用户返回一个全局唯一的多段上传任务号,作为任务标识。后续用户可以根据这个标识发起相关的请求,如:上传段、合并段、列举段等。创建多段上传任务不影响已有的同名对象;同一个对象可以同时存在多个多段上传任务;每个多段上传任务在初始化时可以附加消息头信息,包括acl、用户自定义元数据和通用的HTTP消息头contentType、contentEncoding等,这些附加的消息头信息将先记录在多段上传任务元数据中。调用初始化分段上传任务接口成功后,会返回分段上传任务的全局唯一标识(Upload ID),在后面的操作中将用到它。
-
接口约束 您必须是桶拥有者或拥有初始化分段上传任务的权限,才能初始化分段上传任务。建议使用 IAM 或桶策略进行授权,如果使用IAM则需授予obs:object:PutObject权限,如果使用桶策略则需授予PutObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 初始化上传段任务并上传一个或多个段之后,您必须合并段或取消多段上传任务,才能停止收取已上传的段的存储费用。仅当在合并段或取消多段上传任务之后,OBS才释放段存储并停止向您收取段存储费用。
-
返回结果 表3 返回结果 参数类型 描述 表4 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见表4。 表4 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult 表6 参数解释: 操作成功后的结果数据,详见表6。 约束限制: 当Status大于300时为空。 表5 ICommonMsg 参数名称 参数类型 描述 Status number 参数解释: OBS服务端返回的HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 Code string 参数解释: OBS服务端返回的错误码。 Message string 参数解释: OBS服务端返回的错误描述。 HostId string 参数解释: OBS服务端返回的请求服务端ID。 RequestId string 参数解释: OBS服务端返回的请求ID。 Id2 string 参数解释: OBS服务端返回的请求ID2。 Indicator string 参数解释: OBS服务端返回的详细错误码。 表6 BaseResponseOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。
-
请求参数 表1 BucketRequestInput 参数名称 参数类型 是否必选 描述 Bucket string 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 取值范围: 长度为3~63个字符。 默认取值: 无
-
接口约束 您必须是桶拥有者或拥有获取桶标签的权限,才能获取桶标签。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:GetBucketTagging权限,如果使用桶策略则需授予GetBucketTagging权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
-
请求参数 参数名称 参数类型 是否必选 描述 Bucket string 必选 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 取值范围: 长度为3~63个字符。 默认取值: 无 Key string 必选 参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 约束限制: 无 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 VersionId string 可选 参数解释: 对象的版本号。例如:G001117FCE89978B0000401205D5DC9A。 约束限制: 无 取值范围: 长度为32的字符串。 默认取值: 无
-
返回结果 表1 返回结果 参数类型 描述 表2 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见表2。 表2 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult 表4 参数解释: 操作成功后的结果数据,详见表4。 约束限制: 当Status大于300时为空。 表3 ICommonMsg 参数名称 参数类型 描述 Status number 参数解释: OBS服务端返回的HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 Code string 参数解释: OBS服务端返回的错误码。 Message string 参数解释: OBS服务端返回的错误描述。 HostId string 参数解释: OBS服务端返回的请求服务端ID。 RequestId string 参数解释: OBS服务端返回的请求ID。 Id2 string 参数解释: OBS服务端返回的请求ID2。 Indicator string 参数解释: OBS服务端返回的详细错误码。 表4 GetBucketTaggingOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。 Tags Tag[] 参数解释: 桶标签列表,详见Tag。 表5 Tag 参数名称 参数类型 描述 Key string 参数解释: 标签的键。 Value string 参数解释: 标签的值。
-
接口约束 您必须是桶拥有者或拥有获取对象标签的权限,才能获取对象标签。建议使用IAM或桶策略进行授权,如果请求中不携带版本号(versionId),使用IAM则需授予obs:object:GetObjectTagging权限,使用桶策略则需授予GetObjectTagging权限,如果请求中携带版本号(versionId),使用IAM则需额外授予obs:object:GetObjectVersionTagging权限,使用桶策略则需额外授予GetObjectVersionTagging权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 并行文件系统不支持该功能。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
-
接口约束 您必须是桶拥有者或拥有删除对象标签的权限,才能删除对象标签。建议使用IAM或桶策略进行授权,如果请求中不携带版本号(versionId),使用IAM则需授予obs:object:DeleteObjectTagging权限,使用桶策略则需授予DeleteObjectTagging权限,如果请求中携带版本号(versionId),使用IAM则需额外授予obs:object:DeleteObjectVersionTagging权限,使用桶策略则需额外授予DeleteObjectVersionTagging权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 默认设置Object当前版本的标签信息。可以通过指定versionId参数来设置指定Object版本的标签信息。如果对应版本为删除标记(Delete Marker),则OBS将返回404 Not Found。 并行文件系统不支持该功能。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
-
请求参数 参数名称 参数类型 是否必选 描述 Bucket string 必选 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 取值范围: 长度为3~63个字符。 默认取值: 无 Key string 必选 参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 约束限制: 无 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 VersionId string 可选 参数解释: 对象的版本号。例如:G001117FCE89978B0000401205D5DC9A。 约束限制: 无 取值范围: 长度为32的字符串。 默认取值: 无
-
返回结果 表1 返回结果 参数类型 描述 表2 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见表2。 表2 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult 表4 参数解释: 操作成功后的结果数据,详见表4。 约束限制: 当Status大于300时为空。 表3 ICommonMsg 参数名称 参数类型 描述 Status number 参数解释: OBS服务端返回的HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 Code string 参数解释: OBS服务端返回的错误码。 Message string 参数解释: OBS服务端返回的错误描述。 HostId string 参数解释: OBS服务端返回的请求服务端ID。 RequestId string 参数解释: OBS服务端返回的请求ID。 Id2 string 参数解释: OBS服务端返回的请求ID2。 Indicator string 参数解释: OBS服务端返回的详细错误码。 表4 BaseResponseOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。
-
配置OBS客户端(Node.js SDK) 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。 您可通过初始化参数对ObsClient进行配置,可以配置的参数见下表: 参数 描述 建议值 access_key_id 访问密钥中的AK。 N/A secret_access_key 访问密钥中的SK。 N/A server 连接OBS的服务地址。可包含协议类型、域名、端口号。示例:https://your-endpoint:443。(出于安全性考虑,建议使用https协议) N/A max_retry_count HTTP/HTTPS连接异常时的请求重试次数。默认为3次。 [1,5] timeout HTTP/HTTPS请求超时时间(单位:秒)。默认为60秒。 [10, 60] http_agent 配置使用http代理,可选项。默认不配置 N/A https_agent 配置使用https代理,可选项。默认不配置 N/A ssl_verify 验证服务端证书参数。可能的取值: 服务端pem格式根证书文件路径; true:使用默认的CAs验证服务端证书; false:表示不验证服务端证书。 默认为false。 N/A long_conn_param 长连接模式参数(单位:秒)。当该参数大于等于0时,开启长连接模式,并将该参数作为TCP Keep-Alive数据包的初始延迟。 默认为空,代表关闭长连接模式。 N/A is_cname 是否通过自定义域名访问OBS服务。默认为false。 N/A 建议值为N/A的表示需要根据实际情况进行设置。 如网络状况不佳,建议增大timeout的值。 如果设置的server不带协议类型,则默认使用HTTPS协议。 如果启用了长连接模式,使用完OBS客户端后必须调用ObsClient.close方法显式关闭,回收连接资源。 出于DNS解析性能和OBS服务可靠性的考虑,不允许将server设置为IP,必须使用域名访问OBS服务。 配置SDK代理请参见配置SDK代理(Node.js SDK)。 父主题: 初始化(Node.js SDK)
-
返回结果 表3 返回结果 参数类型 描述 表4 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见表4。 表4 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult 表6 参数解释: 操作成功后的结果数据,详见表6。 约束限制: 当Status大于300时为空。 表5 ICommonMsg 参数名称 参数类型 描述 Status number 参数解释: OBS服务端返回的HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 Code string 参数解释: OBS服务端返回的错误码。 Message string 参数解释: OBS服务端返回的错误描述。 HostId string 参数解释: OBS服务端返回的请求服务端ID。 RequestId string 参数解释: OBS服务端返回的请求ID。 Id2 string 参数解释: OBS服务端返回的请求ID2。 Indicator string 参数解释: OBS服务端返回的详细错误码。 表6 BaseResponseOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。
-
请求参数 表1 请求参数列表 参数名称 参数类型 是否必选 描述 Bucket string 必选 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 取值范围: 长度为3~63个字符。 默认取值: 无 Key string 必选 参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 约束限制: 无 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 VersionId string 可选 参数解释: 对象的版本号。例如:G001117FCE89978B0000401205D5DC9A。 约束限制: 无 取值范围: 长度为32的字符串。 默认取值: 无 Tags Tag[] 必选 参数解释: 对象标签列表。 约束限制: 一个桶默认最大拥有10个标签。每个标签有且只有一对键值。 同一个桶标签的键不能重复,但是值可以重复,并且可以为空。 取值范围: 详见Tag。 默认取值: 无 表2 Tag 参数名称 参数类型 是否必选 描述 Key string 作为请求参数时必选 参数解释: 标签的键。 约束限制: 同一个桶标签的键不能重复。 最大长度为36个字符。 UTF-8格式表示的字母(含中文)、数字、空格,以及以下字符:_ . : = + - @。 区分大小写。 不能为空。 取值范围: 长度为1到36个字符。 默认取值: 无 Value string 作为请求参数时必选 参数解释: 标签的值。 约束限制: 标签的值可以重复。 长度范围为0到43个字符。 UTF-8格式表示的字母(含中文)、数字、空格,以及以下字符:_ . : = + - @。 区分大小写。 可以为空 取值范围: 长度为0到43个字符。 默认取值: 无
-
接口约束 您必须是桶拥有者或拥有设置对象标签的权限,才能设置对象标签。建议使用IAM或桶策略进行授权,如果请求中不携带版本号(versionId),使用IAM则需授予obs:object:PutObjectTagging权限,使用桶策略则需授予PutObjectTagging权限。如果请求中携带版本号(versionId),使用IAM则需额外授予obs:object:PutObjectVersionTagging权限,使用桶策略则需额外授予PutObjectVersionTagging权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 默认设置Object当前版本的标签信息。可以通过指定versionId参数来设置指定Object版本的标签信息。如果对应版本为删除标记(Delete Marker),则OBS将返回404 Not Found。 并行文件系统不支持该功能。 每个对象最多能设置10个标签。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
-
OBS服务端错误码(Python SDK) 在向OBS服务端发出请求后,如果遇到错误,会在响应中包含响应的错误码描述错误信息。 详细的错误码及其对应的描述和HTTP状态码见下表: HTTP状态码 错误码 错误信息 处理措施 301 Moved Permanently PermanentRedirect 尝试访问的桶必须使用指定的地址,请将以后的请求发送到这个地址。 按照返回的重定向地址发送请求。 301 Moved Permanently WebsiteRedirect Website请求缺少bucketName。 携带桶名后重试。 307 Moved Temporarily TemporaryRedirect 临时重定向,当DNS更新时,请求将被重定向到桶。 会自动重定向,也可以将请求发送到重定向地址。 400 Bad Request BadDigest 客户端指定的对象内容的MD5值与系统接收到的内容MD5值不一致。 检查头域中携带的MD5与消息体计算出来的MD5是否一致。 400 Bad Request BadDomainName 域名不合法。 使用合法的域名。 400 Bad Request BadRequest 请求参数不合法。 根据返回的错误消息体提示进行修改。 400 Bad Request CustomDomainAreadyExist 配置了已存在的域。 已经配置过了,不需要再配置。 400 Bad Request CustomDomainNotExist 删除不存在的域。 未配置或已经删除,无需删除。 400 Bad Request EntityTooLarge 用户POST上传的对象大小超过了条件允许的最大大小。 修改POST上传的policy中的条件或者减少对象大小。 400 Bad Request EntityTooSmall 用户POST上传的对象大小小于条件允许的最小大小。 修改POST上传的policy中的条件或者增加对象大小。 400 Bad Request IllegalLocationConstraintException 用户未带Location在非默认Region创桶。 请求发往默认Region创桶或带非默认Region的Location创桶。 400 Bad Request IncompleteBody 由于网络原因或其他问题导致请求体未接受完整。 重新上传对象。 400 Bad Request IncorrectNumberOfFilesInPost Request 每个POST请求都需要带一个上传的文件。 带上一个上传文件。 400 Bad Request InvalidArgument 无效的参数。 根据返回的错误消息体提示进行修改。 400 Bad Request InvalidBucket 请求访问的桶已不存在。 更换桶名。 400 Bad Request InvalidBucketName 请求中指定的桶名无效,超长或带不允许的特殊字符。 更换桶名。 400 Bad Request InvalidEncryptionAlgorithmError 错误的加密算法。下载SSE-C加密的对象,携带的加密头域错误,导致不能解密。 携带正确的加密头域下载对象。 400 Bad Request InvalidLocationConstraint 创建桶时,指定的Location不合法或不存在。 指定正确的Location创桶。 400 Bad Request InvalidPart 一个或多个指定的段无法找到。这些段可能没有上传,或者指定的entity tag与段的entity tag不一致。 按照正确的段和entity tag合并段。 400 Bad Request InvalidPartOrder 段列表的顺序不是升序,段列表必须按段号升序排列。 按段号升序排列后重新合并。 400 Bad Request InvalidPolicyDocument 表单中的内容与策略文档中指定的条件不一致。 根据返回的错误消息体提示修改构造表单的policy重试。 400 Bad Request InvalidRedirectLocation 无效的重定向地址。 指定正确的地址。 400 Bad Request InvalidRequest 无效请求。 根据返回的错误消息体提示进行修改。 400 Bad Request InvalidRequestBody 请求体无效,需要消息体的请求没有上传消息体。 按照正确的格式上传消息体。 400 Bad Request InvalidTargetBucketForLogging delivery group对目标桶无ACL权限。 对目标桶配置ACL权限后重试。 400 Bad Request KeyTooLongError 提供的Key过长。 使用较短的Key。 400 Bad Request KMS.DisabledException SSE-KMS加密方式下,主密钥被禁用。 更换密钥后重试,或联系技术支持。 400 Bad Request KMS.NotFoundException SSE-KMS加密方式下,主密钥不存在。 携带正确的主密钥重试。 400 Bad Request MalformedACLError 提供的XML格式错误,或者不符合要求的格式。 使用正确的XML格式重试。 400 Bad Request MalformedError 请求中携带的XML格式不正确。 使用正确的XML格式重试。 400 Bad Request MalformedLoggingStatus Logging的XML格式不正确。 使用正确的XML格式重试。 400 Bad Request MalformedPolicy Bucket policy检查不通过。 根据返回的错误消息体提示结合桶policy的要求进行修改。 400 Bad Request MalformedQuotaError Quota的XML格式不正确。 使用正确的XML格式重试。 400 Bad Request MalformedXML 当用户发送了一个配置项的错误格式的XML会出现这样的错误。 使用正确的XML格式重试。 400 Bad Request MaxMessageLengthExceeded 拷贝对象,带请求消息体。 拷贝对象不带消息体重试。 400 Bad Request MetadataTooLarge 元数据消息头超过了允许的最大元数据大小。 减少元数据消息头。 400 Bad Request MissingRegion 请求中缺少Region信息,且系统无默认Region。 请求中携带Region信息。 400 Bad Request MissingRequestBodyError 当用户发送一个空的XML文档作为请求时会发生。 提供正确的XML文档。 400 Bad Request MissingRequiredHeader 请求中缺少必要的头域。 提供必要的头域。 400 Bad Request MissingSecurityHeader 请求缺少一个必须的头。 提供必要的头域。 400 Bad Request TooManyBuckets 用户拥有的桶的数量达到了系统的上限,并且请求试图创建一个新桶。 删除部分桶后重试。 400 Bad Request TooManyCustomDomains 配置了过多的用户域 删除部分用户域后重试。 400 Bad Request TooManyWrongSignature 因高频错误请求被拒绝服务。 更换正确的Access Key后重试。 400 Bad Request UnexpectedContent 该请求需要消息体而客户端没带,或该请求不需要消息体而客户端带了。 根据说明重试。 400 Bad Request UserKeyMustBeSpecified 该操作只有特殊用户可使用。 请联系技术支持。 403 Forbidden AccessDenied 拒绝访问,请求没有携带日期头域或者头域格式错误。 请求携带正确的日期头域。 403 Forbidden AccessForbidden 权限不足,桶未配置CORS或者CORS规则不匹配。 修改桶的CORS配置,或者根据桶的CORS配置发送匹配的OPTIONS请求。 403 Forbidden AllAccessDisabled 用户无权限执行某操作。桶名为禁用关键字。 更换桶名。 403 Forbidden DeregisterUserId 用户已经注销。 充值或重新开户。 403 Forbidden InArrearOrInsufficientBalance 用户欠费或余额不足而没有权限进行某种操作。 充值。 403 Forbidden InsufficientStorageSpace 存储空间不足。 超过配额限制,增加配额或删除部分对象。 403 Forbidden InvalidAccessKeyId 系统记录中不存在客户提供的Access Key Id。 携带正确的Access Key Id。 403 Forbidden NotSignedUp 你的账户还没有在系统中注册,必须先在系统中注册了才能使用该账户。 先注册OBS服务。 403 Forbidden RequestTimeTooSkewed 请求的时间与服务器的时间相差太大。 检查客户端时间是否与当前时间相差太大。 403 Forbidden SignatureDoesNotMatch 请求中带的签名与系统计算得到的签名不一致。 检查你的Secret Access Key和签名计算方法。 403 Forbidden Unauthorized 用户未实名认证。 请实名认证后重试。 404 Not Found NoSuchBucket 指定的桶不存在。 先创桶再操作。 404 Not Found NoSuchBucketPolicy 桶policy不存在。 先配置桶policy。 404 Not Found NoSuchCORSConfiguration CORS配置不存在。 先配置CORS。 404 Not Found NoSuchCustomDomain 请求的用户域不存在。 先设置用户域。 404 Not Found NoSuchKey 指定的Key不存在。 先上传对象。 404 Not Found NoSuchLifecycleConfiguration 请求的LifeCycle不存在。 先配置LifeCycle。 404 Not Found NoSuchUpload 指定的多段上传不存在。Upload ID不存在,或者多段上传已经终止或完成。 使用存在的段或重新初始化段。 404 Not Found NoSuchVersion 请求中指定的version ID与现存的所有版本都不匹配。 使用正确的version ID。 404 Not Found NoSuchWebsiteConfiguration 请求的Website不存在。 先配置Website。 405 Method Not Allowed MethodNotAllowed 指定的方法不允许操作在请求的资源上。 对应返回的Message为:Specified method is not supported. 方法不允许。 408 Request Timeout RequestTimeout 用户与Server之间的socket连接在超时时间内没有进行读写操作。 检查网络后重试,或联系技术支持。 409 Conflict BucketAlreadyExists 请求的桶名已经存在。桶的命名空间是系统中所有用户共用的,选择一个不同的桶名再重试一次。 更换桶名。 409 Conflict BucketAlreadyOwnedByYou 发起该请求的用户已经创建过了这个名字的桶,并拥有这个桶。 不需要再创桶了。 409 Conflict BucketNotEmpty 用户尝试删除的桶不为空。 先删除桶中对象,然后再删桶。 409 Conflict InvalidBucketState 无效的桶状态,配置跨Region复制后不允许关闭桶多版本。 不关闭桶的多版本或取消跨Region复制。 409 Conflict OperationAborted 另外一个冲突的操作当前正作用在这个资源上,请重试。 等待一段时间后重试。 409 Conflict ServiceNotSupported 请求的方法服务端不支持。 服务端不支持,请联系技术支持。 411 Length Required MissingContentLength 必须要提供HTTP消息头中的Content-Length字段。 提供Content-Length消息头。 412 Precondition Failed PreconditionFailed 用户指定的先决条件中至少有一项没有包含。 根据返回消息体中的Condition提示进行修改。 416 Client Requested Range Not Satisfiable InvalidRange 请求的range不可获得。 携带正确的range重试。 500 Internal Server Error InternalError 系统遇到内部错误,请重试。 请联系技术支持。 501 Not Implemented ServiceNotImplemented 请求的方法服务端没有实现。 当前不支持,请联系技术支持。 503 Service Unavailable ServiceUnavailable 服务器过载或者内部错误异常。 等待一段时间后重试,或联系技术支持。 503 Service Unavailable SlowDown 请降低请求频率。 请降低请求频率。 父主题: 异常处理(Python SDK)
-
请求参数说明 参数名称 参数类型 是否必选 描述 bucketName str 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 extensionHeaders dict 可选 参数解释: 接口的拓展头域。 取值范围: 参考自定义头域。 默认取值: 无
-
接口约束 您必须是桶拥有者或拥有获取桶的生命周期配置的权限,才能获取桶的生命周配置。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:GetLifecycleConfiguration权限,如果使用桶策略则需授予GetLifecycleConfiguration权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
-
返回结果说明 类型 说明 GetResult 参数解释: SDK公共结果对象。 表3 GetResult 参数名称 参数类型 描述 status int 参数解释: HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 默认取值: 无 reason str 参数解释: HTTP文本描述。 默认取值: 无 errorCode str 参数解释: OBS服务端错误码,当status参数小于300时为空。 默认取值: 无 errorMessage str 参数解释: OBS服务端错误描述,当status参数小于300时为空。 默认取值: 无 requestId str 参数解释: OBS服务端返回的请求ID。 默认取值: 无 indicator str 参数解释: OBS服务端返回的错误定位码。 默认取值: 无 hostId str 参数解释: 请求的服务端ID,当status参数小于300时为空。 默认取值: 无 resource str 参数解释: 发生错误时相关的桶或对象,当status参数小于300时为空。 默认取值: 无 header list 参数解释: 响应消息头列表,由多个元组构成。每个元组均包含两个元素,代表响应头的键值对。 默认取值: 无 body object 参数解释: 操作成功后的结果数据,当status大于300时为空。该值根据调用接口的不同而不同,参见“桶相关接口”章节和“对象相关接口”章节的详细描述。 默认取值: 无
-
请求参数说明 参数名称 参数类型 是否必选 描述 bucketName str 必选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 extensionHeaders dict 可选 参数解释: 接口的拓展头域。 取值范围: 参考自定义头域。 默认取值: 无
-
接口约束 您必须是桶拥有者或拥有获取桶标签的权限,才能获取桶标签。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:bucket:GetBucketTagging权限,如果使用桶策略则需授予GetBucketTagging权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、自定义创建桶策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。
-
代码样例 此用例用于生成带授权信息的临时URL。 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 from obs import ObsClient import os import traceback import base64 # 推荐通过环境变量获取AKSK,这里也可以使用其他外部引入方式传入,如果使用硬编码可能会存在泄露风险 # 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html ak = os.getenv("AccessKeyID") sk = os.getenv("SecretAccessKey") # 【可选】如果使用临时AKSK和SecurityToken访问OBS,则同样推荐通过环境变量获取 # security_token = os.getenv("SecurityToken") # server填写Bucket对应的Endpoint, 这里以华北-北京四为例,其他地区请按实际情况填写 server = "https://obs.cn-north-4.myhuaweicloud.com" # 创建obsClient实例 # 如果使用临时AKSK和SecurityToken访问OBS,需要在创建实例时通过security_token参数指定securityToken值 obsClient = ObsClient(access_key_id=ak, secret_access_key=sk, server=server) try: # 生成创建桶的带授权信息的URL res1 = obsClient.createSignedUrl(method='PUT', bucketName='bucketname', expires=3600) print('signedUrl:', res1.signedUrl) print('actualSignedRequestHeaders:', res1.actualSignedRequestHeaders) # 生成上传对象的带授权信息的URL res2 = obsClient.createSignedUrl(method='PUT', bucketName='bucketname', objectKey='objectkey', expires=3600, headers={'Content-Type': 'text/plain'}) print('signedUrl:', res2.signedUrl) print('actualSignedRequestHeaders:', res2.actualSignedRequestHeaders) # 生成设置对象ACL的带授权信息的URL res3 = obsClient.createSignedUrl(method='PUT', bucketName='bucketname', objectKey='objectkey', specialParam='acl', expires=3600, headers={'x-obs-acl': 'private'}) print('signedUrl:', res3.signedUrl) print('actualSignedRequestHeaders:', res3.actualSignedRequestHeaders) # 生成下载对象的带授权信息的URL res4 = obsClient.createSignedUrl(method='GET', bucketName='bucketname', objectKey='objectkey', expires=3600) print('signedUrl:', res4.signedUrl) print('actualSignedRequestHeaders:', res4.actualSignedRequestHeaders) # 生成删除对象的带授权信息的URL res5 = obsClient.createSignedUrl(method='DELETE', bucketName='bucketname', objectKey='objectkey', expires=3600) print('signedUrl:', res5.signedUrl) print('actualSignedRequestHeaders:', res5.actualSignedRequestHeaders) # 生成删除桶的带授权信息的URL res6 = obsClient.createSignedUrl(method='DELETE', bucketName='bucketname', expires=3600) print('signedUrl:', res6.signedUrl) print('actualSignedRequestHeaders:', res6.actualSignedRequestHeaders) # 生成设置初始化分段任务的带授权信息的URL res7 = obsClient.createSignedUrl(method='POST', bucketName='bucketname', objectKey='objectkey', specialParam='uploads', expires=3600) print('signedUrl:', res7.signedUrl) print('actualSignedRequestHeaders:', res7.actualSignedRequestHeaders) # 生成上传段的带授权信息的URL, res8 = obsClient.createSignedUrl(method='PUT', bucketName='bucketname', objectKey='objectkey', expires=3600, queryParams={'partNumber': '1', 'uploadId': '00000*****'}) print('signedUrl:', res8.signedUrl) print('actualSignedRequestHeaders:', res8.actualSignedRequestHeaders) # 生成合并段的带授权信息的URL res9 = obsClient.createSignedUrl(method='POST', bucketName='bucketname', objectKey='objectkey', expires=3600, queryParams={'uploadId': '00000*****'}) print('signedUrl:', res9.signedUrl) print('actualSignedRequestHeaders:', res9.actualSignedRequestHeaders) # 生成图片持久化处理的带授权信息的URL # 源对象所在的桶名 bucketName = 'originBucketName'; # 处理前的源对象名 objectKey = 'test.png'; # 处理后的对象名 targetObjectName ="save.png" # 处理后保存的桶名, 可选参数 targetBucketName ="saveBucketName" queryParams={} queryParams["x-image-process"]="image/resize,w_100" queryParams["x-image-save-object"]=base64.b64encode(targetObjectName .encode("utf-8")).decode() # 可选参数 queryParams["x-image-save-bucket"]=base64.b64encode(targetBucketName .encode("utf-8")).decode() res10 = obsClient.createSignedUrl(method='GET', bucketName=bucketName, objectKey=objectKey, queryParams=queryParams, expires=3600) print('signedUrl:', res10.signedUrl) print('actualSignedRequestHeaders:', res10.actualSignedRequestHeaders) except: print(traceback.format_exc())
-
接口约束 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 如果遇到跨域报错、签名不匹配问题,请参考以下步骤排查问题: 未配置跨域,需要在控制台配置CORS规则,请参考配置桶允许跨域请求。 签名计算问题,请参考URL中携带签名排查签名参数是否正确;比如上传对象功能,后端将Content-Type参与计算签名生成授权URL,但是前端使用授权URL时没有设置Content-Type字段或者传入错误的值,此时会出现跨域错误。解决方案为:Content-Type字段前后端保持一致。
-
请求参数 表1 请求参数列表 参数名称 参数类型 是否必选 描述 method str 必选 参数解释: HTTP方法类型 取值范围: GET POST PUT DELETE HEAD 默认取值: 无 bucketName str 可选 参数解释: 桶名。 约束限制: 桶的名字需全局唯一,不能与已有的任何桶名称重复,包括其他用户创建的桶。 桶命名规则如下: 3~63个字符,数字或字母开头,支持小写字母、数字、“-”、“.”。 禁止使用IP地址。 禁止以“-”或“.”开头及结尾。 禁止两个“.”相邻(如:“my..bucket”)。 禁止“.”和“-”相邻(如:“my-.bucket”和“my.-bucket”)。 同一用户在同一个区域多次创建同名桶不会报错,创建的桶属性以第一次请求为准。 默认取值: 无 objectKey str 可选 参数解释: 对象名。对象名是对象在存储桶中的唯一标识。对象名是对象在桶中的完整路径,路径中不包含桶名。 例如,您对象的访问地址为examplebucket.obs.cn-north-4.myhuaweicloud.com/folder/test.txt 中,对象名为folder/test.txt。 取值范围: 长度大于0且不超过1024的字符串。 默认取值: 无 specialParam str 可选 参数解释: 特殊操作符,代表要操作的子资源, 取值范围: versions uploads location storageinfo quota storagePolicy acl append logging policy lifecycle website versioning cors notification tagging delete restore 默认取值: 无 expires int 可选 参数解释: 带授权信息的URL的过期时间。 取值范围: 临时密钥取值范围为0~86400秒。 永久密钥取值范围为0~630720000秒。 默认取值: 300秒 headers dict 可选 参数解释: 请求中携带的头域。 默认取值: 无 queryParams dict 可选 参数解释: 请求中携带的查询参数。 默认取值: 无 如果遇到跨域报错、签名不匹配问题,请参考以下步骤排查问题: 未配置跨域,需要在控制台配置CORS规则,请参考配置桶允许跨域请求。 签名计算问题,请参考URL中携带签名排查签名参数是否正确;比如上传对象功能,后端将Content-Type参与计算签名生成授权URL,但是前端使用授权URL时没有设置Content-Type字段或者传入错误的值,此时会出现跨域错误。解决方案为:Content-Type字段前后端保持一致。
-
方案概述 应用场景 在以下场景,使用MirrorMaker进行不同集群间的数据同步,可以确保Kafka集群的可用性和可靠性。 备份和容灾:企业存在多个数据中心,为了防止其中一个数据中心出现问题,导致业务不可用,会将集群数据同步备份在多个不同的数据中心。 集群迁移:当今很多企业将业务迁移上云,迁移过程中需要确保线下集群和云上集群的数据同步,保证业务的连续性。 方案架构 使用MirrorMaker可以实现将源集群中的数据镜像复制到目标集群中。其原理如图1所示,MirrorMaker本质上也是生产消费消息,首先从源集群中消费数据,然后将消费的数据生产到目标集群。如果您需要了解更多关于MirrorMaker的信息,请参见Mirroring data between clusters。 图1 MirrorMaker原理图
-
解释说明 用于指定需要通过VPN连接访问云上业务VPC的用户侧子网。 若存在多个对端子网,请用半角逗号(,)隔开。 对端子网可以和本端子网重叠,但不能重合。 对端子网不能被VPN网关关联的VPC内已有子网所包含;不能作为被VPN网关关联的VPC自定义路由表的目的地址。 对端子网不能是VPC的预留网段,例如100.64.0.0/10、214.0.0.0/8。 如果互联子网关联了ACL规则,则需要确保ACL规则中已放通所有本端子网到对端子网的业务所需的协议和端口。
共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