Copyright © 2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
本规范定义了一个接口,供 web 应用程序访问文档中资源的完整计时信息。
本节描述了本文件在发布时的状态。最新的W3C出版物列表及本技术报告的最新修订版可在 W3C 标准与草案索引中找到。
作为候选推荐发布并不代表W3C及其成员的认可。候选推荐草案整合了工作组打算在后续候选推荐快照中纳入的前一候选推荐的更改。
本文件为草案,可能随时被更新、替换或废止。除了作为进行中的工作外,不应引用本文件。
本文件由遵循 W3C 专利政策 的小组制作。 W3C维护着 与本小组成果相关的专利公开名单; 该页面还包括专利披露说明。任何个人若确实知晓某专利且认为其包含 必要权利要求,须根据 《W3C 专利政策》第 6 节披露相关信息。
本文档受 2025年8月18日 W3C流程文档 管辖。
本节是非规范性的。
用户延迟是 Web 应用程序的一个重要质量基准。虽然基于 JavaScript 的机制可以为应用程序内的用户延迟测量提供全面的工具,但在许多情况下,它们无法提供完整的端到端延迟信息。本文档引入了 PerformanceResourceTiming 接口,使 JavaScript
机制能够收集与文档中资源相关的完整计时信息。导航计时 2 [NAVIGATION-TIMING-2]
扩展了本规范,以提供与导航相关的附加计时信息。
例如,以下 JavaScript 展示了一个简单的尝试,来测量获取资源所花费的时间:
<!doctype html>
<html>
<head>
</head>
<body onload="loadResources()">
<script>
function loadResources()
{
var start = new Date().getTime();
var image1 = new Image();
var resourceTiming = function() {
var now = new Date().getTime();
var latency = now - start;
alert("End to end resource fetch: " + latency);
};
image1.onload = resourceTiming;
image1.src = 'https://www.w3.org/Icons/w3c_main.png';
}
</script>
<img src="https://www.w3.org/Icons/w3c_home.png">
</body>
</html>
尽管此脚本可以测量获取资源所花费的时间,但它无法细分各个阶段所花费的时间。此外,该脚本无法轻松测量标记中描述的资源的获取时间。
为了解决对用户体验的完整信息的需求,本文档引入了 PerformanceResourceTiming 接口。此接口允许
JavaScript 机制在应用程序中提供完整的客户端延迟测量。使用此接口,可以修改上面的示例来测量用户感知的资源加载时间。
下面的脚本计算页面中每个资源的获取时间,即使是标记中定义的资源。此示例假设该页面托管在 https://www.w3.org。还可以进一步测量获取资源的每个阶段所花费的时间,使用 PerformanceResourceTiming 接口。
<!doctype html>
<html>
<head>
</head>
<body onload="loadResources()">
<script>
function loadResources()
{
var image1 = new Image();
image1.onload = resourceTiming;
image1.src = 'https://www.w3.org/Icons/w3c_main.png';
}
function resourceTiming()
{
var resourceList = window.performance.getEntriesByType("resource");
for (i = 0; i < resourceList.length; i++)
{
if (resourceList[i].initiatorType == "img")
{
alert("End to end resource fetch: " + (resourceList[i].responseEnd - resourceList[i].startTime));
}
}
}
</script>
<img id="image0" src="https://www.w3.org/Icons/w3c_home.png">
</body>
</html>
除了标记为非规范性的部分外,本规范中的所有编写指南、图表、示例和注释均为非规范性的。本规范中的其他内容都是规范性的。
本文档中的关键词 MAY、MUST 和 SHOULD 应按照 BCP 14 [RFC2119] [RFC8174] 中的描述进行解释, 当且仅当它们以全大写形式出现时,如此处所示。
算法中的命令性需求(例如“去掉所有前导空格字符”或“返回 false 并中止这些步骤”)应按照引入算法时使用的关键字(如“MUST”、"SHOULD"、"MAY"等)的含义来解释。
某些一致性要求以属性、方法或对象为要求,这些要求应解释为对用户代理的要求。
以算法或具体步骤表述的一些一致性要求可以通过任何方式实现,只要最终结果等效即可。(特别是,本规范中定义的算法旨在易于理解,而非旨在高效运行。)
表述 “一个 Foo 对象”,其中 Foo 实际上是一个接口,有时会用来代替更准确的说法 “一个实现了接口 Foo 的对象”。
在本规范中,所有的时间值都是自文档导航开始以来的毫秒数 [HR-TIME]。例如,文档导航的开始 发生在时间 0。
此时间定义基于高分辨率时间规范 [HR-TIME],与导航计时规范 [NAVIGATION-TIMING-2] 使用的时间定义不同,后者的时间是自1970年1月1日午夜(UTC)以来的毫秒数。
本节是非规范性的。
PerformanceResourceTiming 接口有助于对获取的 http(s)
资源进行计时测量。例如,此接口可用于
XMLHttpRequest 对象 [XHR]、HTML 元素 [HTML](例如
iframe、
img、
script、
object、
embed
和链接类型为
stylesheet
的
link)、SVG
元素 [SVG11]
(例如 svg)以及
EventSource。
PerformanceResourceTiming
接口中包含的资源
本节是非规范性的。
由非 null 客户端获取的资源请求会作为 PerformanceResourceTiming 对象包含在客户端的全局对象的性能时间轴中,除非在获取过程中被排除在时间轴之外。从 HTTP 缓存中检索的资源会作为 PerformanceResourceTiming 对象包含在性能时间轴中。已启动获取但稍后中止(例如由于网络错误)的资源会作为PerformanceResourceTiming 对象包含在性能时间轴中,并带有其开始和结束计时。
示例:
IMG 元素的 src
属性,则由第一个 HTML IMG 元素启动的资源的获取将作为 PerformanceResourceTiming 对象包含在性能时间轴中。用户代理可能不会为第二个
HTML IMG 元素重新请求该 URL,而是使用它为第一个 HTML IMG 元素启动的现有下载。在这种情况下,第一个
IMG 元素对资源的获取将是性能时间轴中的唯一一次出现。
IMG 元素的 src 属性,则原始资源的获取以及新 URL 的获取都将作为
PerformanceResourceTiming 对象包含在性能时间轴中。
IFRAME 元素而未指定 src 属性,则用户代理可能会为该
IFRAME 加载 about:blank 文档。如果稍后通过脚本动态更改 src
属性,则用户代理可能会为该 IFRAME 获取新的 URL 资源。在这种情况下,只有新 URL 的获取才会作为
PerformanceResourceTiming 对象包含在性能时间轴中。
XMLHttpRequest,则资源的两次获取都将作为
PerformanceResourceTiming 对象包含在性能时间轴中。这是因为第二个
XMLHttpRequest 对资源的获取无法重用为第一个 XMLHttpRequest
发出的下载。
IFRAME 元素,则只有由 IFRAME
src 属性请求的资源才会作为
PerformanceResourceTiming 对象包含在性能时间轴中。由
IFRAME
文档请求的子资源将包含在 IFRAME 文档的性能时间轴中,而不是父文档的性能时间轴中。
IMG 元素的源是
data: URI [RFC2397],则此资源不会作为 PerformanceResourceTiming 对象包含在性能时间轴中。PerformanceResourceTiming 条目仅针对
http(s) 资源报告。
PerformanceResourceTiming
对象包含在性能时间轴中,并且仅设置
startTime、fetchStart、duration 和
responseEnd。
PerformanceResourceTiming 对象包含在性能时间轴中。
WebIDL[Exposed=(Window,Worker)]
interface PerformanceResourceTiming : PerformanceEntry {
readonly attribute DOMString initiatorType;
readonly attribute DOMString deliveryType;
readonly attribute ByteString nextHopProtocol;
readonly attribute DOMHighResTimeStamp workerStart;
readonly attribute DOMHighResTimeStamp redirectStart;
readonly attribute DOMHighResTimeStamp redirectEnd;
readonly attribute DOMHighResTimeStamp fetchStart;
readonly attribute DOMHighResTimeStamp domainLookupStart;
readonly attribute DOMHighResTimeStamp domainLookupEnd;
readonly attribute DOMHighResTimeStamp connectStart;
readonly attribute DOMHighResTimeStamp connectEnd;
readonly attribute DOMHighResTimeStamp secureConnectionStart;
readonly attribute DOMHighResTimeStamp requestStart;
readonly attribute DOMHighResTimeStamp finalResponseHeadersStart;
readonly attribute DOMHighResTimeStamp firstInterimResponseStart;
readonly attribute DOMHighResTimeStamp responseStart;
readonly attribute DOMHighResTimeStamp responseEnd;
readonly attribute DOMHighResTimeStamp workerRouterEvaluationStart;
readonly attribute DOMHighResTimeStamp workerCacheLookupStart;
readonly attribute DOMString workerMatchedRouterSource;
readonly attribute DOMString workerFinalRouterSource;
readonly attribute unsigned long long transferSize;
readonly attribute unsigned long long encodedBodySize;
readonly attribute unsigned long long decodedBodySize;
readonly attribute unsigned short responseStatus;
readonly attribute RenderBlockingStatusType renderBlockingStatus;
readonly attribute DOMString contentType;
readonly attribute DOMString contentEncoding;
[Default] object toJSON();
};
一个 PerformanceResourceTiming 关联有一个
DOMString
initiator
type。
一个 PerformanceResourceTiming 关联有一个
DOMString
delivery
type。
一个 PerformanceResourceTiming 关联有一个
DOMString
requested
URL。
一个 PerformanceResourceTiming 关联有一个
DOMString
cache mode
(空字符串、“local”或
“validated”)。
一个 PerformanceResourceTiming 有一个关联的 获取计时信息 计时信息。
一个 PerformanceResourceTiming 有一个关联的 响应体信息 资源信息。
一个 PerformanceResourceTiming 具有一个关联的
状态
响应状态。
一个 PerformanceResourceTiming 具有一个关联的
RenderBlockingStatusType
渲染阻塞状态。
当调用 toJSON 时,为 PerformanceResourceTiming 运行默认 toJSON 步骤。
initiatorType getter 步骤是为 this 返回发起者类型。
initiatorType 会返回以下值之一:
"navigation",如果该请求是导航请求;
"body",如果该请求是处理
body
元素的 background 属性(该属性已废弃)时产生的。
"css",如果该请求是由于处理
CSS url() 指令(如
@import
url()
或
background: url())
所产生的;
[CSS-VALUES]
注:通过 CSS 中 @font-face 指定的字体资源请求,
也是由处理 CSS 指令产生的。因此,该字体资源的 initiatorType
为 "css"。
"script",如果该请求是加载任意
脚本(包括经典
script、
模块脚本或
Worker)时产生的。
"xmlhttprequest",如果该请求是处理
XMLHttpRequest
时产生的;
"font",如果该请求是处理字体时产生的。例如字体请求后续资源时产生,如使用增量字体传输时。
"fetch",如果该请求是处理
fetch()
方法时产生的;
"beacon",如果该请求是处理
sendBeacon()
方法时产生的;[BEACON]
"video",如果该请求是处理
video
元素的
poster
或
src
时产生的。
"audio",如果该请求是处理
audio
元素的
src
时产生的。
"track",如果该请求是处理
track
元素的
src
时产生的。
"img",如果该请求是处理
img
元素的
src
或
srcset
时产生的。
"image",如果该请求是处理
image
元素时产生的。[SVG2]
"input",如果该请求是处理
input
元素,且
type
属性为
image
时产生的。
"ping",如果该请求是处理
a
元素的
ping
属性时产生的。
"iframe",如果该请求是处理
iframe
元素的
src
时产生的。
"frame",如果该请求是加载
frame
时产生的。
"embed",如果该请求是处理
embed
元素的
src
时产生的。
"link",如果该请求是处理
link
元素时产生的。
"object",如果该请求是处理
object
元素时产生的。
"early-hints",如果该请求是处理
Early hints 响应时产生的。
"other",如果以上条件都不匹配。
initiatorType 的设置是在报告资源计时条目的不同位置完成的,例如 fetch 标准。
deliveryType getter 步骤是为 this 返回交付类型。
deliveryType 返回以下值之一:
"cache",如果缓存模式不是空字符串。
"",如果不匹配上述任何条件。
预计未来的规范更新将扩展此内容,例如描述如何消费预加载资源和预取导航请求。
workerStart getter 步骤是为 this 的 计时信息的 最终 service
worker 启动时间和 this 的相关全局对象转换获取时间戳。更多信息请参见 HTTP 获取。
redirectStart getter 步骤是为 this 的 计时信息的 重定向开始时间和 this 的相关全局对象转换获取时间戳。更多信息请参见 HTTP 重定向获取。
redirectEnd getter 步骤是为 this 的 计时信息的 重定向结束时间和 this 的相关全局对象转换获取时间戳。更多信息请参见 HTTP 重定向获取。
fetchStart getter 步骤是为 this 的 计时信息的 重定向后开始时间和 this 的相关全局对象转换获取时间戳。更多信息请参见 HTTP 获取。
domainLookupStart getter 步骤是为 this 的 计时信息的 最终连接计时信息的
域名查找开始时间和
this 的相关全局对象转换获取时间戳。更多信息请参见记录连接计时信息。
domainLookupEnd getter 步骤是为 this 的 计时信息的 最终连接计时信息的
域名查找结束时间和 this 的相关全局对象转换获取时间戳。更多信息请参见记录连接计时信息。
connectStart getter 步骤是为 this 的 计时信息的 最终连接计时信息的
连接开始时间和 this 的相关全局对象转换获取时间戳。更多信息请参见记录连接计时信息。
connectEnd getter 步骤是为 this 的 计时信息的 最终连接计时信息的
连接结束时间和 this 的相关全局对象转换获取时间戳。更多信息请参见记录连接计时信息。
secureConnectionStart getter 步骤是为 this 的 计时信息的 最终连接计时信息的
安全连接开始时间和
this 的相关全局对象转换获取时间戳。更多信息请参见记录连接计时信息。
nextHopProtocol getter 步骤是同构解码
this 的 计时信息的
最终连接计时信息的
ALPN
协商协议。更多信息请参见记录连接计时信息。
问题 221 建议移除对 nextHopProtocol 的支持,因为它可能会泄露用户网络配置的详细信息。
requestStart getter 步骤是为 this 的 计时信息的 最终网络请求开始时间和
this 的相关全局对象转换获取时间戳。更多信息请参见 HTTP 获取。
firstInterimResponseStart getter 步骤是为 this 的 计时信息的 第一个临时网络响应开始时间和
this 的相关全局对象转换获取时间戳。更多信息请参见 HTTP 获取。
finalResponseHeadersStart getter 步骤是为 this 的 计时信息的 最终网络响应开始时间和
this 的相关全局对象转换获取时间戳。更多信息请参见 HTTP 获取。
responseStart getter 步骤是返回 this 的
firstInterimResponseStart(如果不为
0);否则返回 this 的
finalResponseHeadersStart。
responseEnd getter 步骤是为 this 的 计时信息的 结束时间和 this 的相关全局对象转换获取时间戳。更多信息请参见
获取。
encodedBodySize getter 步骤是返回
this 的 资源信息的 编码大小。
decodedBodySize getter 步骤是返回
this 的 资源信息的 解码大小。
transferSize getter 的步骤是:
添加到 transferSize 的常量数字取代了公开 HTTP 标头的总字节大小,因为这可能会暴露某些 cookie 的存在。请参见此问题。
responseStatus getter 步骤是返回
this 的 响应状态。
contentType getter 步骤是返回 this 的
资源信息的
内容类型。
contentEncoding getter 的步骤是返回
此对象的资源信息的内容编码。
renderBlockingStatus getter 步骤是如果 this 的 计时信息的 渲染阻塞为 true,则返回 blocking;否则返回
non-blocking。
workerRouterEvaluationStart 的 getter 步骤为:返回
this 的 timing
info 的 service worker
timing info 的
worker
router evaluation start。
workerCacheLookupStart 的 getter 步骤为:返回
this 的 timing
info 的 service worker
timing info 的
worker
cache lookup start。
workerMatchedRouterSource 的 getter 步骤为:返回
this 的 timing
info 的 service worker
timing info 的
worker
matched router source。
workerFinalRouterSource 的 getter 步骤为:返回
this 的 timing
info 的 service worker
timing info 的
worker
final router source。
实现 PerformanceResourceTiming
的用户代理需要在
supportedEntryTypes
中包含 "resource"。这允许开发人员检测对资源计时的支持。
WebIDLenum RenderBlockingStatusType {
"blocking",
"non-blocking"
};
这些值的定义如下:
blocking
non-blocking
用户代理 可以 限制多少资源作为
PerformanceResourceTiming 对象包含在
性能时间线 中 [PERFORMANCE-TIMELINE-2]。此部分扩展了
Performance
接口,以允许控制存储的
PerformanceResourceTiming 对象的数量。
推荐的 PerformanceResourceTiming
对象的最小数量是 250,尽管此数量可能会由用户代理更改。
可以调用
setResourceTimingBufferSize
来请求更改此限制。
每个 ECMAScript 全局环境 都有:
PerformanceResourceTiming 对象。
WebIDLpartial interface Performance {
undefined clearResourceTimings ();
undefined setResourceTimingBufferSize (unsigned long maxSize);
attribute EventHandler onresourcetimingbufferfull;
};
Performance 接口定义在
[HR-TIME]
中。
clearResourceTimings 方法运行以下步骤:
PerformanceResourceTiming
对象在
性能条目缓冲区
中的所有实例。
setResourceTimingBufferSize 方法运行以下步骤:
PerformanceResourceTiming 对象。
onresourcetimingbufferfull 是
resourcetimingbufferfull 事件的事件处理程序,描述如下。
要检查 是否可以添加资源计时条目,请执行以下步骤:
要 添加 PerformanceResourceTiming 条目 new entry 到 性能条目缓冲区 中,请执行以下步骤:
要 复制次要缓冲区,请执行以下步骤:
PerformanceResourceTiming
在 资源计时次要缓冲区 中。
要 触发缓冲区已满事件,请执行以下步骤:
Performance 对象上触发一个名为
resourcetimingbufferfull 的事件。
这意味着,如果 resourcetimingbufferfull
事件处理程序没有比它向缓冲区添加的资源腾出更多空间,
则多余的条目将从缓冲区中丢弃。开发者应该确保
resourcetimingbufferfull 事件处理程序调用
clearResourceTimings 或足够扩展缓冲区(通过调用
setResourceTimingBufferSize)。
本节为非规范性内容。
如同在 Fetch 中详细说明的那样, 对跨源资源的请求会 作为PerformanceResourceTiming 对象包含在
性能
时间线 中。
如果针对跨源资源的 计时
允许检查 算法失败,则该条目将是一个 不透明条目。此类
条目会屏蔽其大部分属性,以防止
泄露原本未暴露的跨源数据。因此,对于一个
不透明条目,下列
属性将始终返回 0 或空字符串:
redirectStart,
redirectEnd,
workerStart,
domainLookupStart,
domainLookupEnd,
connectStart,
connectEnd,
requestStart,
firstInterimResponseStart,
finalResponseHeadersStart,
responseStart,
secureConnectionStart,
以及 nextHopProtocol。
某些属性,例如 contentType、
encodedBodySize、
以及
decodedBodySize
在响应为 CORS-cross-origin 时会被设为
0
(对
contentType 而言则为
空字符串)。
transferSize 同时会受到
计时
允许检查 与 CORS-cross-origin 状态的影响。
对于由 服务工作线程 使用 respondWith()
处理的请求,所报告的计时数据反映的是
客户端与服务工作线程之间的交互,
而不是服务工作线程自身内部的网络活动。
例如,服务工作线程可能会对同源请求返回跨源响应,反之亦然,
或者对任一情况返回缓存的或合成的响应。
鉴于此,由服务工作线程转发的资源并不能完整反映
获取该资源的全过程,并且不会经过 计时
允许检查。
要获取关于这些 fetch 的完整信息,
可以检查服务工作线程自身的性能时间线。[SERVICE-WORKERS]
更多细节请参见 HTTP Fetch #4
—— 仅当服务工作线程没有返回响应时,才会执行 计时
允许检查。
此外,在 respondWith()
算法中克隆的 响应 不会携带内部
fetch 的 fetch
计时信息,
因为该信息是附着在一次 fetch 上,而不是附着在一个 响应 上。
服务器端应用可以返回 Timing-Allow-Origin HTTP 响应标头,以允许用户代理将原本会因跨源限制而为零的属性值, 对所指定的文档源(origin)完整暴露出来。
Timing-Allow-Origin HTTP 响应标头字段可用于 传达一项策略,指示哪些源(origin)可以被允许 查看那些因跨源限制而本应为零的属性值。该标头的值由 下列 ABNF [RFC5234] 表示(使用 列表扩展,[RFC9110):
Timing-Allow-Origin = 1#( origin-or-null / wildcard )
发送方 MAY 生成多个 Timing-Allow-Origin 标头字段。 接收方 MAY 通过将每个后续字段值按顺序附加到合并后的字段值末尾来合并多个 Timing-Allow-Origin 标头字段, 并以逗号分隔。
即使存在 Timing-Allow-Origin HTTP 响应标头字段,用户代理仍 MAY 执行跨源限制,并将 transferSize、encodedBodySize 和 decodedBodySize 属性设为 0。若如此,它也 MAY 将 deliveryType 设为 ""。
Timing-Allow-Origin 标头会在 FETCH 中被处理,以便相应计算这些属性。
Timing-Allow-Origin 标头可能作为缓存响应的一部分到达。 在缓存重新验证的情况下,根据 RFC 7234, 该标头的值可能来自重新验证响应;若其中不存在,则来自原始缓存资源。
本节将 Timing-Allow-Origin 注册为一个 临时 消息标头。
Timing-Allow-Origin
Timing-Allow-Origin 响应标头
本节为非规范性内容。
下图展示了由 PerformanceResourceTiming 接口定义的计时属性。括号中的属性在 获取跨源资源时可能 不可用。用户代理可能会在各个计时点之间执行内部处理,这会 使得计时点之间允许出现非规范性的时间间隔。
PerformanceResourceTiming
接口定义的计时属性。括号中的属性表示:如果该资源未通过
计时允许
检查算法,则这些属性可能不可用。
要在给定 fetch 计时信息 timingInfo、 一个 DOMString requestedURL、 一个 DOMString initiatorType、 一个 全局对象 global、 一个字符串 cacheMode、 一个 响应体信息 bodyInfo、 一个 状态 responseStatus、 以及一个可选的 字符串 deliveryType(默认为空字符串) 的情况下进行 标记资源计时,请执行 以下步骤:
PerformanceResourceTiming 对象
entry。
要在给定 DOMString
initiatorType、DOMString requestedURL、
fetch 计时信息
timingInfo、
一个 DOMString cacheMode、
一个 响应体信息
bodyInfo、
一个 状态
responseStatus、
以及一个可选的 DOMString deliveryType(默认为空字符串)的情况下,
为
PerformanceResourceTiming
entry
设置资源计时条目,请执行以下步骤:
local" 或 "validated"。
resource"、requestedURL,
以及将 timingInfo 的
结束时间
在给定 global 的情况下进行
转换的结果。
cache"。
要在给定 DOMHighResTimeStamp
ts 与 全局对象
global 的情况下 转换
fetch 时间戳,请执行以下操作:
本节为非规范性内容。
PerformanceResourceTiming 接口会将资源的计时
信息暴露给任何请求过该资源的网页或 worker。为限制对
PerformanceResourceTiming 接口的访问,默认会执行
同源策略,并将某些属性设为零,如 HTTP fetch 中所述。
资源提供方可以通过添加 Timing-Allow-Origin
HTTP 响应标头来显式允许收集某资源的所有计时信息;该标头指定了被允许
访问计时信息的域。
本节为非规范性内容。
统计指纹识别是一项隐私风险:恶意网站可以通过测量第三方网站资源的缓存命中与未命中的计时,
来判断用户是否访问过该第三方网站。尽管
PerformanceResourceTiming
接口为文档中的资源提供计时信息,但资源的 load 事件已经可以在有限的范围内
测量计时以判断缓存命中与未命中,并且
HTTP
Fetch 中的跨源限制可防止泄露任何额外信息。
感谢 Anne Van Kesteren、Annie Sullivan、Arvind Jain、Boris Zbarsky、Darin Fisher、Jason Weber、Jonas Sicking、James Simonsen、 Karen Anderson、Kyle Scholz、Nic Jansma、Philippe Le Hegaret、 Sigbjørn Vik、Steve Souders、Todd Reifsteck、Tony Gentilcore、William Chan 以及 Alex Christensen 对本工作的贡献。
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in: