Openmix

概述

NetScaler Intelligent Traffic Management (ITM) Openmix 为全球流量管理/全球服务器负载均衡 (GTM/GSLB) 提供了一种革命性的方法。对于传统的全球流量管理,ITM 提供了一种基于 DNS 的负载均衡方法。ITM 使用 DNS CNAME 或记录,其中 DNS 响应会根据所需的业务逻辑进行实时更改。Openmix 可以通过多种方式集成到视频工作流和交付中。

GTM 或 GSLB 工具和服务依赖于专有的、不可扩展的静态规则引擎来定义和控制一组狭窄的固定策略,用于故障转移、循环和地理定位。NetScaler ITM 的使命是基于实时数据馈送实现下一代云策略。Openmix 平台提供了一种高度可靠的方法来摄取来自各种来源的实时数据。它将元数据公开为可在每个请求上评估的环境“变量”。

Openmix:主要优势

  • 消除单一供应商依赖,确保 100% 可用性
  • 控制价格/性能权衡,消除多源采购带来的麻烦
  • 消除传统性能工具的不确定性,有选择地、战略性地分流流量
  • 应用特定提供商来定位各个市场

Openmix 工作原理

客户登录 Citrix ITM Portal 以部署其第一个应用程序。提供了示例应用程序库以帮助入门,以及分步向导工具以帮助创建具有最常见路由逻辑的应用程序。ITM Openmix 应用程序可以支持两种协议来引导流量:DNS 或 HTTP。

应用程序定义控制

全球分布式、按需的 Openmix 平台将 GTM/GSLB 决策制定移至靠近您的应用程序受众。每个主机都可以拥有自己的自定义 Openmix 应用程序,该应用程序会考虑当前指标和变量,为任何路由请求提供最佳优化。

Openmix 脚本使用 JavaScript 编程,这是一种大多数 Web 程序员和网络管理员都可以访问的语言。这种基于脚本的方法几乎可以实现任何业务逻辑,且编码复杂性极低,可作为真正动态流量管理策略的基础。得益于我们客户社区的协作性质,ITM 还提供了“快速启动应用程序”,这些是无需代码的标准应用程序。

何时使用 HTTP 或 DNS 服务

ITM Openmix 支持广泛的内容交付优化。您使用哪种方法启用 Openmix 主要取决于您的用例的具体情况。DNS 方法易于实施,对客户端大多透明,并且适用于各种内容。但是,切换提供商的能力受到 DNS 响应上设置的 TTL 的限制,并且某些内容无法在流中途切换到不同的提供商。HTTP 提供了更大的集成灵活性,并且可以在对客户端最有利时做出优化决策。这种更大的灵活性需要更多的工作才能与 CMS 或客户端集成。

下表总结了 DNS 和 HTTP 接口的客户用例。

DNS 和 HTTP 接口的客户用例

Openmix:DNS

CNAME 委派

对于 ITM 客户而言,最简单的集成是使用 DNS CNAME 委派。CNAME 委派的工作原理是让客户将其面向最终用户的主机名(在以下示例中为 www.acme.com)指向 ITM 主机名

www.acme.com  600  IN  CNAME  2-02-123d-000d.cdx.cedexis.net.
<!--NeedCopy-->

在收到来自最终用户的 DNS 请求时,ITM 系统会做出实时决策。该决策基于 Radar 数据、应用程序中的业务逻辑以及任何第三方信息。此决策可以表示为另一个 CNAME 记录(在我们的示例中为 acme.cdn1.net)或 A 记录,例如 111.222.111.222

通过提供 CNAME 记录,ITM 将最终用户“指向”所选的 CDN、云或数据中心。引导最终用户使用该提供商而不是另一个。

2-02-123d-000d.cdx.cedexis.net.  19  IN  CNAME acme.cdn1.net.
<!--NeedCopy-->

一旦提供了 CDN 或云 CNAME,最终用户的机器将继续解析链。它会请求 CDN 名称服务器,直到收到节点或服务器的 IP 地址。然后开始下载内容的过程。 如果记录作为逻辑的一部分提供,则最终用户的机器会收到 IP 地址。它直接连接到服务器并启动内容下载。

acme.cdn1.net.  132  IN  A  111.222.222.111
<!--NeedCopy-->

区域委派

此外,权威 DNS 区域委派是实施 Openmix 的一个选项。客户创建一个 DNS 区域并委派给在 ITM Portal 中创建的预测性 DNS 区域。在委派区域中创建主机名。将其配置为使用 Openmix 应用程序或动态预测性 DNS 记录来生成响应。 此选项的优点是,主机名与 ITM 平台的动态响应之间不需要 CNAME 委派。使用前面的示例,www.acme.com 主机名直接解析为最佳 CDN、云或数据中心的配置值。

www.acme.com. 19 IN CNAME acme.cdn1.net.

A/AAAA 记录也可以代替 CNAME 使用,主机名直接解析为最佳目标的记录。

www.acme.com. 19 IN A 111.222.222.111

DNS 和生存时间 (TTL) 影响

诸如生存时间 (TTL) 值等因素会根据为内容设置的适当时间以及如何为用户做出决策而仔细考虑。在大多数情况下,ITM 建议页面和对象内容的 TTL 为 20 秒。对于视频内容,ITM 顾问会与客户合作,根据分块长度和集成方法找到最合适的平衡点。

Openmix:HTTP

DNS 的替代方案是使用 HTTP API。Openmix 使用 HTTP 请求通知客户端(例如视频播放器或 CMS)在任何给定时间点使用哪个平台。

http://hopx.cedexis.com/zones/1/customers/0/apps/1/decision
< HTTP/1.1 200 OK
< Content-Type: application/json
< Date: Mon, 22 Apr 2015 20:25:24 GMT
< Connection: keep-alive
< Content-Length: 177
<
{
  "providers" : [
    {
    "provider" : "cdn2",
    "host" : "foo.cdn2.net"
    },
    {
    "provider" : "cdn1",
    "host" : "acme.cdn1.net"
    }
  ]
}
<!--NeedCopy-->

HTTP Openmix 服务使用与其基于 DNS 的对应服务相同的应用程序逻辑。它还包括一些额外的扩展,允许对客户端机器进行进一步分析。例如,使用 HTTP Openmix 可以查看 User-Agent String、X-Forwarded-For 和 Referer 的标头。使用查询字符串参数提供 IP 覆盖。 由于 HTTP Openmix 的有效负载比 DNS 更具可扩展性,因此也可以通过不同的方式提供 CDN、云或服务器决策选择。迄今为止最常见的是从最优先平台到最不优先平台的有序列表(如上所示)。完整列表允许将决策排名提供给 CMS 或客户端,同时仍允许使用内部启发式方法来选择提供商。

CMS 集成

一些客户更喜欢在服务器端处理提供商选择,而不是在每个客户端中实现提供商选择。HTTP API 可用于在客户端请求时从 Openmix 检索优化决策。它可用于填充从 CMS 返回给客户端的文件。

默认情况下,Openmix HTTP 端点使用调用者的 IP 进行地理位置和决策标准。如果您从位于最终用户客户端和 Openmix 之间的 CMS 或其他系统调用,则可以将 IP 指定为决策中使用的参数。

http://hopx.cedexis.com/zones/1/customers/0/apps/1/decision?ip=1.2.3.4
< HTTP/1.1 200 OK
< Content-Type: application/json
< Date: Mon, 22 Apr 2015 20:25:24 GMT
< Connection: keep-alive
< Content-Length: 177
<
{
  "providers" : [
    {
    "provider" : "cd1",
    "host" : "acme.cdn1.net"
    },
    {
    "provider" : "cdn2",
    "host" : "foo.cdn2.net"
    }
  ]
}
<!--NeedCopy-->

此方法允许您使用 CMS 集成从 Openmix 中提取决策。您还可以获得最终用户的地理和 ISP 路由优化优势。从 Openmix 返回的主机名随后被打包到响应中,例如视频清单文件,并由 CMS 返回给客户端。客户端使用优化后的决策,无需任何修改即可支持 Openmix 优化。

Openmix 应用程序

Openmix 快速启动应用程序是负载均衡和流量管理应用程序。这些应用程序根据一组规则提供到最佳提供商的实时流量路由。

Openmix 的每个请求都会处理应用程序,并根据指定的逻辑做出路由决策。客户可以为具有高业务价值的内容使用一个应用程序,为价值较低的内容使用另一个应用程序。这些请求是单独路由的。

当您调用应用程序时,单个请求会发送到 Citrix 的一个负载均衡器。对于 DNS,它是对 DNS 负载均衡器的单个 DNS 请求。对于 HTTP,它是对 Openmix HTTP 端点的 GET 或 HEAD 请求。

以下应用程序目前可通过 NetScaler Intelligent Traffic Management Portal 获得。

  • 静态路由
  • 故障转移
  • 循环
  • 最佳往返时间 (ORTT)
  • 吞吐量
  • 静态邻近

Openmix 自定义 JavaScript 应用程序由专门的 Openmix 服务器使用,根据脚本中的逻辑响应 DNS 或 HTTP 请求。脚本的部署通过客户门户完成,应用程序在此处配置和发布。有关创建自己的 JavaScript 脚本的更多信息,请参阅我们的 Developer Exchange 中的信息。

在继续设置应用程序之前,了解以下概念非常重要:

可用性阈值

可用性阈值是平台必须满足的最低可用性分数,才能被考虑用于路由。所有应用程序的默认最低可用性阈值为 80%。但是,您可以修改此百分比并将其设置为适合您的位置、网络可用性和可靠性的值。

注意: 如果没有平台达到此最低可用性阈值(默认 80% 或您设置的值),则对循环、ORTT 和吞吐量应用程序执行随机路由。

回退

如果 Openmix 应用程序因任何原因未能成功运行,则返回回退响应。或者如果 Sonar 确认没有可用的平台。因此,必须指定一个有效的回退 CNAME/A/AAAA 记录或 IP(或 HTTP 中的路径),Openmix 可以用它来响应。此回退 URL 或 CNAME 记录可以用于在 Openmix 中预配置的平台。 回退有时也会在以下场景中发生:

  • 当您在应用程序版本之间切换时,您会上传并发布一个新脚本。在新脚本初始化并删除旧脚本之前,会有一段短暂的毫秒级回退时间。
  • 如果发生过载(这种情况很少发生),Openmix 会使用回退 CNAME/A/AAAA 进行响应,因为回退会抵消服务上的负载。

对于回退,您必须在 DNS 中输入有效的主机名 (CNAME/A/AAAA 记录) 或 IP 地址,并在 HTTP 中输入有效的 URI(它可以是 scheme:[//host[:port]][/path][?query][#fragment] 形式)。

TTL

在 Openmix 中,应用程序的 DNS 生存时间 (TTL) 告诉解析器在再次询问 Openmix 之前必须保留决策多长时间。 TTL 用于控制 Openmix 应用程序获得的流量。它还控制应用程序对所操作数据变化的敏感程度。 默认 TTL 为 20 秒。尽管您可以修改此值,但不建议这样做。如果您降低 TTL,您将获得更多的流量和更多的实时 DNS 查询。这可能导致成本增加和性能降低,因为 DNS 查询在客户端需要时间。因此,最好不要更改 TTL 的默认值。

注意: 生存时间适用于快速启动应用程序、未在代码中指定 TTL 的自定义 JS 应用程序以及所有回退响应。

权重(用于循环)

您可以为每个平台的优先级和选择分配权重,可以是全球性的和/或按市场或国家/地区划分的。

例如,假设您为应用程序选择了三个平台 - P1、P2 和 P3。您分别给它们分配权重:60、50 和 10。循环应用程序将这些值转换为百分比,例如 P1=50%、P2=42% 和 P3=8%,总计为 100%。这些百分比意味着 50% 的时间用户通过 P1 路由,42% 的时间通过 P2 路由,8% 的时间通过 P3 路由。

您赋予平台的权重不必总计为 100。它们可以是 0 到 1,000,000 之间的任何整数。当平台权重转换为百分比(由后端应用程序转换)时,总计为 100%。如果所有选定的平台都分配相同的权重,流量将随着时间的推移均匀分布在它们之间。如果您只有一个平台,那么该平台将 100% 的时间被使用,无论您给它分配什么权重。

权重仅用于根据 Radar 和 Sonar 可用性检查被认为可用的平台,具体取决于应用程序的配置。不可用的平台会导致分布与配置的权重不匹配。例如,如果 P1 权重为 100,P2 权重为 0,但 P1 未通过 Radar 可用性检查,则所有流量都将流向 P2。

障碍(用于 ORTT 和吞吐量)

障碍是一个百分比值,可应用于平台以修改 RTT 和吞吐量的雷达分数,即人为地增加响应时间(以毫秒为单位)或减少吞吐量(以 kbps 为单位)。增加或减少这些值会降低平台的性能,从而使其被选中的可能性降低。障碍可以全局添加到平台,也可以单独添加到特定市场或国家/地区。 在某个平台在特定市场或国家/地区成本较高,并且您希望在性能相近的等效提供商存在时降低其被选中的可能性。您将障碍值作为乘数来增加响应时间值或减少吞吐量值。结果,它降低了平台被选中的概率。

以下是 障碍 在后端的大致工作原理:

  • 应用障碍后的平台 RTT = RTT(往返时间,以毫秒为单位)* (1 + 障碍) 或
  • 应用障碍后的平台吞吐量 =(吞吐量,以 kbps 为单位)* (1 – 障碍)

注意: 平台的 RTT 和吞吐量值来自 Radar 数据。 下表显示了障碍如何影响两个平台 - P1 和 P2。以及障碍如何降低 P1 被选中的可能性。

  P1 P2
无障碍 RTT 50 毫秒 60 毫秒
P1 具有 50% (0.5) 障碍,P2 具有 0% (0) 障碍的 RTT 50(1+0.5)= 75 毫秒 60(1+0)= 60 毫秒
无障碍吞吐量 3000 kbps 2800 kbps
P1 具有 50% (0.5) 障碍,P2 具有 0% (0) 障碍的吞吐量 3000(1-0.5)= 1500 kbps 2800(1- 0)= 2800 kbps

筛选、排名和选择工作流

吞吐量应用程序的示例流程图

示例流程图

平台选择标准

Openmix 快速启动应用程序使用以下标准作为第一、第二和第三级筛选器来排名和选择最佳平台。

筛选级别 选择标准 ORTT 吞吐量 循环 故障转移 静态路由 静态邻近
第一级 Sonar 可用性检查(如果启用) X X X X X X
第二级 Radar 可用性检查(如果启用) X X X X X NA
第三级 权重(用户定义) NA NA X NA NA NA
第三级 往返时间(以毫秒为单位) X NA NA NA NA NA
第三级 吞吐量(以 kbps 为单位) NA X NA NA NA NA

原因代码报告

原因代码提供了决策原因的可见性,并让您了解应用程序代码的哪些部分正在运行。在执行期间,应用程序可以随时向原因代码字段添加内容。 原因代码对于每个快速启动应用程序都意味着不同的含义。每个应用程序的原因代码之间存在一些共性,但并非全面。

注意:为了正确显示原因代码,它们不得超过 200 个字符的最大字符限制。如果超出此限制,原因代码将显示为 未知。如果用户未添加原因代码,则显示 未知

以下是快速启动应用程序的原因代码:

原因代码 描述 最佳 RTT 循环 静态路由 吞吐量 静态邻近 故障转移
最佳可用 性能最佳的提供商可用并已被选中。 X N/A N/A X N/A X
最佳不可用-Radar 性能最佳的提供商不可用;已选择另一个符合条件的提供商,该提供商根据雷达可用。 X N/A N/A X N/A X
最佳不可用-Radar+Sonar 性能最佳的提供商因雷达和/或声纳而不可用。 X N/A N/A X N/A X
全部不可用-Radar 根据雷达,所有符合条件的平台都不可用。请求路由到回退。 X X N/A X N/A X
全部不可用-Sonar 根据声纳,所有符合条件的平台都不可用。请求路由到回退。 X X N/A X N/A X
数据问题 表示一个或多个平台缺少雷达测量数据。结果随机选择平台。 X X N/A X N/A X
地理默认 默认地理设置生效。 X X N/A X X X
地理覆盖-国家/地区 此决策的国家/地区覆盖生效。 X X N/A X X X
地理覆盖-市场 此决策的市场覆盖生效。 X X N/A X X X
全部可用 所有符合条件的平台均可通过声纳和雷达获得。 X X N/A X N/A N/A
邻近可用 地理位置最近的平台可用并已被选中。 X N/A N/A N/A X N/A
符合条件不可用-Radar 对于循环,符合条件的提供商根据雷达不可用。 N/A X N/A N/A N/A N/A
持久应用程序 决策提供了缓存响应,未执行任何逻辑。 X X X X X X
请求地理位置不可用 无法建立请求的地理位置。请求路由到回退。 X N/A N/A N/A X N/A
全部不可用-提供商 所有提供商都不可用。请求路由到回退。 X N/A N/A N/A X N/A
不可用-提供商-距离 未找到任何提供商的邻近分数。请求路由到回退。 X N/A N/A N/A X N/A

Openmix 快速启动应用程序

  1. 登录 NetScaler Intelligent Traffic Management Portal。
  2. 在左侧导航菜单中,导航到 Openmix > 应用程序配置
  3. 如果您是首次配置 Openmix 应用程序,当您单击 Openmix > 应用程序配置 时,您会看到 入门 页面。
  4. 要配置新应用程序,请单击页面右上角的 入门 按钮或 添加 按钮。如果之前已配置 Openmix 应用程序,您会在此页面上看到应用程序列表。

以下部分将引导您完成在门户中配置 Openmix 应用程序的过程。

静态路由

此类应用程序不使用任何评估逻辑来决定应向最终用户提供哪个 DNS 响应。应用程序在此处始终选择用户指定的单个平台。因此,应用程序仅使用单个 DNS CNAME 或 IP 地址响应。静态路由应用程序可以通过门户在 应用程序配置 页面上进行配置。

注意:在配置应用程序之前,请确保已首先配置您的平台。有关平台配置,请参阅平台页面。

导航

  1. 导航到 Openmix > 应用程序配置
  2. 单击右上角的 添加 按钮

基本信息 对话框随即打开。

基本信息

按照以下步骤输入 基本信息

  1. 对于 协议,从列表中选择 DNS 或 HTTP。
  2. 对于 应用程序类型,选择静态路由。或者,如果您正在配置其他类型的应用程序,请从列表中选择它。
  3. 为您的应用程序指定一个名称(必填字段);添加描述(可选字段);以及一个标签(可选字段)。
  4. 单击下一步进入配置

配置

要配置应用程序,请执行以下操作:

  1. 平台列表中选择关联的平台。这是您在平台页面中设置的平台,代表 CDN、云或数据中心。
  2. 输入 CNAME/A/AAAA 记录(对于 DNS)或 URL(对于 HTTP)。所选平台的 DNS CNAME 或 HTTP URL 必须指向有效的 IP 地址或主机名。
  3. 对于 CORS,在 HTTP 协议中选择无、全部或自定义。CORS 允许您控制其他站点对您站点的访问。您可以完全限制其他站点对您站点的访问(通过单击),允许所有其他站点访问(通过单击全部),或仅允许特定站点访问(通过单击自定义)。
  4. 输入响应的 TTL(生存时间)。默认值为 20 秒,但可以覆盖。
  5. 单击完成
  6. 在确认弹出窗口中,单击完成发布以在 Openmix 应用程序页面中查看您的应用程序。如果您单击发布,您的应用程序将立即上线并显示绿色状态。这意味着应用程序已投入生产。如果您单击完成,您的应用程序仍会列在应用程序页面上,但未发布,并且状态为红色。

故障转移

故障转移应用程序支持简单的路由逻辑,其中根据平台在队列中的位置及其可用性来选择平台。客户可以创建故障转移链,决定首先选择哪个平台,其次选择哪个平台,依此类推。此故障转移链可以设置为全局工作,也可以针对各个市场和国家/地区工作。

故障转移应用程序可以在门户的 应用程序配置 页面中进行配置。

注意:在配置应用程序之前,请确保已首先配置您的平台。有关平台配置,请参阅平台页面。

导航

  1. 登录 Portal。
  2. 在左侧导航菜单中,导航到 Openmix > 应用程序配置
  3. 单击右上角的“添加”按钮以进入“新建 Openmix 应用程序”的 基本信息 对话框。

基本信息

  1. 协议 列表中选择 DNS
  2. 应用程序类型 列表中,选择 故障转移
  3. 为您的应用程序指定一个名称(必填字段);添加描述(可选字段);以及一个标签(可选字段)。
  4. 完成后,单击下一步

故障转移基本信息

配置

  1. 在“配置”对话框中,选中可用性阈值复选框。可用性阈值的默认值为 80%。平台必须具有至少与此阈值一样高的可用性分数才能被考虑用于路由。
    • 如果您想修改默认可用性阈值,只需输入一个新值来替换默认值。
    • 如果没有平台的可用性分数等于或大于指定阈值,则使用回退 CNAME 或 A 或 AAAA 或 IP 地址。
    • 如果未选中该复选框,则平台假定可用性阈值为零。这意味着此平台没有 Radar 可用性检查。
  2. 输入 回退 的 CNAME/A/AAAA 或 IP 地址。回退 CNAME/A/AAAA 或 IP 通常在应用程序遇到问题或错误时使用。
  3. 输入响应的 TTL(生存时间)。默认值为 20 秒。如有必要,您可以覆盖此值。

故障转移配置

平台信息

  1. 平台信息 对话框中,从列表中选择一个平台
    • 您可以使用 添加平台 按钮选择多个平台。目的是选择适用于全球和地理(市场和国家/地区)路由的所有可用平台。
    • 此列表中的平台是您在门户的平台页面中设置的平台,代表您的 CDN、云或数据中心。
    • 所有 Openmix 应用程序都需要事先设置关联平台。如果您在列表中找不到平台,可以在门户的平台页面中进行设置。
  2. 输入平台的 CNAME/A/AAAA 记录。
  3. 在进入下一步之前,请确保选中已启用复选框(表示平台已启用)。
  4. 如果已配置 Sonar 并且您想使用 Sonar 数据来帮助初始决策过程,请务必单击 使用 Sonar 进行平台可用性检查 复选框。注意:Sonar 复选框仅在该平台启用 Sonar 时显示。
  5. 单击下一步进入位置配置

位置配置

  1. 位置配置 对话框中,选择 全局 路由所需的平台。
    • 全局表示您正在为全局路由设置平台链。
    • 当您单击 全局 字段内部时,会显示您在 平台信息 步骤中选择的所有平台列表。
    • 从列表中选择所需的平台以进行基于可用性的全局路由。
    • 您在此字段中放置平台名称的顺序决定了它们选择的优先级。例如,如果列表中的第一个平台不可用,则选择第二个。如果列表中的所有平台都不可用,则使用回退。
    • 您可以拖动平台名称以更改其优先级顺序。
  2. 如果您想为本地地理路由设置平台,请单击 市场和国家/地区
    • 当您单击 市场和国家/地区 字段内部时,会显示您在 平台信息 步骤中选择的所有平台列表。
    • 为每个地理区域(市场/国家/地区)单独选择本地地理路由平台。
    • 您在此字段中放置平台名称的顺序决定了它们选择的优先级。例如,在中国,您希望首先使用中国 POP,并且只有当它不可用时,您才希望使用新加坡 POP,您会将其放在下一个位置,依此类推。
    • 您可以拖动平台名称以更改其优先级顺序。

故障转移位置信息

  1. 单击完成,以完成应用程序的配置。
  2. 在确认弹出窗口中,单击完成发布以在 Openmix 页面上查看您的应用程序。
    • 如果您单击发布,您的应用程序将立即上线并显示绿色状态。您的应用程序已投入生产。
    • 如果您单击完成,您的应用程序仍会列在 Openmix 页面上,但未发布,并且状态为红色。

循环

此应用程序遵循典型的全球服务器负载均衡循环方法,其中每个 CNAME 轮流返回给最终用户,因为 DNS 请求已发出。它使用 Sonar 数据(如果 Sonar 已启用)和平台可用性阈值来评估请求用户的最佳平台。每个平台都根据循环分发方法进行选择。例如,如果平台 P1、P2 和 P3 满足可用性阈值,则第一个请求路由到 P1,第二个路由到 P2,第三个路由到 P3。第四个请求再次路由到 P1,依此类推。

要配置新的循环应用程序,请单击 Openmix 页面右上角的 添加 按钮。基本信息 对话框随即打开。

导航

  1. 登录 Portal。
  2. 在左侧导航菜单中,导航到 Openmix > 应用程序配置。
  3. 单击右上角的“添加”按钮以进入“新建 Openmix 应用程序”的“基本信息”对话框。

基本信息

  1. 在“基本信息”对话框中,选择 DNS 作为循环的协议。注意:对于循环应用程序,路由仅通过 DNS CNAME 可用。
  2. 从列表中选择应用程序类型。为应用程序指定一个名称(必填字段)、描述(可选字段)和标签(可选字段)。
  3. 单击下一步进入配置。

配置

  1. 可用性阈值的默认值为 80%。要修改此值,只需输入一个新值来替换默认值。
  2. 输入回退的 CNAME/A/AAAA 或 IP 地址。回退 CNAME/A/AAAA 或 IP 通常在应用程序遇到问题或错误时使用。
  3. 输入响应的 TTL(生存时间)。默认值为 20 秒,但如有必要,可以覆盖此值。
  4. 单击下一步进入平台信息。

平台信息

  1. 平台列表中选择一个平台。注意:所有 Openmix 应用程序都需要事先设置关联平台。如果您在列表中找不到平台,可以在门户的平台页面中进行设置。
  2. 通过单击添加平台按钮选择更多平台。
  3. 为此平台输入 CNAME 或 A/AAAA 记录或 IP(在 DNS 中),或 URL(在 HTTP 中)。它必须是有效的 URL、主机名或 IP 地址。它可以是以下形式:scheme:[//host[:port]][/path][?query][#fragment]
  4. 在进入下一步之前,请确保选中已启用复选框(表示平台已启用)。
  5. 如果 Sonar 可用,并且您想使用 Sonar 数据来帮助初始决策过程,请务必单击 使用 Sonar 进行平台可用性检查 复选框。
  6. 单击保存以转到步骤 4,为每个平台分配适当的权重。

位置配置

  1. 为每个平台的优先级和选择分配权重,可以是全球性的和/或按市场或国家/地区划分的。
  2. 要分别为市场或国家/地区分配平台权重,请在“市场和国家/地区”搜索框中输入名称并从列表中选择。
  3. 单击完成以创建您的应用程序。
  4. 在确认弹出窗口中,单击完成发布以在 Openmix 页面上查看您的应用程序。如果您单击发布,您的应用程序将立即上线并显示绿色状态。您的应用程序已投入生产。如果您单击完成,您的应用程序仍会列在 Openmix 页面上,但未发布,并且其状态为红色。

最佳往返时间 (ORTT) 应用程序

ORTT 应用程序使用 Radar 响应时间、Sonar 数据(如果 Sonar 已启用)和平台可用性阈值来评估请求用户的最佳平台。可用性阈值是平台必须满足的最低可用性(默认值为 80%)才能被选中。此外,ORTT 应用程序还使用一个障碍值,该值允许客户在全球或本地影响最终用户的路由方式。

前三个步骤——基本信息、配置和平台信息——的输入方式与其他应用程序相同。

按照以下步骤配置位置信息并输入每个平台的障碍值,可以是全局的,也可以是按位置/市场划分的。

位置配置

  1. 位置配置对话框中,为一个或所有选定平台输入障碍值。您可以输入 0 到 6000 之间的障碍值。使用障碍是为了在有更好的平台可用时(就成本或便利性而言),手动降低特定平台被选中进行路由的机会。障碍值越大,平台被选中的机会越小。如果需要,您可以通过关闭平台选择按钮来取消选择平台。

  2. 单击市场和国家/地区以从列表中选择特定市场或国家/地区,并分别为每个关联平台输入障碍值。

  3. 单击完成,以完成应用程序的配置。

  4. 在确认弹出窗口中,单击完成发布以在 Openmix 应用程序列表页面上查看您的应用程序。如果您单击发布,您的应用程序将立即上线并显示绿色状态。您的应用程序已投入生产。如果您单击完成,您的应用程序仍会列在应用程序页面上,但未发布,并且其状态为红色。

吞吐量

吞吐量应用程序根据 Sonar 数据(如果 Sonar 已启用)、最高吞吐量(使用 Radar 数据)和平台可用性阈值(默认 80%)选择平台。此外,此应用程序允许您添加一个障碍值,以降低特定平台的吞吐量并影响最终用户的路由方式。此可选障碍值可以全局和/或本地(针对特定市场或国家/地区)分配。

前三个步骤——基本信息、配置和平台信息——的输入方式与其他应用程序相同。位置配置的输入方式与 ORTT 应用程序相同。

完成后,单击完成返回 Openmix 应用程序列表页面。最后,当您准备好上线时,单击发布以发布您的应用程序。

应用程序状态

应用程序的状态显示其当前配置。

  • 红色表示未发布。完成配置后,如果您单击完成,您的应用程序将以红点显示在应用程序页面上,表示尚未发布。
  • 绿色表示已发布。如果您单击发布,您的应用程序将立即上线,并以绿点表示,这意味着应用程序已投入生产。
  • 黄色表示未发布的最新版本。黄点表示应用程序已创建和编辑,但上次修改的设置尚未发布。

静态邻近

静态邻近应用程序响应位于请求用户经纬度附近的平台。

注意:

所有 Openmix 应用程序都需要事先设置一组关联平台。如果您在列表中找不到平台,可以在门户的“平台”页面中进行设置。

导航

  1. 登录 NetScaler Intelligent Traffic Management portal。
  2. 在左侧导航菜单中,导航到 Openmix > 应用程序配置
  3. 单击右上角的加号按钮 添加 Openmix 应用程序
  4. 选择 快速启动应用程序

基本信息

  1. 基本信息 对话框中,选择 DNS 作为协议。
  2. 选择 静态邻近 作为应用程序类型。为应用程序指定一个名称(必填字段)、描述(可选字段)和标签(可选字段)。
  3. 单击下一步进入配置。

配置

  1. 如果启用,可用性阈值的默认值为 80%。输入一个新值来替换默认值。
  2. 输入 回退 的 CNAME/A/AAAA 或 IP 地址。回退 CNAME/A/AAAA 或 IP 通常在应用程序遇到问题或错误时使用。此字段不能为空。
  3. 输入响应的 TTL(生存时间)。默认值为 20 秒,但如有必要,可以覆盖此值。
  4. 单击下一步进入持久性控制。

持久性控制

设置本地持久性。有关更多信息,请参阅本地持久性。单击下一步进入平台信息。

平台信息

每个平台都必须通过平台页面设置其经纬度。社区平台的别名最初继承自社区平台的地理信息,尽管在创建别名后您可以更改它们。私有平台需要在创建时或之后通过其配置窗格进行设置。要查看配置窗格,只需单击表格中的平台条目。

只有属于以下类别的平台才能拥有地理信息并成为 opx 应用程序答案列表的一部分:

  • 云计算
  • 云存储
  • 数据中心
  1. 平台列表中选择一个平台。

  2. 为此平台输入 CNAME 或 A/AAAA 记录或 IP(在 DNS 中),或 URL(在 HTTP 中)。它必须是有效的 URL、主机名或 IP 地址。它可以是以下形式:

    scheme:[//host[:port]][/path][?query][#fragment]
    <!--NeedCopy-->
    
  3. 在进入下一步之前,请确保选中已启用复选框,表示平台已启用。

  4. 如果此平台有 Sonar 可用,并且您希望在 DNS 解析期间考虑使用 Sonar 数据,请务必单击 使用 Sonar 进行平台可用性检查 复选框。

  5. 您可以通过单击添加平台来添加更多平台。

  6. 单击下一步进入位置配置

位置配置

  1. 在“位置配置”对话框的“全局”部分,您可以设置用于全局路由的平台链。您可以全局启用或禁用每个平台的选择。

  2. 在“市场和国家/地区”中,您可以为每个市场或国家/地区创建不同的设置,从而有效地为它们设置地理围栏规则。

  3. 单击完成以创建您的应用程序。

在确认弹出窗口中,单击发布添加另一个完成

  • 如果您单击发布,您的应用程序将立即上线,状态为绿色。这意味着应用程序已投入生产。

  • 如果您单击完成,您的应用程序将列在 Openmix 页面上,但未发布,并且状态为红色。

  • 如果您单击添加另一个,应用程序的状态与完成相同,但您重新启动相同的过程以创建新应用程序。

管理快速启动应用程序

使用应用程序管理器面板中的顶部选项卡来编辑、复制、删除、测试、查看报告、查看源和查看应用程序的版本历史记录。单击 Openmix 应用程序列表页面中的应用程序以展开应用程序管理器。

管理 Openmix 应用程序

查看报告

查看报告将带您进入 Openmix 决策报告页面,您可以在其中查看每个应用程序、平台和地理区域的 Openmix 决策趋势。

编辑

要编辑您的 Openmix 应用程序,只需单击应用程序管理器面板顶部的编辑图标。您还可以通过单击面板内的编辑按钮,分别对基本信息、配置、平台或位置信息进行单独编辑,如图所示。完成编辑后,单击完成以将应用程序列为未发布状态(以便稍后进行更多编辑),或单击发布以立即上线。

复制

单击复制以复制当前应用程序的配置并以新名称保存。

删除

单击删除,以删除不再需要的应用程序。

发布

单击发布以直接从 Openmix 应用程序管理器发布应用程序。此选项仅在应用程序尚未发布时可见。

Openmix 自定义 JavaScript 应用程序

Openmix JavaScript 应用程序是具有可自定义 Java 脚本的应用程序。您可以使用 ITM 门户中的 UI 创建、配置、测试和发布。

注意:本指南不涵盖自定义脚本的实际创建(语法、变量等)。有关创建自定义 JavaScript 的更多信息,请参阅 Developer Exchange

导航

  1. 登录 ITM 门户。
  2. 在左侧导航菜单中,转到 Openmix
  3. 选择 应用程序配置
  4. 要配置新的 Openmix 应用程序,请单击右上角的添加图标。
  5. 选择 自定义 JS 应用程序
  6. Openmix 应用程序配置页面随即打开。

添加自定义 JS 应用程序

基本信息

  1. 应用程序名称:为您的应用程序命名。
  2. 描述:在此处为应用程序添加描述或发布说明。这是一个可选字段。
  3. 标签:如有必要,输入适当的标签。标签有助于识别和组织您的应用程序。这是一个可选字段。

  4. 协议:选择 DNS 或 HTTP 作为协议。
    • DNS:如果您选择 DNS,则必须输入 TTL 值。
    • HTTP:如果您选择 HTTP,则可以启用安全访问
  5. TTL:输入应用程序的 DNS 生存时间。建议值为 20 秒。注意:如果自定义 JS 应用程序未设置 TTL 或响应是回退值,则此 TTL 适用。
  6. 回退:输入 回退 的 CNAME/A/AAAA 或 IP 地址。回退 CNAME/A/AAAA 或 IP 通常在应用程序遇到问题或错误时使用。

  7. 安全访问:如果启用了安全访问,则 HTTP API 在被调用时必须要求客户端提供 Oauth 访问密钥。有关更多信息,请参阅保护 Openmix HTTP API

    注意:启用安全访问后,Openmix 首页应用程序列表中的应用程序名称旁边会显示一个锁定图标。

基本信息

自定义 JavaScript

输入配置信息后,您可以上传自定义 JavaScript。

  1. 单击选择文件按钮并选择要上传的 JavaScript 文件。您可以随时上传新文件以覆盖现有文件。

  2. 单击保存并测试以保存您的应用程序。

    注意:应用程序在上传和保存时会自动使用应用程序检查器进行测试。如果存在错误,应用程序检查器会显示错误信息和错误位置。有关应用程序检查器可用数据的更多信息,请参阅应用程序验证部分。

    发布

  3. 单击取消返回 Openmix 应用程序页面,或者如果您准备好让应用程序上线,请单击发布

    注意:如果您单击发布,您的应用程序将立即上线并显示绿色状态。您的应用程序已投入生产。

    如果您单击取消,您的应用程序将列在应用程序页面上,但未发布,并且状态为红色。要了解有关状态的更多信息,请参阅应用程序状态部分。

发布

分阶段应用程序发布

您可以通过将一小部分 Web 流量通过新版本来管理应用程序的发布,有时也称为金丝雀部署。ITM 允许您将指定百分比的流量发送到应用程序的新版本,以确保应用程序逻辑按预期运行。您可以报告现有版本和新版本的行为,以在实时环境中评估对应用程序的更改。此选项允许您在将 100% 的 Web 流量通过新编辑的应用程序路由之前修复发生的任何问题或异常。验证所需行为后,您可以增加流向最新版本的流量百分比,或将应用程序部署给所有用户。

要分阶段发布应用程序并发布新修改应用程序的测试版本,请执行以下操作:

  • 单击应用程序名称(在 Openmix 应用程序列表页面中)。应用程序管理器面板随即打开。
  • 单击编辑图标以编辑您的应用程序。
  • 对现有应用程序进行所有必要的更改。
  • 完成编辑后,单击保存并测试
  • 滚动到页面底部,其中包含取消发布按钮。输入您希望通过此新修改版本流动的 Web 流量百分比(1% 到 99%)。
  • 选中此复选框,以通过此新版本应用程序进行部分流量分发。剩余流量将发送到之前的实时版本。
  • 单击发布。此应用程序的新测试版本现在会显示在 Openmix 配置页面中的应用程序列表中,并带有一个新的状态图标。新的状态图标表示只有部分 Web 流量通过此版本实时流动。

您可以修改流向测试版本的流量,并更改流量百分比以查看性能。

金丝雀

要检查应用程序的性能,请转到 Openmix 决策报告。选择应用程序作为您的主要维度,版本作为您的次要维度。然后从列表中选择您的应用程序后,单击应用筛选器。图表显示了应用程序不同版本的性能。

一旦您对该版本的应用程序性能感到满意,您就可以通过单击上线按钮,将 100% 的 Web 流量路由到该版本。

金丝雀

此版本将当前实时版本替换为新编辑的版本。

如果您不想使用此版本上线,请单击取消发布。您的更改已保存并显示为 Openmix 配置页面中应用程序列表中的未发布应用程序。现在,100% 的 Web 流量通过应用程序的当前实时版本流动。

测试

您可以在发布之前或之后使用测试应用程序按钮测试您的 JavaScript 应用程序。

测试

它使您能够查看跨特定市场、国家/地区、区域和州的测试结果。您可以从特定的 IP 地址查询应用程序。

测试结果包括应用程序选择的平台、收到的响应原因代码原因日志雷达分数分布等。

此功能还允许您查看跨不同平台的决策分布。例如,如果使用两个平台进行路由,您可以查看每个平台的决策数量和收到的响应。

单击显示所有详细信息链接以查看应用程序的测试结果。

测试详细信息

以下值显示为测试结果:

| 字段 | 描述 | | :——– | :—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————–