blob: ea89cb55bdc6acf843fc9ced00f3079b6305050d [file] [log] [blame]
/*
* Copyright (C) 2007-2016 Apple Inc. All rights reserved.
* Copyright (C) 2008 Matt Lilek. All rights reserved.
* Copyright (C) 2008-2009 Anthony Ricaud <rik@webkit.org>
* Copyright (C) 2009-2010 Joseph Pecoraro. All rights reserved.
* Copyright (C) 2009-2011 Google Inc. All rights reserved.
* Copyright (C) 2009 280 North Inc. All Rights Reserved.
* Copyright (C) 2010 Nikita Vasilyev. All rights reserved.
* Copyright (C) 2011 Brian Grinstead All rights reserved.
* Copyright (C) 2013 Matt Holden <jftholden@yahoo.com>
* Copyright (C) 2013 Samsung Electronics. All rights reserved.
* Copyright (C) 2013 Seokju Kwon (seokju.kwon@gmail.com)
* Copyright (C) 2013 Adobe Systems Inc. All rights reserved.
* Copyright (C) 2013-2015 University of Washington. All rights reserved.
* Copyright (C) 2014-2015 Saam Barati <saambarati1@gmail.com>
* Copyright (C) 2014 Antoine Quint
* Copyright (C) 2015 Tobias Reiss <tobi+webkit@basecode.de>
* Copyright (C) 2015-2016 Devin Rousso <dcrousso+webkit@gmail.com>. All rights reserved.
* Copyright (C) 2017 Sony Interactive Entertainment Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
var WebInspector={};WebInspector.Platform={name:InspectorFrontendHost.platform(),isNightlyBuild:false,version:{base:0,release:0,name:""}};(function(){var versionMatch=/ AppleWebKit\/([^ ]+)/.exec(navigator.userAgent);if(versionMatch&&versionMatch[1].indexOf("+")!==-1&&document.styleSheets.length<10)
WebInspector.Platform.isNightlyBuild=true;var osVersionMatch=/ Mac OS X (\d+)_(\d+)/.exec(navigator.appVersion);if(osVersionMatch&&osVersionMatch[1]==="10"){WebInspector.Platform.version.base=10;WebInspector.Platform.version.release=parseInt(osVersionMatch[2]);switch(osVersionMatch[2]){case"12":WebInspector.Platform.version.name="sierra";break;case"11":WebInspector.Platform.version.name="el-capitan";break;case"10":WebInspector.Platform.version.name="yosemite";break;default:WebInspector.Platform.version.name="unknown-mac";break;}}})();class LinkedList
{constructor()
{this.head=new LinkedListNode;this.head.next=this.head.prev=this.head;this.length=0;}
clear()
{this.head.next=this.head.prev=this.head;this.length=0;}
get last()
{return this.head.prev;}
push(item)
{let newNode=new LinkedListNode(item);let last=this.last;let head=this.head;last.next=newNode;newNode.next=head;head.prev=newNode;newNode.prev=last;this.length++;return newNode;}
remove(node)
{if(!node)
return false;node.prev.next=node.next;node.next.prev=node.prev;this.length--;return true;}
forEach(callback)
{let node=this.head;for(let i=0,length=this.length;i<length;i++){node=node.next;let returnValue=callback(node.value,i);if(returnValue===false)
return;}}
toArray()
{let node=this.head;let i=this.length;let result=new Array(i);while(i--){node=node.prev;result[i]=node.value;}
return result;}
toJSON()
{return this.toArray();}}
class LinkedListNode
{constructor(value)
{this.value=value;this.prev=null;this.next=null;}}
class ListMultimap
{constructor()
{this._insertionOrderedEntries=new LinkedList;this._keyMap=new Map;}
get size()
{return this._insertionOrderedEntries.length;}
add(key,value)
{let nodeMap=this._keyMap.get(key);if(!nodeMap){nodeMap=new Map;this._keyMap.set(key,nodeMap);}
let node=nodeMap.get(value);if(!node){node=this._insertionOrderedEntries.push([key,value]);nodeMap.set(value,node);}
return this;}
delete(key,value)
{let nodeMap=this._keyMap.get(key);if(!nodeMap)
return false;let node=nodeMap.get(value);if(!node)
return false;nodeMap.delete(value);this._insertionOrderedEntries.remove(node);return true;}
deleteAll(key)
{let nodeMap=this._keyMap.get(key);if(!nodeMap)
return false;let list=this._insertionOrderedEntries;let didDelete=false;nodeMap.forEach(function(node){list.remove(node);didDelete=true;});this._keyMap.delete(key);return didDelete;}
has(key,value)
{let nodeMap=this._keyMap.get(key);if(!nodeMap)
return false;return nodeMap.has(value);}
clear()
{this._keyMap=new Map;this._insertionOrderedEntries=new LinkedList;}
forEach(callback)
{this._insertionOrderedEntries.forEach(callback);}
toArray()
{return this._insertionOrderedEntries.toArray();}
toJSON()
{return this.toArray();}}
WebInspector.Object=class WebInspectorObject
{constructor()
{this._listeners=null;}
static addEventListener(eventType,listener,thisObject)
{thisObject=thisObject||null;if(!eventType)
return null;if(!listener)
return null;if(!this._listeners)
this._listeners=new Map();let listenersTable=this._listeners.get(eventType);if(!listenersTable){listenersTable=new ListMultimap();this._listeners.set(eventType,listenersTable);}
listenersTable.add(thisObject,listener);return listener;}
static singleFireEventListener(eventType,listener,thisObject)
{let wrappedCallback=function(){this.removeEventListener(eventType,wrappedCallback,null);listener.apply(thisObject,arguments);}.bind(this);this.addEventListener(eventType,wrappedCallback,null);return wrappedCallback;}
static removeEventListener(eventType,listener,thisObject)
{eventType=eventType||null;listener=listener||null;thisObject=thisObject||null;if(!this._listeners)
return;if(thisObject&&!eventType){this._listeners.forEach(function(listenersTable){let listenerPairs=listenersTable.toArray();for(let i=0,length=listenerPairs.length;i<length;++i){let existingThisObject=listenerPairs[i][0];if(existingThisObject===thisObject)
listenersTable.deleteAll(existingThisObject);}});return;}
let listenersTable=this._listeners.get(eventType);if(!listenersTable||listenersTable.size===0)
return;let didDelete=listenersTable.delete(thisObject,listener);}
static awaitEvent(eventType)
{let wrapper=new WebInspector.WrappedPromise;this.singleFireEventListener(eventType,(event)=>wrapper.resolve(event));return wrapper.promise;}
static hasEventListeners(eventType)
{if(!this._listeners)
return false;let listenersTable=this._listeners.get(eventType);return listenersTable&&listenersTable.size>0;}
static retainedObjectsWithPrototype(proto)
{let results=new Set;if(this._listeners){this._listeners.forEach(function(listenersTable,eventType){listenersTable.forEach(function(pair){let thisObject=pair[0];if(thisObject instanceof proto)
results.add(thisObject);});});}
return results;}
addEventListener(){return WebInspector.Object.addEventListener.apply(this,arguments);}
singleFireEventListener(){return WebInspector.Object.singleFireEventListener.apply(this,arguments);}
removeEventListener(){return WebInspector.Object.removeEventListener.apply(this,arguments);}
awaitEvent(){return WebInspector.Object.awaitEvent.apply(this,arguments);}
hasEventListeners(){return WebInspector.Object.hasEventListeners.apply(this,arguments);}
retainedObjectsWithPrototype(){return WebInspector.Object.retainedObjectsWithPrototype.apply(this,arguments);}
dispatchEventToListeners(eventType,eventData)
{let event=new WebInspector.Event(this,eventType,eventData);function dispatch(object)
{if(!object||event._stoppedPropagation)
return;let listenerTypesMap=object._listeners;if(!listenerTypesMap||!object.hasOwnProperty("_listeners"))
return;let listenersTable=listenerTypesMap.get(eventType);if(!listenersTable)
return;let listeners=listenersTable.toArray();for(let i=0,length=listeners.length;i<length;++i){let[thisObject,listener]=listeners[i];listener.call(thisObject,event);if(event._stoppedPropagation)
break;}}
dispatch(this);event._stoppedPropagation=false;let constructor=this.constructor;while(constructor){dispatch(constructor);if(!constructor.prototype.__proto__)
break;constructor=constructor.prototype.__proto__.constructor;}
return event.defaultPrevented;}};WebInspector.Event=class Event
{constructor(target,type,data)
{this.target=target;this.type=type;this.data=data;this.defaultPrevented=false;this._stoppedPropagation=false;}
stopPropagation()
{this._stoppedPropagation=true;}
preventDefault()
{this.defaultPrevented=true;}};WebInspector.notifications=new WebInspector.Object;WebInspector.Notification={GlobalModifierKeysDidChange:"global-modifiers-did-change",PageArchiveStarted:"page-archive-started",PageArchiveEnded:"page-archive-ended",ExtraDomainsActivated:"extra-domains-activated",TabTypesChanged:"tab-types-changed",DebugUIEnabledDidChange:"debug-ui-enabled-did-change",VisibilityStateDidChange:"visibility-state-did-change",};WebInspector.roleSelectorForNode=function(node)
{ var title="";var role=node.computedRole();if(role)
title=":role("+role+")";return title;};WebInspector.linkifyAccessibilityNodeReference=function(node)
{if(!node)
return null;var link=WebInspector.linkifyNodeReference(node);var tagIdSelector=link.title;var classSelectorIndex=tagIdSelector.indexOf(".");if(classSelectorIndex>-1)
tagIdSelector=tagIdSelector.substring(0,classSelectorIndex);var roleSelector=WebInspector.roleSelectorForNode(node);link.textContent=tagIdSelector+roleSelector;link.title+=roleSelector;return link;};WebInspector.linkifyNodeReference=function(node,options={})
{let displayName=node.displayName;if(!isNaN(options.maxLength))
displayName=displayName.truncate(options.maxLength);let link=document.createElement("span");link.append(displayName);return WebInspector.linkifyNodeReferenceElement(node,link,Object.shallowMerge(options,{displayName}));};WebInspector.linkifyNodeReferenceElement=function(node,element,options={})
{element.setAttribute("role","link");element.title=options.displayName||node.displayName;let nodeType=node.nodeType();if((nodeType!==Node.DOCUMENT_NODE||node.parentNode)&&nodeType!==Node.TEXT_NODE)
element.classList.add("node-link");element.addEventListener("click",WebInspector.domTreeManager.inspectElement.bind(WebInspector.domTreeManager,node.id));element.addEventListener("mouseover",WebInspector.domTreeManager.highlightDOMNode.bind(WebInspector.domTreeManager,node.id,"all"));element.addEventListener("mouseout",WebInspector.domTreeManager.hideDOMNodeHighlight.bind(WebInspector.domTreeManager));element.addEventListener("contextmenu",(event)=>{let contextMenu=WebInspector.ContextMenu.createFromEvent(event);WebInspector.appendContextMenuItemsForDOMNode(contextMenu,node,options);});return element;};function createSVGElement(tagName)
{return document.createElementNS("http://www.w3.org/2000/svg",tagName);}
WebInspector.cssPath=function(node)
{if(node.nodeType()!==Node.ELEMENT_NODE)
return"";let suffix="";if(node.isPseudoElement()){suffix="::"+node.pseudoType();node=node.parentNode;}
let components=[];while(node){let component=WebInspector.cssPathComponent(node);if(!component)
break;components.push(component);if(component.done)
break;node=node.parentNode;}
components.reverse();return components.map((x)=>x.value).join(" > ")+suffix;};WebInspector.cssPathComponent=function(node)
{if(node.nodeType()!==Node.ELEMENT_NODE)
return null;let nodeName=node.nodeNameInCorrectCase();let lowerNodeName=node.nodeName().toLowerCase();if(lowerNodeName==="body"||lowerNodeName==="head"||lowerNodeName==="html")
return{value:nodeName,done:true};let id=node.getAttribute("id");if(id)
return{value:node.escapedIdSelector,done:true};if(!node.parentNode||node.parentNode.nodeType()===Node.DOCUMENT_NODE)
return{value:nodeName,done:true};
function classNames(node){let classAttribute=node.getAttribute("class");return classAttribute?classAttribute.trim().split(/\s+/):[];}
let nthChildIndex=-1;let hasUniqueTagName=true;let uniqueClasses=new Set(classNames(node));let siblings=node.parentNode.children;let elementIndex=0;for(let sibling of siblings){if(sibling.nodeType()!==Node.ELEMENT_NODE)
continue;elementIndex++;if(sibling===node){nthChildIndex=elementIndex;continue;}
if(sibling.nodeNameInCorrectCase()===nodeName)
hasUniqueTagName=false;if(uniqueClasses.size){let siblingClassNames=classNames(sibling);for(let className of siblingClassNames)
uniqueClasses.delete(className);}}
let selector=nodeName;if(lowerNodeName==="input"&&node.getAttribute("type")&&!uniqueClasses.size)
selector+=`[type="${node.getAttribute("type")}"]`;if(!hasUniqueTagName){if(uniqueClasses.size)
selector+=node.escapedClassSelector;else
selector+=`:nth-child(${nthChildIndex})`;}
return{value:selector,done:false};};WebInspector.xpath=function(node)
{if(node.nodeType()===Node.DOCUMENT_NODE)
return"/";let components=[];while(node){let component=WebInspector.xpathComponent(node);if(!component)
break;components.push(component);if(component.done)
break;node=node.parentNode;}
components.reverse();let prefix=components.length&&components[0].done?"":"/";return prefix+components.map((x)=>x.value).join("/");};WebInspector.xpathComponent=function(node)
{let index=WebInspector.xpathIndex(node);if(index===-1)
return null;let value;switch(node.nodeType()){case Node.DOCUMENT_NODE:return{value:"",done:true};case Node.ELEMENT_NODE:var id=node.getAttribute("id");if(id)
return{value:`//*[@id="${id}"]`,done:true};value=node.localName();break;case Node.ATTRIBUTE_NODE:value=`@${node.nodeName()}`;break;case Node.TEXT_NODE:case Node.CDATA_SECTION_NODE:value="text()";break;case Node.COMMENT_NODE:value="comment()";break;case Node.PROCESSING_INSTRUCTION_NODE:value="processing-instruction()";break;default:value="";break;}
if(index>0)
value+=`[${index}]`;return{value,done:false};};WebInspector.xpathIndex=function(node)
{if(!node.parentNode)
return 0;let siblings=node.parentNode.children;if(siblings.length<=1)
return 0;
function isSimiliarNode(a,b){if(a===b)
return true;let aType=a.nodeType();let bType=b.nodeType();if(aType===Node.ELEMENT_NODE&&bType===Node.ELEMENT_NODE)
return a.localName()===b.localName();if(aType===Node.CDATA_SECTION_NODE)
return aType===Node.TEXT_NODE;if(bType===Node.CDATA_SECTION_NODE)
return bType===Node.TEXT_NODE;return aType===bType;}
let unique=true;let xPathIndex=-1;let xPathIndexCounter=1;for(let sibling of siblings){if(!isSimiliarNode(node,sibling))
continue;if(node===sibling){xPathIndex=xPathIndexCounter;if(!unique)
return xPathIndex;}else{unique=false;if(xPathIndex!==-1)
return xPathIndex;}
xPathIndexCounter++;}
if(unique)
return 0;return xPathIndex;};WebInspector.EventListener=class EventListener
{constructor(thisObject,fireOnce)
{this._thisObject=thisObject;this._emitter=null;this._callback=null;this._fireOnce=fireOnce;}
connect(emitter,type,callback,usesCapture)
{var emitterIsValid=emitter&&(emitter instanceof WebInspector.Object||emitter instanceof Node||(typeof emitter.addEventListener==="function"));if(!emitterIsValid||!type||!callback)
return;this._emitter=emitter;this._type=type;this._usesCapture=!!usesCapture;if(emitter instanceof Node)
callback=callback.bind(this._thisObject);if(this._fireOnce){var listener=this;this._callback=function(){listener.disconnect();callback.apply(this,arguments);};}else
this._callback=callback;if(this._emitter instanceof Node)
this._emitter.addEventListener(this._type,this._callback,this._usesCapture);else
this._emitter.addEventListener(this._type,this._callback,this._thisObject);}
disconnect()
{if(!this._emitter||!this._callback)
return;if(this._emitter instanceof Node)
this._emitter.removeEventListener(this._type,this._callback,this._usesCapture);else
this._emitter.removeEventListener(this._type,this._callback,this._thisObject);if(this._fireOnce)
delete this._thisObject;delete this._emitter;delete this._type;delete this._callback;}};
WebInspector.EventListenerSet=class EventListenerSet
{constructor(defaultThisObject,name)
{this.name=name;this._defaultThisObject=defaultThisObject;this._listeners=[];this._installed=false;}
register(emitter,type,callback,thisObject,usesCapture)
{var emitterIsValid=emitter&&(emitter instanceof WebInspector.Object||emitter instanceof Node||(typeof emitter.addEventListener==="function"));if(!emitterIsValid||!type||!callback)
return;this._listeners.push({listener:new WebInspector.EventListener(thisObject||this._defaultThisObject),emitter,type,callback,usesCapture});}
unregister()
{if(this._installed)
this.uninstall();this._listeners=[];}
install()
{if(this._installed)
return;this._installed=true;for(var data of this._listeners)
data.listener.connect(data.emitter,data.type,data.callback,data.usesCapture);}
uninstall(unregisterListeners)
{if(!this._installed)
return;this._installed=false;for(var data of this._listeners)
data.listener.disconnect();if(unregisterListeners)
this._listeners=[];}};function useSVGSymbol(url,className,title)
{const svgNamespace="http://www.w3.org/2000/svg";const xlinkNamespace="http://www.w3.org/1999/xlink";let svgElement=document.createElementNS(svgNamespace,"svg");svgElement.style.width="100%";svgElement.style.height="100%";
if(!url.includes("#"))
url+="#root";let useElement=document.createElementNS(svgNamespace,"use");useElement.setAttributeNS(xlinkNamespace,"xlink:href",url);svgElement.appendChild(useElement);let wrapper=document.createElement("div");wrapper.appendChild(svgElement);if(className)
wrapper.className=className;if(title)
wrapper.title=title;return wrapper;}
(function(){if(WebInspector.dontLocalizeUserInterface)
return;let localizedStringsURL=InspectorFrontendHost.localizedStringsURL();if(localizedStringsURL)
document.write("<script src=\""+localizedStringsURL+"\"></script>");})();WebInspector.unlocalizedString=function(string)
{
return string;};WebInspector.UIString=function(string,vararg)
{if(WebInspector.dontLocalizeUserInterface)
return string;if(window.localizedStrings&&string in window.localizedStrings)
return window.localizedStrings[string];if(!window.localizedStrings)
console.error(`Attempted to load localized string "${string}" before localizedStrings was initialized.`);if(!this._missingLocalizedStrings)
this._missingLocalizedStrings={};if(!(string in this._missingLocalizedStrings)){console.error("Localized string \""+string+"\" was not found.");this._missingLocalizedStrings[string]=true;}
return"LOCALIZED STRING NOT FOUND";};WebInspector.fileExtensionForURL=function(url)
{var lastPathComponent=parseURL(url).lastPathComponent;if(!lastPathComponent)
return"";var index=lastPathComponent.indexOf(".");if(index===-1)
return"";return lastPathComponent.substr(index+1);};WebInspector.mimeTypeForFileExtension=function(extension)
{const extensionToMIMEType={"html":"text/html","xhtml":"application/xhtml+xml","xml":"text/xml","js":"text/javascript","json":"application/json","clj":"text/x-clojure","coffee":"text/x-coffeescript","ls":"text/x-livescript","ts":"text/typescript","css":"text/css","less":"text/x-less","sass":"text/x-sass","scss":"text/x-scss","bmp":"image/bmp","gif":"image/gif","jpeg":"image/jpeg","jpg":"image/jpeg","pdf":"application/pdf","png":"image/png","tif":"image/tiff","tiff":"image/tiff","svg":"image/svg+xml","txt":"text/plain","xsl":"text/xsl"};return extensionToMIMEType[extension]||null;};WebInspector.fileExtensionForMIMEType=function(mimeType)
{const mimeTypeToExtension={"text/html":"html","application/xhtml+xml":"xhtml","text/xml":"xml","text/javascript":"js","application/json":"json","text/x-clojure":"clj","text/x-coffeescript":"coffee","text/x-livescript":"ls","text/typescript":"ts","text/css":"css","text/x-less":"less","text/x-sass":"sass","text/x-scss":"scss","image/bmp":"bmp","image/gif":"gif","image/jpeg":"jpg","application/pdf":"pdf","image/png":"png","image/tiff":"tiff","image/svg+xml":"svg","text/plain":"txt","text/xsl":"xsl",};let extension=mimeTypeToExtension[mimeType];return extension?`.${extension}`:null;};WebInspector.rangeForNextCSSNameOrValue=function(text,index=0){let from=0;let to=0;let colonIndex=text.indexOf(":");if(index<colonIndex){from=0;to=colonIndex;}else{from=colonIndex+1;to=text.length;}
let substring=text.substring(from,to);from+=substring.match(/^\s*/)[0].length;to-=substring.match(/[\s\;]*$/)[0].length;return{from,to};};function removeURLFragment(url)
{var hashIndex=url.indexOf("#");if(hashIndex>=0)
return url.substring(0,hashIndex);return url;}
function relativePath(path,basePath)
{var pathComponents=path.split("/");var baseComponents=basePath.replace(/\/$/,"").split("/");var finalComponents=[];var index=1;for(;index<pathComponents.length&&index<baseComponents.length;++index){if(pathComponents[index]!==baseComponents[index])
break;}
for(var i=index;i<baseComponents.length;++i)
finalComponents.push("..");for(var i=index;i<pathComponents.length;++i)
finalComponents.push(pathComponents[i]);return finalComponents.join("/");}
function parseSecurityOrigin(securityOrigin)
{securityOrigin=securityOrigin?securityOrigin.trim():"";var match=securityOrigin.match(/^([^:]+):\/\/([^\/:]*)(?::([\d]+))?$/i);if(!match)
return{scheme:null,host:null,port:null};var scheme=match[1].toLowerCase();var host=match[2].toLowerCase();var port=Number(match[3])||null;return{scheme,host,port};}
function parseDataURL(url)
{if(!url.startsWith("data:"))
return null;let match=url.match(/^data:([^;,]*)?(?:;charset=([^;,]*?))?(;base64)?,(.*)$/);if(!match)
return null;let scheme="data";let mimeType=match[1]||"text/plain";let charset=match[2]||"US-ASCII";let base64=!!match[3];let data=decodeURIComponent(match[4]);return{scheme,mimeType,charset,base64,data};}
function parseURL(url)
{url=url?url.trim():"";if(url.startsWith("data:"))
return{scheme:"data",host:null,port:null,path:null,queryString:null,fragment:null,lastPathComponent:null};var match=url.match(/^([^\/:]+):\/\/([^\/#:]*)(?::([\d]+))?(?:(\/[^#]*)?(?:#(.*))?)?$/i);if(!match)
return{scheme:null,host:null,port:null,path:null,queryString:null,fragment:null,lastPathComponent:null};var scheme=match[1].toLowerCase();var host=match[2].toLowerCase();var port=Number(match[3])||null;var wholePath=match[4]||null;var fragment=match[5]||null;var path=wholePath;var queryString=null;if(wholePath){var indexOfQuery=wholePath.indexOf("?");if(indexOfQuery!==-1){path=wholePath.substring(0,indexOfQuery);queryString=wholePath.substring(indexOfQuery+1);}
path=resolveDotsInPath(path);}
var lastPathComponent=null;if(path&&path!=="/"){var endOffset=path[path.length-1]==="/"?1:0;var lastSlashIndex=path.lastIndexOf("/",path.length-1-endOffset);if(lastSlashIndex!==-1)
lastPathComponent=path.substring(lastSlashIndex+1,path.length-endOffset);}
return{scheme,host,port,path,queryString,fragment,lastPathComponent};}
function absoluteURL(partialURL,baseURL)
{partialURL=partialURL?partialURL.trim():"";if(partialURL.startsWith("data:")||partialURL.startsWith("javascript:")||partialURL.startsWith("mailto:"))
return partialURL;if(parseURL(partialURL).scheme)
return partialURL;if(!partialURL)
return baseURL||null;var baseURLComponents=parseURL(baseURL);if(!baseURLComponents.scheme)
return null;if(partialURL[0]==="/"&&partialURL[1]==="/")
return baseURLComponents.scheme+":"+partialURL;if(!baseURLComponents.path)
baseURLComponents.path="/";var baseURLPrefix=baseURLComponents.scheme+"://"+baseURLComponents.host+(baseURLComponents.port?(":"+baseURLComponents.port):"");if(partialURL[0]==="?")
return baseURLPrefix+baseURLComponents.path+partialURL;if(partialURL[0]==="/")
return baseURLPrefix+resolveDotsInPath(partialURL);if(partialURL[0]==="#"){let queryStringComponent=baseURLComponents.queryString?"?"+baseURLComponents.queryString:"";return baseURLPrefix+baseURLComponents.path+queryStringComponent+partialURL;}
var basePath=baseURLComponents.path.substring(0,baseURLComponents.path.lastIndexOf("/"))+"/";return baseURLPrefix+resolveDotsInPath(basePath+partialURL);}
function parseLocationQueryParameters(arrayResult)
{return parseQueryString(window.location.search.substring(1),arrayResult);}
function parseQueryString(queryString,arrayResult)
{if(!queryString)
return arrayResult?[]:{};function decode(string)
{try{return decodeURIComponent(string.replace(/\+/g," "));}catch(e){return string;}}
var parameters=arrayResult?[]:{};var parameterStrings=queryString.split("&");for(var i=0;i<parameterStrings.length;++i){var pair=parameterStrings[i].split("=").map(decode);if(arrayResult)
parameters.push({name:pair[0],value:pair[1]});else
parameters[pair[0]]=pair[1];}
return parameters;}
WebInspector.displayNameForURL=function(url,urlComponents)
{if(url.startsWith("data:"))
return WebInspector.truncateURL(url);if(!urlComponents)
urlComponents=parseURL(url);var displayName;try{displayName=decodeURIComponent(urlComponents.lastPathComponent||"");}catch(e){displayName=urlComponents.lastPathComponent;}
return displayName||WebInspector.displayNameForHost(urlComponents.host)||url;};WebInspector.truncateURL=function(url,multiline=false,dataURIMaxSize=6)
{if(!url.startsWith("data:"))
return url;const dataIndex=url.indexOf(",")+1;let header=url.slice(0,dataIndex);if(multiline)
header+="\n";const data=url.slice(dataIndex);if(data.length<dataURIMaxSize)
return header+data;const firstChunk=data.slice(0,Math.ceil(dataURIMaxSize/2));const ellipsis="\u2026";const middleChunk=multiline?`\n${ellipsis}\n`:ellipsis;const lastChunk=data.slice(-Math.floor(dataURIMaxSize/2));return header+firstChunk+middleChunk+lastChunk;};WebInspector.displayNameForHost=function(host)
{return host;};var emDash="\u2014";var enDash="\u2013";var figureDash="\u2012";var ellipsis="\u2026";var zeroWidthSpace="\u200b";Object.defineProperty(Object,"shallowCopy",{value:function(object)
{var copy={};var keys=Object.keys(object);for(var i=0;i<keys.length;++i)
copy[keys[i]]=object[keys[i]];return copy;}});Object.defineProperty(Object,"shallowEqual",{value:function(a,b)
{if(!(a instanceof Object)||!(b instanceof Object))
return false;if(a===b)
return true;if(Array.isArray(a)&&Array.isArray(b))
return Array.shallowEqual(a,b);if(a.constructor!==b.constructor)
return false;var aKeys=Object.keys(a);var bKeys=Object.keys(b);if(aKeys.length!==bKeys.length)
return false;for(var i=0;i<aKeys.length;++i){if(!(aKeys[i]in b))
return false;
if(a[aKeys[i]]!==b[aKeys[i]])
return false;}
return true;}});Object.defineProperty(Object,"shallowMerge",{value(a,b)
{let result=Object.shallowCopy(a);let keys=Object.keys(b);for(let i=0;i<keys.length;++i){result[keys[i]]=b[keys[i]];}
return result;}});Object.defineProperty(Object.prototype,"valueForCaseInsensitiveKey",{value:function(key)
{if(this.hasOwnProperty(key))
return this[key];var lowerCaseKey=key.toLowerCase();for(var currentKey in this){if(currentKey.toLowerCase()===lowerCaseKey)
return this[currentKey];}
return undefined;}});Object.defineProperty(Map,"fromObject",{value:function(object)
{let map=new Map;for(let key in object)
map.set(key,object[key]);return map;}});Object.defineProperty(Map.prototype,"take",{value:function(key)
{var deletedValue=this.get(key);this.delete(key);return deletedValue;}});Object.defineProperty(Node.prototype,"enclosingNodeOrSelfWithClass",{value:function(className)
{for(var node=this;node&&node!==this.ownerDocument;node=node.parentNode)
if(node.nodeType===Node.ELEMENT_NODE&&node.classList.contains(className))
return node;return null;}});Object.defineProperty(Node.prototype,"enclosingNodeOrSelfWithNodeNameInArray",{value:function(nameArray)
{var lowerCaseNameArray=nameArray.map(function(name){return name.toLowerCase();});for(var node=this;node&&node!==this.ownerDocument;node=node.parentNode){for(var i=0;i<nameArray.length;++i){if(node.nodeName.toLowerCase()===lowerCaseNameArray[i])
return node;}}
return null;}});Object.defineProperty(Node.prototype,"enclosingNodeOrSelfWithNodeName",{value:function(nodeName)
{return this.enclosingNodeOrSelfWithNodeNameInArray([nodeName]);}});Object.defineProperty(Node.prototype,"isAncestor",{value:function(node)
{if(!node)
return false;var currentNode=node.parentNode;while(currentNode){if(this===currentNode)
return true;currentNode=currentNode.parentNode;}
return false;}});Object.defineProperty(Node.prototype,"isDescendant",{value:function(descendant)
{return!!descendant&&descendant.isAncestor(this);}});Object.defineProperty(Node.prototype,"isSelfOrAncestor",{value:function(node)
{return!!node&&(node===this||this.isAncestor(node));}});Object.defineProperty(Node.prototype,"isSelfOrDescendant",{value:function(node)
{return!!node&&(node===this||this.isDescendant(node));}});Object.defineProperty(Node.prototype,"traverseNextNode",{value:function(stayWithin)
{var node=this.firstChild;if(node)
return node;if(stayWithin&&this===stayWithin)
return null;node=this.nextSibling;if(node)
return node;node=this;while(node&&!node.nextSibling&&(!stayWithin||!node.parentNode||node.parentNode!==stayWithin))
node=node.parentNode;if(!node)
return null;return node.nextSibling;}});Object.defineProperty(Node.prototype,"traversePreviousNode",{value:function(stayWithin)
{if(stayWithin&&this===stayWithin)
return null;var node=this.previousSibling;while(node&&node.lastChild)
node=node.lastChild;if(node)
return node;return this.parentNode;}});Object.defineProperty(Node.prototype,"rangeOfWord",{value:function(offset,stopCharacters,stayWithinNode,direction)
{var startNode;var startOffset=0;var endNode;var endOffset=0;if(!stayWithinNode)
stayWithinNode=this;if(!direction||direction==="backward"||direction==="both"){var node=this;while(node){if(node===stayWithinNode){if(!startNode)
startNode=stayWithinNode;break;}
if(node.nodeType===Node.TEXT_NODE){var start=(node===this?(offset-1):(node.nodeValue.length-1));for(var i=start;i>=0;--i){if(stopCharacters.indexOf(node.nodeValue[i])!==-1){startNode=node;startOffset=i+1;break;}}}
if(startNode)
break;node=node.traversePreviousNode(stayWithinNode);}
if(!startNode){startNode=stayWithinNode;startOffset=0;}}else{startNode=this;startOffset=offset;}
if(!direction||direction==="forward"||direction==="both"){node=this;while(node){if(node===stayWithinNode){if(!endNode)
endNode=stayWithinNode;break;}
if(node.nodeType===Node.TEXT_NODE){var start=(node===this?offset:0);for(var i=start;i<node.nodeValue.length;++i){if(stopCharacters.indexOf(node.nodeValue[i])!==-1){endNode=node;endOffset=i;break;}}}
if(endNode)
break;node=node.traverseNextNode(stayWithinNode);}
if(!endNode){endNode=stayWithinNode;endOffset=stayWithinNode.nodeType===Node.TEXT_NODE?stayWithinNode.nodeValue.length:stayWithinNode.childNodes.length;}}else{endNode=this;endOffset=offset;}
var result=this.ownerDocument.createRange();result.setStart(startNode,startOffset);result.setEnd(endNode,endOffset);return result;}});Object.defineProperty(Element.prototype,"realOffsetWidth",{get:function()
{return this.getBoundingClientRect().width;}});Object.defineProperty(Element.prototype,"realOffsetHeight",{get:function()
{return this.getBoundingClientRect().height;}});Object.defineProperty(Element.prototype,"totalOffsetLeft",{get:function()
{return this.getBoundingClientRect().left;}});Object.defineProperty(Element.prototype,"totalOffsetRight",{get:function()
{return this.getBoundingClientRect().right;}});Object.defineProperty(Element.prototype,"totalOffsetTop",{get:function()
{return this.getBoundingClientRect().top;}});Object.defineProperty(Element.prototype,"removeChildren",{value:function()
{if(this.firstChild)
this.textContent="";}});Object.defineProperty(Element.prototype,"isInsertionCaretInside",{value:function()
{var selection=window.getSelection();if(!selection.rangeCount||!selection.isCollapsed)
return false;var selectionRange=selection.getRangeAt(0);return selectionRange.startContainer===this||selectionRange.startContainer.isDescendant(this);}});Object.defineProperty(Element.prototype,"removeMatchingStyleClasses",{value:function(classNameRegex)
{var regex=new RegExp("(^|\\s+)"+classNameRegex+"($|\\s+)");if(regex.test(this.className))
this.className=this.className.replace(regex," ");}});Object.defineProperty(Element.prototype,"createChild",{value:function(elementName,className)
{var element=this.ownerDocument.createElement(elementName);if(className)
element.className=className;this.appendChild(element);return element;}});Object.defineProperty(Element.prototype,"isScrolledToBottom",{value:function()
{ return this.scrollTop+this.clientHeight===this.scrollHeight;}});Object.defineProperty(Element.prototype,"recalculateStyles",{value:function()
{this.ownerDocument.defaultView.getComputedStyle(this);}});Object.defineProperty(DocumentFragment.prototype,"createChild",{value:Element.prototype.createChild});Object.defineProperty(Array,"shallowEqual",{value:function(a,b)
{if(!Array.isArray(a)||!Array.isArray(b))
return false;if(a===b)
return true;let length=a.length;if(length!==b.length)
return false;for(let i=0;i<length;++i){if(a[i]===b[i])
continue;if(!Object.shallowEqual(a[i],b[i]))
return false;}
return true;}});Object.defineProperty(Array.prototype,"lastValue",{get:function()
{if(!this.length)
return undefined;return this[this.length-1];}});Object.defineProperty(Array.prototype,"remove",{value:function(value,onlyFirst)
{for(var i=this.length-1;i>=0;--i){if(this[i]===value){this.splice(i,1);if(onlyFirst)
return;}}}});Object.defineProperty(Array.prototype,"toggleIncludes",{value:function(value,force)
{let exists=this.includes(value);if(exists===!!force)
return;if(exists)
this.remove(value);else
this.push(value);}});Object.defineProperty(Array.prototype,"insertAtIndex",{value:function(value,index)
{this.splice(index,0,value);}});Object.defineProperty(Array.prototype,"keySet",{value:function()
{let keys=Object.create(null);for(var i=0;i<this.length;++i)
keys[this[i]]=true;return keys;}});Object.defineProperty(Array.prototype,"partition",{value:function(callback)
{let positive=[];let negative=[];for(let i=0;i<this.length;++i){let value=this[i];if(callback(value))
positive.push(value);else
negative.push(value);}
return[positive,negative];}});Object.defineProperty(String.prototype,"isLowerCase",{value:function()
{return String(this)===this.toLowerCase();}});Object.defineProperty(String.prototype,"isUpperCase",{value:function()
{return String(this)===this.toUpperCase();}});Object.defineProperty(String.prototype,"trimMiddle",{value:function(maxLength)
{if(this.length<=maxLength)
return this;var leftHalf=maxLength>>1;var rightHalf=maxLength-leftHalf-1;return this.substr(0,leftHalf)+ellipsis+this.substr(this.length-rightHalf,rightHalf);}});Object.defineProperty(String.prototype,"trimEnd",{value:function(maxLength)
{if(this.length<=maxLength)
return this;return this.substr(0,maxLength-1)+ellipsis;}});Object.defineProperty(String.prototype,"truncate",{value:function(maxLength)
{"use strict";if(this.length<=maxLength)
return this;let clipped=this.slice(0,maxLength);let indexOfLastWhitespace=clipped.search(/\s\S*$/);if(indexOfLastWhitespace>Math.floor(maxLength/2))
clipped=clipped.slice(0,indexOfLastWhitespace-1);return clipped+ellipsis;}});Object.defineProperty(String.prototype,"collapseWhitespace",{value:function()
{return this.replace(/[\s\xA0]+/g," ");}});Object.defineProperty(String.prototype,"removeWhitespace",{value:function()
{return this.replace(/[\s\xA0]+/g,"");}});Object.defineProperty(String.prototype,"escapeCharacters",{value:function(chars)
{var foundChar=false;for(var i=0;i<chars.length;++i){if(this.indexOf(chars.charAt(i))!==-1){foundChar=true;break;}}
if(!foundChar)
return this;var result="";for(var i=0;i<this.length;++i){if(chars.indexOf(this.charAt(i))!==-1)
result+="\\";result+=this.charAt(i);}
return result;}});Object.defineProperty(String.prototype,"escapeForRegExp",{value:function()
{return this.escapeCharacters("^[]{}()\\.$*+?|");}});Object.defineProperty(String.prototype,"capitalize",{value:function()
{return this.charAt(0).toUpperCase()+this.slice(1);}});Object.defineProperty(String.prototype,"extendedLocaleCompare",{value(other)
{return this.localeCompare(other,undefined,{numeric:true});}});Object.defineProperty(String,"tokenizeFormatString",{value:function(format)
{var tokens=[];var substitutionIndex=0;function addStringToken(str)
{tokens.push({type:"string",value:str});}
function addSpecifierToken(specifier,precision,substitutionIndex)
{tokens.push({type:"specifier",specifier,precision,substitutionIndex});}
var index=0;for(var precentIndex=format.indexOf("%",index);precentIndex!==-1;precentIndex=format.indexOf("%",index)){addStringToken(format.substring(index,precentIndex));index=precentIndex+1;if(format[index]==="%"){addStringToken("%");++index;continue;}
if(!isNaN(format[index])){var number=parseInt(format.substring(index),10);while(!isNaN(format[index]))
++index;if(number>0&&format[index]==="$"){substitutionIndex=(number-1);++index;}}
const defaultPrecision=6;let precision=defaultPrecision;if(format[index]==="."){++index;precision=parseInt(format.substring(index),10);if(isNaN(precision))
precision=defaultPrecision;while(!isNaN(format[index]))
++index;}
addSpecifierToken(format[index],precision,substitutionIndex);++substitutionIndex;++index;}
addStringToken(format.substring(index));return tokens;}});Object.defineProperty(String.prototype,"hash",{get:function()
{const stringHashingStartValue=0x9e3779b9;var result=stringHashingStartValue;var pendingCharacter=null;for(var i=0;i<this.length;++i){var currentCharacter=this[i].charCodeAt(0);if(pendingCharacter===null){pendingCharacter=currentCharacter;continue;}
result+=pendingCharacter;result=(result<<16)^((currentCharacter<<11)^result);result+=result>>11;pendingCharacter=null;}
if(pendingCharacter!==null){result+=pendingCharacter;result^=result<<11;result+=result>>17;}
result^=result<<3;result+=result>>5;result^=result<<2;result+=result>>15;result^=result<<10;return(0xffffffff+result+1).toString(36);}});Object.defineProperty(String,"standardFormatters",{value:{d:function(substitution)
{return parseInt(substitution).toLocaleString();},f:function(substitution,token)
{let value=parseFloat(substitution);if(isNaN(value))
return NaN;let options={minimumFractionDigits:token.precision,maximumFractionDigits:token.precision,useGrouping:false};return value.toLocaleString(undefined,options);},s:function(substitution)
{return substitution;}}});Object.defineProperty(String,"format",{value:function(format,substitutions,formatters,initialValue,append)
{if(!format||!substitutions||!substitutions.length)
return{formattedResult:append(initialValue,format),unusedSubstitutions:substitutions};function prettyFunctionName()
{return"String.format(\""+format+"\", \""+Array.from(substitutions).join("\", \"")+"\")";}
function warn(msg)
{console.warn(prettyFunctionName()+": "+msg);}
function error(msg)
{console.error(prettyFunctionName()+": "+msg);}
var result=initialValue;var tokens=String.tokenizeFormatString(format);var usedSubstitutionIndexes={};for(var i=0;i<tokens.length;++i){var token=tokens[i];if(token.type==="string"){result=append(result,token.value);continue;}
if(token.type!=="specifier"){error("Unknown token type \""+token.type+"\" found.");continue;}
if(token.substitutionIndex>=substitutions.length){
error("not enough substitution arguments. Had "+substitutions.length+" but needed "+(token.substitutionIndex+1)+", so substitution was skipped.");result=append(result,"%"+(token.precision>-1?token.precision:"")+token.specifier);continue;}
usedSubstitutionIndexes[token.substitutionIndex]=true;if(!(token.specifier in formatters)){warn("unsupported format character \u201C"+token.specifier+"\u201D. Treating as a string.");result=append(result,substitutions[token.substitutionIndex]);continue;}
result=append(result,formatters[token.specifier](substitutions[token.substitutionIndex],token));}
var unusedSubstitutions=[];for(var i=0;i<substitutions.length;++i){if(i in usedSubstitutionIndexes)
continue;unusedSubstitutions.push(substitutions[i]);}
return{formattedResult:result,unusedSubstitutions};}});Object.defineProperty(String.prototype,"format",{value:function()
{return String.format(this,arguments,String.standardFormatters,"",function(a,b){return a+b;}).formattedResult;}});Object.defineProperty(String.prototype,"insertWordBreakCharacters",{value:function()
{return this.replace(/([\/;:\)\]\}&?])/g,"$1\u200b");}});Object.defineProperty(String.prototype,"removeWordBreakCharacters",{value:function()
{return this.replace(/\u200b/g,"");}});Object.defineProperty(String.prototype,"getMatchingIndexes",{value:function(needle)
{var indexesOfNeedle=[];var index=this.indexOf(needle);while(index>=0){indexesOfNeedle.push(index);index=this.indexOf(needle,index+1);}
return indexesOfNeedle;}});Object.defineProperty(String.prototype,"levenshteinDistance",{value:function(s)
{var m=this.length;var n=s.length;var d=new Array(m+1);for(var i=0;i<=m;++i){d[i]=new Array(n+1);d[i][0]=i;}
for(var j=0;j<=n;++j)
d[0][j]=j;for(var j=1;j<=n;++j){for(var i=1;i<=m;++i){if(this[i-1]===s[j-1])
d[i][j]=d[i-1][j-1];else{var deletion=d[i-1][j]+1;var insertion=d[i][j-1]+1;var substitution=d[i-1][j-1]+1;d[i][j]=Math.min(deletion,insertion,substitution);}}}
return d[m][n];}});Object.defineProperty(String.prototype,"toCamelCase",{value:function()
{return this.toLowerCase().replace(/[^\w]+(\w)/g,(match,group)=>group.toUpperCase());}});Object.defineProperty(String.prototype,"hasMatchingEscapedQuotes",{value:function()
{return/^\"(?:[^\"\\]|\\.)*\"$/.test(this) || /^\'(?:[^\'\\]|\\.)*\'$/.test(this);
}
});
Object.defineProperty(Math, "roundTo",
{
value: function(num, step)
{
return Math.round(num / step) * step;
}
});
Object.defineProperty(Number, "constrain",
{
value: function(num, min, max)
{
if (max < min)
return min;
if (num < min)
num = min;
else if (num > max)
num = max;
return num;
}
});
Object.defineProperty(Number, "percentageString",
{
value: function(fraction, precision = 1)
{
return fraction.toLocaleString(undefined, {minimumFractionDigits: precision, style: "percent"});
}
});
Object.defineProperty(Number, "secondsToMillisecondsString",
{
value: function(seconds, higherResolution)
{
let ms = seconds * 1000;
if (higherResolution)
return WebInspector.UIString("%.2fms").format(ms);
return WebInspector.UIString("%.1fms").format(ms);
}
});
Object.defineProperty(Number, "secondsToString",
{
value: function(seconds, higherResolution)
{
let ms = seconds * 1000;
if (!ms)
return WebInspector.UIString("%.0fms").format(0);
if (Math.abs(ms) < 10) {
if (higherResolution)
return WebInspector.UIString("%.3fms").format(ms);
return WebInspector.UIString("%.2fms").format(ms);
}
if (Math.abs(ms) < 100) {
if (higherResolution)
return WebInspector.UIString("%.2fms").format(ms);
return WebInspector.UIString("%.1fms").format(ms);
}
if (Math.abs(ms) < 1000) {
if (higherResolution)
return WebInspector.UIString("%.1fms").format(ms);
return WebInspector.UIString("%.0fms").format(ms);
}
// Do not go over seconds when in high resolution mode.
if (higherResolution || Math.abs(seconds) < 60)
return WebInspector.UIString("%.2fs").format(seconds);
let minutes = seconds / 60;
if (Math.abs(minutes) < 60)
return WebInspector.UIString("%.1fmin").format(minutes);
let hours = minutes / 60;
if (Math.abs(hours) < 24)
return WebInspector.UIString("%.1fhrs").format(hours);
let days = hours / 24;
return WebInspector.UIString("%.1f days").format(days);
}
});
Object.defineProperty(Number, "bytesToString",
{
value: function(bytes, higherResolution)
{
if (higherResolution === undefined)
higherResolution = true;
if (Math.abs(bytes) < 1024)
return WebInspector.UIString("%.0f B").format(bytes);
let kilobytes = bytes / 1024;
if (Math.abs(kilobytes) < 1024) {
if (higherResolution || Math.abs(kilobytes) < 10)
return WebInspector.UIString("%.2f KB").format(kilobytes);
return WebInspector.UIString("%.1f KB").format(kilobytes);
}
let megabytes = kilobytes / 1024;
if (Math.abs(megabytes) < 1024) {
if (higherResolution || Math.abs(megabytes) < 10)
return WebInspector.UIString("%.2f MB").format(megabytes);
return WebInspector.UIString("%.1f MB").format(megabytes);
}
let gigabytes = megabytes / 1024;
if (higherResolution || Math.abs(gigabytes) < 10)
return WebInspector.UIString("%.2f GB").format(gigabytes);
return WebInspector.UIString("%.1f GB").format(gigabytes);
}
});
Object.defineProperty(Number, "abbreviate",
{
value: function(num)
{
if (num < 1000)
return num.toLocaleString();
if (num < 1000000)
return WebInspector.UIString("%.1fK").format(Math.round(num / 100) / 10);
if (num < 1000000000)
return WebInspector.UIString("%.1fM").format(Math.round(num / 100000) / 10);
return WebInspector.UIString("%.1fB").format(Math.round(num / 100000000) / 10);
}
});
Object.defineProperty(Number.prototype, "maxDecimals",
{
value(decimals)
{
let power = 10 ** decimals;
return Math.round(this * power) / power;
}
});
Object.defineProperty(Uint32Array, "isLittleEndian",
{
value: function()
{
if ("_isLittleEndian" in this)
return this._isLittleEndian;
var buffer = new ArrayBuffer(4);
var longData = new Uint32Array(buffer);
var data = new Uint8Array(buffer);
longData[0] = 0x0a0b0c0d;
this._isLittleEndian = data[0] === 0x0d && data[1] === 0x0c && data[2] === 0x0b && data[3] === 0x0a;
return this._isLittleEndian;
}
});
function isEmptyObject(object)
{
for (var property in object)
return false;
return true;
}
function isEnterKey(event)
{
// Check if this is an IME event.
return event.keyCode !== 229 && event.keyIdentifier === "Enter";
}
function resolveDotsInPath(path)
{
if (!path)
return path;
if (path.indexOf("./") === -1)
return path;
var result = [];
var components = path.split("/");
for (var i = 0; i < components.length; ++i) {
var component = components[i];
// Skip over "./".
if (component === ".")
continue;
// Rewind one component for "../".
if (component === "..") {
if (result.length === 1)
continue;
result.pop();
continue;
}
result.push(component);
}
return result.join("/");
}
function parseMIMEType(fullMimeType)
{
if (!fullMimeType)
return {type: fullMimeType, boundary: null, encoding: null};
var typeParts = fullMimeType.split(/\s*;\s*/);
var type = typeParts[0];
var boundary = null;
var encoding = null;
for (var i = 1; i < typeParts.length; ++i) {
var subparts = typeParts[i].split(/\s*=\s*/);
if (subparts.length !== 2)
continue;
if (subparts[0].toLowerCase() === "boundary")
boundary = subparts[1];
else if (subparts[0].toLowerCase() === "charset")
encoding = subparts[1].replace("^\"|\"$","");}
return{type,boundary:boundary||null,encoding:encoding||null};}
function simpleGlobStringToRegExp(globString,regExpFlags)
{if(!globString)
return null;var regexString=globString.escapeCharacters("^[]{}()\\.$+?|");regexString=regexString.replace(/\\\\\*/g,"\\*");var unescapedAsteriskRegex=/(^|[^\\])\*+/g;if(unescapedAsteriskRegex.test(globString)){regexString=regexString.replace(unescapedAsteriskRegex,"$1.*");
regexString="\\b"+regexString+"\\b";}
return new RegExp(regexString,regExpFlags);}
Object.defineProperty(Array.prototype,"lowerBound",{
value:function(object,comparator)
{function defaultComparator(a,b)
{return a-b;}
comparator=comparator||defaultComparator;var l=0;var r=this.length;while(l<r){var m=(l+r)>>1;if(comparator(object,this[m])>0)
l=m+1;else
r=m;}
return r;}});Object.defineProperty(Array.prototype,"upperBound",{
value:function(object,comparator)
{function defaultComparator(a,b)
{return a-b;}
comparator=comparator||defaultComparator;var l=0;var r=this.length;while(l<r){var m=(l+r)>>1;if(comparator(object,this[m])>=0)
l=m+1;else
r=m;}
return r;}});Object.defineProperty(Array.prototype,"binaryIndexOf",{value:function(value,comparator)
{var index=this.lowerBound(value,comparator);return index<this.length&&comparator(value,this[index])===0?index:-1;}});(function(){
const debounceTimeoutSymbol=Symbol("debounce-timeout");const debounceSoonProxySymbol=Symbol("debounce-soon-proxy");Object.defineProperty(Object.prototype,"soon",{get:function()
{if(!this[debounceSoonProxySymbol])
this[debounceSoonProxySymbol]=this.debounce(0);return this[debounceSoonProxySymbol];}});Object.defineProperty(Object.prototype,"debounce",{value:function(delay)
{return new Proxy(this,{get(target,property,receiver){return(...args)=>{let original=target[property];if(original[debounceTimeoutSymbol])
clearTimeout(original[debounceTimeoutSymbol]);let performWork=()=>{original[debounceTimeoutSymbol]=undefined;original.apply(target,args);};original[debounceTimeoutSymbol]=setTimeout(performWork,delay);};}});}});Object.defineProperty(Function.prototype,"cancelDebounce",{value:function()
{if(!this[debounceTimeoutSymbol])
return;clearTimeout(this[debounceTimeoutSymbol]);this[debounceTimeoutSymbol]=undefined;}});const requestAnimationFrameSymbol=Symbol("peform-on-animation-frame");const requestAnimationFrameProxySymbol=Symbol("perform-on-animation-frame-proxy");Object.defineProperty(Object.prototype,"onNextFrame",{get:function()
{if(!this[requestAnimationFrameProxySymbol]){this[requestAnimationFrameProxySymbol]=new Proxy(this,{get(target,property,receiver){return(...args)=>{let original=target[property];if(original[requestAnimationFrameSymbol])
return;let performWork=()=>{original[requestAnimationFrameSymbol]=undefined;original.apply(target,args);};original[requestAnimationFrameSymbol]=requestAnimationFrame(performWork);};}});}
return this[requestAnimationFrameProxySymbol];}});})();function appendWebInspectorSourceURL(string)
{if(string.includes("//# sourceURL"))
return string;return"\n//# sourceURL=__WebInspectorInternal__\n"+string;}
function appendWebInspectorConsoleEvaluationSourceURL(string)
{if(string.includes("//# sourceURL"))
return string;return"\n//# sourceURL=__WebInspectorConsoleEvaluation__\n"+string;}
function isWebInspectorInternalScript(url)
{return url==="__WebInspectorInternal__";}
function isWebInspectorConsoleEvaluationScript(url)
{return url==="__WebInspectorConsoleEvaluation__";}
function isWebKitInjectedScript(url)
{return url&&url.startsWith("__InjectedScript_")&&url.endsWith(".js");}
function isWebKitInternalScript(url)
{if(isWebInspectorConsoleEvaluationScript(url))
return false;if(isWebKitInjectedScript(url))
return true;return url&&url.startsWith("__Web")&&url.endsWith("__");}
function isFunctionStringNativeCode(str)
{return str.endsWith("{\n [native code]\n}");}
function isTextLikelyMinified(content)
{const autoFormatMaxCharactersToCheck=5000;const autoFormatWhitespaceRatio=0.2;let whitespaceScore=0;let size=Math.min(autoFormatMaxCharactersToCheck,content.length);for(let i=0;i<size;i++){let char=content[i];if(char===" ")
whitespaceScore++;else if(char==="\t")
whitespaceScore+=4;else if(char==="\n")
whitespaceScore+=8;}
let ratio=whitespaceScore/size;return ratio<autoFormatWhitespaceRatio;}
function doubleQuotedString(str)
{return"\""+str.replace(/\\/g,"\\\\").replace(/"/g,"\\\"")+"\"";}
function insertionIndexForObjectInListSortedByFunction(object,list,comparator,insertionIndexAfter)
{if(insertionIndexAfter){return list.upperBound(object,comparator);}else{return list.lowerBound(object,comparator);}}
function insertObjectIntoSortedArray(object,array,comparator)
{array.splice(insertionIndexForObjectInListSortedByFunction(object,array,comparator),0,object);}
function decodeBase64ToBlob(base64Data,mimeType)
{mimeType=mimeType||'';const sliceSize=1024;var byteCharacters=atob(base64Data);var bytesLength=byteCharacters.length;var slicesCount=Math.ceil(bytesLength/sliceSize);var byteArrays=new Array(slicesCount);for(var sliceIndex=0;sliceIndex<slicesCount;++sliceIndex){var begin=sliceIndex*sliceSize;var end=Math.min(begin+sliceSize,bytesLength);var bytes=new Array(end-begin);for(var offset=begin,i=0;offset<end;++i,++offset)
bytes[i]=byteCharacters[offset].charCodeAt(0);byteArrays[sliceIndex]=new Uint8Array(bytes);}
return new Blob(byteArrays,{type:mimeType});}
function timestamp()
{return window.performance?performance.now():Date.now();}
if(!window.handlePromiseException){window.handlePromiseException=function handlePromiseException(error)
{console.error("Uncaught exception in Promise",error);};}
WebInspector.Setting=class Setting extends WebInspector.Object
{constructor(name,defaultValue)
{super();this._name=name;let inspectionLevel=InspectorFrontendHost?InspectorFrontendHost.inspectionLevel():1;let levelString=inspectionLevel>1?"-"+inspectionLevel:"";this._localStorageKey=`com.apple.WebInspector${levelString}.${name}`;this._defaultValue=defaultValue;}
get name()
{return this._name;}
get value()
{if("_value"in this)
return this._value;this._value=JSON.parse(JSON.stringify(this._defaultValue));if(!window.InspectorTest&&window.localStorage&&this._localStorageKey in window.localStorage){try{this._value=JSON.parse(window.localStorage[this._localStorageKey]);}catch(e){delete window.localStorage[this._localStorageKey];}}
return this._value;}
set value(value)
{if(this._value===value)
return;this._value=value;if(!window.InspectorTest&&window.localStorage){try{if(Object.shallowEqual(this._value,this._defaultValue))
delete window.localStorage[this._localStorageKey];else
window.localStorage[this._localStorageKey]=JSON.stringify(this._value);}catch(e){console.error("Error saving setting with name: "+this._name);}}
this.dispatchEventToListeners(WebInspector.Setting.Event.Changed,this._value,{name:this._name});}
reset()
{this.value=JSON.parse(JSON.stringify(this._defaultValue));}};WebInspector.Setting.Event={Changed:"setting-changed"};WebInspector.settings={autoLogProtocolMessages:new WebInspector.Setting("auto-collect-protocol-messages",false),autoLogTimeStats:new WebInspector.Setting("auto-collect-time-stats",false),enableUncaughtExceptionReporter:new WebInspector.Setting("enable-uncaught-exception-reporter",true),enableLineWrapping:new WebInspector.Setting("enable-line-wrapping",false),indentUnit:new WebInspector.Setting("indent-unit",4),tabSize:new WebInspector.Setting("tab-size",4),indentWithTabs:new WebInspector.Setting("indent-with-tabs",false),showWhitespaceCharacters:new WebInspector.Setting("show-whitespace-characters",false),showInvalidCharacters:new WebInspector.Setting("show-invalid-characters",false),clearLogOnNavigate:new WebInspector.Setting("clear-log-on-navigate",true),clearNetworkOnNavigate:new WebInspector.Setting("clear-network-on-navigate",true),zoomFactor:new WebInspector.Setting("zoom-factor",1),layoutDirection:new WebInspector.Setting("layout-direction-override","system"),stylesShowInlineWarnings:new WebInspector.Setting("styles-show-inline-warning",true),stylesInsertNewline:new WebInspector.Setting("styles-insert-newline",true),stylesSelectOnFirstClick:new WebInspector.Setting("styles-select-on-first-click",true),showScopeChainOnPause:new WebInspector.Setting("show-scope-chain-sidebar",true),showImageGrid:new WebInspector.Setting("show-image-grid",false), experimentalShowCanvasContextsInResources:new WebInspector.Setting("experimental-show-canvas-contexts-in-resources",false),};WebInspector.YieldableTask=class YieldableTask extends WebInspector.Object
{constructor(delegate,items,options={})
{super();let{workInterval,idleInterval}=options;this._workInterval=workInterval||10;this._idleInterval=idleInterval||0;this._delegate=delegate;this._items=items;this._idleTimeoutIdentifier=undefined;this._processing=false;this._processing=false;this._cancelled=false;}
get processing(){return this._processing;}
get cancelled(){return this._cancelled;}
get idleInterval(){return this._idleInterval;}
get workInterval(){return this._workInterval;}
start()
{if(this._processing)
return;if(this._cancelled)
return;function*createIteratorForProcessingItems()
{let startTime=Date.now();let processedItems=[];for(let item of this._items){if(this._cancelled)
break;this._delegate.yieldableTaskWillProcessItem(this,item);processedItems.push(item);if(this._cancelled)
break;let elapsedTime=Date.now()-startTime;if(elapsedTime>this._workInterval){let returnedItems=processedItems.slice();processedItems=[];this._willYield(returnedItems,elapsedTime);yield;startTime=Date.now();}}
if(processedItems.length)
this._willYield(processedItems,Date.now()-startTime);}
this._processing=true;this._pendingItemsIterator=createIteratorForProcessingItems.call(this);this._processPendingItems();}
cancel()
{if(!this._processing)
return;this._cancelled=true;}
_processPendingItems()
{if(this._cancelled)
return;if(!this._pendingItemsIterator.next().done){this._idleTimeoutIdentifier=setTimeout(()=>{this._processPendingItems();},this._idleInterval);return;}
this._didFinish();}
_willYield(processedItems,elapsedTime)
{if(typeof this._delegate.yieldableTaskDidYield==="function")
this._delegate.yieldableTaskDidYield(this,processedItems,elapsedTime);}
_didFinish()
{this._processing=false;this._pendingItemsIterator=null;if(this._idleTimeoutIdentifier){clearTimeout(this._idleTimeoutIdentifier);this._idleTimeoutIdentifier=undefined;}
if(typeof this._delegate.yieldableTaskDidFinish==="function")
this._delegate.yieldableTaskDidFinish(this);}};WebInspector.ProtocolTracer=class ProtocolTracer extends WebInspector.Object
{ logStarted()
{}
logFrontendException(message,exception)
{}
logProtocolError(message,error)
{}
logFrontendRequest(message)
{}
logWillHandleResponse(message)
{}
logDidHandleResponse(message,timings=null)
{}
logWillHandleEvent(message)
{}
logDidHandleEvent(message,timings=null)
{}
logFinished()
{}};WebInspector.LoggingProtocolTracer=class LoggingProtocolTracer extends WebInspector.ProtocolTracer
{constructor()
{super();this._dumpMessagesToConsole=false;this._dumpTimingDataToConsole=false;this._logToConsole=window.InspectorTest?InspectorFrontendHost.unbufferedLog.bind(InspectorFrontendHost):console.log.bind(console);}
set dumpMessagesToConsole(value)
{this._dumpMessagesToConsole=!!value;}
get dumpMessagesToConsole()
{return this._dumpMessagesToConsole;}
set dumpTimingDataToConsole(value)
{this._dumpTimingDataToConsole=!!value;}
get dumpTimingDataToConsole()
{return this._dumpTimingDataToConsole;}
logFrontendException(message,exception)
{this._processEntry({type:"exception",message,exception});}
logProtocolError(message,error)
{this._processEntry({type:"error",message,error});}
logFrontendRequest(message)
{this._processEntry({type:"request",message});}
logWillHandleResponse(message)
{let entry={type:"response",message};this._processEntry(entry);}
logDidHandleResponse(message,timings=null)
{let entry={type:"response",message};if(timings)
entry.timings=Object.shallowCopy(timings);this._processEntry(entry);}
logWillHandleEvent(message)
{let entry={type:"event",message};this._processEntry(entry);}
logDidHandleEvent(message,timings=null)
{let entry={type:"event",message};if(timings)
entry.timings=Object.shallowCopy(timings);this._processEntry(entry);}
_processEntry(entry)
{if(this._dumpTimingDataToConsole&&entry.timings){if(entry.timings.rtt&&entry.timings.dispatch)
this._logToConsole(`time-stats: Handling: ${entry.timings.dispatch || NaN}ms; RTT: ${entry.timings.rtt}ms`);else if(entry.timings.dispatch)
this._logToConsole(`time-stats: Handling: ${entry.timings.dispatch || NaN}ms`);}else if(this._dumpMessagesToConsole&&!entry.timings){this._logToConsole(`${entry.type}: ${JSON.stringify(entry.message)}`);if(entry.exception){this._logToConsole(entry.exception);if(entry.exception.stack)
this._logToConsole(entry.exception.stack);}}}};InspectorBackendClass=class InspectorBackendClass
{constructor()
{this._agents={};this._customTracer=null;this._defaultTracer=new WebInspector.LoggingProtocolTracer;this._activeTracers=[this._defaultTracer];this._workerSupportedDomains=[];WebInspector.settings.autoLogProtocolMessages.addEventListener(WebInspector.Setting.Event.Changed,this._startOrStopAutomaticTracing,this);WebInspector.settings.autoLogTimeStats.addEventListener(WebInspector.Setting.Event.Changed,this._startOrStopAutomaticTracing,this);this._startOrStopAutomaticTracing();this.currentDispatchState={event:null,request:null,response:null,};}
get workerSupportedDomains(){return this._workerSupportedDomains;}
set dumpInspectorProtocolMessages(value)
{WebInspector.settings.autoLogProtocolMessages.value=value;this._defaultTracer.dumpMessagesToConsole=value;}
get dumpInspectorProtocolMessages()
{return WebInspector.settings.autoLogProtocolMessages.value;}
set dumpInspectorTimeStats(value)
{WebInspector.settings.autoLogTimeStats.value=value;if(!this.dumpInspectorProtocolMessages)
this.dumpInspectorProtocolMessages=true;this._defaultTracer.dumpTimingDataToConsole=value;}
get dumpInspectorTimeStats()
{return WebInspector.settings.autoLogTimeStats.value;}
set customTracer(tracer)
{if(!tracer&&!this._customTracer)
return;if(tracer===this._customTracer)
return;if(tracer===this._defaultTracer)
return;if(this._customTracer)
this._customTracer.logFinished();this._customTracer=tracer;this._activeTracers=[this._defaultTracer];if(this._customTracer){this._customTracer.logStarted();this._activeTracers.push(this._customTracer);}}
get activeTracers()
{return this._activeTracers;}
registerCommand(qualifiedName,callSignature,replySignature)
{var[domainName,commandName]=qualifiedName.split(".");var agent=this._agentForDomain(domainName);agent.addCommand(InspectorBackend.Command.create(agent,qualifiedName,callSignature,replySignature));}
registerEnum(qualifiedName,enumValues)
{var[domainName,enumName]=qualifiedName.split(".");var agent=this._agentForDomain(domainName);agent.addEnum(enumName,enumValues);}
registerEvent(qualifiedName,signature)
{var[domainName,eventName]=qualifiedName.split(".");var agent=this._agentForDomain(domainName);agent.addEvent(new InspectorBackend.Event(eventName,signature));}
registerDomainDispatcher(domainName,dispatcher)
{var agent=this._agentForDomain(domainName);agent.dispatcher=dispatcher;}
dispatch(message)
{InspectorBackend.mainConnection.dispatch(message);}
runAfterPendingDispatches(script)
{InspectorBackend.mainConnection.runAfterPendingDispatches(script);}
activateDomain(domainName,activationDebuggableType)
{if(!activationDebuggableType||InspectorFrontendHost.debuggableType()===activationDebuggableType){var agent=this._agents[domainName];agent.activate();return agent;}
return null;}
workerSupportedDomain(domainName)
{this._workerSupportedDomains.push(domainName);}
_startOrStopAutomaticTracing()
{this._defaultTracer.dumpMessagesToConsole=this.dumpInspectorProtocolMessages;this._defaultTracer.dumpTimingDataToConsole=this.dumpTimingDataToConsole;}
_agentForDomain(domainName)
{if(this._agents[domainName])
return this._agents[domainName];var agent=new InspectorBackend.Agent(domainName);this._agents[domainName]=agent;return agent;}};InspectorBackend=new InspectorBackendClass;InspectorBackend.Agent=class InspectorBackendAgent
{constructor(domainName)
{this._domainName=domainName;this._connection=InspectorBackend.mainConnection;this._dispatcher=null;this._active=false;
this._events={};}
get domainName()
{return this._domainName;}
get active()
{return this._active;}
get connection()
{return this._connection;}
set connection(connection)
{this._connection=connection;}
get dispatcher()
{return this._dispatcher;}
set dispatcher(value)
{this._dispatcher=value;}
addEnum(enumName,enumValues)
{this[enumName]=enumValues;}
addCommand(command)
{this[command.commandName]=command;}
addEvent(event)
{this._events[event.eventName]=event;}
getEvent(eventName)
{return this._events[eventName];}
hasEvent(eventName)
{return eventName in this._events;}
hasEventParameter(eventName,eventParameterName)
{let event=this._events[eventName];return event&&event.parameterNames.includes(eventParameterName);}
activate()
{this._active=true;window[this._domainName+"Agent"]=this;}
dispatchEvent(eventName,eventArguments)
{if(!(eventName in this._dispatcher)){console.error("Protocol Error: Attempted to dispatch an unimplemented method '"+this._domainName+"."+eventName+"'");return false;}
this._dispatcher[eventName].apply(this._dispatcher,eventArguments);return true;}};InspectorBackend.Command=function(agent,qualifiedName,callSignature,replySignature)
{"use strict";this._agent=agent;this._instance=this;let[domainName,commandName]=qualifiedName.split(".");this._qualifiedName=qualifiedName;this._commandName=commandName;this._callSignature=callSignature||[];this._replySignature=replySignature||[];};InspectorBackend.Command.create=function(agent,commandName,callSignature,replySignature)
{"use strict";let instance=new InspectorBackend.Command(agent,commandName,callSignature,replySignature);function callable(){return instance._invokeWithArguments.call(instance,this,Array.from(arguments));}
callable._instance=instance;Object.setPrototypeOf(callable,InspectorBackend.Command.prototype);return callable;};InspectorBackend.Command.prototype={__proto__:Function.prototype, get qualifiedName()
{return this._instance._qualifiedName;},get commandName()
{return this._instance._commandName;},get callSignature()
{return this._instance._callSignature;},get replySignature()
{return this._instance._replySignature;},invoke(commandArguments,callback,agent)
{"use strict";agent=agent||this._instance._agent;if(typeof callback==="function")
agent._connection._sendCommandToBackendWithCallback(this._instance,commandArguments,callback);else
return agent._connection._sendCommandToBackendExpectingPromise(this._instance,commandArguments);},supports(parameterName)
{"use strict";return this._instance.callSignature.some((parameter)=>parameter["name"]===parameterName);}, _invokeWithArguments(agent,commandArguments)
{"use strict";let instance=this._instance;let callback=typeof commandArguments.lastValue==="function"?commandArguments.pop():null;function deliverFailure(message){console.error(`Protocol Error: ${message}`);if(callback)
setTimeout(callback.bind(null,message),0);else
return Promise.reject(new Error(message));}
let parameters={};for(let parameter of instance.callSignature){let parameterName=parameter["name"];let typeName=parameter["type"];let optionalFlag=parameter["optional"];if(!commandArguments.length&&!optionalFlag)
return deliverFailure(`Invalid number of arguments for command '${instance.qualifiedName}'.`);let value=commandArguments.shift();if(optionalFlag&&value===undefined)
continue;if(typeof value!==typeName)
return deliverFailure(`Invalid type of argument '${parameterName}' for command '${instance.qualifiedName}' call. It must be '${typeName}' but it is '${typeof value}'.`);parameters[parameterName]=value;}
if(!callback&&commandArguments.length===1&&commandArguments[0]!==undefined)
return deliverFailure(`Protocol Error: Optional callback argument for command '${instance.qualifiedName}' call must be a function but its type is '${typeof commandArguments[0]}'.`);if(callback)
agent._connection._sendCommandToBackendWithCallback(instance,parameters,callback);else
return agent._connection._sendCommandToBackendExpectingPromise(instance,parameters);}};InspectorBackend.Event=class Event
{constructor(eventName,parameterNames)
{this.eventName=eventName;this.parameterNames=parameterNames;}};InspectorBackend.Connection=class InspectorBackendConnection
{constructor()
{this._lastSequenceId=1;this._pendingResponses=new Map;this._agents={};this._deferredScripts=[];this._target=null;}
get target()
{return this._target;}
set target(target)
{this._target=target;for(let domain in this._agents){let dispatcher=this._agents[domain].dispatcher;if(dispatcher)
dispatcher.target=target;}}
dispatch(message)
{let messageObject=(typeof message==="string")?JSON.parse(message):message;if("id"in messageObject)
this._dispatchResponse(messageObject);else
this._dispatchEvent(messageObject);}
runAfterPendingDispatches(script)
{if(!this._pendingResponses.size)
script.call(this);else
this._deferredScripts.push(script);}
sendMessageToBackend(message)
{throw new Error("Should be implemented by a InspectorBackend.Connection subclass");}
_dispatchResponse(messageObject)
{if(messageObject["error"]){if(messageObject["error"].code!==-32000)
console.error("Request with id = "+messageObject["id"]+" failed. "+JSON.stringify(messageObject["error"]));}
let sequenceId=messageObject["id"];let responseData=this._pendingResponses.take(sequenceId)||{};let{request,command,callback,promise}=responseData;let processingStartTimestamp=timestamp();for(let tracer of InspectorBackend.activeTracers)
tracer.logWillHandleResponse(messageObject);InspectorBackend.currentDispatchState.request=request;InspectorBackend.currentDispatchState.response=messageObject;if(typeof callback==="function")
this._dispatchResponseToCallback(command,request,messageObject,callback);else if(typeof promise==="object")
this._dispatchResponseToPromise(command,messageObject,promise);else
console.error("Received a command response without a corresponding callback or promise.",messageObject,command);InspectorBackend.currentDispatchState.request=null;InspectorBackend.currentDispatchState.response=null;let processingTime=(timestamp()-processingStartTimestamp).toFixed(3);let roundTripTime=(processingStartTimestamp-responseData.sendRequestTimestamp).toFixed(3);for(let tracer of InspectorBackend.activeTracers)
tracer.logDidHandleResponse(messageObject,{rtt:roundTripTime,dispatch:processingTime});if(this._deferredScripts.length&&!this._pendingResponses.size)
this._flushPendingScripts();}
_dispatchResponseToCallback(command,requestObject,responseObject,callback)
{let callbackArguments=[];callbackArguments.push(responseObject["error"]?responseObject["error"].message:null);if(responseObject["result"]){for(let parameterName of command.replySignature)
callbackArguments.push(responseObject["result"][parameterName]);}
try{callback.apply(null,callbackArguments);}catch(e){WebInspector.reportInternalError(e,{"cause":`An uncaught exception was thrown while dispatching response callback for command ${command.qualifiedName}.`});}}
_dispatchResponseToPromise(command,messageObject,promise)
{let{resolve,reject}=promise;if(messageObject["error"])
reject(new Error(messageObject["error"].message));else
resolve(messageObject["result"]);}
_dispatchEvent(messageObject)
{let qualifiedName=messageObject["method"];let[domainName,eventName]=qualifiedName.split(".");if(!(domainName in this._agents)){console.error("Protocol Error: Attempted to dispatch method '"+eventName+"' for non-existing domain '"+domainName+"'");return;}
let agent=this._agents[domainName];if(!agent.active){console.error("Protocol Error: Attempted to dispatch method for domain '"+domainName+"' which exists but is not active.");return;}
let event=agent.getEvent(eventName);if(!event){console.error("Protocol Error: Attempted to dispatch an unspecified method '"+qualifiedName+"'");return;}
let eventArguments=[];if(messageObject["params"])
eventArguments=event.parameterNames.map((name)=>messageObject["params"][name]);let processingStartTimestamp=timestamp();for(let tracer of InspectorBackend.activeTracers)
tracer.logWillHandleEvent(messageObject);InspectorBackend.currentDispatchState.event=messageObject;try{agent.dispatchEvent(eventName,eventArguments);}catch(e){for(let tracer of InspectorBackend.activeTracers)
tracer.logFrontendException(messageObject,e);WebInspector.reportInternalError(e,{"cause":`An uncaught exception was thrown while handling event: ${qualifiedName}`});}
InspectorBackend.currentDispatchState.event=null;let processingDuration=(timestamp()-processingStartTimestamp).toFixed(3);for(let tracer of InspectorBackend.activeTracers)
tracer.logDidHandleEvent(messageObject,{dispatch:processingDuration});}
_sendCommandToBackendWithCallback(command,parameters,callback)
{let sequenceId=this._lastSequenceId++;let messageObject={"id":sequenceId,"method":command.qualifiedName,};if(!isEmptyObject(parameters))
messageObject["params"]=parameters;let responseData={command,request:messageObject,callback};if(InspectorBackend.activeTracer)
responseData.sendRequestTimestamp=timestamp();this._pendingResponses.set(sequenceId,responseData);this._sendMessageToBackend(messageObject);}
_sendCommandToBackendExpectingPromise(command,parameters)
{let sequenceId=this._lastSequenceId++;let messageObject={"id":sequenceId,"method":command.qualifiedName,};if(!isEmptyObject(parameters))
messageObject["params"]=parameters;let responseData={command,request:messageObject};if(InspectorBackend.activeTracer)
responseData.sendRequestTimestamp=timestamp();let responsePromise=new Promise(function(resolve,reject){responseData.promise={resolve,reject};});this._pendingResponses.set(sequenceId,responseData);this._sendMessageToBackend(messageObject);return responsePromise;}
_sendMessageToBackend(messageObject)
{for(let tracer of InspectorBackend.activeTracers)
tracer.logFrontendRequest(messageObject);this.sendMessageToBackend(JSON.stringify(messageObject));}
_flushPendingScripts()
{let scriptsToRun=this._deferredScripts;this._deferredScripts=[];for(let script of scriptsToRun)
script.call(this);}};InspectorBackend.MainConnection=class InspectorBackendPageConnection extends InspectorBackend.Connection
{constructor()
{super();this._agents=InspectorBackend._agents;}
sendMessageToBackend(message)
{InspectorFrontendHost.sendMessageToBackend(message);}};InspectorBackend.WorkerConnection=class InspectorBackendWorkerConnection extends InspectorBackend.Connection
{constructor(workerId)
{super();this._workerId=workerId;const workerDomains=InspectorBackend.workerSupportedDomains;for(let domain of workerDomains){let agent=InspectorBackend._agents[domain];let clone=Object.create(InspectorBackend._agents[domain]);clone.connection=this;clone.dispatcher=new agent.dispatcher.constructor;this._agents[domain]=clone;}}
sendMessageToBackend(message)
{WorkerAgent.sendMessageToWorker(this._workerId,message);}};InspectorBackend.mainConnection=new InspectorBackend.MainConnection;InspectorFrontendAPI={_loaded:false,_pendingCommands:[],savedURL:function(url)
{},appendedToURL:function(url)
{},isTimelineProfilingEnabled:function()
{return WebInspector.timelineManager.isCapturing();},setTimelineProfilingEnabled:function(enabled)
{if(WebInspector.timelineManager.isCapturing()===enabled)
return;if(enabled)
WebInspector.timelineManager.startCapturing();else
WebInspector.timelineManager.stopCapturing();},setElementSelectionEnabled:function(enabled)
{WebInspector.domTreeManager.inspectModeEnabled=enabled;},setDockingUnavailable:function(unavailable)
{WebInspector.updateDockingAvailability(!unavailable);},setDockSide:function(side)
{WebInspector.updateDockedState(side);},setIsVisible:function(visible)
{WebInspector.updateVisibilityState(visible);},showConsole:function()
{WebInspector.showConsoleTab();WebInspector.quickConsole.prompt.focus();if(document.readyState!=="complete")
document.addEventListener("readystatechange",this);if(document.visibilityState!=="visible")
document.addEventListener("visibilitychange",this);},handleEvent:function(event)
{if(document.readyState==="complete"&&document.visibilityState==="visible"){WebInspector.quickConsole.prompt.focus();document.removeEventListener("readystatechange",this);document.removeEventListener("visibilitychange",this);}},showResources:function()
{WebInspector.showResourcesTab();},showTimelines:function()
{WebInspector.showTimelineTab();},showMainResourceForFrame:function(frameIdentifier)
{const options={ignoreNetworkTab:true,ignoreSearchTab:true,};WebInspector.showSourceCodeForFrame(frameIdentifier,options);},contextMenuItemSelected:function(id)
{try{WebInspector.ContextMenu.contextMenuItemSelected(id);}catch(e){console.error("Uncaught exception in inspector page under contextMenuItemSelected",e);}},contextMenuCleared:function()
{WebInspector.ContextMenu.contextMenuCleared();},dispatchMessageAsync:function(messageObject)
{WebInspector.dispatchMessageFromBackend(messageObject);},dispatchMessage:function(messageObject)
{InspectorBackend.dispatch(messageObject);},dispatch:function(signature)
{if(!InspectorFrontendAPI._loaded){InspectorFrontendAPI._pendingCommands.push(signature);return null;}
var methodName=signature.shift();if(!InspectorFrontendAPI[methodName])
return null;return InspectorFrontendAPI[methodName].apply(InspectorFrontendAPI,signature);},loadCompleted:function()
{InspectorFrontendAPI._loaded=true;for(var i=0;i<InspectorFrontendAPI._pendingCommands.length;++i)
InspectorFrontendAPI.dispatch(InspectorFrontendAPI._pendingCommands[i]);delete InspectorFrontendAPI._pendingCommands;}};(function(){let backendCommandsURL=InspectorFrontendHost.backendCommandsURL()||"Protocol/InspectorBackendCommands.js";document.write("<script src=\""+backendCommandsURL+"\"></script>");})();WebInspector._messagesToDispatch=[];WebInspector.dispatchNextQueuedMessageFromBackend=function()
{const startCount=WebInspector._messagesToDispatch.length;const startTimestamp=timestamp();const timeLimitPerRunLoop=10; let i=0;for(;i<WebInspector._messagesToDispatch.length;++i){
if(timestamp()-startTimestamp>timeLimitPerRunLoop)
break;InspectorBackend.dispatch(WebInspector._messagesToDispatch[i]);}
if(i===WebInspector._messagesToDispatch.length){WebInspector._messagesToDispatch=[];WebInspector._dispatchTimeout=null;}else{WebInspector._messagesToDispatch=WebInspector._messagesToDispatch.slice(i);WebInspector._dispatchTimeout=setTimeout(WebInspector.dispatchNextQueuedMessageFromBackend,0);}
if(InspectorBackend.dumpInspectorTimeStats){let messageDuration=(timestamp()-startTimestamp).toFixed(3);let dispatchedCount=startCount-WebInspector._messagesToDispatch.length;let remainingCount=WebInspector._messagesToDispatch.length;console.log(`time-stats: --- RunLoop duration: ${messageDuration}ms; dispatched: ${dispatchedCount}; remaining: ${remainingCount}`);}};WebInspector.dispatchMessageFromBackend=function(message)
{this._messagesToDispatch.push(message);
if(window.__uncaughtExceptions&&window.__uncaughtExceptions.length)
return;if(this._dispatchTimeout)
return;this._dispatchTimeout=setTimeout(this.dispatchNextQueuedMessageFromBackend,0);};WebInspector.RemoteObject=class RemoteObject
{constructor(target,objectId,type,subtype,value,description,size,classPrototype,className,preview)
{this._target=target||WebInspector.mainTarget;this._type=type;this._subtype=subtype;if(objectId){this._objectId=objectId;this._description=description||"";this._hasChildren=type!=="symbol";this._size=size;this._classPrototype=classPrototype;this._preview=preview;if(subtype==="class"){this._functionDescription=this._description;this._description="class "+className;}}else{this._description=description||(value+"");this._hasChildren=false;this._value=value;}}
static createFakeRemoteObject()
{return new WebInspector.RemoteObject(undefined,WebInspector.RemoteObject.FakeRemoteObjectId,"object");}
static fromPrimitiveValue(value)
{return new WebInspector.RemoteObject(undefined,undefined,typeof value,undefined,value,undefined,undefined,undefined,undefined);}
static fromPayload(payload,target)
{if(payload.subtype==="array"){var match=payload.description.match(/\[(\d+)\]$/);if(match){payload.size=parseInt(match[1]);payload.description=payload.description.replace(/\[\d+\]$/,"");}}
if(payload.classPrototype)
payload.classPrototype=WebInspector.RemoteObject.fromPayload(payload.classPrototype,target);if(payload.preview){
if(!payload.preview.type){payload.preview.type=payload.type;payload.preview.subtype=payload.subtype;payload.preview.description=payload.description;payload.preview.size=payload.size;}
payload.preview=WebInspector.ObjectPreview.fromPayload(payload.preview);}
return new WebInspector.RemoteObject(target,payload.objectId,payload.type,payload.subtype,payload.value,payload.description,payload.size,payload.classPrototype,payload.className,payload.preview);}
static createCallArgument(valueOrObject)
{if(valueOrObject instanceof WebInspector.RemoteObject){if(valueOrObject.objectId)
return{objectId:valueOrObject.objectId};return{value:valueOrObject.value};}
return{value:valueOrObject};}
static resolveNode(node,objectGroup,callback)
{DOMAgent.resolveNode(node.id,objectGroup,function(error,object){if(!callback)
return;if(error||!object)
callback(null);else
callback(WebInspector.RemoteObject.fromPayload(object,WebInspector.mainTarget));});}
static resolveWebSocket(webSocketResource,objectGroup,callback)
{NetworkAgent.resolveWebSocket(webSocketResource.requestIdentifier,objectGroup,(error,object)=>{if(error||!object)
callback(null);else
callback(WebInspector.RemoteObject.fromPayload(object,webSocketResource.target));});}
static resolveCanvasContext(canvas,objectGroup,callback)
{CanvasAgent.resolveCanvasContext(canvas.identifier,objectGroup,(error,object)=>{if(error||!object)
callback(null);else
callback(WebInspector.RemoteObject.fromPayload(object,WebInspector.mainTarget));});}
static type(remoteObject)
{if(remoteObject===null)
return"null";var type=typeof remoteObject;if(type!=="object"&&type!=="function")
return type;return remoteObject.type;}
get target()
{return this._target;}
get objectId()
{return this._objectId;}
get type()
{return this._type;}
get subtype()
{return this._subtype;}
get description()
{return this._description;}
get functionDescription()
{return this._functionDescription||this._description;}
get hasChildren()
{return this._hasChildren;}
get value()
{return this._value;}
get size()
{return this._size||0;}
get classPrototype()
{return this._classPrototype;}
get preview()
{return this._preview;}
hasSize()
{return this.isArray()||this.isCollectionType();}
hasValue()
{return"_value"in this;}
canLoadPreview()
{if(this._failedToLoadPreview)
return false;if(this._type!=="object")
return false;if(!this._objectId||this._isSymbol()||this._isFakeObject())
return false;return true;}
updatePreview(callback)
{if(!this.canLoadPreview()){callback(null);return;}
if(!RuntimeAgent.getPreview){this._failedToLoadPreview=true;callback(null);return;}
this._target.RuntimeAgent.getPreview(this._objectId,(error,payload)=>{if(error){this._failedToLoadPreview=true;callback(null);return;}
this._preview=WebInspector.ObjectPreview.fromPayload(payload);callback(this._preview);});}
getOwnPropertyDescriptors(callback)
{this._getPropertyDescriptors(true,callback);}
getAllPropertyDescriptors(callback)
{this._getPropertyDescriptors(false,callback);}
getDisplayablePropertyDescriptors(callback)
{if(!this._objectId||this._isSymbol()||this._isFakeObject()){callback([]);return;}
if(!RuntimeAgent.getDisplayableProperties){this._target.RuntimeAgent.getProperties(this._objectId,function(error,allProperties){var ownOrGetterPropertiesList=[];if(allProperties){for(var property of allProperties){if(property.isOwn||property.name==="__proto__"){ownOrGetterPropertiesList.push(property);}else if(property.value&&property.name!==property.name.toUpperCase()){var type=property.value.type;if(type&&type!=="function"&&property.name!=="constructor"){ownOrGetterPropertiesList.push(property);}}}}
this._getPropertyDescriptorsResolver(callback,error,ownOrGetterPropertiesList);}.bind(this));return;}
this._target.RuntimeAgent.getDisplayableProperties(this._objectId,true,this._getPropertyDescriptorsResolver.bind(this,callback));}
deprecatedGetOwnProperties(callback)
{this._deprecatedGetProperties(true,callback);}
deprecatedGetAllProperties(callback)
{this._deprecatedGetProperties(false,callback);}
deprecatedGetDisplayableProperties(callback)
{if(!this._objectId||this._isSymbol()||this._isFakeObject()){callback([]);return;}
if(!RuntimeAgent.getDisplayableProperties){this._target.RuntimeAgent.getProperties(this._objectId,function(error,allProperties){var ownOrGetterPropertiesList=[];if(allProperties){for(var property of allProperties){if(property.isOwn||property.get||property.name==="__proto__"){ownOrGetterPropertiesList.push(property);}else if(property.value&&property.name!==property.name.toUpperCase()){var type=property.value.type;if(type&&type!=="function"&&property.name!=="constructor"){ownOrGetterPropertiesList.push(property);}}}}
this._deprecatedGetPropertiesResolver(callback,error,ownOrGetterPropertiesList);}.bind(this));return;}
this._target.RuntimeAgent.getDisplayableProperties(this._objectId,this._deprecatedGetPropertiesResolver.bind(this,callback));}
setPropertyValue(name,value,callback)
{if(!this._objectId||this._isSymbol()||this._isFakeObject()){callback("Can't set a property of non-object.");return;}
this._target.RuntimeAgent.evaluate.invoke({expression:appendWebInspectorSourceURL(value),doNotPauseOnExceptionsAndMuteConsole:true},evaluatedCallback.bind(this),this._target.RuntimeAgent);function evaluatedCallback(error,result,wasThrown)
{if(error||wasThrown){callback(error||result.description);return;}
function setPropertyValue(propertyName,propertyValue)
{this[propertyName]=propertyValue;}
delete result.description;this._target.RuntimeAgent.callFunctionOn(this._objectId,appendWebInspectorSourceURL(setPropertyValue.toString()),[{value:name},result],true,undefined,propertySetCallback.bind(this));if(result._objectId)
this._target.RuntimeAgent.releaseObject(result._objectId);}
function propertySetCallback(error,result,wasThrown)
{if(error||wasThrown){callback(error||result.description);return;}
callback();}}
isUndefined()
{return this._type==="undefined";}
isNode()
{return this._subtype==="node";}
isArray()
{return this._subtype==="array";}
isClass()
{return this._subtype==="class";}
isCollectionType()
{return this._subtype==="map"||this._subtype==="set"||this._subtype==="weakmap"||this._subtype==="weakset";}
isWeakCollection()
{return this._subtype==="weakmap"||this._subtype==="weakset";}
getCollectionEntries(start,numberToFetch,callback)
{start=typeof start==="number"?start:0;numberToFetch=typeof numberToFetch==="number"?numberToFetch:100;let objectGroup=this.isWeakCollection()?this._weakCollectionObjectGroup():"";this._target.RuntimeAgent.getCollectionEntries(this._objectId,objectGroup,start,numberToFetch,(error,entries)=>{entries=entries.map((x)=>WebInspector.CollectionEntry.fromPayload(x,this._target));callback(entries);});}
releaseWeakCollectionEntries()
{this._target.RuntimeAgent.releaseObjectGroup(this._weakCollectionObjectGroup());}
pushNodeToFrontend(callback)
{if(this._objectId)
WebInspector.domTreeManager.pushNodeToFrontend(this._objectId,callback);else
callback(0);}
getProperty(propertyName,callback)
{function inspectedPage_object_getProperty(property){return this[property];}
this.callFunction(inspectedPage_object_getProperty,[propertyName],true,callback);}
callFunction(functionDeclaration,args,generatePreview,callback)
{function mycallback(error,result,wasThrown)
{result=result?WebInspector.RemoteObject.fromPayload(result,this._target):null;if(callback&&typeof callback==="function")
callback(error,result,wasThrown);}
if(args)
args=args.map(WebInspector.RemoteObject.createCallArgument);this._target.RuntimeAgent.callFunctionOn(this._objectId,appendWebInspectorSourceURL(functionDeclaration.toString()),args,true,undefined,!!generatePreview,mycallback.bind(this));}
callFunctionJSON(functionDeclaration,args,callback)
{function mycallback(error,result,wasThrown)
{callback((error||wasThrown)?null:result.value);}
this._target.RuntimeAgent.callFunctionOn(this._objectId,appendWebInspectorSourceURL(functionDeclaration.toString()),args,true,true,mycallback);}
invokeGetter(getterRemoteObject,callback)
{function backendInvokeGetter(getter)
{return getter?getter.call(this):undefined;}
this.callFunction(backendInvokeGetter,[getterRemoteObject],true,callback);}
getOwnPropertyDescriptor(propertyName,callback)
{function backendGetOwnPropertyDescriptor(propertyName)
{return this[propertyName];}
function wrappedCallback(error,result,wasThrown)
{if(error||wasThrown||!(result instanceof WebInspector.RemoteObject)){callback(null);return;}
var fakeDescriptor={name:propertyName,value:result,writable:true,configurable:true,enumerable:false};var fakePropertyDescriptor=new WebInspector.PropertyDescriptor(fakeDescriptor,null,true,false,false,false);callback(fakePropertyDescriptor);}
this.callFunction(backendGetOwnPropertyDescriptor,[propertyName],false,wrappedCallback.bind(this));}
release()
{if(this._objectId&&!this._isFakeObject())
this._target.RuntimeAgent.releaseObject(this._objectId);}
arrayLength()
{if(this._subtype!=="array")
return 0;var matches=this._description.match(/\[([0-9]+)\]/);if(!matches)
return 0;return parseInt(matches[1],10);}
asCallArgument()
{return WebInspector.RemoteObject.createCallArgument(this);}
findFunctionSourceCodeLocation()
{var result=new WebInspector.WrappedPromise;if(!this._isFunction()||!this._objectId){result.resolve(WebInspector.RemoteObject.SourceCodeLocationPromise.MissingObjectId);return result.promise;}
this._target.DebuggerAgent.getFunctionDetails(this._objectId,(error,response)=>{if(error){result.reject(error);return;}
var location=response.location;var sourceCode=WebInspector.debuggerManager.scriptForIdentifier(location.scriptId,this._target);if(!sourceCode||(!WebInspector.isDebugUIEnabled()&&isWebKitInternalScript(sourceCode.sourceURL))){result.resolve(WebInspector.RemoteObject.SourceCodeLocationPromise.NoSourceFound);return;}
var sourceCodeLocation=sourceCode.createSourceCodeLocation(location.lineNumber,location.columnNumber||0);result.resolve(sourceCodeLocation);});return result.promise;}
_isFakeObject()
{return this._objectId===WebInspector.RemoteObject.FakeRemoteObjectId;}
_isSymbol()
{return this._type==="symbol";}
_isFunction()
{return this._type==="function";}
_weakCollectionObjectGroup()
{return JSON.stringify(this._objectId)+"-"+this._subtype;}
_getPropertyDescriptors(ownProperties,callback)
{if(!this._objectId||this._isSymbol()||this._isFakeObject()){callback([]);return;}
this._target.RuntimeAgent.getProperties(this._objectId,ownProperties,true,this._getPropertyDescriptorsResolver.bind(this,callback));}
getOwnPropertyDescriptorsAsObject(callback)
{this.getOwnPropertyDescriptors(function(properties){var propertiesResult={};var internalPropertiesResult={};for(var propertyDescriptor of properties){var object=propertyDescriptor.isInternalProperty?internalPropertiesResult:propertiesResult;object[propertyDescriptor.name]=propertyDescriptor;}
callback(propertiesResult,internalPropertiesResult);});}
_getPropertyDescriptorsResolver(callback,error,properties,internalProperties)
{if(error){callback(null);return;}
let descriptors=properties.map((payload)=>{return WebInspector.PropertyDescriptor.fromPayload(payload,false,this._target);});if(internalProperties){descriptors=descriptors.concat(internalProperties.map((payload)=>{return WebInspector.PropertyDescriptor.fromPayload(payload,true,this._target);}));}
callback(descriptors);}
_deprecatedGetProperties(ownProperties,callback)
{if(!this._objectId||this._isSymbol()||this._isFakeObject()){callback([]);return;}
this._target.RuntimeAgent.getProperties(this._objectId,ownProperties,this._deprecatedGetPropertiesResolver.bind(this,callback));}
_deprecatedGetPropertiesResolver(callback,error,properties,internalProperties)
{if(error){callback(null);return;}
if(internalProperties){properties=properties.concat(internalProperties.map(function(descriptor){descriptor.writable=false;descriptor.configurable=false;descriptor.enumerable=false;descriptor.isOwn=true;return descriptor;}));}
var result=[];for(var i=0;properties&&i<properties.length;++i){var property=properties[i];if(property.get||property.set){if(property.get)
result.push(new WebInspector.DeprecatedRemoteObjectProperty("get "+property.name,WebInspector.RemoteObject.fromPayload(property.get,this._target),property));if(property.set)
result.push(new WebInspector.DeprecatedRemoteObjectProperty("set "+property.name,WebInspector.RemoteObject.fromPayload(property.set,this._target),property));}else
result.push(new WebInspector.DeprecatedRemoteObjectProperty(property.name,WebInspector.RemoteObject.fromPayload(property.value,this._target),property));}
callback(result);}};WebInspector.RemoteObject.FakeRemoteObjectId="fake-remote-object";WebInspector.RemoteObject.SourceCodeLocationPromise={NoSourceFound:"remote-object-source-code-location-promise-no-source-found",MissingObjectId:"remote-object-source-code-location-promise-missing-object-id"};WebInspector.DeprecatedRemoteObjectProperty=class DeprecatedRemoteObjectProperty
{constructor(name,value,descriptor)
{this.name=name;this.value=value;this.enumerable=descriptor?!!descriptor.enumerable:true;this.writable=descriptor?!!descriptor.writable:true;if(descriptor&&descriptor.wasThrown)
this.wasThrown=true;}
fromPrimitiveValue(name,value)
{return new WebInspector.DeprecatedRemoteObjectProperty(name,WebInspector.RemoteObject.fromPrimitiveValue(value));}};WebInspector.Target=class Target extends WebInspector.Object
{constructor(identifier,name,type,connection)
{super();this._identifier=identifier;this._name=name;this._type=type;this._connection=connection;this._executionContext=null;this._mainResource=null;this._resourceCollection=new WebInspector.ResourceCollection;this._extraScriptCollection=new WebInspector.Collection(WebInspector.Collection.TypeVerifier.Script);this._connection.target=this;}
get RuntimeAgent(){return this._connection._agents.Runtime;}
get ConsoleAgent(){return this._connection._agents.Console;}
get DebuggerAgent(){return this._connection._agents.Debugger;}
get HeapAgent(){return this._connection._agents.Heap;}
get identifier(){return this._identifier;}
get name(){return this._name;}
get type(){return this._type;}
get connection(){return this._connection;}
get executionContext(){return this._executionContext;}
get resourceCollection(){return this._resourceCollection;}
get extraScriptCollection(){return this._extraScriptCollection;}
get mainResource(){return this._mainResource;}
set mainResource(resource){this._mainResource=resource;}
addResource(resource)
{this._resourceCollection.add(resource);this.dispatchEventToListeners(WebInspector.Target.Event.ResourceAdded,{resource});}
adoptResource(resource)
{resource._target=this;this.addResource(resource);}
addScript(script)
{this._extraScriptCollection.add(script);this.dispatchEventToListeners(WebInspector.Target.Event.ScriptAdded,{script});}};WebInspector.Target.Type={Main:Symbol("main"),Worker:Symbol("worker"),};WebInspector.Target.Event={ResourceAdded:"target-resource-added",ScriptAdded:"target-script-added",};WebInspector.MainTarget=class MainTarget extends WebInspector.Target
{constructor(connection)
{super("main","",WebInspector.Target.Type.Main,InspectorBackend.mainConnection);let displayName=WebInspector.debuggableType===WebInspector.DebuggableType.Web?WebInspector.UIString("Main Frame"):this.displayName;this._executionContext=new WebInspector.ExecutionContext(this,WebInspector.RuntimeManager.TopLevelContextExecutionIdentifier,displayName,true,null);}
get displayName()
{switch(WebInspector.debuggableType){case WebInspector.DebuggableType.Web:return WebInspector.UIString("Page");case WebInspector.DebuggableType.JavaScript:return WebInspector.UIString("JavaScript Context");default:console.error("Unexpected debuggable type: ",WebInspector.debuggableType);return WebInspector.UIString("Main");}}
get mainResource()
{let mainFrame=WebInspector.frameResourceManager.mainFrame;return mainFrame?mainFrame.mainResource:null;}};WebInspector.WorkerTarget=class WorkerTarget extends WebInspector.Target
{constructor(workerId,name,connection)
{super(workerId,name,WebInspector.Target.Type.Worker,connection);WebInspector.frameResourceManager.adoptOrphanedResourcesForTarget(this);if(this.RuntimeAgent){this._executionContext=new WebInspector.ExecutionContext(this,WebInspector.RuntimeManager.TopLevelContextExecutionIdentifier,this.displayName,false,null);this.RuntimeAgent.enable();if(WebInspector.showJavaScriptTypeInformationSetting&&WebInspector.showJavaScriptTypeInformationSetting.value)
this.RuntimeAgent.enableTypeProfiler();if(WebInspector.enableControlFlowProfilerSetting&&WebInspector.enableControlFlowProfilerSetting.value)
this.RuntimeAgent.enableControlFlowProfiler();}
if(this.DebuggerAgent)
WebInspector.debuggerManager.initializeTarget(this);if(this.ConsoleAgent)
this.ConsoleAgent.enable();if(this.HeapAgent)
this.HeapAgent.enable();}
get displayName()
{return WebInspector.displayNameForURL(this._name);}};WebInspector.ApplicationCacheObserver=class ApplicationCacheObserver
{applicationCacheStatusUpdated(frameId,manifestURL,status)
{WebInspector.applicationCacheManager.applicationCacheStatusUpdated(frameId,manifestURL,status);}
networkStateUpdated(isNowOnline)
{WebInspector.applicationCacheManager.networkStateUpdated(isNowOnline);}};WebInspector.CSSObserver=class CSSObserver
{mediaQueryResultChanged()
{WebInspector.cssStyleManager.mediaQueryResultChanged();}
styleSheetChanged(styleSheetId)
{WebInspector.cssStyleManager.styleSheetChanged(styleSheetId);}
styleSheetAdded(styleSheetInfo)
{WebInspector.cssStyleManager.styleSheetAdded(styleSheetInfo);}
styleSheetRemoved(id)
{WebInspector.cssStyleManager.styleSheetRemoved(id);}
namedFlowCreated(namedFlow)
{WebInspector.domTreeManager.namedFlowCreated(namedFlow);}
namedFlowRemoved(documentNodeId,flowName)
{WebInspector.domTreeManager.namedFlowRemoved(documentNodeId,flowName);}
regionLayoutUpdated(namedFlow)
{this.regionOversetChanged(namedFlow);}
regionOversetChanged(namedFlow)
{WebInspector.domTreeManager.regionOversetChanged(namedFlow);}
registeredNamedFlowContentElement(documentNodeId,flowName,contentNodeId,nextContentElementNodeId)
{WebInspector.domTreeManager.registeredNamedFlowContentElement(documentNodeId,flowName,contentNodeId,nextContentElementNodeId);}
unregisteredNamedFlowContentElement(documentNodeId,flowName,contentNodeId)
{WebInspector.domTreeManager.unregisteredNamedFlowContentElement(documentNodeId,flowName,contentNodeId);}};WebInspector.CanvasObserver=class CanvasObserver
{canvasAdded(canvas)
{WebInspector.canvasManager.canvasAdded(canvas);}
canvasRemoved(canvasId)
{WebInspector.canvasManager.canvasRemoved(canvasId);}
canvasMemoryChanged(canvasId,memoryCost)
{WebInspector.canvasManager.canvasMemoryChanged(canvasId,memoryCost);}
cssCanvasClientNodesChanged(canvasId)
{WebInspector.canvasManager.cssCanvasClientNodesChanged(canvasId);}};WebInspector.ConsoleObserver=class ConsoleObserver
{messageAdded(message)
{if(message.source==="console-api"&&message.type==="clear")
return;if(message.type==="assert"&&!message.text)
message.text=WebInspector.UIString("Assertion");WebInspector.logManager.messageWasAdded(this.target,message.source,message.level,message.text,message.type,message.url,message.line,message.column||0,message.repeatCount,message.parameters,message.stackTrace,message.networkRequestId);}
messageRepeatCountUpdated(count)
{WebInspector.logManager.messageRepeatCountUpdated(count);}
messagesCleared()
{WebInspector.logManager.messagesCleared();}
heapSnapshot(timestamp,snapshotStringData,title)
{let workerProxy=WebInspector.HeapSnapshotWorkerProxy.singleton();workerProxy.createSnapshot(snapshotStringData,title||null,({objectId,snapshot:serializedSnapshot})=>{let snapshot=WebInspector.HeapSnapshotProxy.deserialize(objectId,serializedSnapshot);WebInspector.timelineManager.heapSnapshotAdded(timestamp,snapshot);});}};WebInspector.DOMObserver=class DOMObserver
{documentUpdated()
{WebInspector.domTreeManager._documentUpdated();}
setChildNodes(parentId,payloads)
{WebInspector.domTreeManager._setChildNodes(parentId,payloads);}
attributeModified(nodeId,name,value)
{WebInspector.domTreeManager._attributeModified(nodeId,name,value);}
attributeRemoved(nodeId,name)
{WebInspector.domTreeManager._attributeRemoved(nodeId,name);}
inlineStyleInvalidated(nodeIds)
{WebInspector.domTreeManager._inlineStyleInvalidated(nodeIds);}
characterDataModified(nodeId,characterData)
{WebInspector.domTreeManager._characterDataModified(nodeId,characterData);}
childNodeCountUpdated(nodeId,childNodeCount)
{WebInspector.domTreeManager._childNodeCountUpdated(nodeId,childNodeCount);}
childNodeInserted(parentNodeId,previousNodeId,payload)
{WebInspector.domTreeManager._childNodeInserted(parentNodeId,previousNodeId,payload);}
childNodeRemoved(parentNodeId,nodeId)
{WebInspector.domTreeManager._childNodeRemoved(parentNodeId,nodeId);}
shadowRootPushed(parentNodeId,nodeId)
{WebInspector.domTreeManager._childNodeInserted(parentNodeId,0,nodeId);}
shadowRootPopped(parentNodeId,nodeId)
{WebInspector.domTreeManager._childNodeRemoved(parentNodeId,nodeId);}
customElementStateChanged(nodeId,customElementState)
{WebInspector.domTreeManager._customElementStateChanged(nodeId,customElementState);}
pseudoElementAdded(parentNodeId,pseudoElement)
{WebInspector.domTreeManager._pseudoElementAdded(parentNodeId,pseudoElement);}
pseudoElementRemoved(parentNodeId,pseudoElementId)
{WebInspector.domTreeManager._pseudoElementRemoved(parentNodeId,pseudoElementId);}};WebInspector.DOMStorageObserver=class DOMStorageObserver
{domStorageItemsCleared(storageId)
{WebInspector.storageManager.itemsCleared(storageId);}
domStorageItemRemoved(storageId,key)
{WebInspector.storageManager.itemRemoved(storageId,key);}
domStorageItemAdded(storageId,key,value)
{WebInspector.storageManager.itemAdded(storageId,key,value);}
domStorageItemUpdated(storageId,key,oldValue,value)
{WebInspector.storageManager.itemUpdated(storageId,key,oldValue,value);}};WebInspector.DatabaseObserver=class DatabaseObserver
{addDatabase(database)
{WebInspector.storageManager.databaseWasAdded(database.id,database.domain,database.name,database.version);}};WebInspector.DebuggerObserver=class DebuggerObserver
{constructor()
{this._legacyScriptParsed=DebuggerAgent.hasEventParameter("scriptParsed","hasSourceURL");}
globalObjectCleared()
{WebInspector.debuggerManager.reset();}
scriptParsed(scriptId,url,startLine,startColumn,endLine,endColumn,isContentScript,sourceURL,sourceMapURL,isModule)
{if(this._legacyScriptParsed){
let legacySourceMapURL=arguments[7];let hasSourceURL=arguments[8];let legacySourceURL=hasSourceURL?url:undefined;WebInspector.debuggerManager.scriptDidParse(this.target,scriptId,url,startLine,startColumn,endLine,endColumn,isModule,isContentScript,legacySourceURL,legacySourceMapURL);return;}
WebInspector.debuggerManager.scriptDidParse(this.target,scriptId,url,startLine,startColumn,endLine,endColumn,isModule,isContentScript,sourceURL,sourceMapURL);}
scriptFailedToParse(url,scriptSource,startLine,errorLine,errorMessage)
{}
breakpointResolved(breakpointId,location)
{WebInspector.debuggerManager.breakpointResolved(this.target,breakpointId,location);}
paused(callFrames,reason,data,asyncStackTrace)
{WebInspector.debuggerManager.debuggerDidPause(this.target,callFrames,reason,data,asyncStackTrace);}
resumed()
{WebInspector.debuggerManager.debuggerDidResume(this.target);}
playBreakpointActionSound(breakpointActionIdentifier)
{WebInspector.debuggerManager.playBreakpointActionSound(breakpointActionIdentifier);}
didSampleProbe(sample)
{WebInspector.probeManager.didSampleProbe(this.target,sample);}};WebInspector.HeapObserver=class HeapObserver
{garbageCollected(collection)
{WebInspector.heapManager.garbageCollected(this.target,collection);}
trackingStart(timestamp,snapshotStringData)
{let workerProxy=WebInspector.HeapSnapshotWorkerProxy.singleton();workerProxy.createSnapshot(snapshotStringData,({objectId,snapshot:serializedSnapshot})=>{let snapshot=WebInspector.HeapSnapshotProxy.deserialize(objectId,serializedSnapshot);WebInspector.timelineManager.heapTrackingStarted(timestamp,snapshot);});}
trackingComplete(timestamp,snapshotStringData)
{let workerProxy=WebInspector.HeapSnapshotWorkerProxy.singleton();workerProxy.createSnapshot(snapshotStringData,({objectId,snapshot:serializedSnapshot})=>{let snapshot=WebInspector.HeapSnapshotProxy.deserialize(objectId,serializedSnapshot);WebInspector.timelineManager.heapTrackingCompleted(timestamp,snapshot);});}};WebInspector.InspectorObserver=class InspectorObserver
{evaluateForTestInFrontend(script)
{if(!InspectorFrontendHost.isUnderTest())
return;InspectorBackend.runAfterPendingDispatches(function(){window.eval(script);});}
inspect(payload,hints)
{var remoteObject=WebInspector.RemoteObject.fromPayload(payload,WebInspector.mainTarget);if(remoteObject.subtype==="node"){WebInspector.domTreeManager.inspectNodeObject(remoteObject);return;}
if(hints.databaseId)
WebInspector.storageManager.inspectDatabase(hints.databaseId);else if(hints.domStorageId)
WebInspector.storageManager.inspectDOMStorage(hints.domStorageId);remoteObject.release();}
activateExtraDomains(domains)
{WebInspector.activateExtraDomains(domains);}};WebInspector.LayerTreeObserver=class LayerTreeObserver
{layerTreeDidChange()
{if(WebInspector.layerTreeManager.supported)
WebInspector.layerTreeManager.layerTreeDidChange();}};WebInspector.MemoryObserver=class MemoryObserver
{memoryPressure(timestamp,severity)
{WebInspector.memoryManager.memoryPressure(timestamp,severity);}
trackingStart(timestamp)
{WebInspector.timelineManager.memoryTrackingStart(timestamp);}
trackingUpdate(event)
{WebInspector.timelineManager.memoryTrackingUpdate(event);}
trackingComplete()
{WebInspector.timelineManager.memoryTrackingComplete();}};WebInspector.NetworkObserver=class NetworkObserver
{requestWillBeSent(requestId,frameId,loaderId,documentURL,request,timestamp,initiator,redirectResponse,type,targetId)
{WebInspector.frameResourceManager.resourceRequestWillBeSent(requestId,frameId,loaderId,request,type,redirectResponse,timestamp,initiator,targetId);}
requestServedFromCache(requestId)
{WebInspector.frameResourceManager.markResourceRequestAsServedFromMemoryCache(requestId);}
responseReceived(requestId,frameId,loaderId,timestamp,type,response)
{WebInspector.frameResourceManager.resourceRequestDidReceiveResponse(requestId,frameId,loaderId,type,response,timestamp);}
dataReceived(requestId,timestamp,dataLength,encodedDataLength)
{WebInspector.frameResourceManager.resourceRequestDidReceiveData(requestId,dataLength,encodedDataLength,timestamp);}
loadingFinished(requestId,timestamp,sourceMapURL,metrics)
{WebInspector.frameResourceManager.resourceRequestDidFinishLoading(requestId,timestamp,sourceMapURL,metrics);}
loadingFailed(requestId,timestamp,errorText,canceled)
{WebInspector.frameResourceManager.resourceRequestDidFailLoading(requestId,canceled,timestamp,errorText);}
requestServedFromMemoryCache(requestId,frameId,loaderId,documentURL,timestamp,initiator,resource)
{WebInspector.frameResourceManager.resourceRequestWasServedFromMemoryCache(requestId,frameId,loaderId,resource,timestamp,initiator);}
webSocketCreated(requestId,url)
{WebInspector.frameResourceManager.webSocketCreated(requestId,url);}
webSocketWillSendHandshakeRequest(requestId,timestamp,walltime,request)
{WebInspector.frameResourceManager.webSocketWillSendHandshakeRequest(requestId,timestamp,walltime,request);}
webSocketHandshakeResponseReceived(requestId,timestamp,response)
{WebInspector.frameResourceManager.webSocketHandshakeResponseReceived(requestId,timestamp,response);}
webSocketClosed(requestId,timestamp)
{WebInspector.frameResourceManager.webSocketClosed(requestId,timestamp);}
webSocketFrameReceived(requestId,timestamp,response)
{WebInspector.frameResourceManager.webSocketFrameReceived(requestId,timestamp,response);}
webSocketFrameSent(requestId,timestamp,response)
{WebInspector.frameResourceManager.webSocketFrameSent(requestId,timestamp,response);}
webSocketFrameError(requestId,timestamp,errorMessage)
{}};WebInspector.PageObserver=class PageObserver
{domContentEventFired(timestamp)
{WebInspector.timelineManager.pageDOMContentLoadedEventFired(timestamp);}
loadEventFired(timestamp)
{WebInspector.timelineManager.pageLoadEventFired(timestamp);}
frameNavigated(frame,loaderId)
{WebInspector.frameResourceManager.frameDidNavigate(frame,loaderId);}
frameDetached(frameId)
{WebInspector.frameResourceManager.frameDidDetach(frameId);}
frameStartedLoading(frameId)
{}
frameStoppedLoading(frameId)
{}
frameScheduledNavigation(frameId,delay)
{}
frameClearedScheduledNavigation(frameId)
{}
javascriptDialogOpening(message)
{}
javascriptDialogClosed()
{}
scriptsEnabled(enabled)
{}};WebInspector.RuntimeObserver=class RuntimeObserver
{executionContextCreated(contextPayload)
{WebInspector.frameResourceManager.executionContextCreated(contextPayload);}};WebInspector.ScriptProfilerObserver=class ScriptProfilerObserver
{trackingStart(timestamp)
{WebInspector.timelineManager.scriptProfilerTrackingStarted(timestamp);}
trackingUpdate(event)
{WebInspector.timelineManager.scriptProfilerTrackingUpdated(event);}
trackingComplete(samples)
{WebInspector.timelineManager.scriptProfilerTrackingCompleted(samples);}
programmaticCaptureStarted()
{WebInspector.timelineManager.scriptProfilerProgrammaticCaptureStarted();}
programmaticCaptureStopped()
{WebInspector.timelineManager.scriptProfilerProgrammaticCaptureStopped();}};WebInspector.TimelineObserver=class TimelineObserver
{eventRecorded(record)
{WebInspector.timelineManager.eventRecorded(record);}
recordingStarted(startTime)
{WebInspector.timelineManager.capturingStarted(startTime);}
recordingStopped(endTime)
{WebInspector.timelineManager.capturingStopped(endTime);}
autoCaptureStarted()
{WebInspector.timelineManager.autoCaptureStarted();}
programmaticCaptureStarted()
{WebInspector.timelineManager.programmaticCaptureStarted();}
programmaticCaptureStopped()
{WebInspector.timelineManager.programmaticCaptureStopped();}};WebInspector.WorkerObserver=class WorkerObserver
{workerCreated(workerId,url)
{WebInspector.workerManager.workerCreated(workerId,url);}
workerTerminated(workerId)
{WebInspector.workerManager.workerTerminated(workerId);}
dispatchMessageFromWorker(workerId,message)
{WebInspector.workerManager.dispatchMessageFromWorker(workerId,message);}};WebInspector.BreakpointAction=class BreakpointAction extends WebInspector.Object
{constructor(breakpoint,typeOrInfo,data)
{super();this._breakpoint=breakpoint;if(typeof typeOrInfo==="string"){this._type=typeOrInfo;this._data=data||null;}else if(typeof typeOrInfo==="object"){this._type=typeOrInfo.type;this._data=typeOrInfo.data||null;}else
console.error("Unexpected type passed to WebInspector.BreakpointAction");this._id=WebInspector.debuggerManager.nextBreakpointActionIdentifier();}
get breakpoint(){return this._breakpoint;}
get id(){return this._id;}
get type(){return this._type;}
get data()
{return this._data;}
set data(data)
{if(this._data===data)
return;this._data=data;this._breakpoint.breakpointActionDidChange(this);}
get info()
{var obj={type:this._type,id:this._id};if(this._data)
obj.data=this._data;return obj;}};WebInspector.BreakpointAction.Type={Log:"log",Evaluate:"evaluate",Sound:"sound",Probe:"probe"};WebInspector.ConsoleMessage=class ConsoleMessage extends WebInspector.Object
{constructor(target,source,level,message,type,url,line,column,repeatCount,parameters,callFrames,request)
{super();this._target=target;this._source=source;this._level=level;this._messageText=message;this._type=type||WebInspector.ConsoleMessage.MessageType.Log;this._url=url||null;this._line=line||0;this._column=column||0;this._sourceCodeLocation=undefined;this._repeatCount=repeatCount||0;this._parameters=parameters;callFrames=callFrames||[];this._stackTrace=WebInspector.StackTrace.fromPayload(this._target,{callFrames});this._request=request;}
get target(){return this._target;}
get source(){return this._source;}
get level(){return this._level;}
get messageText(){return this._messageText;}
get type(){return this._type;}
get url(){return this._url;}
get line(){return this._line;}
get column(){return this._column;}
get repeatCount(){return this._repeatCount;}
get parameters(){return this._parameters;}
get stackTrace(){return this._stackTrace;}
get request(){return this._request;}
get sourceCodeLocation()
{if(this._sourceCodeLocation!==undefined)
return this._sourceCodeLocation;let topCallFrame=this._stackTrace.callFrames[0];if(topCallFrame&&topCallFrame.sourceCodeLocation){this._sourceCodeLocation=topCallFrame.sourceCodeLocation;return this._sourceCodeLocation;}
if(this._url&&this._url!=="undefined"){let sourceCode=WebInspector.frameResourceManager.resourceForURL(this._url);if(sourceCode){let lineNumber=this._line>0?this._line-1:0;let columnNumber=this._column>0?this._column-1:0;this._sourceCodeLocation=new WebInspector.SourceCodeLocation(sourceCode,lineNumber,columnNumber);return this._sourceCodeLocation;}}
this._sourceCodeLocation=null;return this._sourceCodeLocation;}};WebInspector.ConsoleMessage.MessageSource={HTML:"html",XML:"xml",JS:"javascript",Network:"network",ConsoleAPI:"console-api",Storage:"storage",Appcache:"appcache",Rendering:"rendering",CSS:"css",Security:"security",Other:"other",};WebInspector.ConsoleMessage.MessageType={Log:"log",Dir:"dir",DirXML:"dirxml",Table:"table",Trace:"trace",StartGroup:"startGroup",StartGroupCollapsed:"startGroupCollapsed",EndGroup:"endGroup",Assert:"assert",Timing:"timing",Profile:"profile",ProfileEnd:"profileEnd",Result:"result",};WebInspector.ConsoleMessage.MessageLevel={Log:"log",Info:"info",Warning:"warning",Error:"error",Debug:"debug",};WebInspector.Instrument=class Instrument extends WebInspector.Object
{ static createForTimelineType(type)
{switch(type){case WebInspector.TimelineRecord.Type.Network:return new WebInspector.NetworkInstrument;case WebInspector.TimelineRecord.Type.Layout:return new WebInspector.LayoutInstrument;case WebInspector.TimelineRecord.Type.Script:return new WebInspector.ScriptInstrument;case WebInspector.TimelineRecord.Type.RenderingFrame:return new WebInspector.FPSInstrument;case WebInspector.TimelineRecord.Type.Memory:return new WebInspector.MemoryInstrument;case WebInspector.TimelineRecord.Type.HeapAllocations:return new WebInspector.HeapAllocationsInstrument;default:console.error("Unknown TimelineRecord.Type: "+type);return null;}}
static startLegacyTimelineAgent(initiatedByBackend)
{if(WebInspector.Instrument._legacyTimelineAgentStarted)
return;WebInspector.Instrument._legacyTimelineAgentStarted=true;if(initiatedByBackend)
return;let result=TimelineAgent.start();if(!TimelineAgent.hasEvent("recordingStarted")){result.then(function(){WebInspector.timelineManager.capturingStarted();});}}
static stopLegacyTimelineAgent(initiatedByBackend)
{if(!WebInspector.Instrument._legacyTimelineAgentStarted)
return;WebInspector.Instrument._legacyTimelineAgentStarted=false;if(initiatedByBackend)
return;TimelineAgent.stop();}
get timelineRecordType()
{return null;}
startInstrumentation(initiatedByBackend)
{WebInspector.Instrument.startLegacyTimelineAgent(initiatedByBackend);}
stopInstrumentation(initiatedByBackend)
{WebInspector.Instrument.stopLegacyTimelineAgent(initiatedByBackend);}};WebInspector.Instrument._legacyTimelineAgentStarted=false;WebInspector.SourceCode=class SourceCode extends WebInspector.Object
{constructor()
{super();this._originalRevision=new WebInspector.SourceCodeRevision(this,null,false);this._currentRevision=this._originalRevision;this._sourceMaps=null;this._formatterSourceMap=null;this._requestContentPromise=null;}
get displayName()
{console.error("Needs to be implemented by a subclass.");return"";}
get originalRevision()
{return this._originalRevision;}
get currentRevision()
{return this._currentRevision;}
set currentRevision(revision)
{if(!(revision instanceof WebInspector.SourceCodeRevision))
return;if(revision.sourceCode!==this)
return;this._currentRevision=revision;this.dispatchEventToListeners(WebInspector.SourceCode.Event.ContentDidChange);}
get content()
{return this._currentRevision.content;}
get url()
{}
get contentIdentifier()
{
return this.url;}
get sourceMaps()
{return this._sourceMaps||[];}
addSourceMap(sourceMap)
{if(!this._sourceMaps)
this._sourceMaps=[];this._sourceMaps.push(sourceMap);this.dispatchEventToListeners(WebInspector.SourceCode.Event.SourceMapAdded);}
get formatterSourceMap()
{return this._formatterSourceMap;}
set formatterSourceMap(formatterSourceMap)
{this._formatterSourceMap=formatterSourceMap;this.dispatchEventToListeners(WebInspector.SourceCode.Event.FormatterDidChange);}
requestContent()
{this._requestContentPromise=this._requestContentPromise||this.requestContentFromBackend().then(this._processContent.bind(this));return this._requestContentPromise;}
createSourceCodeLocation(lineNumber,columnNumber)
{return new WebInspector.SourceCodeLocation(this,lineNumber,columnNumber);}
createLazySourceCodeLocation(lineNumber,columnNumber)
{return new WebInspector.LazySourceCodeLocation(this,lineNumber,columnNumber);}
createSourceCodeTextRange(textRange)
{return new WebInspector.SourceCodeTextRange(this,textRange);}
revisionContentDidChange(revision)
{if(this._ignoreRevisionContentDidChangeEvent)
return;if(revision!==this._currentRevision)
return;this.handleCurrentRevisionContentChange();this.dispatchEventToListeners(WebInspector.SourceCode.Event.ContentDidChange);}
handleCurrentRevisionContentChange()
{}
get revisionForRequestedContent()
{return this._originalRevision;}
markContentAsStale()
{this._requestContentPromise=null;this._contentReceived=false;}
requestContentFromBackend()
{console.error("Needs to be implemented by a subclass.");return Promise.reject(new Error("Needs to be implemented by a subclass."));}
get mimeType()
{console.error("Needs to be implemented by a subclass.");}
_processContent(parameters)
{var content=parameters.content||parameters.body||parameters.text||parameters.scriptSource;var error=parameters.error;if(parameters.base64Encoded)
content=decodeBase64ToBlob(content,this.mimeType);var revision=this.revisionForRequestedContent;this._ignoreRevisionContentDidChangeEvent=true;revision.content=content||null;this._ignoreRevisionContentDidChangeEvent=false;
return Promise.resolve({error,sourceCode:this,content,});}};WebInspector.SourceCode.Event={ContentDidChange:"source-code-content-did-change",SourceMapAdded:"source-code-source-map-added",FormatterDidChange:"source-code-formatter-did-change",LoadingDidFinish:"source-code-loading-did-finish",LoadingDidFail:"source-code-loading-did-fail"};WebInspector.SourceCodeLocation=class SourceCodeLocation extends WebInspector.Object
{constructor(sourceCode,lineNumber,columnNumber)
{super();this._sourceCode=sourceCode||null;this._lineNumber=lineNumber;this._columnNumber=columnNumber;this._resolveFormattedLocation();if(this._sourceCode){this._sourceCode.addEventListener(WebInspector.SourceCode.Event.SourceMapAdded,this._sourceCodeSourceMapAdded,this);this._sourceCode.addEventListener(WebInspector.SourceCode.Event.FormatterDidChange,this._sourceCodeFormatterDidChange,this);}
this._resetMappedLocation();}
isEqual(other)
{if(!other)
return false;return this._sourceCode===other._sourceCode&&this._lineNumber===other._lineNumber&&this._columnNumber===other._columnNumber;}
get sourceCode()
{return this._sourceCode;}
set sourceCode(sourceCode)
{this.setSourceCode(sourceCode);}
get lineNumber()
{return this._lineNumber;}
get columnNumber()
{return this._columnNumber;}
position()
{return new WebInspector.SourceCodePosition(this.lineNumber,this.columnNumber);}
get formattedLineNumber()
{return this._formattedLineNumber;}
get formattedColumnNumber()
{return this._formattedColumnNumber;}
formattedPosition()
{return new WebInspector.SourceCodePosition(this.formattedLineNumber,this.formattedColumnNumber);}
get displaySourceCode()
{this.resolveMappedLocation();return this._mappedResource||this._sourceCode;}
get displayLineNumber()
{this.resolveMappedLocation();return isNaN(this._mappedLineNumber)?this._formattedLineNumber:this._mappedLineNumber;}
get displayColumnNumber()
{this.resolveMappedLocation();return isNaN(this._mappedColumnNumber)?this._formattedColumnNumber:this._mappedColumnNumber;}
displayPosition()
{return new WebInspector.SourceCodePosition(this.displayLineNumber,this.displayColumnNumber);}
originalLocationString(columnStyle,nameStyle,prefix)
{return this._locationString(this.sourceCode,this.lineNumber,this.columnNumber,columnStyle,nameStyle,prefix);}
formattedLocationString(columnStyle,nameStyle,prefix)
{return this._locationString(this.sourceCode,this.formattedLineNumber,this.formattedColumn,columnStyle,nameStyle,prefix);}
displayLocationString(columnStyle,nameStyle,prefix)
{return this._locationString(this.displaySourceCode,this.displayLineNumber,this.displayColumnNumber,columnStyle,nameStyle,prefix);}
tooltipString()
{if(!this.hasDifferentDisplayLocation())
return this.originalLocationString(WebInspector.SourceCodeLocation.ColumnStyle.Shown,WebInspector.SourceCodeLocation.NameStyle.Full);var tooltip=WebInspector.UIString("Located at %s").format(this.displayLocationString(WebInspector.SourceCodeLocation.ColumnStyle.Shown,WebInspector.SourceCodeLocation.NameStyle.Full));tooltip+="\n"+WebInspector.UIString("Originally %s").format(this.originalLocationString(WebInspector.SourceCodeLocation.ColumnStyle.Shown,WebInspector.SourceCodeLocation.NameStyle.Full));return tooltip;}
hasMappedLocation()
{this.resolveMappedLocation();return this._mappedResource!==null;}
hasFormattedLocation()
{return this._formattedLineNumber!==this._lineNumber||this._formattedColumnNumber!==this._columnNumber;}
hasDifferentDisplayLocation()
{return this.hasMappedLocation()||this.hasFormattedLocation();}
update(sourceCode,lineNumber,columnNumber)
{if(sourceCode===this._sourceCode&&lineNumber===this._lineNumber&&columnNumber===this._columnNumber)
return;if(this._mappedResource&&sourceCode===this._mappedResource&&lineNumber===this._mappedLineNumber&&columnNumber===this._mappedColumnNumber)
return;var newSourceCodeLocation=sourceCode.createSourceCodeLocation(lineNumber,columnNumber);this._makeChangeAndDispatchChangeEventIfNeeded(function(){this._lineNumber=newSourceCodeLocation._lineNumber;this._columnNumber=newSourceCodeLocation._columnNumber;if(newSourceCodeLocation._mappedLocationIsResolved){this._mappedLocationIsResolved=true;this._mappedResource=newSourceCodeLocation._mappedResource;this._mappedLineNumber=newSourceCodeLocation._mappedLineNumber;this._mappedColumnNumber=newSourceCodeLocation._mappedColumnNumber;}});}
populateLiveDisplayLocationTooltip(element,prefix)
{prefix=prefix||"";element.title=prefix+this.tooltipString();this.addEventListener(WebInspector.SourceCodeLocation.Event.DisplayLocationChanged,function(event){if(this.sourceCode)
element.title=prefix+this.tooltipString();},this);}
populateLiveDisplayLocationString(element,propertyName,columnStyle,nameStyle,prefix)
{var currentDisplay;function updateDisplayString(showAlternativeLocation,forceUpdate)
{if(!forceUpdate&&currentDisplay===showAlternativeLocation)
return;currentDisplay=showAlternativeLocation;if(!showAlternativeLocation){element[propertyName]=this.displayLocationString(columnStyle,nameStyle,prefix);element.classList.toggle(WebInspector.SourceCodeLocation.DisplayLocationClassName,this.hasDifferentDisplayLocation());}else if(this.hasDifferentDisplayLocation()){element[propertyName]=this.originalLocationString(columnStyle,nameStyle,prefix);element.classList.remove(WebInspector.SourceCodeLocation.DisplayLocationClassName);}}
function mouseOverOrMove(event)
{updateDisplayString.call(this,event.metaKey&&!event.altKey&&!event.shiftKey);}
updateDisplayString.call(this,false);this.addEventListener(WebInspector.SourceCodeLocation.Event.DisplayLocationChanged,function(event){if(this.sourceCode)
updateDisplayString.call(this,currentDisplay,true);},this);var boundMouseOverOrMove=mouseOverOrMove.bind(this);element.addEventListener("mouseover",boundMouseOverOrMove);element.addEventListener("mousemove",boundMouseOverOrMove);element.addEventListener("mouseout",(event)=>{updateDisplayString.call(this,false);});}
setSourceCode(sourceCode)
{if(sourceCode===this._sourceCode)
return;this._makeChangeAndDispatchChangeEventIfNeeded(function(){if(this._sourceCode){this._sourceCode.removeEventListener(WebInspector.SourceCode.Event.SourceMapAdded,this._sourceCodeSourceMapAdded,this);this._sourceCode.removeEventListener(WebInspector.SourceCode.Event.FormatterDidChange,this._sourceCodeFormatterDidChange,this);}
this._sourceCode=sourceCode;if(this._sourceCode){this._sourceCode.addEventListener(WebInspector.SourceCode.Event.SourceMapAdded,this._sourceCodeSourceMapAdded,this);this._sourceCode.addEventListener(WebInspector.SourceCode.Event.FormatterDidChange,this._sourceCodeFormatterDidChange,this);}});}
resolveMappedLocation()
{if(this._mappedLocationIsResolved)
return;this._mappedLocationIsResolved=true;if(!this._sourceCode)
return;var sourceMaps=this._sourceCode.sourceMaps;if(!sourceMaps.length)
return;for(var i=0;i<sourceMaps.length;++i){var sourceMap=sourceMaps[i];var entry=sourceMap.findEntry(this._lineNumber,this._columnNumber);if(!entry||entry.length===2)
continue;var url=entry[2];var sourceMapResource=sourceMap.resourceForURL(url);if(!sourceMapResource)
return;this._mappedResource=sourceMapResource;this._mappedLineNumber=entry[3];this._mappedColumnNumber=entry[4];return;}}
_locationString(sourceCode,lineNumber,columnNumber,columnStyle,nameStyle,prefix)
{if(!sourceCode)
return"";columnStyle=columnStyle||WebInspector.SourceCodeLocation.ColumnStyle.OnlyIfLarge;nameStyle=nameStyle||WebInspector.SourceCodeLocation.NameStyle.Short;prefix=prefix||"";let lineString=lineNumber+1;if(columnStyle===WebInspector.SourceCodeLocation.ColumnStyle.Shown&&columnNumber>0)
lineString+=":"+(columnNumber+1);else if(columnStyle===WebInspector.SourceCodeLocation.ColumnStyle.OnlyIfLarge&&columnNumber>WebInspector.SourceCodeLocation.LargeColumnNumber)
lineString+=":"+(columnNumber+1);else if(columnStyle===WebInspector.SourceCodeLocation.ColumnStyle.Hidden)
lineString="";switch(nameStyle){case WebInspector.SourceCodeLocation.NameStyle.None:return prefix+lineString;case WebInspector.SourceCodeLocation.NameStyle.Short:case WebInspector.SourceCodeLocation.NameStyle.Full:var displayURL=sourceCode.displayURL;var name=nameStyle===WebInspector.SourceCodeLocation.NameStyle.Full&&displayURL?displayURL:sourceCode.displayName;if(columnStyle===WebInspector.SourceCodeLocation.ColumnStyle.Hidden)
return prefix+name;var lineSuffix=displayURL?":"+lineString:WebInspector.UIString(" (line %s)").format(lineString);return prefix+name+lineSuffix;default:console.error("Unknown nameStyle: "+nameStyle);return prefix+lineString;}}
_resetMappedLocation()
{this._mappedLocationIsResolved=false;this._mappedResource=null;this._mappedLineNumber=NaN;this._mappedColumnNumber=NaN;}
_setMappedLocation(mappedResource,mappedLineNumber,mappedColumnNumber)
{this._mappedLocationIsResolved=true;this._mappedResource=mappedResource;this._mappedLineNumber=mappedLineNumber;this._mappedColumnNumber=mappedColumnNumber;}
_resolveFormattedLocation()
{if(this._sourceCode&&this._sourceCode.formatterSourceMap){var formattedLocation=this._sourceCode.formatterSourceMap.originalToFormatted(this._lineNumber,this._columnNumber);this._formattedLineNumber=formattedLocation.lineNumber;this._formattedColumnNumber=formattedLocation.columnNumber;}else{this._formattedLineNumber=this._lineNumber;this._formattedColumnNumber=this._columnNumber;}}
_makeChangeAndDispatchChangeEventIfNeeded(changeFunction)
{var oldSourceCode=this._sourceCode;var oldLineNumber=this._lineNumber;var oldColumnNumber=this._columnNumber;var oldFormattedLineNumber=this._formattedLineNumber;var oldFormattedColumnNumber=this._formattedColumnNumber;var oldDisplaySourceCode=this.displaySourceCode;var oldDisplayLineNumber=this.displayLineNumber;var oldDisplayColumnNumber=this.displayColumnNumber;this._resetMappedLocation();if(changeFunction)
changeFunction.call(this);this.resolveMappedLocation();this._resolveFormattedLocation();var displayLocationChanged=false;var newDisplaySourceCode=this.displaySourceCode;if(oldDisplaySourceCode!==newDisplaySourceCode)
displayLocationChanged=true;else if(newDisplaySourceCode&&(oldDisplayLineNumber!==this.displayLineNumber||oldDisplayColumnNumber!==this.displayColumnNumber))
displayLocationChanged=true;var anyLocationChanged=false;if(displayLocationChanged)
anyLocationChanged=true;else if(oldSourceCode!==this._sourceCode)
anyLocationChanged=true;else if(this._sourceCode&&(oldLineNumber!==this._lineNumber||oldColumnNumber!==this._columnNumber))
anyLocationChanged=true;else if(this._sourceCode&&(oldFormattedLineNumber!==this._formattedLineNumber||oldFormattedColumnNumber!==this._formattedColumnNumber))
anyLocationChanged=true;if(displayLocationChanged||anyLocationChanged){var oldData={oldSourceCode,oldLineNumber,oldColumnNumber,oldFormattedLineNumber,oldFormattedColumnNumber,oldDisplaySourceCode,oldDisplayLineNumber,oldDisplayColumnNumber};if(displayLocationChanged)
this.dispatchEventToListeners(WebInspector.SourceCodeLocation.Event.DisplayLocationChanged,oldData);if(anyLocationChanged)
this.dispatchEventToListeners(WebInspector.SourceCodeLocation.Event.LocationChanged,oldData);}}
_sourceCodeSourceMapAdded()
{this._makeChangeAndDispatchChangeEventIfNeeded(null);}
_sourceCodeFormatterDidChange()
{this._makeChangeAndDispatchChangeEventIfNeeded(null);}};WebInspector.SourceCodeLocation.DisplayLocationClassName="display-location";WebInspector.SourceCodeLocation.LargeColumnNumber=80;WebInspector.SourceCodeLocation.NameStyle={None:"none",Short:"short",Full:"full"};WebInspector.SourceCodeLocation.ColumnStyle={Hidden:"hidden",OnlyIfLarge:"only-if-large",Shown:"shown"};WebInspector.SourceCodeLocation.Event={LocationChanged:"source-code-location-location-changed",DisplayLocationChanged:"source-code-location-display-location-changed"};WebInspector.Timeline=class Timeline extends WebInspector.Object
{constructor(type)
{super();this._type=type;this.reset(true);}
static create(type)
{if(type===WebInspector.TimelineRecord.Type.Network)
return new WebInspector.NetworkTimeline(type);if(type===WebInspector.TimelineRecord.Type.Memory)
return new WebInspector.MemoryTimeline(type);return new WebInspector.Timeline(type);}
get type(){return this._type;}
get startTime(){return this._startTime;}
get endTime(){return this._endTime;}
get records(){return this._records;}
reset(suppressEvents)
{this._records=[];this._startTime=NaN;this._endTime=NaN;if(!suppressEvents){this.dispatchEventToListeners(WebInspector.Timeline.Event.TimesUpdated);this.dispatchEventToListeners(WebInspector.Timeline.Event.Reset);}}
addRecord(record)
{if(record.updatesDynamically)
record.addEventListener(WebInspector.TimelineRecord.Event.Updated,this._recordUpdated,this);
this._tryInsertingRecordInSortedOrder(record);this._updateTimesIfNeeded(record);this.dispatchEventToListeners(WebInspector.Timeline.Event.RecordAdded,{record});}
saveIdentityToCookie(cookie)
{cookie[WebInspector.Timeline.TimelineTypeCookieKey]=this._type;}
refresh()
{this.dispatchEventToListeners(WebInspector.Timeline.Event.Refreshed);}
recordsInTimeRange(startTime,endTime,includeRecordBeforeStart)
{let lowerIndex=this._records.lowerBound(startTime,(time,record)=>time-record.timestamp);let upperIndex=this._records.upperBound(endTime,(time,record)=>time-record.timestamp);if(includeRecordBeforeStart&&lowerIndex>0)
lowerIndex--;return this._records.slice(lowerIndex,upperIndex);}
_updateTimesIfNeeded(record)
{var changed=false;if(isNaN(this._startTime)||record.startTime<this._startTime){this._startTime=record.startTime;changed=true;}
if(isNaN(this._endTime)||this._endTime<record.endTime){this._endTime=record.endTime;changed=true;}
if(changed)
this.dispatchEventToListeners(WebInspector.Timeline.Event.TimesUpdated);}
_recordUpdated(event)
{this._updateTimesIfNeeded(event.target);}
_tryInsertingRecordInSortedOrder(record)
{let lastValue=this._records.lastValue;if(!lastValue||lastValue.startTime<record.startTime||record.updatesDynamically){this._records.push(record);return;}
let start=this._records.length-2;let end=Math.max(this._records.length-20,0);for(let i=start;i>=end;--i){if(this._records[i].startTime<record.startTime){this._records.insertAtIndex(record,i+1);return;}}
this._records.push(record);}};WebInspector.Timeline.Event={Reset:"timeline-reset",RecordAdded:"timeline-record-added",TimesUpdated:"timeline-times-updated",Refreshed:"timeline-refreshed",};WebInspector.Timeline.TimelineTypeCookieKey="timeline-type";WebInspector.TimelineRange=class TimelineRange extends WebInspector.Object
{constructor(startValue,endValue)
{super();this._startValue=startValue;this._endValue=endValue;}
get startValue(){return this._startValue;}
set startValue(x){this._startValue=x;}
get endValue(){return this._endValue;}
set endValue(x){this._endValue=x;}};WebInspector.TimelineRecord=class TimelineRecord extends WebInspector.Object
{constructor(type,startTime,endTime,callFrames,sourceCodeLocation)
{super();if(type in WebInspector.TimelineRecord.Type)
type=WebInspector.TimelineRecord.Type[type];this._type=type;this._startTime=startTime||NaN;this._endTime=endTime||NaN;this._callFrames=callFrames||null;this._sourceCodeLocation=sourceCodeLocation||null;this._children=[];}
get type()
{return this._type;}
get startTime()
{return this._startTime;}
get activeStartTime()
{return this._startTime;}
get endTime()
{return this._endTime;}
get duration()
{return this.endTime-this.startTime;}
get inactiveDuration()
{return this.activeStartTime-this.startTime;}
get activeDuration()
{return this.endTime-this.activeStartTime;}
get updatesDynamically()
{return false;}
get usesActiveStartTime()
{return false;}
get callFrames()
{return this._callFrames;}
get initiatorCallFrame()
{if(!this._callFrames||!this._callFrames.length)
return null;for(var i=0;i<this._callFrames.length;++i){if(this._callFrames[i].nativeCode)
continue;return this._callFrames[i];}
return null;}
get sourceCodeLocation()
{return this._sourceCodeLocation;}
get parent()
{return this._parent;}
set parent(x)
{if(this._parent===x)
return;this._parent=x;}
get children()
{return this._children;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.TimelineRecord.SourceCodeURLCookieKey]=this._sourceCodeLocation?this._sourceCodeLocation.sourceCode.url?this._sourceCodeLocation.sourceCode.url.hash:null:null;cookie[WebInspector.TimelineRecord.SourceCodeLocationLineCookieKey]=this._sourceCodeLocation?this._sourceCodeLocation.lineNumber:null;cookie[WebInspector.TimelineRecord.SourceCodeLocationColumnCookieKey]=this._sourceCodeLocation?this._sourceCodeLocation.columnNumber:null;cookie[WebInspector.TimelineRecord.TypeCookieKey]=this._type||null;}};WebInspector.TimelineRecord.Event={Updated:"timeline-record-updated"};WebInspector.TimelineRecord.Type={Network:"timeline-record-type-network",Layout:"timeline-record-type-layout",Script:"timeline-record-type-script",RenderingFrame:"timeline-record-type-rendering-frame",Memory:"timeline-record-type-memory",HeapAllocations:"timeline-record-type-heap-allocations",};WebInspector.TimelineRecord.TypeIdentifier="timeline-record";WebInspector.TimelineRecord.SourceCodeURLCookieKey="timeline-record-source-code-url";WebInspector.TimelineRecord.SourceCodeLocationLineCookieKey="timeline-record-source-code-location-line";WebInspector.TimelineRecord.SourceCodeLocationColumnCookieKey="timeline-record-source-code-location-column";WebInspector.TimelineRecord.TypeCookieKey="timeline-record-type";WebInspector.AnalyzerMessage=class AnalyzerMessage extends WebInspector.Object
{constructor(sourceCodeLocation,text,ruleIdentifier)
{super();this._sourceCodeLocation=sourceCodeLocation;this._text=text;this._ruleIdentifier=ruleIdentifier;}
get sourceCodeLocation(){return this._sourceCodeLocation;}
get sourceCode(){return this._sourceCodeLocation.sourceCode;}
get text(){return this._text;}
get ruleIdentifier(){return this._ruleIdentifier;}};WebInspector.ApplicationCacheFrame=class ApplicationCacheFrame extends WebInspector.Object
{constructor(frame,manifest,status)
{super();this._frame=frame;this._manifest=manifest;this._status=status;}
get frame(){return this._frame;}
get manifest(){return this._manifest;}
get status(){return this._status;}
set status(status){this._status=status;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.ApplicationCacheFrame.FrameURLCookieKey]=this.frame.url;cookie[WebInspector.ApplicationCacheFrame.ManifestURLCookieKey]=this.manifest.manifestURL;}};WebInspector.ApplicationCacheFrame.TypeIdentifier="application-cache-frame";WebInspector.ApplicationCacheFrame.FrameURLCookieKey="application-cache-frame-url";WebInspector.ApplicationCacheFrame.ManifestURLCookieKey="application-cache-frame-manifest-url";WebInspector.ApplicationCacheManifest=class ApplicationCacheManifest extends WebInspector.Object
{constructor(manifestURL)
{super();this._manifestURL=manifestURL;}
get manifestURL(){return this._manifestURL;}};WebInspector.BackForwardEntry=class BackForwardEntry extends WebInspector.Object
{constructor(contentView,cookie)
{super();this._contentView=contentView;
this._tombstone=false;this._cookie=cookie||{};this._scrollPositions=[];contentView.saveToCookie(this._cookie);}
makeCopy(newCookie)
{let copy=new WebInspector.BackForwardEntry(this._contentView,newCookie||this.cookie);copy._tombstone=this._tombstone;copy._scrollPositions=this._scrollPositions.slice();return copy;}
get contentView()
{return this._contentView;}
get cookie()
{return Object.shallowCopy(this._cookie);}
get tombstone()
{return this._tombstone;}
set tombstone(tombstone)
{this._tombstone=tombstone;}
prepareToShow(shouldCallShown)
{this._restoreFromCookie();this.contentView.visible=true;if(shouldCallShown)
this.contentView.shown();this.contentView.needsLayout();}
prepareToHide()
{this.contentView.visible=false;this.contentView.hidden();this._saveScrollPositions();}
isEqual(other)
{if(!other)
return false;return this._contentView===other._contentView&&Object.shallowEqual(this._cookie,other._cookie);}
_restoreFromCookie()
{this._restoreScrollPositions();this.contentView.restoreFromCookie(this.cookie);}
_restoreScrollPositions()
{if(!this._scrollPositions.length)
return;var scrollableElements=this.contentView.scrollableElements||[];for(var i=0;i<scrollableElements.length;++i){var position=this._scrollPositions[i];var element=scrollableElements[i];if(!element)
continue;element.scrollTop=position.isScrolledToBottom?element.scrollHeight:position.scrollTop;
element.scrollLeft=position.isScrolledToBottom?0:position.scrollLeft;}}
_saveScrollPositions()
{var scrollableElements=this.contentView.scrollableElements||[];var scrollPositions=[];for(var i=0;i<scrollableElements.length;++i){var element=scrollableElements[i];if(!element)
continue;let position={scrollTop:element.scrollTop,scrollLeft:element.scrollLeft};if(this.contentView.shouldKeepElementsScrolledToBottom)
position.isScrolledToBottom=element.isScrolledToBottom();scrollPositions.push(position);}
this._scrollPositions=scrollPositions;}};WebInspector.Branch=class Branch extends WebInspector.Object
{constructor(displayName,revisions,locked)
{super();this._displayName=displayName;this._revisions=revisions instanceof Array?revisions.slice():[];this._locked=locked||false;}
get displayName()
{return this._displayName;}
set displayName(displayName)
{if(!displayName)
return;this._displayName=displayName;}
get revisions()
{return this._revisions;}
get locked()
{return this._locked;}
revisionForRepresentedObject(representedObject,doNotCreateIfNeeded)
{for(var i=0;i<this._revisions.length;++i){var revision=this._revisions[i];if(revision instanceof WebInspector.SourceCodeRevision&&revision.sourceCode===representedObject)
return revision;}
if(doNotCreateIfNeeded)
return null;if(representedObject instanceof WebInspector.SourceCode){var revision=representedObject.originalRevision.copy();representedObject.currentRevision=revision;this.addRevision(revision);return revision;}
return null;}
addRevision(revision)
{if(this._locked)
return;if(this._revisions.includes(revision))
return;this._revisions.push(revision);}
removeRevision(revision)
{if(this._locked)
return;this._revisions.remove(revision);}
reset()
{if(this._locked)
return;this._revisions=[];}
fork(displayName)
{var copiedRevisions=this._revisions.map(function(revision){return revision.copy();});return new WebInspector.Branch(displayName,copiedRevisions);}
apply()
{for(var i=0;i<this._revisions.length;++i)
this._revisions[i].apply();}
revert()
{for(var i=this._revisions.length-1;i>=0;--i)
this._revisions[i].revert();}
lock()
{this._locked=true;}
unlock()
{this._locked=false;}};WebInspector.Breakpoint=class Breakpoint extends WebInspector.Object
{constructor(sourceCodeLocationOrInfo,disabled,condition)
{super();if(sourceCodeLocationOrInfo instanceof WebInspector.SourceCodeLocation){var sourceCode=sourceCodeLocationOrInfo.sourceCode;var contentIdentifier=sourceCode?sourceCode.contentIdentifier:null;var scriptIdentifier=sourceCode instanceof WebInspector.Script?sourceCode.id:null;var target=sourceCode instanceof WebInspector.Script?sourceCode.target:null;var location=sourceCodeLocationOrInfo;}else if(sourceCodeLocationOrInfo&&typeof sourceCodeLocationOrInfo==="object"){var contentIdentifier=sourceCodeLocationOrInfo.contentIdentifier||sourceCodeLocationOrInfo.url;var lineNumber=sourceCodeLocationOrInfo.lineNumber||0;var columnNumber=sourceCodeLocationOrInfo.columnNumber||0;var location=new WebInspector.SourceCodeLocation(null,lineNumber,columnNumber);var ignoreCount=sourceCodeLocationOrInfo.ignoreCount||0;var autoContinue=sourceCodeLocationOrInfo.autoContinue||false;var actions=sourceCodeLocationOrInfo.actions||[];for(var i=0;i<actions.length;++i)
actions[i]=new WebInspector.BreakpointAction(this,actions[i]);disabled=sourceCodeLocationOrInfo.disabled;condition=sourceCodeLocationOrInfo.condition;}else
console.error("Unexpected type passed to WebInspector.Breakpoint",sourceCodeLocationOrInfo);this._id=null;this._contentIdentifier=contentIdentifier||null;this._scriptIdentifier=scriptIdentifier||null;this._target=target||null;this._disabled=disabled||false;this._condition=condition||"";this._ignoreCount=ignoreCount||0;this._autoContinue=autoContinue||false;this._actions=actions||[];this._resolved=false;this._sourceCodeLocation=location;this._sourceCodeLocation.addEventListener(WebInspector.SourceCodeLocation.Event.LocationChanged,this._sourceCodeLocationLocationChanged,this);this._sourceCodeLocation.addEventListener(WebInspector.SourceCodeLocation.Event.DisplayLocationChanged,this._sourceCodeLocationDisplayLocationChanged,this);}
get identifier()
{return this._id;}
set identifier(id)
{this._id=id||null;}
get contentIdentifier()
{return this._contentIdentifier;}
get scriptIdentifier()
{return this._scriptIdentifier;}
get target()
{return this._target;}
get sourceCodeLocation()
{return this._sourceCodeLocation;}
get resolved()
{return this._resolved;}
set resolved(resolved)
{if(this._resolved===resolved)
return;function isSpecialBreakpoint()
{return this._sourceCodeLocation.isEqual(new WebInspector.SourceCodeLocation(null,Infinity,Infinity));}
this._resolved=resolved||false;this.dispatchEventToListeners(WebInspector.Breakpoint.Event.ResolvedStateDidChange);}
get disabled()
{return this._disabled;}
set disabled(disabled)
{if(this._disabled===disabled)
return;this._disabled=disabled||false;this.dispatchEventToListeners(WebInspector.Breakpoint.Event.DisabledStateDidChange);}
get condition()
{return this._condition;}
set condition(condition)
{if(this._condition===condition)
return;this._condition=condition;this.dispatchEventToListeners(WebInspector.Breakpoint.Event.ConditionDidChange);}
get ignoreCount()
{return this._ignoreCount;}
set ignoreCount(ignoreCount)
{if(ignoreCount<0)
return;if(this._ignoreCount===ignoreCount)
return;this._ignoreCount=ignoreCount;this.dispatchEventToListeners(WebInspector.Breakpoint.Event.IgnoreCountDidChange);}
get autoContinue()
{return this._autoContinue;}
set autoContinue(cont)
{if(this._autoContinue===cont)
return;this._autoContinue=cont;this.dispatchEventToListeners(WebInspector.Breakpoint.Event.AutoContinueDidChange);}
get actions()
{return this._actions;}
get options()
{return{condition:this._condition,ignoreCount:this._ignoreCount,actions:this._serializableActions(),autoContinue:this._autoContinue};}
get info()
{return{contentIdentifier:this._contentIdentifier,lineNumber:this._sourceCodeLocation.lineNumber,columnNumber:this._sourceCodeLocation.columnNumber,disabled:this._disabled,condition:this._condition,ignoreCount:this._ignoreCount,actions:this._serializableActions(),autoContinue:this._autoContinue};}
get probeActions()
{return this._actions.filter(function(action){return action.type===WebInspector.BreakpointAction.Type.Probe;});}
cycleToNextMode()
{if(this.disabled){this.autoContinue=false;this.disabled=false;return;}
if(this.autoContinue){this.disabled=true;return;}
if(this.actions.length){this.autoContinue=true;return;}
this.disabled=true;}
createAction(type,precedingAction,data)
{var newAction=new WebInspector.BreakpointAction(this,type,data||null);if(!precedingAction)
this._actions.push(newAction);else{var index=this._actions.indexOf(precedingAction);if(index===-1)
this._actions.push(newAction);else
this._actions.splice(index+1,0,newAction);}
this.dispatchEventToListeners(WebInspector.Breakpoint.Event.ActionsDidChange);return newAction;}
recreateAction(type,actionToReplace)
{var newAction=new WebInspector.BreakpointAction(this,type,null);var index=this._actions.indexOf(actionToReplace);if(index===-1)
return null;this._actions[index]=newAction;this.dispatchEventToListeners(WebInspector.Breakpoint.Event.ActionsDidChange);return newAction;}
removeAction(action)
{var index=this._actions.indexOf(action);if(index===-1)
return;this._actions.splice(index,1);if(!this._actions.length)
this.autoContinue=false;this.dispatchEventToListeners(WebInspector.Breakpoint.Event.ActionsDidChange);}
clearActions(type)
{if(!type)
this._actions=[];else
this._actions=this._actions.filter(function(action){return action.type!==type;});this.dispatchEventToListeners(WebInspector.Breakpoint.Event.ActionsDidChange);}
saveIdentityToCookie(cookie)
{cookie[WebInspector.Breakpoint.ContentIdentifierCookieKey]=this.contentIdentifier;cookie[WebInspector.Breakpoint.LineNumberCookieKey]=this.sourceCodeLocation.lineNumber;cookie[WebInspector.Breakpoint.ColumnNumberCookieKey]=this.sourceCodeLocation.columnNumber;}
breakpointActionDidChange(action)
{var index=this._actions.indexOf(action);if(index===-1)
return;this.dispatchEventToListeners(WebInspector.Breakpoint.Event.ActionsDidChange);}
_serializableActions()
{var actions=[];for(var i=0;i<this._actions.length;++i)
actions.push(this._actions[i].info);return actions;}
_sourceCodeLocationLocationChanged(event)
{this.dispatchEventToListeners(WebInspector.Breakpoint.Event.LocationDidChange,event.data);}
_sourceCodeLocationDisplayLocationChanged(event)
{this.dispatchEventToListeners(WebInspector.Breakpoint.Event.DisplayLocationDidChange,event.data);}};WebInspector.Breakpoint.DefaultBreakpointActionType=WebInspector.BreakpointAction.Type.Log;WebInspector.Breakpoint.TypeIdentifier="breakpoint";WebInspector.Breakpoint.ContentIdentifierCookieKey="breakpoint-content-identifier";WebInspector.Breakpoint.LineNumberCookieKey="breakpoint-line-number";WebInspector.Breakpoint.ColumnNumberCookieKey="breakpoint-column-number";WebInspector.Breakpoint.Event={DisabledStateDidChange:"breakpoint-disabled-state-did-change",ResolvedStateDidChange:"breakpoint-resolved-state-did-change",ConditionDidChange:"breakpoint-condition-did-change",IgnoreCountDidChange:"breakpoint-ignore-count-did-change",ActionsDidChange:"breakpoint-actions-did-change",AutoContinueDidChange:"breakpoint-auto-continue-did-change",LocationDidChange:"breakpoint-location-did-change",DisplayLocationDidChange:"breakpoint-display-location-did-change",};WebInspector.CallingContextTree=class CallingContextTree extends WebInspector.Object
{constructor(type)
{super();this._type=type||WebInspector.CallingContextTree.Type.TopDown;this.reset();}
get type(){return this._type;}
get totalNumberOfSamples(){return this._totalNumberOfSamples;}
reset()
{this._root=new WebInspector.CallingContextTreeNode(-1,-1,-1,"<root>",null);this._totalNumberOfSamples=0;}
totalDurationInTimeRange(startTime,endTime)
{return this._root.filteredTimestampsAndDuration(startTime,endTime).duration;}
updateTreeWithStackTrace({timestamp,stackFrames},duration)
{this._totalNumberOfSamples++;let node=this._root;node.addTimestampAndExpressionLocation(timestamp,duration,null);switch(this._type){case WebInspector.CallingContextTree.Type.TopDown:for(let i=stackFrames.length;i--;){let stackFrame=stackFrames[i];node=node.findOrMakeChild(stackFrame);node.addTimestampAndExpressionLocation(timestamp,duration,stackFrame.expressionLocation||null,i===0);}
break;case WebInspector.CallingContextTree.Type.BottomUp:for(let i=0;i<stackFrames.length;++i){let stackFrame=stackFrames[i];node=node.findOrMakeChild(stackFrame);node.addTimestampAndExpressionLocation(timestamp,duration,stackFrame.expressionLocation||null,i===0);}
break;case WebInspector.CallingContextTree.Type.TopFunctionsTopDown:for(let i=stackFrames.length;i--;){node=this._root;for(let j=i+1;j--;){let stackFrame=stackFrames[j];node=node.findOrMakeChild(stackFrame);node.addTimestampAndExpressionLocation(timestamp,duration,stackFrame.expressionLocation||null,j===0);}}
break;case WebInspector.CallingContextTree.Type.TopFunctionsBottomUp:for(let i=0;i<stackFrames.length;i++){node=this._root;for(let j=i;j<stackFrames.length;j++){let stackFrame=stackFrames[j];node=node.findOrMakeChild(stackFrame);node.addTimestampAndExpressionLocation(timestamp,duration,stackFrame.expressionLocation||null,j===0);}}
break;default:break;}}
toCPUProfilePayload(startTime,endTime)
{let cpuProfile={};let roots=[];let numSamplesInTimeRange=this._root.filteredTimestampsAndDuration(startTime,endTime).timestamps.length;this._root.forEachChild((child)=>{if(child.hasStackTraceInTimeRange(startTime,endTime))
roots.push(child.toCPUProfileNode(numSamplesInTimeRange,startTime,endTime));});cpuProfile.rootNodes=roots;return cpuProfile;}
forEachChild(callback)
{this._root.forEachChild(callback);}
forEachNode(callback)
{this._root.forEachNode(callback);}
static __test_makeTreeFromProtocolMessageObject(messageObject)
{let tree=new WebInspector.CallingContextTree;let stackTraces=messageObject.params.samples.stackTraces;for(let i=0;i<stackTraces.length;i++)
tree.updateTreeWithStackTrace(stackTraces[i]);return tree;}
__test_matchesStackTrace(stackTrace)
{
let leaves=this.__test_buildLeafLinkedLists();outer:for(let node of leaves){for(let stackNode of stackTrace){for(let propertyName of Object.getOwnPropertyNames(stackNode)){if(stackNode[propertyName]!==node[propertyName])
continue outer;}
node=node.parent;}
return true;}
return false;}
__test_buildLeafLinkedLists()
{let result=[];let parent=null;this._root.__test_buildLeafLinkedLists(parent,result);return result;}};WebInspector.CallingContextTree.Type={TopDown:Symbol("TopDown"),BottomUp:Symbol("BottomUp"),TopFunctionsTopDown:Symbol("TopFunctionsTopDown"),TopFunctionsBottomUp:Symbol("TopFunctionsBottomUp"),};WebInspector.CallingContextTreeNode=class CallingContextTreeNode extends WebInspector.Object
{constructor(sourceID,line,column,name,url,hash)
{super();this._children={};this._sourceID=sourceID;this._line=line;this._column=column;this._name=name;this._url=url;this._uid=WebInspector.CallingContextTreeNode.__uid++;this._timestamps=[];this._durations=[];this._leafTimestamps=[];this._leafDurations=[];this._expressionLocations={};this._hash=hash||WebInspector.CallingContextTreeNode._hash(this);}
static _hash(stackFrame)
{return stackFrame.name+":"+stackFrame.sourceID+":"+stackFrame.line+":"+stackFrame.column;}
get sourceID(){return this._sourceID;}
get line(){return this._line;}
get column(){return this._column;}
get name(){return this._name;}
get uid(){return this._uid;}
get url(){return this._url;}
get hash(){return this._hash;}
hasChildrenInTimeRange(startTime,endTime)
{for(let propertyName of Object.getOwnPropertyNames(this._children)){let child=this._children[propertyName];if(child.hasStackTraceInTimeRange(startTime,endTime))
return true;}
return false;}
hasStackTraceInTimeRange(startTime,endTime)
{if(startTime>endTime)
return false;let timestamps=this._timestamps;let length=timestamps.length;if(!length)
return false;let index=timestamps.lowerBound(startTime);if(index===length)
return false;let hasTimestampInRange=timestamps[index]<=endTime;return hasTimestampInRange;}
filteredTimestampsAndDuration(startTime,endTime)
{let lowerIndex=this._timestamps.lowerBound(startTime);let upperIndex=this._timestamps.upperBound(endTime);let totalDuration=0;for(let i=lowerIndex;i<upperIndex;++i)
totalDuration+=this._durations[i];return{timestamps:this._timestamps.slice(lowerIndex,upperIndex),duration:totalDuration,};}
filteredLeafTimestampsAndDuration(startTime,endTime)
{let lowerIndex=this._leafTimestamps.lowerBound(startTime);let upperIndex=this._leafTimestamps.upperBound(endTime);let totalDuration=0;for(let i=lowerIndex;i<upperIndex;++i)
totalDuration+=this._leafDurations[i];return{leafTimestamps:this._leafTimestamps.slice(lowerIndex,upperIndex),leafDuration:totalDuration,};}
hasChildren()
{return!isEmptyObject(this._children);}
findOrMakeChild(stackFrame)
{let hash=WebInspector.CallingContextTreeNode._hash(stackFrame);let node=this._children[hash];if(node)
return node;node=new WebInspector.CallingContextTreeNode(stackFrame.sourceID,stackFrame.line,stackFrame.column,stackFrame.name,stackFrame.url,hash);this._children[hash]=node;return node;}
addTimestampAndExpressionLocation(timestamp,duration,expressionLocation,leaf)
{this._timestamps.push(timestamp);this._durations.push(duration);if(leaf){this._leafTimestamps.push(timestamp);this._leafDurations.push(duration);}
if(!expressionLocation)
return;let{line,column}=expressionLocation;let hashCons=line+":"+column;let timestamps=this._expressionLocations[hashCons];if(!timestamps){timestamps=[];this._expressionLocations[hashCons]=timestamps;}
timestamps.push(timestamp);}
forEachChild(callback)
{for(let propertyName of Object.getOwnPropertyNames(this._children))
callback(this._children[propertyName]);}
forEachNode(callback)
{callback(this);this.forEachChild(function(child){child.forEachNode(callback);});}
equals(other)
{return this._hash===other.hash;}
toCPUProfileNode(numSamples,startTime,endTime)
{let children=[];this.forEachChild((child)=>{if(child.hasStackTraceInTimeRange(startTime,endTime))
children.push(child.toCPUProfileNode(numSamples,startTime,endTime));});let cpuProfileNode={id:this._uid,functionName:this._name,url:this._url,lineNumber:this._line,columnNumber:this._column,children:children};let timestamps=[];let frameStartTime=Number.MAX_VALUE;let frameEndTime=Number.MIN_VALUE;for(let i=0;i<this._timestamps.length;i++){let timestamp=this._timestamps[i];if(startTime<=timestamp&&timestamp<=endTime){timestamps.push(timestamp);frameStartTime=Math.min(frameStartTime,timestamp);frameEndTime=Math.max(frameEndTime,timestamp);}}
cpuProfileNode.callInfo={callCount:timestamps.length,startTime:frameStartTime,endTime:frameEndTime,totalTime:(timestamps.length/numSamples)*(endTime-startTime)};return cpuProfileNode;}
__test_buildLeafLinkedLists(parent,result)
{let linkedListNode={name:this._name,url:this._url,parent:parent};if(this.hasChildren()){this.forEachChild((child)=>{child.__test_buildLeafLinkedLists(linkedListNode,result);});}else{result.push(linkedListNode);}}};WebInspector.CallingContextTreeNode.__uid=0;WebInspector.CSSCompletions=class CSSCompletions
{constructor(properties,acceptEmptyPrefix)
{this._values=[];this._longhands={};this._shorthands={};if(properties.length&&typeof properties[0]==="string")
this._values=this._values.concat(properties);else{for(var property of properties){var propertyName=property.name;this._values.push(propertyName);var longhands=property.longhands;if(longhands){this._longhands[propertyName]=longhands;for(var j=0;j<longhands.length;++j){var longhandName=longhands[j];var shorthands=this._shorthands[longhandName];if(!shorthands){shorthands=[];this._shorthands[longhandName]=shorthands;}
shorthands.push(propertyName);}}}}
this._values.sort();this._acceptEmptyPrefix=acceptEmptyPrefix;}
static requestCSSCompletions()
{if(WebInspector.CSSCompletions.cssNameCompletions)
return;function propertyNamesCallback(error,names)
{if(error)
return;WebInspector.CSSCompletions.cssNameCompletions=new WebInspector.CSSCompletions(names,false);WebInspector.CSSKeywordCompletions.addCustomCompletions(names);if(!window.CodeMirror)
return;var propertyNamesForCodeMirror={};var valueKeywordsForCodeMirror={"inherit":true,"initial":true,"unset":true,"revert":true,"var":true};var colorKeywordsForCodeMirror={};function nameForCodeMirror(name)
{return name.replace(/^-[^-]+-/,"").replace(/\(\)$/,"").toLowerCase();}
function collectPropertyNameForCodeMirror(propertyName)
{var codeMirrorPropertyName=nameForCodeMirror(propertyName);propertyNamesForCodeMirror[codeMirrorPropertyName]=true;valueKeywordsForCodeMirror[codeMirrorPropertyName]=true;}
for(var property of names)
collectPropertyNameForCodeMirror(property.name);for(var propertyName in WebInspector.CSSKeywordCompletions._propertyKeywordMap){var keywords=WebInspector.CSSKeywordCompletions._propertyKeywordMap[propertyName];for(var i=0;i<keywords.length;++i){if(!isNaN(Number(keywords[i])))
continue;valueKeywordsForCodeMirror[nameForCodeMirror(keywords[i])]=true;}}
WebInspector.CSSKeywordCompletions._colors.forEach(function(colorName){colorKeywordsForCodeMirror[nameForCodeMirror(colorName)]=true;});function updateCodeMirrorCSSMode(mimeType)
{var modeSpec=CodeMirror.resolveMode(mimeType);modeSpec.propertyKeywords=propertyNamesForCodeMirror;modeSpec.valueKeywords=valueKeywordsForCodeMirror;modeSpec.colorKeywords=colorKeywordsForCodeMirror;CodeMirror.defineMIME(mimeType,modeSpec);}
updateCodeMirrorCSSMode("text/css");updateCodeMirrorCSSMode("text/x-scss");}
function fontFamilyNamesCallback(error,fontFamilyNames)
{if(error)
return;WebInspector.CSSKeywordCompletions.addPropertyCompletionValues("font-family",fontFamilyNames);WebInspector.CSSKeywordCompletions.addPropertyCompletionValues("font",fontFamilyNames);}
if(window.CSSAgent){CSSAgent.getSupportedCSSProperties(propertyNamesCallback);if(CSSAgent.getSupportedSystemFontFamilyNames)
CSSAgent.getSupportedSystemFontFamilyNames(fontFamilyNamesCallback);}}
get values()
{return this._values;}
startsWith(prefix)
{var firstIndex=this._firstIndexOfPrefix(prefix);if(firstIndex===-1)
return[];var results=[];while(firstIndex<this._values.length&&this._values[firstIndex].startsWith(prefix))
results.push(this._values[firstIndex++]);return results;}
_firstIndexOfPrefix(prefix)
{if(!this._values.length)
return-1;if(!prefix)
return this._acceptEmptyPrefix?0:-1;var maxIndex=this._values.length-1;var minIndex=0;var foundIndex;do{var middleIndex=(maxIndex+minIndex)>>1;if(this._values[middleIndex].startsWith(prefix)){foundIndex=middleIndex;break;}
if(this._values[middleIndex]<prefix)
minIndex=middleIndex+1;else
maxIndex=middleIndex-1;}while(minIndex<=maxIndex);if(foundIndex===undefined)
return-1;while(foundIndex&&this._values[foundIndex-1].startsWith(prefix))
foundIndex--;return foundIndex;}
keySet()
{if(!this._keySet)
this._keySet=this._values.keySet();return this._keySet;}
next(str,prefix)
{return this._closest(str,prefix,1);}
previous(str,prefix)
{return this._closest(str,prefix,-1);}
_closest(str,prefix,shift)
{if(!str)
return"";var index=this._values.indexOf(str);if(index===-1)
return"";if(!prefix){index=(index+this._values.length+shift)%this._values.length;return this._values[index];}
var propertiesWithPrefix=this.startsWith(prefix);var j=propertiesWithPrefix.indexOf(str);j=(j+propertiesWithPrefix.length+shift)%propertiesWithPrefix.length;return propertiesWithPrefix[j];}
isShorthandPropertyName(shorthand)
{return shorthand in this._longhands;}
shorthandsForLonghand(longhand)
{return this._shorthands[longhand]||[];}
isValidPropertyName(name)
{return this._values.includes(name);}
propertyRequiresWebkitPrefix(name)
{return this._values.includes("-webkit-"+name)&&!this._values.includes(name);}
getClosestPropertyName(name)
{var bestMatches=[{distance:Infinity,name:null}];for(var property of this._values){var distance=name.levenshteinDistance(property);if(distance<bestMatches[0].distance)
bestMatches=[{distance,name:property}];else if(distance===bestMatches[0].distance)
bestMatches.push({distance,name:property});}
return bestMatches.length<3?bestMatches[0].name:false;}};WebInspector.CSSCompletions.cssNameCompletions=null;WebInspector.CSSKeywordCompletions={};WebInspector.CSSKeywordCompletions.forProperty=function(propertyName)
{let acceptedKeywords=["initial","unset","revert","var()"];let isNotPrefixed=propertyName.charAt(0)!=="-";if(propertyName in WebInspector.CSSKeywordCompletions._propertyKeywordMap)
acceptedKeywords=acceptedKeywords.concat(WebInspector.CSSKeywordCompletions._propertyKeywordMap[propertyName]);else if(isNotPrefixed&&("-webkit-"+propertyName)in WebInspector.CSSKeywordCompletions._propertyKeywordMap)
acceptedKeywords=acceptedKeywords.concat(WebInspector.CSSKeywordCompletions._propertyKeywordMap["-webkit-"+propertyName]);if(propertyName in WebInspector.CSSKeywordCompletions._colorAwareProperties)
acceptedKeywords=acceptedKeywords.concat(WebInspector.CSSKeywordCompletions._colors);else if(isNotPrefixed&&("-webkit-"+propertyName)in WebInspector.CSSKeywordCompletions._colorAwareProperties)
acceptedKeywords=acceptedKeywords.concat(WebInspector.CSSKeywordCompletions._colors);else if(propertyName.endsWith("color"))
acceptedKeywords=acceptedKeywords.concat(WebInspector.CSSKeywordCompletions._colors);if(propertyName in WebInspector.CSSKeywordCompletions.InheritedProperties)
acceptedKeywords.push("inherit");else if(isNotPrefixed&&("-webkit-"+propertyName)in WebInspector.CSSKeywordCompletions.InheritedProperties)
acceptedKeywords.push("inherit");if(acceptedKeywords.includes(WebInspector.CSSKeywordCompletions.AllPropertyNamesPlaceholder)&&WebInspector.CSSCompletions.cssNameCompletions){acceptedKeywords.remove(WebInspector.CSSKeywordCompletions.AllPropertyNamesPlaceholder);acceptedKeywords=acceptedKeywords.concat(WebInspector.CSSCompletions.cssNameCompletions.values);}
return new WebInspector.CSSCompletions(acceptedKeywords,true);};WebInspector.CSSKeywordCompletions.forFunction=function(functionName)
{let suggestions=["var()"];if(functionName==="var")
suggestions=[];else if(functionName=="env")
suggestions=suggestions.concat(["safe-area-inset-top","safe-area-inset-right","safe-area-inset-bottom","safe-area-inset-left"]);else if(functionName==="image-set")
suggestions.push("url()");else if(functionName==="repeat")
suggestions=suggestions.concat(["auto","auto-fill","auto-fit","min-content","max-content"]);else if(functionName.endsWith("gradient")){suggestions=suggestions.concat(["to","left","right","top","bottom"]);suggestions=suggestions.concat(WebInspector.CSSKeywordCompletions._colors);}
return new WebInspector.CSSCompletions(suggestions,true);}
WebInspector.CSSKeywordCompletions.addCustomCompletions=function(properties)
{for(var property of properties){if(property.values)
WebInspector.CSSKeywordCompletions.addPropertyCompletionValues(property.name,property.values);}};WebInspector.CSSKeywordCompletions.addPropertyCompletionValues=function(propertyName,newValues)
{var existingValues=WebInspector.CSSKeywordCompletions._propertyKeywordMap[propertyName];if(!existingValues){WebInspector.CSSKeywordCompletions._propertyKeywordMap[propertyName]=newValues;return;}
var union=new Set;for(var value of existingValues)
union.add(value);for(var value of newValues)
union.add(value);WebInspector.CSSKeywordCompletions._propertyKeywordMap[propertyName]=[...union.values()];};WebInspector.CSSKeywordCompletions.AllPropertyNamesPlaceholder="__all-properties__";WebInspector.CSSKeywordCompletions.InheritedProperties=["azimuth","border-collapse","border-spacing","caption-side","clip-rule","color","color-interpolation","color-interpolation-filters","color-rendering","cursor","direction","elevation","empty-cells","fill","fill-opacity","fill-rule","font","font-family","font-size","font-style","font-variant","font-variant-numeric","font-weight","font-optical-sizing","glyph-orientation-horizontal","glyph-orientation-vertical","hanging-punctuation","image-rendering","kerning","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","marker","marker-end","marker-mid","marker-start","orphans","pitch","pitch-range","pointer-events","quotes","resize","richness","shape-rendering","speak","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","text-align","text-anchor","text-decoration","text-indent","text-rendering","text-shadow","text-transform","visibility","voice-family","volume","white-space","widows","word-break","word-spacing","word-wrap","writing-mode","-webkit-aspect-ratio","-webkit-border-horizontal-spacing","-webkit-border-vertical-spacing","-webkit-box-direction","-webkit-color-correction","font-feature-settings","-webkit-font-kerning","-webkit-font-smoothing","-webkit-font-variant-ligatures","-webkit-hyphenate-character","-webkit-hyphenate-limit-after","-webkit-hyphenate-limit-before","-webkit-hyphenate-limit-lines","-webkit-hyphens","-webkit-line-align","-webkit-line-box-contain","-webkit-line-break","-webkit-line-grid","-webkit-line-snap","-webkit-locale","-webkit-nbsp-mode","-webkit-print-color-adjust","-webkit-rtl-ordering","-webkit-text-combine","-webkit-text-decorations-in-effect","-webkit-text-emphasis","-webkit-text-emphasis-color","-webkit-text-emphasis-position","-webkit-text-emphasis-style","-webkit-text-fill-color","-webkit-text-orientation","-webkit-text-security","-webkit-text-size-adjust","-webkit-text-stroke","-webkit-text-stroke-color","-webkit-text-stroke-width","-webkit-user-modify","-webkit-user-select","-webkit-writing-mode","-webkit-cursor-visibility","image-orientation","image-resolution","overflow-wrap","-webkit-text-align-last","-webkit-text-justify","-webkit-ruby-position","-webkit-text-decoration-line","font-synthesis","-webkit-overflow-scrolling","-webkit-touch-callout","-webkit-tap-highlight-color"].keySet();WebInspector.CSSKeywordCompletions._colors=["aqua","black","blue","fuchsia","gray","green","lime","maroon","navy","olive","orange","purple","red","silver","teal","white","yellow","transparent","currentcolor","grey","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","rgb()","rgba()","hsl()","hsla()"];WebInspector.CSSKeywordCompletions._colorAwareProperties=["background","background-color","background-image","border","border-color","border-top","border-right","border-bottom","border-left","border-top-color","border-right-color","border-bottom-color","border-left-color","box-shadow","color","fill","outline","outline-color","stroke","text-line-through","text-line-through-color","text-overline","text-overline-color","text-shadow","text-underline","text-underline-color","-webkit-box-shadow","-webkit-column-rule","-webkit-column-rule-color","-webkit-text-emphasis","-webkit-text-emphasis-color","-webkit-text-fill-color","-webkit-text-stroke","-webkit-text-stroke-color","-webkit-text-decoration-color","-webkit-tap-highlight-color"].keySet();WebInspector.CSSKeywordCompletions._propertyKeywordMap={"table-layout":["auto","fixed"],"visibility":["hidden","visible","collapse"],"text-underline":["none","dotted","dashed","solid","double","dot-dash","dot-dot-dash","wave"],"content":["list-item","close-quote","no-close-quote","no-open-quote","open-quote","attr()","counter()","counters()","url()","linear-gradient()","radial-gradient()","repeating-linear-gradient()","repeating-radial-gradient()","-webkit-canvas()","cross-fade()","image-set()"],"list-style-image":["none","url()","linear-gradient()","radial-gradient()","repeating-linear-gradient()","repeating-radial-gradient()","-webkit-canvas()","cross-fade()","image-set()"],"clear":["none","left","right","both"],"fill-rule":["nonzero","evenodd"],"stroke-linecap":["butt","round","square"],"stroke-linejoin":["round","miter","bevel"],"baseline-shift":["baseline","sub","super"],"border-bottom-width":["medium","thick","thin","calc()"],"margin-top-collapse":["collapse","separate","discard"],"-webkit-box-orient":["horizontal","vertical","inline-axis","block-axis"],"font-stretch":["normal","wider","narrower","ultra-condensed","extra-condensed","condensed","semi-condensed","semi-expanded","expanded","extra-expanded","ultra-expanded"],"font-optical-sizing":["auto","none",],"-webkit-color-correction":["default","srgb"],"border-left-width":["medium","thick","thin","calc()"],"-webkit-writing-mode":["lr","rl","tb","lr-tb","rl-tb","tb-rl","horizontal-tb","vertical-rl","vertical-lr","horizontal-bt"],"text-line-through-mode":["continuous","skip-white-space"],"text-overline-mode":["continuous","skip-white-space"],"text-underline-mode":["continuous","skip-white-space"],"text-line-through-style":["none","dotted","dashed","solid","double","dot-dash","dot-dot-dash","wave"],"text-overline-style":["none","dotted","dashed","solid","double","dot-dash","dot-dot-dash","wave"],"text-underline-style":["none","dotted","dashed","solid","double","dot-dash","dot-dot-dash","wave"],"border-collapse":["collapse","separate"],"border-top-width":["medium","thick","thin","calc()"],"outline-color":["invert","-webkit-focus-ring-color"],"outline-style":["none","hidden","inset","groove","ridge","outset","dotted","dashed","solid","double","auto"],"cursor":["auto","default","none","context-menu","help","pointer","progress","wait","cell","crosshair","text","vertical-text","alias","copy","move","no-drop","not-allowed","grab","grabbing","e-resize","n-resize","ne-resize","nw-resize","s-resize","se-resize","sw-resize","w-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","col-resize","row-resize","all-scroll","zoom-in","zoom-out","-webkit-grab","-webkit-grabbing","-webkit-zoom-in","-webkit-zoom-out","url()","image-set()"],"border-width":["medium","thick","thin","calc()"],"size":["a3","a4","a5","b4","b5","landscape","ledger","legal","letter","portrait"],"background":["none","url()","linear-gradient()","radial-gradient()","repeating-linear-gradient()","repeating-radial-gradient()","-webkit-canvas()","cross-fade()","image-set()","repeat","repeat-x","repeat-y","no-repeat","space","round","scroll","fixed","local","auto","contain","cover","top","right","left","bottom","center","border-box","padding-box","content-box"],"background-image":["none","url()","linear-gradient()","radial-gradient()","repeating-linear-gradient()","repeating-radial-gradient()","-webkit-canvas()","cross-fade()","image-set()"],"background-size":["auto","contain","cover"],"background-attachment":["scroll","fixed","local"],"background-repeat":["repeat","repeat-x","repeat-y","no-repeat","space","round"],"background-blend-mode":["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],"background-position":["top","right","left","bottom","center"],"background-origin":["border-box","padding-box","content-box"],"background-clip":["border-box","padding-box","content-box"],"direction":["ltr","rtl"],"enable-background":["accumulate","new"],"float":["none","left","right"],"hanging-punctuation":["none","first","last","allow-end","force-end"],"overflow-x":["hidden","auto","visible","overlay","scroll","marquee"],"overflow-y":["hidden","auto","visible","overlay","scroll","marquee","-webkit-paged-x","-webkit-paged-y"],"overflow":["hidden","auto","visible","overlay","scroll","marquee","-webkit-paged-x","-webkit-paged-y"],"margin-bottom-collapse":["collapse","separate","discard"],"-webkit-box-reflect":["none","left","right","above","below"],"text-rendering":["auto","optimizeSpeed","optimizeLegibility","geometricPrecision"],"text-align":["-webkit-auto","left","right","center","justify","-webkit-left","-webkit-right","-webkit-center","-webkit-match-parent","start","end"],"list-style-position":["outside","inside"],"margin-bottom":["auto"],"color-interpolation":["linearrgb"],"word-wrap":["normal","break-word"],"font-weight":["normal","bold","bolder","lighter","100","200","300","400","500","600","700","800","900"],"font-synthesis":["none","weight","style"],"margin-before-collapse":["collapse","separate","discard"],"text-overline-width":["normal","medium","auto","thick","thin","calc()"],"text-transform":["none","capitalize","uppercase","lowercase"],"border-right-style":["none","hidden","inset","groove","ridge","outset","dotted","dashed","solid","double"],"border-left-style":["none","hidden","inset","groove","ridge","outset","dotted","dashed","solid","double"],"font-style":["italic","oblique","normal"],"speak":["none","normal","spell-out","digits","literal-punctuation","no-punctuation"],"text-line-through":["none","dotted","dashed","solid","double","dot-dash","dot-dot-dash","wave","continuous","skip-white-space"],"color-rendering":["auto","optimizeSpeed","optimizeQuality"],"list-style-type":["none","disc","circle","square","decimal","decimal-leading-zero","arabic-indic","binary","bengali","cambodian","khmer","devanagari","gujarati","gurmukhi","kannada","lower-hexadecimal","lao","malayalam","mongolian","myanmar","octal","oriya","persian","urdu","telugu","tibetan","thai","upper-hexadecimal","lower-roman","upper-roman","lower-greek","lower-alpha","lower-latin","upper-alpha","upper-latin","afar","ethiopic-halehame-aa-et","ethiopic-halehame-aa-er","amharic","ethiopic-halehame-am-et","amharic-abegede","ethiopic-abegede-am-et","cjk-earthly-branch","cjk-heavenly-stem","ethiopic","ethiopic-halehame-gez","ethiopic-abegede","ethiopic-abegede-gez","hangul-consonant","hangul","lower-norwegian","oromo","ethiopic-halehame-om-et","sidama","ethiopic-halehame-sid-et","somali","ethiopic-halehame-so-et","tigre","ethiopic-halehame-tig","tigrinya-er","ethiopic-halehame-ti-er","tigrinya-er-abegede","ethiopic-abegede-ti-er","tigrinya-et","ethiopic-halehame-ti-et","tigrinya-et-abegede","ethiopic-abegede-ti-et","upper-greek","upper-norwegian","asterisks","footnotes","hebrew","armenian","lower-armenian","upper-armenian","georgian","cjk-ideographic","hiragana","katakana","hiragana-iroha","katakana-iroha"],"-webkit-text-combine":["none","horizontal"],"outline":["none","hidden","inset","groove","ridge","outset","dotted","dashed","solid","double"],"font":["caption","icon","menu","message-box","small-caption","-webkit-mini-control","-webkit-small-control","-webkit-control","status-bar","italic","oblique","small-caps","normal","bold","bolder","lighter","100","200","300","400","500","600","700","800","900","xx-small","x-small","small","medium","large","x-large","xx-large","-webkit-xxx-large","smaller","larger","serif","sans-serif","cursive","fantasy","monospace","-webkit-body","-webkit-pictograph","-apple-system","-apple-system-headline","-apple-system-body","-apple-system-subheadline","-apple-system-footnote","-apple-system-caption1","-apple-system-caption2","-apple-system-short-headline","-apple-system-short-body","-apple-system-short-subheadline","-apple-system-short-footnote","-apple-system-short-caption1","-apple-system-tall-body","-apple-system-title0","-apple-system-title1","-apple-system-title2","-apple-system-title3","-apple-system-title4","system-ui"],"dominant-baseline":["middle","auto","central","text-before-edge","text-after-edge","ideographic","alphabetic","hanging","mathematical","use-script","no-change","reset-size"],"display":["none","inline","block","list-item","compact","inline-block","table","inline-table","table-row-group","table-header-group","table-footer-group","table-row","table-column-group","table-column","table-cell","table-caption","-webkit-box","-webkit-inline-box","-wap-marquee","flex","inline-flex","grid","inline-grid"],"image-rendering":["auto","optimizeSpeed","optimizeQuality","-webkit-crisp-edges","-webkit-optimize-contrast","crisp-edges","pixelated"],"alignment-baseline":["baseline","middle","auto","before-edge","after-edge","central","text-before-edge","text-after-edge","ideographic","alphabetic","hanging","mathematical"],"outline-width":["medium","thick","thin","calc()"],"text-line-through-width":["normal","medium","auto","thick","thin"],"box-align":["baseline","center","stretch","start","end"],"box-shadow":["none"],"text-shadow":["none"],"-webkit-box-shadow":["none"],"border-right-width":["medium","thick","thin"],"border-top-style":["none","hidden","inset","groove","ridge","outset","dotted","dashed","solid","double"],"line-height":["normal"],"counter-increment":["none"],"counter-reset":["none"],"text-overflow":["clip","ellipsis"],"-webkit-box-direction":["normal","reverse"],"margin-after-collapse":["collapse","separate","discard"],"break-after":["left","right","recto","verso","auto","avoid","page","column","region","avoid-page","avoid-column","avoid-region"],"break-before":["left","right","recto","verso","auto","avoid","page","column","region","avoid-page","avoid-column","avoid-region"],"break-inside":["auto","avoid","avoid-page","avoid-column","avoid-region"],"page-break-after":["left","right","auto","always","avoid"],"page-break-before":["left","right","auto","always","avoid"],"page-break-inside":["auto","avoid"],"-webkit-column-break-after":["left","right","auto","always","avoid"],"-webkit-column-break-before":["left","right","auto","always","avoid"],"-webkit-column-break-inside":["auto","avoid"],"-webkit-hyphens":["none","auto","manual"],"border-image":["repeat","stretch","url()","linear-gradient()","radial-gradient()","repeating-linear-gradient()","repeating-radial-gradient()","-webkit-canvas()","cross-fade()","image-set()"],"border-image-repeat":["repeat","stretch","space","round"],"-webkit-mask-box-image-repeat":["repeat","stretch","space","round"],"position":["absolute","fixed","relative","static","-webkit-sticky"],"font-family":["serif","sans-serif","cursive","fantasy","monospace","-webkit-body","-webkit-pictograph","-apple-system","-apple-system-headline","-apple-system-body","-apple-system-subheadline","-apple-system-footnote","-apple-system-caption1","-apple-system-caption2","-apple-system-short-headline","-apple-system-short-body","-apple-system-short-subheadline","-apple-system-short-footnote","-apple-system-short-caption1","-apple-system-tall-body","-apple-system-title0","-apple-system-title1","-apple-system-title2","-apple-system-title3","-apple-system-title4","system-ui"],"text-overflow-mode":["clip","ellipsis"],"border-bottom-style":["none","hidden","inset","groove","ridge","outset","dotted","dashed","solid","double"],"unicode-bidi":["normal","bidi-override","embed","plaintext","isolate","isolate-override"],"clip-rule":["nonzero","evenodd"],"margin-left":["auto"],"margin-top":["auto"],"zoom":["normal","document","reset"],"z-index":["auto"],"width":["intrinsic","min-intrinsic","-webkit-min-content","-webkit-max-content","-webkit-fill-available","-webkit-fit-content","calc()"],"height":["intrinsic","min-intrinsic","calc()"],"max-width":["none","intrinsic","min-intrinsic","-webkit-min-content","-webkit-max-content","-webkit-fill-available","-webkit-fit-content","calc()"],"min-width":["intrinsic","min-intrinsic","-webkit-min-content","-webkit-max-content","-webkit-fill-available","-webkit-fit-content","calc()"],"max-height":["none","intrinsic","min-intrinsic","calc()"],"min-height":["intrinsic","min-intrinsic","calc()"],"-webkit-logical-width":["intrinsic","min-intrinsic","-webkit-min-content","-webkit-max-content","-webkit-fill-available","-webkit-fit-content","calc()"],"-webkit-logical-height":["intrinsic","min-intrinsic","calc()"],"-webkit-max-logical-width":["none","intrinsic","min-intrinsic","-webkit-min-content","-webkit-max-content","-webkit-fill-available","-webkit-fit-content","calc()"],"-webkit-min-logical-width":["intrinsic","min-intrinsic","-webkit-min-content","-webkit-max-content","-webkit-fill-available","-webkit-fit-content","calc()"],"-webkit-max-logical-height":["none","intrinsic","min-intrinsic","calc()"],"-webkit-min-logical-height":["intrinsic","min-intrinsic","calc()"],"empty-cells":["hide","show"],"pointer-events":["none","all","auto","visible","visiblepainted","visiblefill","visiblestroke","painted","fill","stroke"],"letter-spacing":["normal","calc()"],"word-spacing":["normal","calc()"],"-webkit-font-kerning":["auto","normal","none"],"-webkit-font-smoothing":["none","auto","antialiased","subpixel-antialiased"],"border":["none","hidden","inset","groove","ridge","outset","dotted","dashed","solid","double"],"font-size":["xx-small","x-small","small","medium","large","x-large","xx-large","-webkit-xxx-large","smaller","larger"],"font-variant":["small-caps","normal"],"font-variant-numeric":["normal","ordinal","slashed-zero","lining-nums","oldstyle-nums","proportional-nums","tabular-nums","diagonal-fractions","stacked-fractions"],"vertical-align":["baseline","middle","sub","super","text-top","text-bottom","top","bottom","-webkit-baseline-middle"],"white-space":["normal","nowrap","pre","pre-line","pre-wrap"],"word-break":["normal","break-all","break-word"],"text-underline-width":["normal","medium","auto","thick","thin","calc()"],"text-indent":["-webkit-each-line","-webkit-hanging"],"-webkit-box-lines":["single","multiple"],"clip":["auto","rect()"],"clip-path":["none","url()","circle()","ellipse()","inset()","polygon()","margin-box","border-box","padding-box","content-box"],"shape-outside":["none","url()","circle()","ellipse()","inset()","polygon()","margin-box","border-box","padding-box","content-box"],"orphans":["auto"],"widows":["auto"],"margin":["auto"],"page":["auto"],"perspective":["none"],"perspective-origin":["none","left","right","bottom","top","center"],"-webkit-marquee-increment":["small","large","medium"],"-webkit-marquee-direction":["left","right","auto","reverse","forwards","backwards","ahead","up","down"],"-webkit-marquee-style":["none","scroll","slide","alternate"],"-webkit-marquee-repetition":["infinite"],"-webkit-marquee-speed":["normal","slow","fast"],"margin-right":["auto"],"marquee-speed":["normal","slow","fast"],"-webkit-text-emphasis":["circle","filled","open","dot","double-circle","triangle","sesame"],"-webkit-text-emphasis-style":["circle","filled","open","dot","double-circle","triangle","sesame"],"-webkit-text-emphasis-position":["over","under","left","right"],"transform":["none","scale()","scaleX()","scaleY()","scale3d()","rotate()","rotateX()","rotateY()","rotateZ()","rotate3d()","skew()","skewX()","skewY()","translate()","translateX()","translateY()","translateZ()","translate3d()","matrix()","matrix3d()","perspective()"],"transform-style":["flat","preserve-3d"],"-webkit-cursor-visibility":["auto","auto-hide"],"text-decoration":["none","underline","overline","line-through","blink"],"-webkit-text-decorations-in-effect":["none","underline","overline","line-through","blink"],"-webkit-text-decoration-line":["none","underline","overline","line-through","blink"],"-webkit-text-decoration-style":["solid","double","dotted","dashed","wavy"],"-webkit-text-decoration-skip":["auto","none","objects","ink"],"-webkit-text-underline-position":["auto","alphabetic","under"],"image-resolution":["from-image","snap"],"-webkit-blend-mode":["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","plus-darker","plus-lighter","hue","saturation","color","luminosity",],"mix-blend-mode":["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","plus-darker","plus-lighter","hue","saturation","color","luminosity",],"mix":["auto","normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","plus-darker","plus-lighter","hue","saturation","color","luminosity","clear","copy","destination","source-over","destination-over","source-in","destination-in","source-out","destination-out","source-atop","destination-atop","xor"],"geometry":["detached","attached","grid()"],"overflow-wrap":["normal","break-word"],"transition":["none","ease","linear","ease-in","ease-out","ease-in-out","step-start","step-end","steps()","cubic-bezier()","spring()","all",WebInspector.CSSKeywordCompletions.AllPropertyNamesPlaceholder],"transition-timing-function":["ease","linear","ease-in","ease-out","ease-in-out","step-start","step-end","steps()","cubic-bezier()","spring()"],"transition-property":["all","none",WebInspector.CSSKeywordCompletions.AllPropertyNamesPlaceholder],"-webkit-column-progression":["normal","reverse"],"-webkit-box-decoration-break":["slice","clone"],"align-content":["auto","baseline","last-baseline","space-between","space-around","space-evenly","stretch","center","start","end","flex-start","flex-end","left","right","true","safe"],"justify-content":["auto","baseline","last-baseline","space-between","space-around","space-evenly","stretch","center","start","end","flex-start","flex-end","left","right","true","safe"],"align-items":["auto","stretch","baseline","last-baseline","center","start","end","self-start","self-end","flex-start","flex-end","left","right","true","safe"],"align-self":["auto","stretch","baseline","last-baseline","center","start","end","self-start","self-end","flex-start","flex-end","left","right","true","safe"],"justify-items":["auto","stretch","baseline","last-baseline","center","start","end","self-start","self-end","flex-start","flex-end","left","right","true","safe"],"justify-self":["auto","stretch","baseline","last-baseline","center","start","end","self-start","self-end","flex-start","flex-end","left","right","true","safe"],"flex-direction":["row","row-reverse","column","column-reverse"],"flex-wrap":["nowrap","wrap","wrap-reverse"],"flex-flow":["row","row-reverse","column","column-reverse","nowrap","wrap","wrap-reverse"],"flex":["none"],"flex-basis":["auto"],"grid":["none"],"grid-area":["auto"],"grid-auto-columns":["auto","-webkit-max-content","-webkit-min-content","minmax()",],"grid-auto-flow":["row","column","dense"],"grid-auto-rows":["auto","-webkit-max-content","-webkit-min-content","minmax()",],"grid-column":["auto"],"grid-column-start":["auto"],"grid-column-end":["auto"],"grid-row":["auto"],"grid-row-start":["auto"],"grid-row-end":["auto"],"grid-template":["none"],"grid-template-areas":["none"],"grid-template-columns":["none","auto","-webkit-max-content","-webkit-min-content","minmax()","repeat()"],"grid-template-rows":["none","auto","-webkit-max-content","-webkit-min-content","minmax()","repeat()"],"-webkit-ruby-position":["after","before","inter-character"],"-webkit-text-align-last":["auto","start","end","left","right","center","justify"],"-webkit-text-justify":["auto","none","inter-word","inter-ideograph","inter-cluster","distribute","kashida"],"max-zoom":["auto"],"min-zoom":["auto"],"orientation":["auto","portait","landscape"],"scroll-snap-align":["none","start","center","end"],"scroll-snap-type":["none","mandatory","proximity","x","y","inline","block","both"],"user-zoom":["zoom","fixed"],"-webkit-app-region":["drag","no-drag"],"-webkit-line-break":["auto","loose","normal","strict","after-white-space"],"-webkit-background-composite":["clear","copy","source-over","source-in","source-out","source-atop","destination-over","destination-in","destination-out","destination-atop","xor","plus-darker","plus-lighter"],"-webkit-mask-composite":["clear","copy","source-over","source-in","source-out","source-atop","destination-over","destination-in","destination-out","destination-atop","xor","plus-darker","plus-lighter"],"-webkit-animation-direction":["normal","alternate","reverse","alternate-reverse"],"-webkit-animation-fill-mode":["none","forwards","backwards","both"],"-webkit-animation-iteration-count":["infinite"],"-webkit-animation-play-state":["paused","running"],"-webkit-animation-timing-function":["ease","linear","ease-in","ease-out","ease-in-out","step-start","step-end","steps()","cubic-bezier()","spring()"],"-webkit-column-span":["all","none","calc()"],"-webkit-region-break-after":["auto","always","avoid","left","right"],"-webkit-region-break-before":["auto","always","avoid","left","right"],"-webkit-region-break-inside":["auto","avoid"],"-webkit-region-overflow":["auto","break"],"-webkit-backface-visibility":["visible","hidden"],"resize":["none","both","horizontal","vertical","auto"],"caption-side":["top","bottom","left","right"],"box-sizing":["border-box","content-box"],"-webkit-alt":["attr()"],"-webkit-border-fit":["border","lines"],"-webkit-line-align":["none","edges"],"-webkit-line-snap":["none","baseline","contain"],"-webkit-nbsp-mode":["normal","space"],"-webkit-print-color-adjust":["exact","economy"],"-webkit-rtl-ordering":["logical","visual"],"-webkit-text-security":["disc","circle","square","none"],"-webkit-user-drag":["auto","none","element"],"-webkit-user-modify":["read-only","read-write","read-write-plaintext-only"],"-webkit-user-select":["auto","none","text","all"],"-webkit-text-stroke-width":["medium","thick","thin","calc()"],"-webkit-border-start-width":["medium","thick","thin","calc()"],"-webkit-border-end-width":["medium","thick","thin","calc()"],"-webkit-border-before-width":["medium","thick","thin","calc()"],"-webkit-border-after-width":["medium","thick","thin","calc()"],"-webkit-column-rule-width":["medium","thick","thin","calc()"],"-webkit-aspect-ratio":["auto","from-dimensions","from-intrinsic","/"],"filter":["none","grayscale()","sepia()","saturate()","hue-rotate()","invert()","opacity()","brightness()","contrast()","blur()","drop-shadow()","custom()"],"-webkit-backdrop-filter":["none","grayscale()","sepia()","saturate()","hue-rotate()","invert()","opacity()","brightness()","contrast()","blur()","drop-shadow()","custom()"],"-webkit-column-count":["auto","calc()"],"-webkit-column-gap":["normal","calc()"],"-webkit-column-axis":["horizontal","vertical","auto"],"-webkit-column-width":["auto","calc()"],"-webkit-column-fill":["auto","balance"],"-webkit-hyphenate-character":["none"],"-webkit-hyphenate-limit-after":["auto"],"-webkit-hyphenate-limit-before":["auto"],"-webkit-hyphenate-limit-lines":["no-limit"],"-webkit-line-grid":["none"],"-webkit-locale":["auto"],"-webkit-text-orientation":["sideways","sideways-right","vertical-right","upright"],"-webkit-line-box-contain":["block","inline","font","glyphs","replaced","inline-box","none"],"font-feature-settings":["normal"],"-webkit-font-variant-ligatures":["normal","common-ligatures","no-common-ligatures","discretionary-ligatures","no-discretionary-ligatures","historical-ligatures","no-historical-ligatures"],"-webkit-animation-trigger":["auto","container-scroll()"],"-webkit-text-size-adjust":["none","auto"],"-webkit-touch-callout":["default","none"],"-webkit-overflow-scrolling":["auto","touch"]};WebInspector.CSSMedia=class CSSMedia extends WebInspector.Object
{constructor(type,text,sourceCodeLocation)
{super();this._type=type||null;this._text=text||"";this._sourceCodeLocation=sourceCodeLocation||null;}
get type(){return this._type;}
get text(){return this._text;}
get sourceCodeLocation(){return this._sourceCodeLocation;}};WebInspector.CSSMedia.Type={MediaRule:"css-media-type-media-rule",ImportRule:"css-media-type-import-rule",LinkedStyleSheet:"css-media-type-linked-stylesheet",InlineStyleSheet:"css-media-type-inline-stylesheet"};WebInspector.CSSProperty=class CSSProperty extends WebInspector.Object
{constructor(index,text,name,value,priority,enabled,overridden,implicit,anonymous,valid,styleSheetTextRange)
{super();this._ownerStyle=null;this._index=index;this.update(text,name,value,priority,enabled,overridden,implicit,anonymous,valid,styleSheetTextRange,true);}
static isInheritedPropertyName(name)
{if(name in WebInspector.CSSKeywordCompletions.InheritedProperties)
return true;return name.startsWith("--");}
get ownerStyle()
{return this._ownerStyle;}
set ownerStyle(ownerStyle)
{this._ownerStyle=ownerStyle||null;}
get index()
{return this._index;}
set index(index)
{this._index=index;}
update(text,name,value,priority,enabled,overridden,implicit,anonymous,valid,styleSheetTextRange,dontFireEvents)
{text=text||"";name=name||"";value=value||"";priority=priority||"";enabled=enabled||false;overridden=overridden||false;implicit=implicit||false;anonymous=anonymous||false;valid=valid||false;var changed=false;if(!dontFireEvents){changed=this._name!==name||this._value!==value||this._priority!==priority||this._enabled!==enabled||this._implicit!==implicit||this._anonymous!==anonymous||this._valid!==valid;}
if(!dontFireEvents)
this.overridden=overridden;else
this._overridden=overridden;this._text=text;this._name=name;this._value=value;this._priority=priority;this._enabled=enabled;this._implicit=implicit;this._anonymous=anonymous;this._inherited=WebInspector.CSSProperty.isInheritedPropertyName(name);this._valid=valid;this._variable=name.startsWith("--");this._styleSheetTextRange=styleSheetTextRange||null;this._relatedShorthandProperty=null;this._relatedLonghandProperties=[];delete this._styleDeclarationTextRange;delete this._canonicalName;delete this._hasOtherVendorNameOrKeyword;if(changed)
this.dispatchEventToListeners(WebInspector.CSSProperty.Event.Changed);}
get synthesizedText()
{var name=this.name;if(!name)
return"";var priority=this.priority;return name+": "+this.value.trim()+(priority?" !"+priority:"")+";";}
get text()
{return this._text||this.synthesizedText;}
get name(){return this._name;}
get canonicalName()
{if(this._canonicalName)
return this._canonicalName;this._canonicalName=WebInspector.cssStyleManager.canonicalNameForPropertyName(this.name);return this._canonicalName;}
get value(){return this._value;}
get important()
{return this.priority==="important";}
get priority(){return this._priority;}
get enabled()
{return this._enabled&&this._ownerStyle&&(!isNaN(this._index)||this._ownerStyle.type===WebInspector.CSSStyleDeclaration.Type.Computed);}
get overridden(){return this._overridden;}
set overridden(overridden)
{overridden=overridden||false;if(this._overridden===overridden)
return;var previousOverridden=this._overridden;this._overridden=overridden;if(this._overriddenStatusChangedTimeout)
return;function delayed()
{delete this._overriddenStatusChangedTimeout;if(this._overridden===previousOverridden)
return;this.dispatchEventToListeners(WebInspector.CSSProperty.Event.OverriddenStatusChanged);}
this._overriddenStatusChangedTimeout=setTimeout(delayed.bind(this),0);}
get implicit(){return this._implicit;}
set implicit(implicit){this._implicit=implicit;}
get anonymous(){return this._anonymous;}
get inherited(){return this._inherited;}
get valid(){return this._valid;}
get variable(){return this._variable;}
get styleSheetTextRange(){return this._styleSheetTextRange;}
get styleDeclarationTextRange()
{if("_styleDeclarationTextRange"in this)
return this._styleDeclarationTextRange;if(!this._ownerStyle||!this._styleSheetTextRange)
return null;var styleTextRange=this._ownerStyle.styleSheetTextRange;if(!styleTextRange)
return null;var startLine=this._styleSheetTextRange.startLine-styleTextRange.startLine;var endLine=this._styleSheetTextRange.endLine-styleTextRange.startLine;var startColumn=this._styleSheetTextRange.startColumn;if(!startLine)
startColumn-=styleTextRange.startColumn;var endColumn=this._styleSheetTextRange.endColumn;if(!endLine)
endColumn-=styleTextRange.startColumn;this._styleDeclarationTextRange=new WebInspector.TextRange(startLine,startColumn,endLine,endColumn);return this._styleDeclarationTextRange;}
get relatedShorthandProperty(){return this._relatedShorthandProperty;}
set relatedShorthandProperty(property)
{this._relatedShorthandProperty=property||null;}
get relatedLonghandProperties(){return this._relatedLonghandProperties;}
addRelatedLonghandProperty(property)
{this._relatedLonghandProperties.push(property);}
clearRelatedLonghandProperties(property)
{this._relatedLonghandProperties=[];}
hasOtherVendorNameOrKeyword()
{if("_hasOtherVendorNameOrKeyword"in this)
return this._hasOtherVendorNameOrKeyword;this._hasOtherVendorNameOrKeyword=WebInspector.cssStyleManager.propertyNameHasOtherVendorPrefix(this.name)||WebInspector.cssStyleManager.propertyValueHasOtherVendorKeyword(this.value);return this._hasOtherVendorNameOrKeyword;}};WebInspector.CSSProperty.Event={Changed:"css-property-changed",OverriddenStatusChanged:"css-property-overridden-status-changed"};WebInspector.CSSRule=class CSSRule extends WebInspector.Object
{constructor(nodeStyles,ownerStyleSheet,id,type,sourceCodeLocation,selectorText,selectors,matchedSelectorIndices,style,mediaList)
{super();this._nodeStyles=nodeStyles;this._ownerStyleSheet=ownerStyleSheet||null;this._id=id||null;this._type=type||null;this.update(sourceCodeLocation,selectorText,selectors,matchedSelectorIndices,style,mediaList,true);}
get id()
{return this._id;}
get ownerStyleSheet()
{return this._ownerStyleSheet;}
get editable()
{return!!this._id&&(this._type===WebInspector.CSSStyleSheet.Type.Author||this._type===WebInspector.CSSStyleSheet.Type.Inspector);}
update(sourceCodeLocation,selectorText,selectors,matchedSelectorIndices,style,mediaList,dontFireEvents)
{sourceCodeLocation=sourceCodeLocation||null;selectorText=selectorText||"";selectors=selectors||[];matchedSelectorIndices=matchedSelectorIndices||[];style=style||null;mediaList=mediaList||[];var changed=false;if(!dontFireEvents){changed=this._selectorText!==selectorText||!Array.shallowEqual(this._selectors,selectors)||!Array.shallowEqual(this._matchedSelectorIndices,matchedSelectorIndices)||this._style!==style||!!this._sourceCodeLocation!==!!sourceCodeLocation||this._mediaList.length!==mediaList.length;}
if(this._style)
this._style.ownerRule=null;this._sourceCodeLocation=sourceCodeLocation;this._selectorText=selectorText;this._selectors=selectors;this._matchedSelectorIndices=matchedSelectorIndices;this._mostSpecificSelector=null;this._style=style;this._mediaList=mediaList;this._matchedSelectors=null;this._matchedSelectorText=null;if(this._style)
this._style.ownerRule=this;if(changed)
this.dispatchEventToListeners(WebInspector.CSSRule.Event.Changed);}
get type()
{return this._type;}
get sourceCodeLocation()
{return this._sourceCodeLocation;}
get selectorText()
{return this._selectorText;}
set selectorText(selectorText)
{if(!this.editable)
return;if(this._selectorText===selectorText){this._selectorResolved(true);return;}
this._nodeStyles.changeRuleSelector(this,selectorText).then(this._selectorResolved.bind(this),this._selectorRejected.bind(this));}
get selectors()
{return this._selectors;}
get matchedSelectorIndices()
{return this._matchedSelectorIndices;}
get matchedSelectors()
{if(this._matchedSelectors)
return this._matchedSelectors;this._matchedSelectors=this._selectors.filter(function(element,index){return this._matchedSelectorIndices.includes(index);},this);return this._matchedSelectors;}
get matchedSelectorText()
{if("_matchedSelectorText"in this)
return this._matchedSelectorText;this._matchedSelectorText=this.matchedSelectors.map(function(x){return x.text;}).join(", ");return this._matchedSelectorText;}
hasMatchedPseudoElementSelector()
{if(this.nodeStyles&&this.nodeStyles.node&&this.nodeStyles.node.isPseudoElement())
return true;return this.matchedSelectors.some((selector)=>selector.isPseudoElementSelector());}
get style()
{return this._style;}
get mediaList()
{return this._mediaList;}
get mediaText()
{if(!this._mediaList.length)
return"";let mediaText="";for(let media of this._mediaList)
mediaText+=media.text;return mediaText;}
isEqualTo(rule)
{if(!rule)
return false;return Object.shallowEqual(this._id,rule.id);}
get mostSpecificSelector()
{if(!this._mostSpecificSelector)
this._mostSpecificSelector=this._determineMostSpecificSelector();return this._mostSpecificSelector;}
selectorIsGreater(otherSelector)
{var mostSpecificSelector=this.mostSpecificSelector;if(!mostSpecificSelector)
return false;return mostSpecificSelector.isGreaterThan(otherSelector);}
get nodeStyles()
{return this._nodeStyles;}
_determineMostSpecificSelector()
{if(!this._selectors||!this._selectors.length)
return null;var selectors=this.matchedSelectors;if(!selectors.length)
selectors=this._selectors;var specificSelector=selectors[0];for(var selector of selectors){if(selector.isGreaterThan(specificSelector))
specificSelector=selector;}
return specificSelector;}
_selectorRejected(error)
{this.dispatchEventToListeners(WebInspector.CSSRule.Event.SelectorChanged,{valid:!error});}
_selectorResolved(rulePayload)
{this.dispatchEventToListeners(WebInspector.CSSRule.Event.SelectorChanged,{valid:!!rulePayload});}};WebInspector.CSSRule.Event={Changed:"css-rule-changed",SelectorChanged:"css-rule-invalid-selector"};WebInspector.CSSSelector=class CSSSelector extends WebInspector.Object
{constructor(text,specificity,dynamic)
{super();this._text=text;this._specificity=specificity||null;this._dynamic=dynamic||false;}
get text(){return this._text;}
get specificity(){return this._specificity;}
get dynamic(){return this._dynamic;}
isGreaterThan(selector)
{if(!selector||!selector.specificity)
return true;for(var i=0;i<this._specificity.length;++i){if(this._specificity[i]===selector.specificity[i])
continue;return this._specificity[i]>selector.specificity[i];}
return false;}
isPseudoElementSelector()
{return WebInspector.CSSStyleManager.PseudoElementNames.some((name)=>this._text.includes(`:${name}`));}};WebInspector.CSSStyleDeclaration=class CSSStyleDeclaration extends WebInspector.Object
{constructor(nodeStyles,ownerStyleSheet,id,type,node,inherited,text,properties,styleSheetTextRange)
{super();this._nodeStyles=nodeStyles;this._ownerRule=null;this._ownerStyleSheet=ownerStyleSheet||null;this._id=id||null;this._type=type||null;this._node=node||null;this._inherited=inherited||false;this._pendingProperties=[];this._propertyNameMap={};this._initialText=text;this._hasModifiedInitialText=false;this.update(text,properties,styleSheetTextRange,true);}
get id()
{return this._id;}
get ownerStyleSheet()
{return this._ownerStyleSheet;}
get type()
{return this._type;}
get inherited()
{return this._inherited;}
get node()
{return this._node;}
get editable()
{if(!this._id)
return false;if(this._type===WebInspector.CSSStyleDeclaration.Type.Rule)
return this._ownerRule&&this._ownerRule.editable;if(this._type===WebInspector.CSSStyleDeclaration.Type.Inline)
return!this._node.isInUserAgentShadowTree();return false;}
update(text,properties,styleSheetTextRange,dontFireEvents)
{text=text||"";properties=properties||[];var oldProperties=this._properties||[];var oldText=this._text;this._text=text;this._properties=properties;this._styleSheetTextRange=styleSheetTextRange;this._propertyNameMap={};delete this._visibleProperties;var editable=this.editable;for(var i=0;i<this._properties.length;++i){var property=this._properties[i];property.ownerStyle=this;
if(!editable)
this._propertyNameMap[property.name]=property;else{this._pendingProperties.remove(property);}}
var removedProperties=[];for(var i=0;i<oldProperties.length;++i){var oldProperty=oldProperties[i];if(!this._properties.includes(oldProperty)){oldProperty.index=NaN;removedProperties.push(oldProperty);
if(editable)
this._pendingProperties.push(oldProperty);}}
if(dontFireEvents)
return;var addedProperties=[];for(var i=0;i<this._properties.length;++i){if(!oldProperties.includes(this._properties[i]))
addedProperties.push(this._properties[i]);}
if(oldText&&this._text&&oldText===this._text){if(!addedProperties.length&&!removedProperties.length)
return;}
function delayed()
{this.dispatchEventToListeners(WebInspector.CSSStyleDeclaration.Event.PropertiesChanged,{addedProperties,removedProperties});}
setTimeout(delayed.bind(this),0);}
get ownerRule()
{return this._ownerRule;}
set ownerRule(rule)
{this._ownerRule=rule||null;}
get text()
{return this._text;}
set text(text)
{if(this._text===text)
return;let trimmedText=WebInspector.CSSStyleDeclarationTextEditor.PrefixWhitespace+text.trim();if(this._text===trimmedText)
return;if(trimmedText===WebInspector.CSSStyleDeclarationTextEditor.PrefixWhitespace||this._type===WebInspector.CSSStyleDeclaration.Type.Inline)
text=trimmedText;let modified=text!==this._initialText;if(modified!==this._hasModifiedInitialText){this._hasModifiedInitialText=modified;this.dispatchEventToListeners(WebInspector.CSSStyleDeclaration.Event.InitialTextModified);}
this._nodeStyles.changeStyleText(this,text);}
resetText()
{this.text=this._initialText;}
get modified()
{return this._hasModifiedInitialText;}
get properties()
{return this._properties;}
get visibleProperties()
{if(this._visibleProperties)
return this._visibleProperties;this._visibleProperties=this._properties.filter(function(property){return!!property.styleDeclarationTextRange;});return this._visibleProperties;}
get pendingProperties()
{return this._pendingProperties;}
get styleSheetTextRange()
{return this._styleSheetTextRange;}
get mediaList()
{if(this._ownerRule)
return this._ownerRule.mediaList;return[];}
get selectorText()
{if(this._ownerRule)
return this._ownerRule.selectorText;return this._node.appropriateSelectorFor(true);}
propertyForName(name,dontCreateIfMissing)
{if(!name)
return null;if(!this.editable)
return this._propertyNameMap[name]||null;
function findMatch(properties)
{for(var i=0;i<properties.length;++i){var property=properties[i];if(property.canonicalName!==name&&property.name!==name)
continue;if(bestMatchProperty&&!bestMatchProperty.overridden&&property.overridden)
continue;bestMatchProperty=property;}}
var bestMatchProperty=null;findMatch(this._properties);if(bestMatchProperty)
return bestMatchProperty;if(dontCreateIfMissing||!this.editable)
return null;findMatch(this._pendingProperties,true);if(bestMatchProperty)
return bestMatchProperty;var newProperty=new WebInspector.CSSProperty(NaN,null,name);newProperty.ownerStyle=this;this._pendingProperties.push(newProperty);return newProperty;}
generateCSSRuleString()
{let indentString=WebInspector.indentString();let styleText="";let mediaList=this.mediaList;let mediaQueriesCount=mediaList.length;for(let i=mediaQueriesCount-1;i>=0;--i)
styleText+=indentString.repeat(mediaQueriesCount-i-1)+"@media "+mediaList[i].text+" {\n";styleText+=indentString.repeat(mediaQueriesCount)+this.selectorText+" {\n";for(let property of this._properties){if(property.anonymous)
continue;styleText+=indentString.repeat(mediaQueriesCount+1)+property.text.trim();if(!styleText.endsWith(";"))
styleText+=";";styleText+="\n";}
for(let i=mediaQueriesCount;i>0;--i)
styleText+=indentString.repeat(i)+"}\n";styleText+="}";return styleText;}
isInspectorRule()
{return this._ownerRule&&this._ownerRule.type===WebInspector.CSSStyleSheet.Type.Inspector;}
hasProperties()
{return!!this._properties.length;}
get nodeStyles()
{return this._nodeStyles;}};WebInspector.CSSStyleDeclaration.Event={PropertiesChanged:"css-style-declaration-properties-changed",InitialTextModified:"css-style-declaration-initial-text-modified"};WebInspector.CSSStyleDeclaration.Type={Rule:"css-style-declaration-type-rule",Inline:"css-style-declaration-type-inline",Attribute:"css-style-declaration-type-attribute",Computed:"css-style-declaration-type-computed"};WebInspector.CSSStyleSheet=class CSSStyleSheet extends WebInspector.SourceCode
{constructor(id)
{super();this._id=id||null;this._url=null;this._parentFrame=null;this._origin=null;this._startLineNumber=0;this._startColumnNumber=0;this._inlineStyleAttribute=false;this._inlineStyleTag=false;this._hasInfo=false;}
static resetUniqueDisplayNameNumbers()
{WebInspector.CSSStyleSheet._nextUniqueDisplayNameNumber=1;}
get id()
{return this._id;}
get parentFrame()
{return this._parentFrame;}
get origin()
{return this._origin;}
get url()
{return this._url;}
get urlComponents()
{if(!this._urlComponents)
this._urlComponents=parseURL(this._url);return this._urlComponents;}
get mimeType()
{return"text/css";}
get displayName()
{if(this._url)
return WebInspector.displayNameForURL(this._url,this.urlComponents);if(!this._uniqueDisplayNameNumber)
this._uniqueDisplayNameNumber=this.constructor._nextUniqueDisplayNameNumber++;return WebInspector.UIString("Anonymous StyleSheet %d").format(this._uniqueDisplayNameNumber);}
get startLineNumber()
{return this._startLineNumber;}
get startColumnNumber()
{return this._startColumnNumber;}
hasInfo()
{return this._hasInfo;}
isInspectorStyleSheet()
{return this._origin===WebInspector.CSSStyleSheet.Type.Inspector;}
isInlineStyleTag()
{return this._inlineStyleTag;}
isInlineStyleAttributeStyleSheet()
{return this._inlineStyleAttribute;}
markAsInlineStyleAttributeStyleSheet()
{this._inlineStyleAttribute=true;}
offsetSourceCodeLocation(sourceCodeLocation)
{if(!sourceCodeLocation)
return null;if(!this._hasInfo)
return sourceCodeLocation;let sourceCode=sourceCodeLocation.sourceCode;let lineNumber=this._startLineNumber+sourceCodeLocation.lineNumber;let columnNumber=this._startColumnNumber+sourceCodeLocation.columnNumber;return sourceCode.createSourceCodeLocation(lineNumber,columnNumber);}
updateInfo(url,parentFrame,origin,inlineStyle,startLineNumber,startColumnNumber)
{this._hasInfo=true;this._url=url||null;this._urlComponents=undefined;this._parentFrame=parentFrame||null;this._origin=origin;this._inlineStyleTag=inlineStyle;this._startLineNumber=startLineNumber;this._startColumnNumber=startColumnNumber;}
get revisionForRequestedContent()
{return this.currentRevision;}
handleCurrentRevisionContentChange()
{if(!this._id)
return;function contentDidChange(error)
{if(error)
return;DOMAgent.markUndoableState();this.dispatchEventToListeners(WebInspector.CSSStyleSheet.Event.ContentDidChange);}
this._ignoreNextContentDidChangeNotification=true;CSSAgent.setStyleSheetText(this._id,this.currentRevision.content,contentDidChange.bind(this));}
requestContentFromBackend()
{if(!this._id){
return Promise.reject(new Error("There is no identifier to request content with."));}
return CSSAgent.getStyleSheetText(this._id);}
noteContentDidChange()
{if(this._ignoreNextContentDidChangeNotification){this._ignoreNextContentDidChangeNotification=false;return false;}
this.markContentAsStale();this.dispatchEventToListeners(WebInspector.CSSStyleSheet.Event.ContentDidChange);return true;}};WebInspector.CSSStyleSheet._nextUniqueDisplayNameNumber=1;WebInspector.CSSStyleSheet.Event={ContentDidChange:"stylesheet-content-did-change"};WebInspector.CSSStyleSheet.Type={Author:"css-stylesheet-type-author",User:"css-stylesheet-type-user",UserAgent:"css-stylesheet-type-user-agent",Inspector:"css-stylesheet-type-inspector"};WebInspector.CallFrame=class CallFrame extends WebInspector.Object
{constructor(target,id,sourceCodeLocation,functionName,thisObject,scopeChain,nativeCode,programCode,isTailDeleted)
{super();this._isConsoleEvaluation=sourceCodeLocation&&isWebInspectorConsoleEvaluationScript(sourceCodeLocation.sourceCode.sourceURL);if(this._isConsoleEvaluation){functionName=WebInspector.UIString("Console Evaluation");programCode=true;}
this._target=target;this._id=id||null;this._sourceCodeLocation=sourceCodeLocation||null;this._functionName=functionName||"";this._thisObject=thisObject||null;this._scopeChain=scopeChain||[];this._nativeCode=nativeCode||false;this._programCode=programCode||false;this._isTailDeleted=isTailDeleted||false;}
get target(){return this._target;}
get id(){return this._id;}
get sourceCodeLocation(){return this._sourceCodeLocation;}
get functionName(){return this._functionName;}
get nativeCode(){return this._nativeCode;}
get programCode(){return this._programCode;}
get thisObject(){return this._thisObject;}
get scopeChain(){return this._scopeChain;}
get isTailDeleted(){return this._isTailDeleted;}
get isConsoleEvaluation(){return this._isConsoleEvaluation;}
saveIdentityToCookie()
{
}
collectScopeChainVariableNames(callback)
{var result={this:true,__proto__:null};var pendingRequests=this._scopeChain.length;function propertiesCollected(properties)
{for(var i=0;properties&&i<properties.length;++i)
result[properties[i].name]=true;if(--pendingRequests)
return;callback(result);}
for(var i=0;i<this._scopeChain.length;++i)
this._scopeChain[i].objects[0].deprecatedGetAllProperties(propertiesCollected);}
mergedScopeChain()
{let mergedScopes=[];
let scopes=this._scopeChain.slice();
let lastMarkedHash=null;function markAsBaseIfNeeded(scope){if(!scope.hash)
return false;if(scope.type!==WebInspector.ScopeChainNode.Type.Closure)
return false;if(scope.hash===lastMarkedHash)
return false;lastMarkedHash=scope.hash;scope.__baseClosureScope=true;return true;}
function shouldMergeClosureScopes(youngScope,oldScope,lastMerge){if(!youngScope||!oldScope)
return false;if(!youngScope.hash||!oldScope.hash)
return false;if(youngScope.type!==WebInspector.ScopeChainNode.Type.Closure)
return false;if(oldScope.type!==WebInspector.ScopeChainNode.Type.Closure)
return false;if(youngScope.hash!==oldScope.hash)
return false;if(lastMerge&&youngScope.hash===lastMerge.hash)
return false;return true;}
let lastScope=null;let lastMerge=null;for(let i=scopes.length-1;i>=0;--i){let scope=scopes[i];markAsBaseIfNeeded(scope);if(shouldMergeClosureScopes(scope,lastScope,lastMerge)){let type=WebInspector.ScopeChainNode.Type.Closure;let objects=lastScope.objects.concat(scope.objects);let merged=new WebInspector.ScopeChainNode(type,objects,scope.name,scope.location);merged.__baseClosureScope=true;mergedScopes.pop();mergedScopes.push(merged);lastMerge=merged;lastScope=null;}else{mergedScopes.push(scope);lastMerge=null;lastScope=scope;}}
mergedScopes=mergedScopes.reverse();for(let scope of mergedScopes){if(scope.type===WebInspector.ScopeChainNode.Type.Closure){if(scope.name===this._functionName)
scope.convertToLocalScope();break;}}
return mergedScopes;}
static functionNameFromPayload(payload)
{let functionName=payload.functionName;if(functionName==="global code")
return WebInspector.UIString("Global Code");if(functionName==="eval code")
return WebInspector.UIString("Eval Code");if(functionName==="module code")
return WebInspector.UIString("Module Code");return functionName;}
static programCodeFromPayload(payload)
{return payload.functionName.endsWith(" code");}
static fromDebuggerPayload(target,payload,scopeChain,sourceCodeLocation)
{let id=payload.callFrameId;let thisObject=WebInspector.RemoteObject.fromPayload(payload.this,target);let functionName=WebInspector.CallFrame.functionNameFromPayload(payload);let nativeCode=false;let programCode=WebInspector.CallFrame.programCodeFromPayload(payload);let isTailDeleted=payload.isTailDeleted;return new WebInspector.CallFrame(target,id,sourceCodeLocation,functionName,thisObject,scopeChain,nativeCode,programCode,isTailDeleted);}
static fromPayload(target,payload)
{let{url,scriptId}=payload;let nativeCode=false;let sourceCodeLocation=null;let functionName=WebInspector.CallFrame.functionNameFromPayload(payload);let programCode=WebInspector.CallFrame.programCodeFromPayload(payload);if(url==="[native code]"){nativeCode=true;url=null;}else if(url||scriptId){let sourceCode=null;if(scriptId){sourceCode=WebInspector.debuggerManager.scriptForIdentifier(scriptId,target);if(sourceCode&&sourceCode.resource)
sourceCode=sourceCode.resource;}
if(!sourceCode)
sourceCode=WebInspector.frameResourceManager.resourceForURL(url);if(!sourceCode)
sourceCode=WebInspector.debuggerManager.scriptsForURL(url,target)[0];if(sourceCode){let lineNumber=payload.lineNumber-1;sourceCodeLocation=sourceCode.createLazySourceCodeLocation(lineNumber,payload.columnNumber);}else{nativeCode=true;url=null;}}
const id=null;const thisObject=null;const scopeChain=null;const isTailDeleted=false;return new WebInspector.CallFrame(target,id,sourceCodeLocation,functionName,thisObject,scopeChain,nativeCode,programCode,isTailDeleted);}};WebInspector.Canvas=class Canvas extends WebInspector.Object
{constructor(identifier,contextType,frame,{domNode,cssCanvasName,contextAttributes,memoryCost}={})
{super();this._identifier=identifier;this._contextType=contextType;this._frame=frame;this._domNode=domNode||null;this._cssCanvasName=cssCanvasName||"";this._contextAttributes=contextAttributes||{};this._memoryCost=memoryCost||NaN;this._cssCanvasClientNodes=null;}
static fromPayload(payload)
{let contextType=null;switch(payload.contextType){case CanvasAgent.ContextType.Canvas2D:contextType=WebInspector.Canvas.ContextType.Canvas2D;break;case CanvasAgent.ContextType.WebGL:contextType=WebInspector.Canvas.ContextType.WebGL;break;case CanvasAgent.ContextType.WebGL2:contextType=WebInspector.Canvas.ContextType.WebGL2;break;case CanvasAgent.ContextType.WebGPU:contextType=WebInspector.Canvas.ContextType.WebGPU;break;default:console.error("Invalid canvas context type",payload.contextType);}
let frame=WebInspector.frameResourceManager.frameForIdentifier(payload.frameId);return new WebInspector.Canvas(payload.canvasId,contextType,frame,{domNode:payload.nodeId?WebInspector.domTreeManager.nodeForId(payload.nodeId):null,cssCanvasName:payload.cssCanvasName,contextAttributes:payload.contextAttributes,memoryCost:payload.memoryCost,});}
static displayNameForContextType(contextType)
{switch(contextType){case WebInspector.Canvas.ContextType.Canvas2D:return WebInspector.UIString("2D");case WebInspector.Canvas.ContextType.WebGL:return WebInspector.unlocalizedString("WebGL");case WebInspector.Canvas.ContextType.WebGL2:return WebInspector.unlocalizedString("WebGL2");case WebInspector.Canvas.ContextType.WebGPU:return WebInspector.unlocalizedString("WebGPU");default:console.error("Invalid canvas context type",contextType);}}
static resetUniqueDisplayNameNumbers()
{WebInspector.Canvas._nextUniqueDisplayNameNumber=1;}
get identifier(){return this._identifier;}
get contextType(){return this._contextType;}
get frame(){return this._frame;}
get cssCanvasName(){return this._cssCanvasName;}
get contextAttributes(){return this._contextAttributes;}
get memoryCost()
{return this._memoryCost;}
set memoryCost(memoryCost)
{if(memoryCost===this._memoryCost)
return;this._memoryCost=memoryCost;this.dispatchEventToListeners(WebInspector.Canvas.Event.MemoryChanged);}
get displayName()
{if(this._cssCanvasName)
return WebInspector.UIString("CSS canvas “%s”").format(this._cssCanvasName);if(this._domNode){let idSelector=this._domNode.escapedIdSelector;if(idSelector)
return WebInspector.UIString("Canvas %s").format(idSelector);}
if(!this._uniqueDisplayNameNumber)
this._uniqueDisplayNameNumber=this.constructor._nextUniqueDisplayNameNumber++;return WebInspector.UIString("Canvas %d").format(this._uniqueDisplayNameNumber);}
requestNode(callback)
{if(this._domNode){callback(this._domNode);return;}
WebInspector.domTreeManager.ensureDocument();CanvasAgent.requestNode(this._identifier,(error,nodeId)=>{if(error){callback(null);return;}
this._domNode=WebInspector.domTreeManager.nodeForId(nodeId);callback(this._domNode);});}
requestContent(callback)
{CanvasAgent.requestContent(this._identifier,(error,content)=>{if(error){callback(null);return;}
callback(content);});}
requestCSSCanvasClientNodes(callback)
{if(!this._cssCanvasName){callback([]);return;}
if(this._cssCanvasClientNodes){callback(this._cssCanvasClientNodes);return;}
WebInspector.domTreeManager.ensureDocument();CanvasAgent.requestCSSCanvasClientNodes(this._identifier,(error,clientNodeIds)=>{if(error){callback([]);return;}
clientNodeIds=Array.isArray(clientNodeIds)?clientNodeIds:[];this._cssCanvasClientNodes=clientNodeIds.map((clientNodeId)=>WebInspector.domTreeManager.nodeForId(clientNodeId));callback(this._cssCanvasClientNodes);});}
saveIdentityToCookie(cookie)
{cookie[WebInspector.Canvas.FrameURLCookieKey]=this._frame.url.hash;if(this._cssCanvasName)
cookie[WebInspector.Canvas.CSSCanvasNameCookieKey]=this._cssCanvasName;else if(this._domNode)
cookie[WebInspector.Canvas.NodePathCookieKey]=this._domNode.path;}
cssCanvasClientNodesChanged()
{if(!this._cssCanvasName)
return;this._cssCanvasClientNodes=null;this.dispatchEventToListeners(WebInspector.Canvas.Event.CSSCanvasClientNodesChanged);}};WebInspector.Canvas._nextUniqueDisplayNameNumber=1;WebInspector.Canvas.FrameURLCookieKey="canvas-frame-url";WebInspector.Canvas.CSSCanvasNameCookieKey="canvas-css-canvas-name";WebInspector.Canvas.ContextType={Canvas2D:"canvas-2d",WebGL:"webgl",WebGL2:"webgl2",WebGPU:"webgpu",};WebInspector.Canvas.ResourceSidebarType="resource-type-canvas";WebInspector.Canvas.Event={MemoryChanged:"canvas-memory-changed",CSSCanvasClientNodesChanged:"canvas-css-canvas-client-nodes-changed",};WebInspector.Collection=class Collection extends WebInspector.Object
{constructor(typeVerifier)
{super();this._items=new Set;this._typeVerifier=typeVerifier||WebInspector.Collection.TypeVerifier.Any;}
get items(){return this._items;}
get typeVerifier(){return this._typeVerifier;}
add(item)
{let isValidType=this._typeVerifier(item);if(!isValidType)
return;this._items.add(item);this.itemAdded(item);this.dispatchEventToListeners(WebInspector.Collection.Event.ItemAdded,{item});}
remove(item)
{let wasRemoved=this._items.delete(item);this.itemRemoved(item);this.dispatchEventToListeners(WebInspector.Collection.Event.ItemRemoved,{item});}
clear()
{let items=new Set(this._items);this._items.clear();this.itemsCleared(items);for(let item of items)
this.dispatchEventToListeners(WebInspector.Collection.Event.ItemRemoved,{item});}
toArray()
{return Array.from(this._items);}
toJSON()
{return this.toArray();}
itemAdded(item)
{}
itemRemoved(item)
{}
itemsCleared(items)
{}};WebInspector.Collection.Event={ItemAdded:"collection-item-added",ItemRemoved:"collection-item-removed",};WebInspector.Collection.TypeVerifier={Any:(object)=>true,ContentFlow:(object)=>object instanceof WebInspector.ContentFlow,Frame:(object)=>object instanceof WebInspector.Frame,Resource:(object)=>object instanceof WebInspector.Resource,Script:(object)=>object instanceof WebInspector.Script,CSSStyleSheet:(object)=>object instanceof WebInspector.CSSStyleSheet,Canvas:(object)=>object instanceof WebInspector.Canvas,};WebInspector.CollectionEntry=class CollectionEntry extends WebInspector.Object
{constructor(key,value)
{super();this._key=key;this._value=value;}
static fromPayload(payload,target)
{if(payload.key)
payload.key=WebInspector.RemoteObject.fromPayload(payload.key,target);if(payload.value)
payload.value=WebInspector.RemoteObject.fromPayload(payload.value,target);return new WebInspector.CollectionEntry(payload.key,payload.value);}
get key(){return this._key;}
get value(){return this._value;}};WebInspector.CollectionEntryPreview=class CollectionEntryPreview extends WebInspector.Object
{constructor(keyPreview,valuePreview)
{super();this._key=keyPreview;this._value=valuePreview;}
static fromPayload(payload)
{if(payload.key)
payload.key=WebInspector.ObjectPreview.fromPayload(payload.key);if(payload.value)
payload.value=WebInspector.ObjectPreview.fromPayload(payload.value);return new WebInspector.CollectionEntryPreview(payload.key,payload.value);}
get keyPreview(){return this._key;}
get valuePreview(){return this._value;}};WebInspector.Color=class Color
{constructor(format,components)
{this.format=format;if(format===WebInspector.Color.Format.HSL||format===WebInspector.Color.Format.HSLA)
this._hsla=components;else
this._rgba=components;this.valid=!components.some(isNaN);}
static fromString(colorString)
{let value=colorString.toLowerCase().replace(/%|\s+/g,"");let transparentKeywords=["transparent","rgba(0,0,0,0)","hsla(0,0,0,0)"];if(transparentKeywords.includes(value)){let color=new WebInspector.Color(WebInspector.Color.Format.Keyword,[0,0,0,0]);color.keyword="transparent";color.original=colorString;return color;}
let simple=/^(?:#([0-9a-f]{3,8})|rgb\(([^)]+)\)|(\w+)|hsl\(([^)]+)\))$/i;let match=colorString.match(simple);if(match){if(match[1]){ let hex=match[1].toUpperCase();let len=hex.length;if(len===3){return new WebInspector.Color(WebInspector.Color.Format.ShortHEX,[parseInt(hex.charAt(0)+hex.charAt(0),16),parseInt(hex.charAt(1)+hex.charAt(1),16),parseInt(hex.charAt(2)+hex.charAt(2),16),1]);}else if(len===6){return new WebInspector.Color(WebInspector.Color.Format.HEX,[parseInt(hex.substring(0,2),16),parseInt(hex.substring(2,4),16),parseInt(hex.substring(4,6),16),1]);}else if(len===4){return new WebInspector.Color(WebInspector.Color.Format.ShortHEXAlpha,[parseInt(hex.charAt(0)+hex.charAt(0),16),parseInt(hex.charAt(1)+hex.charAt(1),16),parseInt(hex.charAt(2)+hex.charAt(2),16),parseInt(hex.charAt(3)+hex.charAt(3),16)/255]);}else if(len===8){return new WebInspector.Color(WebInspector.Color.Format.HEXAlpha,[parseInt(hex.substring(0,2),16),parseInt(hex.substring(2,4),16),parseInt(hex.substring(4,6),16),parseInt(hex.substring(6,8),16)/255]);}else
return null;}else if(match[2]){ let rgb=match[2].split(/\s*,\s*/);if(rgb.length!==3)
return null;return new WebInspector.Color(WebInspector.Color.Format.RGB,[parseInt(rgb[0]),parseInt(rgb[1]),parseInt(rgb[2]),1]);}else if(match[3]){ let keyword=match[3].toLowerCase();if(!WebInspector.Color.Keywords.hasOwnProperty(keyword))
return null;let color=new WebInspector.Color(WebInspector.Color.Format.Keyword,WebInspector.Color.Keywords[keyword].concat(1));color.keyword=keyword;color.original=colorString;return color;}else if(match[4]){ let hsl=match[4].replace(/%/g,"").split(/\s*,\s*/);if(hsl.length!==3)
return null;return new WebInspector.Color(WebInspector.Color.Format.HSL,[parseInt(hsl[0]),parseInt(hsl[1]),parseInt(hsl[2]),1]);}}
let advanced=/^(?:rgba\(([^)]+)\)|hsla\(([^)]+)\))$/i;match=colorString.match(advanced);if(match){if(match[1]){ let rgba=match[1].split(/\s*,\s*/);if(rgba.length!==4)
return null;return new WebInspector.Color(WebInspector.Color.Format.RGBA,[parseInt(rgba[0]),parseInt(rgba[1]),parseInt(rgba[2]),Number.constrain(parseFloat(rgba[3]),0,1)]);}else if(match[2]){ let hsla=match[2].replace(/%/g,"").split(/\s*,\s*/);if(hsla.length!==4)
return null;return new WebInspector.Color(WebInspector.Color.Format.HSLA,[parseInt(hsla[0]),parseInt(hsla[1]),parseInt(hsla[2]),Number.constrain(parseFloat(hsla[3]),0,1)]);}}
return null;}
static rgb2hsv(r,g,b)
{r/=255;g/=255;b/=255;let min=Math.min(Math.min(r,g),b);let max=Math.max(Math.max(r,g),b);let delta=max-min;let h;let s;let v=max;if(delta===0)
h=0;else if(max===r)
h=(60*((g-b)/delta))%360;else if(max===g)
h=60*((b-r)/delta)+120;else if(max===b)
h=60*((r-g)/delta)+240;if(h<0)
h+=360; if(max===0)
s=0;else
s=1-(min/max);return[h,s,v];}
static hsv2rgb(h,s,v)
{if(s===0)
return[v,v,v];h/=60;let i=Math.floor(h);let data=[v*(1-s),v*(1-s*(h-i)),v*(1-s*(1-(h-i)))];let rgb;switch(i){case 0:rgb=[v,data[2],data[0]];break;case 1:rgb=[data[1],v,data[0]];break;case 2:rgb=[data[0],v,data[2]];break;case 3:rgb=[data[0],data[1],v];break;case 4:rgb=[data[2],data[0],v];break;default:rgb=[v,data[0],data[1]];break;}
return rgb;}
nextFormat(format)
{format=format||this.format;switch(format){case WebInspector.Color.Format.Original:case WebInspector.Color.Format.HEX:case WebInspector.Color.Format.HEXAlpha:return this.simple?WebInspector.Color.Format.RGB:WebInspector.Color.Format.RGBA;case WebInspector.Color.Format.RGB:case WebInspector.Color.Format.RGBA:return this.simple?WebInspector.Color.Format.HSL:WebInspector.Color.Format.HSLA;case WebInspector.Color.Format.HSL:case WebInspector.Color.Format.HSLA:if(this.isKeyword())
return WebInspector.Color.Format.Keyword;if(this.simple)
return this.canBeSerializedAsShortHEX()?WebInspector.Color.Format.ShortHEX:WebInspector.Color.Format.HEX;return this.canBeSerializedAsShortHEX()?WebInspector.Color.Format.ShortHEXAlpha:WebInspector.Color.Format.HEXAlpha;case WebInspector.Color.Format.ShortHEX:return WebInspector.Color.Format.HEX;case WebInspector.Color.Format.ShortHEXAlpha:return WebInspector.Color.Format.HEXAlpha;case WebInspector.Color.Format.Keyword:if(this.simple)
return this.canBeSerializedAsShortHEX()?WebInspector.Color.Format.ShortHEX:WebInspector.Color.Format.HEX;return this.canBeSerializedAsShortHEX()?WebInspector.Color.Format.ShortHEXAlpha:WebInspector.Color.Format.HEXAlpha;default:console.error("Unknown color format.");return null;}}
get alpha()
{return this._rgba?this._rgba[3]:this._hsla[3];}
get simple()
{return this.alpha===1;}
get rgb()
{let rgb=this.rgba.slice();rgb.pop();return rgb;}
get hsl()
{let hsl=this.hsla.slice();hsl.pop();return hsl;}
get rgba()
{if(!this._rgba)
this._rgba=this._hslaToRGBA(this._hsla);return this._rgba;}
get hsla()
{if(!this._hsla)
this._hsla=this._rgbaToHSLA(this.rgba);return this._hsla;}
copy()
{switch(this.format){case WebInspector.Color.Format.RGB:case WebInspector.Color.Format.HEX:case WebInspector.Color.Format.ShortHEX:case WebInspector.Color.Format.HEXAlpha:case WebInspector.Color.Format.ShortHEXAlpha:case WebInspector.Color.Format.Keyword:case WebInspector.Color.Format.RGBA:return new WebInspector.Color(this.format,this.rgba);case WebInspector.Color.Format.HSL:case WebInspector.Color.Format.HSLA:return new WebInspector.Color(this.format,this.hsla);}}
toString(format)
{if(!format)
format=this.format;switch(format){case WebInspector.Color.Format.Original:return this._toOriginalString();case WebInspector.Color.Format.RGB:return this._toRGBString();case WebInspector.Color.Format.RGBA:return this._toRGBAString();case WebInspector.Color.Format.HSL:return this._toHSLString();case WebInspector.Color.Format.HSLA:return this._toHSLAString();case WebInspector.Color.Format.HEX:return this._toHEXString();case WebInspector.Color.Format.ShortHEX:return this._toShortHEXString();case WebInspector.Color.Format.HEXAlpha:return this._toHEXAlphaString();case WebInspector.Color.Format.ShortHEXAlpha:return this._toShortHEXAlphaString();case WebInspector.Color.Format.Keyword:return this._toKeywordString();}
throw"invalid color format";}
isKeyword()
{if(this.keyword)
return true;if(!this.simple)
return Array.shallowEqual(this._rgba,[0,0,0,0])||Array.shallowEqual(this._hsla,[0,0,0,0]);let rgb=(this._rgba&&this._rgba.slice(0,3))||this._hslToRGB(this._hsla);return Object.keys(WebInspector.Color.Keywords).some(key=>Array.shallowEqual(WebInspector.Color.Keywords[key],rgb));}
canBeSerializedAsShortHEX()
{let rgba=this.rgba||this._hslaToRGBA(this._hsla);let r=this._componentToHexValue(rgba[0]);if(r[0]!==r[1])
return false;let g=this._componentToHexValue(rgba[1]);if(g[0]!==g[1])
return false;let b=this._componentToHexValue(rgba[2]);if(b[0]!==b[1])
return false;if(!this.simple){let a=this._componentToHexValue(Math.round(rgba[3]*255));if(a[0]!==a[1])
return false;}
return true;}
_toOriginalString()
{return this.original||this._toKeywordString();}
_toKeywordString()
{if(this.keyword)
return this.keyword;let rgba=this.rgba;if(!this.simple){if(rgba[0]===0&&rgba[1]===0&&rgba[2]===0&&rgba[3]===0)
return"transparent";return this._toRGBAString();}
let keywords=WebInspector.Color.Keywords;for(let keyword in keywords){if(!keywords.hasOwnProperty(keyword))
continue;let keywordRGB=keywords[keyword];if(keywordRGB[0]===rgba[0]&&keywordRGB[1]===rgba[1]&&keywordRGB[2]===rgba[2])
return keyword;}
return this._toRGBString();}
_toShortHEXString()
{if(!this.simple)
return this._toRGBAString();let rgba=this.rgba;let r=this._componentToHexValue(rgba[0]);let g=this._componentToHexValue(rgba[1]);let b=this._componentToHexValue(rgba[2]);if(r[0]===r[1]&&g[0]===g[1]&&b[0]===b[1])
return"#"+r[0]+g[0]+b[0];else
return"#"+r+g+b;}
_toHEXString()
{if(!this.simple)
return this._toRGBAString();let rgba=this.rgba;let r=this._componentToHexValue(rgba[0]);let g=this._componentToHexValue(rgba[1]);let b=this._componentToHexValue(rgba[2]);return"#"+r+g+b;}
_toShortHEXAlphaString()
{let rgba=this.rgba;let r=this._componentToHexValue(rgba[0]);let g=this._componentToHexValue(rgba[1]);let b=this._componentToHexValue(rgba[2]);let a=this._componentToHexValue(Math.round(rgba[3]*255));if(r[0]===r[1]&&g[0]===g[1]&&b[0]===b[1]&&a[0]===a[1])
return"#"+r[0]+g[0]+b[0]+a[0];else
return"#"+r+g+b+a;}
_toHEXAlphaString()
{let rgba=this.rgba;let r=this._componentToHexValue(rgba[0]);let g=this._componentToHexValue(rgba[1]);let b=this._componentToHexValue(rgba[2]);let a=this._componentToHexValue(Math.round(rgba[3]*255));return"#"+r+g+b+a;}
_toRGBString()
{if(!this.simple)
return this._toRGBAString();let rgba=this.rgba.slice(0,-1);rgba=rgba.map((value)=>value.maxDecimals(2));return"rgb("+rgba.join(", ")+")";}
_toRGBAString()
{let rgba=this.rgba;rgba=rgba.map((value)=>value.maxDecimals(2));return"rgba("+rgba.join(", ")+")";}
_toHSLString()
{if(!this.simple)
return this._toHSLAString();let hsla=this.hsla;hsla=hsla.map((value)=>value.maxDecimals(2));return"hsl("+hsla[0]+", "+hsla[1]+"%, "+hsla[2]+"%)";}
_toHSLAString()
{let hsla=this.hsla;hsla=hsla.map((value)=>value.maxDecimals(2));return"hsla("+hsla[0]+", "+hsla[1]+"%, "+hsla[2]+"%, "+hsla[3]+")";}
_componentToNumber(value)
{return Number.constrain(value,0,255);}
_componentToHexValue(value)
{let hex=this._componentToNumber(value).toString(16);if(hex.length===1)
hex="0"+hex;return hex;}
_rgbToHSL(rgb)
{let r=this._componentToNumber(rgb[0])/255;let g=this._componentToNumber(rgb[1])/255;let b=this._componentToNumber(rgb[2])/255;let max=Math.max(r,g,b);let min=Math.min(r,g,b);let diff=max-min;let add=max+min;let h;let s;let l=0.5*add;if(min===max)
h=0;else if(r===max)
h=((60*(g-b)/diff)+360)%360;else if(g===max)
h=(60*(b-r)/diff)+120;else
h=(60*(r-g)/diff)+240;if(l===0)
s=0;else if(l===1)
s=1;else if(l<=0.5)
s=diff/add;else
s=diff/(2-add);return[Math.round(h),Math.round(s*100),Math.round(l*100)];}
_hslToRGB(hsl)
{let h=parseFloat(hsl[0])/360;let s=parseFloat(hsl[1])/100;let l=parseFloat(hsl[2])/100;h*=6;let sArray=[l+=s*=l<.5?l:1-l,l-h%1*s*2,l-=s*=2,l,l+h%1*s,l+s];return[Math.round(sArray[~~h%6]*255),Math.round(sArray[(h|16)%6]*255),Math.round(sArray[(h|8)%6]*255)];}
_rgbaToHSLA(rgba)
{let hsl=this._rgbToHSL(rgba);hsl.push(rgba[3]);return hsl;}
_hslaToRGBA(hsla)
{let rgba=this._hslToRGB(hsla);rgba.push(hsla[3]);return rgba;}};WebInspector.Color.Format={Original:"color-format-original",Keyword:"color-format-keyword",HEX:"color-format-hex",ShortHEX:"color-format-short-hex",HEXAlpha:"color-format-hex-alpha",ShortHEXAlpha:"color-format-short-hex-alpha",RGB:"color-format-rgb",RGBA:"color-format-rgba",HSL:"color-format-hsl",HSLA:"color-format-hsla"};WebInspector.Color.Keywords={"aliceblue":[240,248,255],"antiquewhite":[250,235,215],"aquamarine":[127,255,212],"azure":[240,255,255],"beige":[245,245,220],"bisque":[255,228,196],"black":[0,0,0],"blanchedalmond":[255,235,205],"blue":[0,0,255],"blueviolet":[138,43,226],"brown":[165,42,42],"burlywood":[222,184,135],"cadetblue":[95,158,160],"chartreuse":[127,255,0],"chocolate":[210,105,30],"coral":[255,127,80],"cornflowerblue":[100,149,237],"cornsilk":[255,248,220],"crimson":[237,164,61],"cyan":[0,255,255],"darkblue":[0,0,139],"darkcyan":[0,139,139],"darkgoldenrod":[184,134,11],"darkgray":[169,169,169],"darkgreen":[0,100,0],"darkgrey":[169,169,169],"darkkhaki":[189,183,107],"darkmagenta":[139,0,139],"darkolivegreen":[85,107,47],"darkorange":[255,140,0],"darkorchid":[153,50,204],"darkred":[139,0,0],"darksalmon":[233,150,122],"darkseagreen":[143,188,143],"darkslateblue":[72,61,139],"darkslategray":[47,79,79],"darkslategrey":[47,79,79],"darkturquoise":[0,206,209],"darkviolet":[148,0,211],"deeppink":[255,20,147],"deepskyblue":[0,191,255],"dimgray":[105,105,105],"dimgrey":[105,105,105],"dodgerblue":[30,144,255],"firebrick":[178,34,34],"floralwhite":[255,250,240],"forestgreen":[34,139,34],"gainsboro":[220,220,220],"ghostwhite":[248,248,255],"gold":[255,215,0],"goldenrod":[218,165,32],"gray":[128,128,128],"green":[0,128,0],"greenyellow":[173,255,47],"grey":[128,128,128],"honeydew":[240,255,240],"hotpink":[255,105,180],"indianred":[205,92,92],"indigo":[75,0,130],"ivory":[255,255,240],"khaki":[240,230,140],"lavender":[230,230,250],"lavenderblush":[255,240,245],"lawngreen":[124,252,0],"lemonchiffon":[255,250,205],"lightblue":[173,216,230],"lightcoral":[240,128,128],"lightcyan":[224,255,255],"lightgoldenrodyellow":[250,250,210],"lightgray":[211,211,211],"lightgreen":[144,238,144],"lightgrey":[211,211,211],"lightpink":[255,182,193],"lightsalmon":[255,160,122],"lightseagreen":[32,178,170],"lightskyblue":[135,206,250],"lightslategray":[119,136,153],"lightslategrey":[119,136,153],"lightsteelblue":[176,196,222],"lightyellow":[255,255,224],"lime":[0,255,0],"limegreen":[50,205,50],"linen":[250,240,230],"magenta":[255,0,255],"maroon":[128,0,0],"mediumaquamarine":[102,205,170],"mediumblue":[0,0,205],"mediumorchid":[186,85,211],"mediumpurple":[147,112,219],"mediumseagreen":[60,179,113],"mediumslateblue":[123,104,238],"mediumspringgreen":[0,250,154],"mediumturquoise":[72,209,204],"mediumvioletred":[199,21,133],"midnightblue":[25,25,112],"mintcream":[245,255,250],"mistyrose":[255,228,225],"moccasin":[255,228,181],"navajowhite":[255,222,173],"navy":[0,0,128],"oldlace":[253,245,230],"olive":[128,128,0],"olivedrab":[107,142,35],"orange":[255,165,0],"orangered":[255,69,0],"orchid":[218,112,214],"palegoldenrod":[238,232,170],"palegreen":[152,251,152],"paleturquoise":[175,238,238],"palevioletred":[219,112,147],"papayawhip":[255,239,213],"peachpuff":[255,218,185],"peru":[205,133,63],"pink":[255,192,203],"plum":[221,160,221],"powderblue":[176,224,230],"purple":[128,0,128],"rebeccapurple":[102,51,153],"red":[255,0,0],"rosybrown":[188,143,143],"royalblue":[65,105,225],"saddlebrown":[139,69,19],"salmon":[250,128,114],"sandybrown":[244,164,96],"seagreen":[46,139,87],"seashell":[255,245,238],"sienna":[160,82,45],"silver":[192,192,192],"skyblue":[135,206,235],"slateblue":[106,90,205],"slategray":[112,128,144],"slategrey":[112,128,144],"snow":[255,250,250],"springgreen":[0,255,127],"steelblue":[70,130,180],"tan":[210,180,140],"teal":[0,128,128],"thistle":[216,191,216],"tomato":[255,99,71],"turquoise":[64,224,208],"violet":[238,130,238],"wheat":[245,222,179],"white":[255,255,255],"whitesmoke":[245,245,245],"yellow":[255,255,0],"yellowgreen":[154,205,50]};WebInspector.ConsoleCommandResultMessage=class ConsoleCommandResult extends WebInspector.ConsoleMessage
{constructor(target,result,wasThrown,savedResultIndex,shouldRevealConsole=true)
{let source=WebInspector.ConsoleMessage.MessageSource.JS;let level=wasThrown?WebInspector.ConsoleMessage.MessageLevel.Error:WebInspector.ConsoleMessage.MessageLevel.Log;let type=WebInspector.ConsoleMessage.MessageType.Result;super(target,source,level,"",type,undefined,undefined,undefined,0,[result],undefined,undefined);this._savedResultIndex=savedResultIndex;this._shouldRevealConsole=shouldRevealConsole;if(this._savedResultIndex&&this._savedResultIndex>WebInspector.ConsoleCommandResultMessage.maximumSavedResultIndex)
WebInspector.ConsoleCommandResultMessage.maximumSavedResultIndex=this._savedResultIndex;}
static clearMaximumSavedResultIndex()
{WebInspector.ConsoleCommandResultMessage.maximumSavedResultIndex=0;}
get savedResultIndex()
{return this._savedResultIndex;}
get shouldRevealConsole()
{return this._shouldRevealConsole;}};WebInspector.ConsoleCommandResultMessage.maximumSavedResultIndex=0;WebInspector.ContentFlow=class ContentFlow extends WebInspector.Object
{constructor(documentNodeIdentifier,name,overset,contentNodes)
{super();this._documentNodeIdentifier=documentNodeIdentifier;this._name=name;this._overset=overset;this._contentNodes=contentNodes;}
get id()
{return this._documentNodeIdentifier+":"+this._name;}
get documentNodeIdentifier()
{return this._documentNodeIdentifier;}
get name()
{return this._name;}
get overset()
{return this._overset;}
set overset(overset)
{if(this._overset===overset)
return;this._overset=overset;this.dispatchEventToListeners(WebInspector.ContentFlow.Event.FlowOversetWasChanged);}
get contentNodes()
{return this._contentNodes;}
insertContentNodeBefore(contentNode,referenceNode)
{var index=this._contentNodes.indexOf(referenceNode);this._contentNodes.splice(index,0,contentNode);this.dispatchEventToListeners(WebInspector.ContentFlow.Event.ContentNodeWasAdded,{node:contentNode,before:referenceNode});}
appendContentNode(contentNode)
{this._contentNodes.push(contentNode);this.dispatchEventToListeners(WebInspector.ContentFlow.Event.ContentNodeWasAdded,{node:contentNode});}
removeContentNode(contentNode)
{var index=this._contentNodes.indexOf(contentNode);this._contentNodes.splice(index,1);this.dispatchEventToListeners(WebInspector.ContentFlow.Event.ContentNodeWasRemoved,{node:contentNode});}};WebInspector.ContentFlow.Event={OversetWasChanged:"content-flow-overset-was-changed",ContentNodeWasAdded:"content-flow-content-node-was-added",ContentNodeWasRemoved:"content-flow-content-node-was-removed"};WebInspector.CookieStorageObject=class CookieStorageObject
{constructor(host)
{this._host=host;}
static cookieMatchesResourceURL(cookie,resourceURL)
{var parsedURL=parseURL(resourceURL);if(!parsedURL||!WebInspector.CookieStorageObject.cookieDomainMatchesResourceDomain(cookie.domain,parsedURL.host))
return false;return parsedURL.path.startsWith(cookie.path)&&(!cookie.port||parsedURL.port===cookie.port)&&(!cookie.secure||parsedURL.scheme==="https");}
static cookieDomainMatchesResourceDomain(cookieDomain,resourceDomain)
{if(cookieDomain.charAt(0)!==".")
return resourceDomain===cookieDomain;return!!resourceDomain.match(new RegExp("^(?:[^\\.]+\\.)*"+cookieDomain.substring(1).escapeForRegExp()+"$"),"i");}
get host()
{return this._host;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.CookieStorageObject.CookieHostCookieKey]=this.host;}};WebInspector.CookieStorageObject.TypeIdentifier="cookie-storage";WebInspector.CookieStorageObject.CookieHostCookieKey="cookie-storage-host";WebInspector.DOMBreakpoint=class DOMBreakpoint extends WebInspector.Object
{constructor(domNodeOrInfo,type,disabled)
{super();if(domNodeOrInfo instanceof WebInspector.DOMNode){this._domNodeIdentifier=domNodeOrInfo.id;this._path=domNodeOrInfo.path();this._url=WebInspector.frameResourceManager.mainFrame.url;}else if(domNodeOrInfo&&typeof domNodeOrInfo==="object"){this._domNodeIdentifier=null;this._path=domNodeOrInfo.path;this._url=domNodeOrInfo.url;}
this._type=type;this._disabled=disabled||false;}
get type(){return this._type;}
get url(){return this._url;}
get path(){return this._path;}
get disabled()
{return this._disabled;}
set disabled(disabled)
{if(this._disabled===disabled)
return;this._disabled=disabled;this.dispatchEventToListeners(WebInspector.DOMBreakpoint.Event.DisabledStateDidChange);}
get domNodeIdentifier()
{return this._domNodeIdentifier;}
set domNodeIdentifier(nodeIdentifier)
{if(this._domNodeIdentifier===nodeIdentifier)
return;let data={};if(!nodeIdentifier)
data.oldNodeIdentifier=this._domNodeIdentifier;this._domNodeIdentifier=nodeIdentifier;this.dispatchEventToListeners(WebInspector.DOMBreakpoint.Event.ResolvedStateDidChange,data);}
get serializableInfo()
{let info={url:this._url,path:this._path,type:this._type};if(this._disabled)
info.disabled=true;return info;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.DOMBreakpoint.DocumentURLCookieKey]=this.url;cookie[WebInspector.DOMBreakpoint.NodePathCookieKey]=this.path;cookie[WebInspector.DOMBreakpoint.TypeCookieKey]=this.type;}};WebInspector.DOMBreakpoint.DocumentURLCookieKey="dom-breakpoint-document-url";WebInspector.DOMBreakpoint.NodePathCookieKey="dom-breakpoint-node-path";WebInspector.DOMBreakpoint.TypeCookieKey="dom-breakpoint-type";WebInspector.DOMBreakpoint.Type={SubtreeModified:"subtree-modified",AttributeModified:"attribute-modified",NodeRemoved:"node-removed",};WebInspector.DOMBreakpoint.Event={DisabledStateDidChange:"dom-breakpoint-disabled-state-did-change",ResolvedStateDidChange:"dom-breakpoint-resolved-state-did-change",};WebInspector.DOMNode=class DOMNode extends WebInspector.Object
{constructor(domTreeManager,doc,isInShadowTree,payload)
{super();this._domTreeManager=domTreeManager;this._isInShadowTree=isInShadowTree;this.id=payload.nodeId;this._domTreeManager._idToDOMNode[this.id]=this;this._nodeType=payload.nodeType;this._nodeName=payload.nodeName;this._localName=payload.localName;this._nodeValue=payload.nodeValue;this._pseudoType=payload.pseudoType;this._shadowRootType=payload.shadowRootType;this._computedRole=payload.role;this._contentSecurityPolicyHash=payload.contentSecurityPolicyHash;if(this._nodeType===Node.DOCUMENT_NODE)
this.ownerDocument=this;else
this.ownerDocument=doc;this._attributes=[];this._attributesMap=new Map;if(payload.attributes)
this._setAttributesPayload(payload.attributes);this._childNodeCount=payload.childNodeCount;this._children=null;this._filteredChildren=null;this._filteredChildrenNeedsUpdating=true;this._nextSibling=null;this._previousSibling=null;this.parentNode=null;this._enabledPseudoClasses=[];
this._shadowRoots=[];if(payload.shadowRoots){for(var i=0;i<payload.shadowRoots.length;++i){var root=payload.shadowRoots[i];var node=new WebInspector.DOMNode(this._domTreeManager,this.ownerDocument,true,root);node.parentNode=this;this._shadowRoots.push(node);}}
if(payload.children)
this._setChildrenPayload(payload.children);else if(this._shadowRoots.length&&!this._childNodeCount)
this._children=this._shadowRoots.slice();if(this._nodeType===Node.ELEMENT_NODE)
this._customElementState=payload.customElementState||WebInspector.DOMNode.CustomElementState.Builtin;else
this._customElementState=null;if(payload.templateContent){this._templateContent=new WebInspector.DOMNode(this._domTreeManager,this.ownerDocument,false,payload.templateContent);this._templateContent.parentNode=this;}
this._pseudoElements=new Map;if(payload.pseudoElements){for(var i=0;i<payload.pseudoElements.length;++i){var node=new WebInspector.DOMNode(this._domTreeManager,this.ownerDocument,this._isInShadowTree,payload.pseudoElements[i]);node.parentNode=this;this._pseudoElements.set(node.pseudoType(),node);}}
if(payload.contentDocument){this._contentDocument=new WebInspector.DOMNode(this._domTreeManager,null,false,payload.contentDocument);this._children=[this._contentDocument];this._renumber();}
if(payload.frameId)
this._frameIdentifier=payload.frameId;if(this._nodeType===Node.ELEMENT_NODE){if(this.ownerDocument&&!this.ownerDocument.documentElement&&this._nodeName==="HTML")
this.ownerDocument.documentElement=this;if(this.ownerDocument&&!this.ownerDocument.body&&this._nodeName==="BODY")
this.ownerDocument.body=this;if(payload.documentURL)
this.documentURL=payload.documentURL;}else if(this._nodeType===Node.DOCUMENT_TYPE_NODE){this.publicId=payload.publicId;this.systemId=payload.systemId;}else if(this._nodeType===Node.DOCUMENT_NODE){this.documentURL=payload.documentURL;this.xmlVersion=payload.xmlVersion;}else if(this._nodeType===Node.ATTRIBUTE_NODE){this.name=payload.name;this.value=payload.value;}}
get frameIdentifier()
{return this._frameIdentifier||this.ownerDocument.frameIdentifier;}
get frame()
{if(!this._frame)
this._frame=WebInspector.frameResourceManager.frameForIdentifier(this.frameIdentifier);return this._frame;}
get children()
{if(!this._children)
return null;if(WebInspector.showShadowDOMSetting.value)
return this._children;if(this._filteredChildrenNeedsUpdating){this._filteredChildrenNeedsUpdating=false;this._filteredChildren=this._children.filter(function(node){return!node._isInShadowTree;});}
return this._filteredChildren;}
get firstChild()
{var children=this.children;if(children&&children.length>0)
return children[0];return null;}
get lastChild()
{var children=this.children;if(children&&children.length>0)
return children.lastValue;return null;}
get nextSibling()
{if(WebInspector.showShadowDOMSetting.value)
return this._nextSibling;var node=this._nextSibling;while(node){if(!node._isInShadowTree)
return node;node=node._nextSibling;}
return null;}
get previousSibling()
{if(WebInspector.showShadowDOMSetting.value)
return this._previousSibling;var node=this._previousSibling;while(node){if(!node._isInShadowTree)
return node;node=node._previousSibling;}
return null;}
get childNodeCount()
{var children=this.children;if(children)
return children.length;if(WebInspector.showShadowDOMSetting.value)
return this._childNodeCount+this._shadowRoots.length;return this._childNodeCount;}
set childNodeCount(count)
{this._childNodeCount=count;}
computedRole()
{return this._computedRole;}
contentSecurityPolicyHash()
{return this._contentSecurityPolicyHash;}
hasAttributes()
{return this._attributes.length>0;}
hasChildNodes()
{return this.childNodeCount>0;}
hasShadowRoots()
{return!!this._shadowRoots.length;}
isInShadowTree()
{return this._isInShadowTree;}
isInUserAgentShadowTree()
{return this._isInShadowTree&&this.ancestorShadowRoot().isUserAgentShadowRoot();}
isCustomElement()
{return this._customElementState===WebInspector.DOMNode.CustomElementState.Custom;}
customElementState()
{return this._customElementState;}
isShadowRoot()
{return!!this._shadowRootType;}
isUserAgentShadowRoot()
{return this._shadowRootType===WebInspector.DOMNode.ShadowRootType.UserAgent;}
ancestorShadowRoot()
{if(!this._isInShadowTree)
return null;let node=this;while(node&&!node.isShadowRoot())
node=node.parentNode;return node;}
ancestorShadowHost()
{let shadowRoot=this.ancestorShadowRoot();return shadowRoot?shadowRoot.parentNode:null;}
isPseudoElement()
{return this._pseudoType!==undefined;}
nodeType()
{return this._nodeType;}
nodeName()
{return this._nodeName;}
nodeNameInCorrectCase()
{return this.isXMLNode()?this.nodeName():this.nodeName().toLowerCase();}
setNodeName(name,callback)
{DOMAgent.setNodeName(this.id,name,this._makeUndoableCallback(callback));}
localName()
{return this._localName;}
templateContent()
{return this._templateContent||null;}
pseudoType()
{return this._pseudoType;}
hasPseudoElements()
{return this._pseudoElements.size>0;}
pseudoElements()
{return this._pseudoElements;}
beforePseudoElement()
{return this._pseudoElements.get(WebInspector.DOMNode.PseudoElementType.Before)||null;}
afterPseudoElement()
{return this._pseudoElements.get(WebInspector.DOMNode.PseudoElementType.After)||null;}
shadowRoots()
{return this._shadowRoots;}
shadowRootType()
{return this._shadowRootType;}
nodeValue()
{return this._nodeValue;}
setNodeValue(value,callback)
{DOMAgent.setNodeValue(this.id,value,this._makeUndoableCallback(callback));}
getAttribute(name)
{let attr=this._attributesMap.get(name);return attr?attr.value:undefined;}
setAttribute(name,text,callback)
{DOMAgent.setAttributesAsText(this.id,text,name,this._makeUndoableCallback(callback));}
setAttributeValue(name,value,callback)
{DOMAgent.setAttributeValue(this.id,name,value,this._makeUndoableCallback(callback));}
attributes()
{return this._attributes;}
removeAttribute(name,callback)
{function mycallback(error,success)
{if(!error){this._attributesMap.delete(name);for(var i=0;i<this._attributes.length;++i){if(this._attributes[i].name===name){this._attributes.splice(i,1);break;}}}
this._makeUndoableCallback(callback)(error);}
DOMAgent.removeAttribute(this.id,name,mycallback.bind(this));}
toggleClass(className,flag)
{if(!className||!className.length)
return;if(this.isPseudoElement()){this.parentNode.toggleClass(className,flag);return;}
if(this.nodeType()!==Node.ELEMENT_NODE)
return;function resolvedNode(object)
{if(!object)
return;function inspectedPage_node_toggleClass(className,flag)
{this.classList.toggle(className,flag);}
object.callFunction(inspectedPage_node_toggleClass,[className,flag]);object.release();}
WebInspector.RemoteObject.resolveNode(this,"",resolvedNode);}
getChildNodes(callback)
{if(this.children){if(callback)
callback(this.children);return;}
function mycallback(error){if(!error&&callback)
callback(this.children);}
DOMAgent.requestChildNodes(this.id,mycallback.bind(this));}
getSubtree(depth,callback)
{function mycallback(error)
{if(callback)
callback(error?null:this.children);}
DOMAgent.requestChildNodes(this.id,depth,mycallback.bind(this));}
getOuterHTML(callback)
{DOMAgent.getOuterHTML(this.id,callback);}
setOuterHTML(html,callback)
{DOMAgent.setOuterHTML(this.id,html,this._makeUndoableCallback(callback));}
removeNode(callback)
{DOMAgent.removeNode(this.id,this._makeUndoableCallback(callback));}
copyNode()
{function copy(error,text)
{if(!error)
InspectorFrontendHost.copyText(text);}
DOMAgent.getOuterHTML(this.id,copy);}
getEventListeners(callback)
{DOMAgent.getEventListenersForNode(this.id,callback);}
accessibilityProperties(callback)
{function accessibilityPropertiesCallback(error,accessibilityProperties)
{if(!error&&callback&&accessibilityProperties){callback({activeDescendantNodeId:accessibilityProperties.activeDescendantNodeId,busy:accessibilityProperties.busy,checked:accessibilityProperties.checked,childNodeIds:accessibilityProperties.childNodeIds,controlledNodeIds:accessibilityProperties.controlledNodeIds,current:accessibilityProperties.current,disabled:accessibilityProperties.disabled,exists:accessibilityProperties.exists,expanded:accessibilityProperties.expanded,flowedNodeIds:accessibilityProperties.flowedNodeIds,focused:accessibilityProperties.focused,ignored:accessibilityProperties.ignored,ignoredByDefault:accessibilityProperties.ignoredByDefault,invalid:accessibilityProperties.invalid,isPopupButton:accessibilityProperties.isPopUpButton,headingLevel:accessibilityProperties.headingLevel,hierarchyLevel:accessibilityProperties.hierarchyLevel,hidden:accessibilityProperties.hidden,label:accessibilityProperties.label,liveRegionAtomic:accessibilityProperties.liveRegionAtomic,liveRegionRelevant:accessibilityProperties.liveRegionRelevant,liveRegionStatus:accessibilityProperties.liveRegionStatus,mouseEventNodeId:accessibilityProperties.mouseEventNodeId,nodeId:accessibilityProperties.nodeId,ownedNodeIds:accessibilityProperties.ownedNodeIds,parentNodeId:accessibilityProperties.parentNodeId,pressed:accessibilityProperties.pressed,readonly:accessibilityProperties.readonly,required:accessibilityProperties.required,role:accessibilityProperties.role,selected:accessibilityProperties.selected,selectedChildNodeIds:accessibilityProperties.selectedChildNodeIds});}}
DOMAgent.getAccessibilityPropertiesForNode(this.id,accessibilityPropertiesCallback.bind(this));}
path()
{var path=[];var node=this;while(node&&"index"in node&&node._nodeName.length){path.push([node.index,node._nodeName]);node=node.parentNode;}
path.reverse();return path.join(",");}
get escapedIdSelector()
{let id=this.getAttribute("id");if(!id)
return"";id=id.trim();if(!id.length)
return"";id=CSS.escape(id);if(/[\s'"]/.test(id))
return`[id=\"${id}\"]`;return`#${id}`;}
get escapedClassSelector()
{let classes=this.getAttribute("class");if(!classes)
return"";classes=classes.trim();if(!classes.length)
return"";let foundClasses=new Set;return classes.split(/\s+/).reduce((selector,className)=>{if(!className.length||foundClasses.has(className))
return selector;foundClasses.add(className);return`${selector}.${CSS.escape(className)}`;},"");}
get displayName()
{return this.nodeNameInCorrectCase()+this.escapedIdSelector+this.escapedClassSelector;}
appropriateSelectorFor(justSelector)
{if(this.isPseudoElement())
return this.parentNode.appropriateSelectorFor()+"::"+this._pseudoType;let lowerCaseName=this.localName()||this.nodeName().toLowerCase();let id=this.escapedIdSelector;if(id.length)
return justSelector?id:lowerCaseName+id;let classes=this.escapedClassSelector;if(classes.length)
return justSelector?classes:lowerCaseName+classes;if(lowerCaseName==="input"&&this.getAttribute("type"))
return lowerCaseName+"[type=\""+this.getAttribute("type")+"\"]";return lowerCaseName;}
isAncestor(node)
{if(!node)
return false;var currentNode=node.parentNode;while(currentNode){if(this===currentNode)
return true;currentNode=currentNode.parentNode;}
return false;}
isDescendant(descendant)
{return descendant!==null&&descendant.isAncestor(this);}
get ownerSVGElement()
{if(this._nodeName==="svg")
return this;if(!this.parentNode)
return null;return this.parentNode.ownerSVGElement;}
isSVGElement()
{return!!this.ownerSVGElement;}
_setAttributesPayload(attrs)
{this._attributes=[];this._attributesMap=new Map;for(var i=0;i<attrs.length;i+=2)
this._addAttribute(attrs[i],attrs[i+1]);}
_insertChild(prev,payload)
{var node=new WebInspector.DOMNode(this._domTreeManager,this.ownerDocument,this._isInShadowTree,payload);if(!prev){if(!this._children){ this._children=this._shadowRoots.concat([node]);}else
this._children.unshift(node);}else
this._children.splice(this._children.indexOf(prev)+1,0,node);this._renumber();return node;}
_removeChild(node)
{if(node.isPseudoElement()){this._pseudoElements.delete(node.pseudoType());node.parentNode=null;}else{this._children.splice(this._children.indexOf(node),1);node.parentNode=null;this._renumber();}}
_setChildrenPayload(payloads)
{if(this._contentDocument)
return;this._children=this._shadowRoots.slice();for(var i=0;i<payloads.length;++i){var node=new WebInspector.DOMNode(this._domTreeManager,this.ownerDocument,this._isInShadowTree,payloads[i]);this._children.push(node);}
this._renumber();}
_renumber()
{this._filteredChildrenNeedsUpdating=true;var childNodeCount=this._children.length;if(childNodeCount===0)
return;for(var i=0;i<childNodeCount;++i){var child=this._children[i];child.index=i;child._nextSibling=i+1<childNodeCount?this._children[i+1]:null;child._previousSibling=i-1>=0?this._children[i-1]:null;child.parentNode=this;}}
_addAttribute(name,value)
{let attr={name,value,_node:this};this._attributesMap.set(name,attr);this._attributes.push(attr);}
_setAttribute(name,value)
{let attr=this._attributesMap.get(name);if(attr)
attr.value=value;else
this._addAttribute(name,value);}
_removeAttribute(name)
{let attr=this._attributesMap.get(name);if(attr){this._attributes.remove(attr);this._attributesMap.delete(name);}}
moveTo(targetNode,anchorNode,callback)
{DOMAgent.moveTo(this.id,targetNode.id,anchorNode?anchorNode.id:undefined,this._makeUndoableCallback(callback));}
isXMLNode()
{return!!this.ownerDocument&&!!this.ownerDocument.xmlVersion;}
get enabledPseudoClasses()
{return this._enabledPseudoClasses;}
setPseudoClassEnabled(pseudoClass,enabled)
{var pseudoClasses=this._enabledPseudoClasses;if(enabled){if(pseudoClasses.includes(pseudoClass))
return;pseudoClasses.push(pseudoClass);}else{if(!pseudoClasses.includes(pseudoClass))
return;pseudoClasses.remove(pseudoClass);}
function changed(error)
{if(!error)
this.dispatchEventToListeners(WebInspector.DOMNode.Event.EnabledPseudoClassesChanged);}
CSSAgent.forcePseudoState(this.id,pseudoClasses,changed.bind(this));}
_makeUndoableCallback(callback)
{return function(error)
{if(!error)
DOMAgent.markUndoableState();if(callback)
callback.apply(null,arguments);};}};WebInspector.DOMNode.Event={EnabledPseudoClassesChanged:"dom-node-enabled-pseudo-classes-did-change",AttributeModified:"dom-node-attribute-modified",AttributeRemoved:"dom-node-attribute-removed"};WebInspector.DOMNode.PseudoElementType={Before:"before",After:"after",};WebInspector.DOMNode.ShadowRootType={UserAgent:"user-agent",Closed:"closed",Open:"open",};WebInspector.DOMNode.CustomElementState={Builtin:"builtin",Custom:"custom",Waiting:"waiting",Failed:"failed",};WebInspector.DOMNodeStyles=class DOMNodeStyles extends WebInspector.Object
{constructor(node)
{super();this._node=node||null;this._rulesMap={};this._styleDeclarationsMap={};this._matchedRules=[];this._inheritedRules=[];this._pseudoElements={};this._inlineStyle=null;this._attributesStyle=null;this._computedStyle=null;this._orderedStyles=[];this._propertyNameToEffectivePropertyMap={};this._pendingRefreshTask=null;this.refresh();}
get node()
{return this._node;}
get needsRefresh()
{return this._pendingRefreshTask||this._needsRefresh;}
refreshIfNeeded()
{if(!this._needsRefresh)
return;this.refresh();}
refresh()
{if(this._pendingRefreshTask)
return this._pendingRefreshTask;this._needsRefresh=false;let fetchedMatchedStylesPromise=new WebInspector.WrappedPromise;let fetchedInlineStylesPromise=new WebInspector.WrappedPromise;let fetchedComputedStylesPromise=new WebInspector.WrappedPromise;function wrap(func,promise){return(...args)=>{try{func.apply(this,args);}catch(e){console.error(e);promise.resolve();}};}
function parseRuleMatchArrayPayload(matchArray,node,inherited)
{var result=[];var ruleOccurrences={};for(var i=matchArray.length-1;i>=0;--i){var rule=this._parseRulePayload(matchArray[i].rule,matchArray[i].matchingSelectors,node,inherited,ruleOccurrences);if(!rule)
continue;result.push(rule);}
return result;}
function fetchedMatchedStyles(error,matchedRulesPayload,pseudoElementRulesPayload,inheritedRulesPayload)
{matchedRulesPayload=matchedRulesPayload||[];pseudoElementRulesPayload=pseudoElementRulesPayload||[];inheritedRulesPayload=inheritedRulesPayload||[];this._previousRulesMap=this._rulesMap;this._previousStyleDeclarationsMap=this._styleDeclarationsMap;this._rulesMap={};this._styleDeclarationsMap={};this._matchedRules=parseRuleMatchArrayPayload.call(this,matchedRulesPayload,this._node);this._pseudoElements={};for(var pseudoElementRulePayload of pseudoElementRulesPayload){var pseudoElementRules=parseRuleMatchArrayPayload.call(this,pseudoElementRulePayload.matches,this._node);this._pseudoElements[pseudoElementRulePayload.pseudoId]={matchedRules:pseudoElementRules};}
this._inheritedRules=[];var i=0;var currentNode=this._node.parentNode;while(currentNode&&i<inheritedRulesPayload.length){var inheritedRulePayload=inheritedRulesPayload[i];var inheritedRuleInfo={node:currentNode};inheritedRuleInfo.inlineStyle=inheritedRulePayload.inlineStyle?this._parseStyleDeclarationPayload(inheritedRulePayload.inlineStyle,currentNode,true,WebInspector.CSSStyleDeclaration.Type.Inline):null;inheritedRuleInfo.matchedRules=inheritedRulePayload.matchedCSSRules?parseRuleMatchArrayPayload.call(this,inheritedRulePayload.matchedCSSRules,currentNode,true):[];if(inheritedRuleInfo.inlineStyle||inheritedRuleInfo.matchedRules.length)
this._inheritedRules.push(inheritedRuleInfo);currentNode=currentNode.parentNode;++i;}
fetchedMatchedStylesPromise.resolve();}
function fetchedInlineStyles(error,inlineStylePayload,attributesStylePayload)
{this._inlineStyle=inlineStylePayload?this._parseStyleDeclarationPayload(inlineStylePayload,this._node,false,WebInspector.CSSStyleDeclaration.Type.Inline):null;this._attributesStyle=attributesStylePayload?this._parseStyleDeclarationPayload(attributesStylePayload,this._node,false,WebInspector.CSSStyleDeclaration.Type.Attribute):null;this._updateStyleCascade();fetchedInlineStylesPromise.resolve();}
function fetchedComputedStyle(error,computedPropertiesPayload)
{var properties=[];for(var i=0;computedPropertiesPayload&&i<computedPropertiesPayload.length;++i){var propertyPayload=computedPropertiesPayload[i];var canonicalName=WebInspector.cssStyleManager.canonicalNameForPropertyName(propertyPayload.name);propertyPayload.implicit=!this._propertyNameToEffectivePropertyMap[canonicalName];var property=this._parseStylePropertyPayload(propertyPayload,NaN,this._computedStyle);if(!property.implicit)
property.implicit=!this._isPropertyFoundInMatchingRules(property.name);properties.push(property);}
if(this._computedStyle)
this._computedStyle.update(null,properties);else
this._computedStyle=new WebInspector.CSSStyleDeclaration(this,null,null,WebInspector.CSSStyleDeclaration.Type.Computed,this._node,false,null,properties);let significantChange=false;for(let key in this._styleDeclarationsMap){if(key in this._previousStyleDeclarationsMap){if(Array.shallowEqual(this._styleDeclarationsMap[key],this._previousStyleDeclarationsMap[key]))
continue;
let styleFound=false;for(let style of this._styleDeclarationsMap[key]){if(this._previousStyleDeclarationsMap[key].includes(style)){styleFound=true;break;}}
if(styleFound)
continue;}
if(!this._includeUserAgentRulesOnNextRefresh){let firstStyle=this._styleDeclarationsMap[key][0];if(firstStyle&&firstStyle.ownerRule&&firstStyle.ownerRule.type===WebInspector.CSSStyleSheet.Type.UserAgent){
continue;}}
significantChange=true;break;}
if(!significantChange){for(var key in this._previousStyleDeclarationsMap){if(key in this._styleDeclarationsMap)
continue;if(!this._includeUserAgentRulesOnNextRefresh){var firstStyle=this._previousStyleDeclarationsMap[key][0];if(firstStyle&&firstStyle.ownerRule&&firstStyle.ownerRule.type===WebInspector.CSSStyleSheet.Type.UserAgent)
continue;}
significantChange=true;break;}}
delete this._includeUserAgentRulesOnNextRefresh;delete this._previousRulesMap;delete this._previousStyleDeclarationsMap;this.dispatchEventToListeners(WebInspector.DOMNodeStyles.Event.Refreshed,{significantChange});fetchedComputedStylesPromise.resolve();}
WebInspector.cssStyleManager.fetchStyleSheetsIfNeeded();CSSAgent.getMatchedStylesForNode.invoke({nodeId:this._node.id,includePseudo:true,includeInherited:true},wrap.call(this,fetchedMatchedStyles,fetchedMatchedStylesPromise));CSSAgent.getInlineStylesForNode.invoke({nodeId:this._node.id},wrap.call(this,fetchedInlineStyles,fetchedInlineStylesPromise));CSSAgent.getComputedStyleForNode.invoke({nodeId:this._node.id},wrap.call(this,fetchedComputedStyle,fetchedComputedStylesPromise));this._pendingRefreshTask=Promise.all([fetchedMatchedStylesPromise.promise,fetchedInlineStylesPromise.promise,fetchedComputedStylesPromise.promise]).then(()=>{this._pendingRefreshTask=null;});return this._pendingRefreshTask;}
addRule(selector,text,styleSheetId)
{selector=selector||this._node.appropriateSelectorFor(true);function completed()
{DOMAgent.markUndoableState();this.refresh();}
function styleChanged(error,stylePayload)
{if(error)
return;completed.call(this);}
function addedRule(error,rulePayload)
{if(error)
return;if(!text||!text.length){completed.call(this);return;}
CSSAgent.setStyleText(rulePayload.style.styleId,text,styleChanged.bind(this));}
if(!CSSAgent.createStyleSheet){CSSAgent.addRule.invoke({contextNodeId:this._node.id,selector},addedRule.bind(this));return;}
function inspectorStyleSheetAvailable(styleSheet)
{if(!styleSheet)
return;CSSAgent.addRule(styleSheet.id,selector,addedRule.bind(this));}
if(styleSheetId)
inspectorStyleSheetAvailable.call(this,WebInspector.cssStyleManager.styleSheetForIdentifier(styleSheetId));else
WebInspector.cssStyleManager.preferredInspectorStyleSheetForFrame(this._node.frame,inspectorStyleSheetAvailable.bind(this));}
rulesForSelector(selector)
{selector=selector||this._node.appropriateSelectorFor(true);function ruleHasSelector(rule){return!rule.mediaList.length&&rule.selectorText===selector;}
let rules=this._matchedRules.filter(ruleHasSelector);for(let id in this._pseudoElements)
rules=rules.concat(this._pseudoElements[id].matchedRules.filter(ruleHasSelector));return rules;}
get matchedRules()
{return this._matchedRules;}
get inheritedRules()
{return this._inheritedRules;}
get inlineStyle()
{return this._inlineStyle;}
get attributesStyle()
{return this._attributesStyle;}
get pseudoElements()
{return this._pseudoElements;}
get computedStyle()
{return this._computedStyle;}
get orderedStyles()
{return this._orderedStyles;}
effectivePropertyForName(name)
{let property=this._propertyNameToEffectivePropertyMap[name];if(property)
return property;let canonicalName=WebInspector.cssStyleManager.canonicalNameForPropertyName(name);return this._propertyNameToEffectivePropertyMap[canonicalName]||null;}
mediaQueryResultDidChange()
{this._markAsNeedsRefresh();}
pseudoClassesDidChange(node)
{this._includeUserAgentRulesOnNextRefresh=true;this._markAsNeedsRefresh();}
attributeDidChange(node,attributeName)
{this._markAsNeedsRefresh();}
changeRule(rule,selector,text)
{if(!rule)
return;selector=selector||"";function changeCompleted()
{DOMAgent.markUndoableState();this.refresh();}
function styleChanged(error,stylePayload)
{if(error)
return;changeCompleted.call(this);}
function changeText(styleId)
{if(!text||!text.length){changeCompleted.call(this);return;}
CSSAgent.setStyleText(styleId,text,styleChanged.bind(this));}
function ruleSelectorChanged(error,rulePayload)
{if(error)
return;changeText.call(this,rulePayload.style.styleId);}
this._needsRefresh=true;this._ignoreNextContentDidChangeForStyleSheet=rule.ownerStyleSheet;CSSAgent.setRuleSelector(rule.id,selector,ruleSelectorChanged.bind(this));}
changeRuleSelector(rule,selector)
{selector=selector||"";let result=new WebInspector.WrappedPromise;function ruleSelectorChanged(error,rulePayload)
{if(error){result.reject(error);return;}
DOMAgent.markUndoableState();
this.refresh().then(()=>{result.resolve(rulePayload);});}
this._needsRefresh=true;this._ignoreNextContentDidChangeForStyleSheet=rule.ownerStyleSheet;CSSAgent.setRuleSelector(rule.id,selector,ruleSelectorChanged.bind(this));return result.promise;}
changeStyleText(style,text)
{if(!style.ownerStyleSheet||!style.styleSheetTextRange)
return;text=text||"";function styleChanged(error,stylePayload)
{if(error)
return;this.refresh();}
CSSAgent.setStyleText(style.id,text,styleChanged.bind(this));}
_createSourceCodeLocation(sourceURL,sourceLine,sourceColumn)
{if(!sourceURL)
return null;var sourceCode;if(this._node.ownerDocument){var mainResource=WebInspector.frameResourceManager.resourceForURL(this._node.ownerDocument.documentURL);if(mainResource){var parentFrame=mainResource.parentFrame;sourceCode=parentFrame.resourceForURL(sourceURL);}}
if(!sourceCode)
sourceCode=WebInspector.frameResourceManager.resourceForURL(sourceURL);if(!sourceCode)
return null;return sourceCode.createSourceCodeLocation(sourceLine||0,sourceColumn||0);}
_parseSourceRangePayload(payload)
{if(!payload)
return null;return new WebInspector.TextRange(payload.startLine,payload.startColumn,payload.endLine,payload.endColumn);}
_parseStylePropertyPayload(payload,index,styleDeclaration,styleText)
{var text=payload.text||"";var name=payload.name;var value=(payload.value||"").replace(/\s*!important\s*$/,"");var priority=payload.priority||"";var enabled=true;var overridden=false;var implicit=payload.implicit||false;var anonymous=false;var valid="parsedOk"in payload?payload.parsedOk:true;switch(payload.status||"style"){case"active":enabled=true;break;case"inactive":overridden=true;enabled=true;break;case"disabled":enabled=false;break;case"style":anonymous=true;break;}
var styleSheetTextRange=this._parseSourceRangePayload(payload.range);if(styleDeclaration){var property=isNaN(index)?styleDeclaration.propertyForName(name,true):styleDeclaration.properties[index];
if(property&&property.name===name&&(property.index===index||(isNaN(property.index)&&isNaN(index)))){property.update(text,name,value,priority,enabled,overridden,implicit,anonymous,valid,styleSheetTextRange);return property;}
var pendingProperties=styleDeclaration.pendingProperties;for(var i=0;i<pendingProperties.length;++i){var pendingProperty=pendingProperties[i];if(pendingProperty.name===name&&isNaN(pendingProperty.index)){pendingProperty.index=index;pendingProperty.update(text,name,value,priority,enabled,overridden,implicit,anonymous,valid,styleSheetTextRange);return pendingProperty;}}}
return new WebInspector.CSSProperty(index,text,name,value,priority,enabled,overridden,implicit,anonymous,valid,styleSheetTextRange);}
_parseStyleDeclarationPayload(payload,node,inherited,type,rule,updateAllStyles)
{if(!payload)
return null;rule=rule||null;inherited=inherited||false;var id=payload.styleId;var mapKey=id?id.styleSheetId+":"+id.ordinal:null;if(type===WebInspector.CSSStyleDeclaration.Type.Attribute)
mapKey=node.id+":attribute";var styleDeclaration=rule?rule.style:null;var styleDeclarations=[];var previousStyleDeclarationsMap=this._previousStyleDeclarationsMap||this._styleDeclarationsMap;if(mapKey&&mapKey in previousStyleDeclarationsMap){styleDeclarations=previousStyleDeclarationsMap[mapKey];if(updateAllStyles&&styleDeclarations.length){for(var i=0;i<styleDeclarations.length;++i){var styleDeclaration=styleDeclarations[i];this._parseStyleDeclarationPayload(payload,styleDeclaration.node,styleDeclaration.inherited,styleDeclaration.type,styleDeclaration.ownerRule);}
return null;}
if(!styleDeclaration){var filteredStyleDeclarations=styleDeclarations.filter(function(styleDeclaration){if(styleDeclaration.ownerRule){return false;}
if(styleDeclaration.node!==node)
return false;if(styleDeclaration.inherited!==inherited)
return false;return true;});styleDeclaration=filteredStyleDeclarations[0]||null;}}
if(previousStyleDeclarationsMap!==this._styleDeclarationsMap){styleDeclarations=mapKey&&mapKey in this._styleDeclarationsMap?this._styleDeclarationsMap[mapKey]:[];if(styleDeclaration&&!styleDeclarations.includes(styleDeclaration)){styleDeclarations.push(styleDeclaration);this._styleDeclarationsMap[mapKey]=styleDeclarations;}}
var shorthands={};for(var i=0;payload.shorthandEntries&&i<payload.shorthandEntries.length;++i){var shorthand=payload.shorthandEntries[i];shorthands[shorthand.name]=shorthand.value;}
var text=payload.cssText;var inheritedPropertyCount=0;var properties=[];for(var i=0;payload.cssProperties&&i<payload.cssProperties.length;++i){var propertyPayload=payload.cssProperties[i];if(inherited&&WebInspector.CSSProperty.isInheritedPropertyName(propertyPayload.name))
++inheritedPropertyCount;var property=this._parseStylePropertyPayload(propertyPayload,i,styleDeclaration,text);properties.push(property);}
var styleSheetTextRange=this._parseSourceRangePayload(payload.range);if(styleDeclaration){styleDeclaration.update(text,properties,styleSheetTextRange);return styleDeclaration;}
var styleSheet=id?WebInspector.cssStyleManager.styleSheetForIdentifier(id.styleSheetId):null;if(styleSheet){if(type===WebInspector.CSSStyleDeclaration.Type.Inline)
styleSheet.markAsInlineStyleAttributeStyleSheet();styleSheet.addEventListener(WebInspector.CSSStyleSheet.Event.ContentDidChange,this._styleSheetContentDidChange,this);}
if(inherited&&!inheritedPropertyCount)
return null;styleDeclaration=new WebInspector.CSSStyleDeclaration(this,styleSheet,id,type,node,inherited,text,properties,styleSheetTextRange);if(mapKey){styleDeclarations.push(styleDeclaration);this._styleDeclarationsMap[mapKey]=styleDeclarations;}
return styleDeclaration;}
_parseSelectorListPayload(selectorList)
{var selectors=selectorList.selectors;if(!selectors.length)
return[];if(typeof selectors[0]==="string"){return selectors.map(function(selectorText){return new WebInspector.CSSSelector(selectorText);});}
return selectors.map(function(selectorPayload){return new WebInspector.CSSSelector(selectorPayload.text,selectorPayload.specificity,selectorPayload.dynamic);});}
_parseRulePayload(payload,matchedSelectorIndices,node,inherited,ruleOccurrences)
{if(!payload)
return null;
var id=payload.ruleId||payload.style.styleId;var mapKey=id?id.styleSheetId+":"+id.ordinal+":"+(inherited?"I":"N")+":"+node.id:null;
var occurrence=0;if(mapKey){if(mapKey in ruleOccurrences)
occurrence=++ruleOccurrences[mapKey];else
ruleOccurrences[mapKey]=occurrence;mapKey+=":"+occurrence;}
var rule=null;var previousRulesMap=this._previousRulesMap||this._rulesMap;if(mapKey&&mapKey in previousRulesMap){rule=previousRulesMap[mapKey];if(previousRulesMap!==this._rulesMap){this._rulesMap[mapKey]=rule;}}
var style=this._parseStyleDeclarationPayload(payload.style,node,inherited,WebInspector.CSSStyleDeclaration.Type.Rule,rule);if(!style)
return null;var styleSheet=id?WebInspector.cssStyleManager.styleSheetForIdentifier(id.styleSheetId):null;var selectorText=payload.selectorList.text;var selectors=this._parseSelectorListPayload(payload.selectorList);var type=WebInspector.CSSStyleManager.protocolStyleSheetOriginToEnum(payload.origin);var sourceCodeLocation=null;var sourceRange=payload.selectorList.range;if(sourceRange)
sourceCodeLocation=this._createSourceCodeLocation(payload.sourceURL,sourceRange.startLine,sourceRange.startColumn);else{sourceCodeLocation=this._createSourceCodeLocation(payload.sourceURL,payload.sourceLine);}
if(styleSheet){if(!sourceCodeLocation&&styleSheet.isInspectorStyleSheet())
sourceCodeLocation=styleSheet.createSourceCodeLocation(sourceRange.startLine,sourceRange.startColumn)
sourceCodeLocation=styleSheet.offsetSourceCodeLocation(sourceCodeLocation);}
var mediaList=[];for(var i=0;payload.media&&i<payload.media.length;++i){var mediaItem=payload.media[i];var mediaType=WebInspector.CSSStyleManager.protocolMediaSourceToEnum(mediaItem.source);var mediaText=mediaItem.text;var mediaSourceCodeLocation=this._createSourceCodeLocation(mediaItem.sourceURL,mediaItem.sourceLine);if(styleSheet)
mediaSourceCodeLocation=styleSheet.offsetSourceCodeLocation(mediaSourceCodeLocation);mediaList.push(new WebInspector.CSSMedia(mediaType,mediaText,mediaSourceCodeLocation));}
if(rule){rule.update(sourceCodeLocation,selectorText,selectors,matchedSelectorIndices,style,mediaList);return rule;}
if(styleSheet)
styleSheet.addEventListener(WebInspector.CSSStyleSheet.Event.ContentDidChange,this._styleSheetContentDidChange,this);rule=new WebInspector.CSSRule(this,styleSheet,id,type,sourceCodeLocation,selectorText,selectors,matchedSelectorIndices,style,mediaList);if(mapKey)
this._rulesMap[mapKey]=rule;return rule;}
_markAsNeedsRefresh()
{this._needsRefresh=true;this.dispatchEventToListeners(WebInspector.DOMNodeStyles.Event.NeedsRefresh);}
_styleSheetContentDidChange(event)
{var styleSheet=event.target;if(!styleSheet)
return;if(styleSheet===this._ignoreNextContentDidChangeForStyleSheet){delete this._ignoreNextContentDidChangeForStyleSheet;return;}
this._markAsNeedsRefresh();}
_updateStyleCascade()
{var cascadeOrderedStyleDeclarations=this._collectStylesInCascadeOrder(this._matchedRules,this._inlineStyle,this._attributesStyle);for(var i=0;i<this._inheritedRules.length;++i){var inheritedStyleInfo=this._inheritedRules[i];var inheritedCascadeOrder=this._collectStylesInCascadeOrder(inheritedStyleInfo.matchedRules,inheritedStyleInfo.inlineStyle,null);cascadeOrderedStyleDeclarations=cascadeOrderedStyleDeclarations.concat(inheritedCascadeOrder);}
this._orderedStyles=cascadeOrderedStyleDeclarations;this._propertyNameToEffectivePropertyMap={};this._markOverriddenProperties(cascadeOrderedStyleDeclarations,this._propertyNameToEffectivePropertyMap);this._associateRelatedProperties(cascadeOrderedStyleDeclarations,this._propertyNameToEffectivePropertyMap);for(var pseudoIdentifier in this._pseudoElements){var pseudoElementInfo=this._pseudoElements[pseudoIdentifier];pseudoElementInfo.orderedStyles=this._collectStylesInCascadeOrder(pseudoElementInfo.matchedRules,null,null);this._markOverriddenProperties(pseudoElementInfo.orderedStyles);this._associateRelatedProperties(pseudoElementInfo.orderedStyles);}}
_collectStylesInCascadeOrder(matchedRules,inlineStyle,attributesStyle)
{var result=[];if(inlineStyle)
result.push(inlineStyle);var userAndUserAgentStyles=[];for(var i=0;i<matchedRules.length;++i){var rule=matchedRules[i];
switch(rule.type){case WebInspector.CSSStyleSheet.Type.Inspector:case WebInspector.CSSStyleSheet.Type.Author:result.push(rule.style);break;case WebInspector.CSSStyleSheet.Type.User:case WebInspector.CSSStyleSheet.Type.UserAgent:userAndUserAgentStyles.push(rule.style);break;}}
if(attributesStyle)
result.push(attributesStyle);result=result.concat(userAndUserAgentStyles);return result;}
_markOverriddenProperties(styles,propertyNameToEffectiveProperty)
{propertyNameToEffectiveProperty=propertyNameToEffectiveProperty||{};for(var i=0;i<styles.length;++i){var style=styles[i];var properties=style.properties;for(var j=0;j<properties.length;++j){var property=properties[j];if(!property.enabled||!property.valid){property.overridden=false;continue;}
if(style.inherited&&!property.inherited){property.overridden=false;continue;}
var canonicalName=property.canonicalName;if(canonicalName in propertyNameToEffectiveProperty){var effectiveProperty=propertyNameToEffectiveProperty[canonicalName];if(effectiveProperty.ownerStyle===property.ownerStyle){if(effectiveProperty.important&&!property.important){property.overridden=true;continue;}}else if(effectiveProperty.important||!property.important||effectiveProperty.ownerStyle.node!==property.ownerStyle.node){property.overridden=true;continue;}
if(!property.anonymous)
effectiveProperty.overridden=true;}
property.overridden=false;propertyNameToEffectiveProperty[canonicalName]=property;}}}
_associateRelatedProperties(styles,propertyNameToEffectiveProperty)
{for(var i=0;i<styles.length;++i){var properties=styles[i].properties;var knownShorthands={};for(var j=0;j<properties.length;++j){var property=properties[j];if(!property.valid)
continue;if(!WebInspector.CSSCompletions.cssNameCompletions.isShorthandPropertyName(property.name))
continue;if(knownShorthands[property.canonicalName]&&!knownShorthands[property.canonicalName].overridden){continue;}
knownShorthands[property.canonicalName]=property;}
for(var j=0;j<properties.length;++j){var property=properties[j];if(!property.valid)
continue;var shorthandProperty=null;if(!isEmptyObject(knownShorthands)){var possibleShorthands=WebInspector.CSSCompletions.cssNameCompletions.shorthandsForLonghand(property.canonicalName);for(var k=0;k<possibleShorthands.length;++k){if(possibleShorthands[k]in knownShorthands){shorthandProperty=knownShorthands[possibleShorthands[k]];break;}}}
if(!shorthandProperty||shorthandProperty.overridden!==property.overridden){property.relatedShorthandProperty=null;property.clearRelatedLonghandProperties();continue;}
shorthandProperty.addRelatedLonghandProperty(property);property.relatedShorthandProperty=shorthandProperty;if(propertyNameToEffectiveProperty&&propertyNameToEffectiveProperty[shorthandProperty.canonicalName]===shorthandProperty)
propertyNameToEffectiveProperty[property.canonicalName]=property;}}}
_isPropertyFoundInMatchingRules(propertyName)
{return this._orderedStyles.some((style)=>{return style.properties.some((property)=>property.name===propertyName);});}};WebInspector.DOMNodeStyles.Event={NeedsRefresh:"dom-node-styles-needs-refresh",Refreshed:"dom-node-styles-refreshed"};WebInspector.DOMSearchMatchObject=class DOMSearchMatchObject extends WebInspector.Object
{constructor(resource,domNode,title,searchTerm,textRange)
{super();this._resource=resource;this._domNode=domNode;this._title=title;this._searchTerm=searchTerm;this._sourceCodeTextRange=resource.createSourceCodeTextRange(textRange);}
static titleForDOMNode(domNode)
{switch(domNode.nodeType()){case Node.ELEMENT_NODE:var title="<"+domNode.nodeNameInCorrectCase();for(var attribute of domNode.attributes()){title+=" "+attribute.name;if(attribute.value.length)
title+="=\""+attribute.value+"\"";}
return title+">";case Node.TEXT_NODE:return"\""+domNode.nodeValue()+"\"";case Node.COMMENT_NODE:return"<!--"+domNode.nodeValue()+"-->";case Node.DOCUMENT_TYPE_NODE:var title="<!DOCTYPE "+domNode.nodeName();if(domNode.publicId){title+=" PUBLIC \""+domNode.publicId+"\"";if(domNode.systemId)
title+=" \""+domNode.systemId+"\"";}else if(domNode.systemId)
title+=" SYSTEM \""+domNode.systemId+"\"";return title+">";case Node.CDATA_SECTION_NODE:return"<![CDATA["+domNode+"]]>";case Node.PROCESSING_INSTRUCTION_NODE:var data=domNode.nodeValue();var dataString=data.length?" "+data:"";var title="<?"+domNode.nodeNameInCorrectCase()+dataString+"?>";return title;default:console.error("Unknown DOM node type: ",domNode.nodeType());return domNode.nodeNameInCorrectCase();}}
get resource()
{return this._resource;}
get domNode()
{return this._domNode;}
get title()
{return this._title;}
get className()
{if(!this._className)
this._className=this._generateClassName();return this._className;}
get searchTerm()
{return this._searchTerm;}
get sourceCodeTextRange()
{return this._sourceCodeTextRange;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.DOMSearchMatchObject.URLCookieKey]=this._resource.url.hash;cookie[WebInspector.DOMSearchMatchObject.TitleKey]=this._title;var textRange=this._sourceCodeTextRange.textRange;cookie[WebInspector.DOMSearchMatchObject.TextRangeKey]=[textRange.startLine,textRange.startColumn,textRange.endLine,textRange.endColumn].join();}
_generateClassName()
{switch(this._domNode.nodeType()){case Node.ELEMENT_NODE:return WebInspector.DOMSearchMatchObject.DOMMatchElementIconStyleClassName;case Node.TEXT_NODE:return WebInspector.DOMSearchMatchObject.DOMMatchTextNodeIconStyleClassName;case Node.COMMENT_NODE:return WebInspector.DOMSearchMatchObject.DOMMatchCommentIconStyleClassName;case Node.DOCUMENT_TYPE_NODE:return WebInspector.DOMSearchMatchObject.DOMMatchDocumentTypeIconStyleClassName;case Node.CDATA_SECTION_NODE:return WebInspector.DOMSearchMatchObject.DOMMatchCharacterDataIconStyleClassName;case Node.PROCESSING_INSTRUCTION_NODE: return WebInspector.DOMSearchMatchObject.DOMMatchDocumentTypeIconStyleClassName;default:console.error("Unknown DOM node type: ",this._domNode.nodeType());return WebInspector.DOMSearchMatchObject.DOMMatchNodeIconStyleClassName;}}};WebInspector.DOMSearchMatchObject.DOMMatchElementIconStyleClassName="dom-match-element-icon";WebInspector.DOMSearchMatchObject.DOMMatchTextNodeIconStyleClassName="dom-match-text-node-icon";WebInspector.DOMSearchMatchObject.DOMMatchCommentIconStyleClassName="dom-match-comment-icon";WebInspector.DOMSearchMatchObject.DOMMatchDocumentTypeIconStyleClassName="dom-match-document-type-icon";WebInspector.DOMSearchMatchObject.DOMMatchCharacterDataIconStyleClassName="dom-match-character-data-icon";WebInspector.DOMSearchMatchObject.DOMMatchNodeIconStyleClassName="dom-match-node-icon";WebInspector.DOMSearchMatchObject.TypeIdentifier="dom-search-match-object";WebInspector.DOMSearchMatchObject.URLCookieKey="resource-url";WebInspector.DOMSearchMatchObject.TitleKey="title";WebInspector.DOMSearchMatchObject.TextRangeKey="text-range";WebInspector.DOMStorageObject=class DOMStorageObject extends WebInspector.Object
{constructor(id,host,isLocalStorage)
{super();this._id=id;this._host=host;this._isLocalStorage=isLocalStorage;this._entries=new Map;}
get id(){return this._id;}
get host(){return this._host;}
get entries(){return this._entries;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.DOMStorageObject.HostCookieKey]=this.host;cookie[WebInspector.DOMStorageObject.LocalStorageCookieKey]=this.isLocalStorage();}
isLocalStorage()
{return this._isLocalStorage;}
getEntries(callback)
{function innerCallback(error,entries)
{if(error)
return;for(let[key,value]of entries){if(!key||!value)
continue;this._entries.set(key,value);}
callback(error,entries);}
DOMStorageAgent.getDOMStorageItems(this._id,innerCallback.bind(this));}
removeItem(key)
{DOMStorageAgent.removeDOMStorageItem(this._id,key);}
setItem(key,value)
{DOMStorageAgent.setDOMStorageItem(this._id,key,value);}
itemsCleared()
{this._entries.clear();this.dispatchEventToListeners(WebInspector.DOMStorageObject.Event.ItemsCleared);}
itemRemoved(key)
{this._entries.delete(key);this.dispatchEventToListeners(WebInspector.DOMStorageObject.Event.ItemRemoved,{key});}
itemAdded(key,value)
{this._entries.set(key,value);this.dispatchEventToListeners(WebInspector.DOMStorageObject.Event.ItemAdded,{key,value});}
itemUpdated(key,oldValue,value)
{this._entries.set(key,value);this.dispatchEventToListeners(WebInspector.DOMStorageObject.Event.ItemUpdated,{key,oldValue,value});}};WebInspector.DOMStorageObject.TypeIdentifier="dom-storage";WebInspector.DOMStorageObject.HostCookieKey="dom-storage-object-host";WebInspector.DOMStorageObject.LocalStorageCookieKey="dom-storage-object-local-storage";WebInspector.DOMStorageObject.Event={ItemsCleared:"dom-storage-object-items-cleared",ItemAdded:"dom-storage-object-item-added",ItemRemoved:"dom-storage-object-item-removed",ItemUpdated:"dom-storage-object-updated",};WebInspector.DOMTree=class DOMTree extends WebInspector.Object
{constructor(frame)
{super();this._frame=frame;this._rootDOMNode=null;this._requestIdentifier=0;this._contentFlowCollection=new WebInspector.Collection(WebInspector.Collection.TypeVerifier.ContentFlow);this._frame.addEventListener(WebInspector.Frame.Event.PageExecutionContextChanged,this._framePageExecutionContextChanged,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.DocumentUpdated,this._documentUpdated,this);if(!this._frame.isMainFrame()){WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.NodeRemoved,this._nodeRemoved,this);this._frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._frameMainResourceDidChange,this);}
WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.ContentFlowListWasUpdated,this._contentFlowListWasUpdated,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.ContentFlowWasAdded,this._contentFlowWasAdded,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.ContentFlowWasRemoved,this._contentFlowWasRemoved,this);}
get frame(){return this._frame;}
get contentFlowCollection(){return this._contentFlowCollection;}
disconnect()
{WebInspector.domTreeManager.removeEventListener(null,null,this);this._frame.removeEventListener(null,null,this);}
invalidate()
{this._rootDOMNode=null;
this._pendingRootDOMNodeRequests=null;if(this._invalidateTimeoutIdentifier)
return;function performInvalidate()
{this._invalidateTimeoutIdentifier=undefined;this.dispatchEventToListeners(WebInspector.DOMTree.Event.RootDOMNodeInvalidated);}
this._invalidateTimeoutIdentifier=setTimeout(performInvalidate.bind(this),0);}
requestRootDOMNode(callback)
{if(typeof callback!=="function")
return;if(this._rootDOMNode){callback(this._rootDOMNode);return;}
if(!this._frame.isMainFrame()&&!this._frame.pageExecutionContext){this._rootDOMNodeRequestWaitingForExecutionContext=true;if(!this._pendingRootDOMNodeRequests)
this._pendingRootDOMNodeRequests=[];this._pendingRootDOMNodeRequests.push(callback);return;}
if(this._pendingRootDOMNodeRequests){this._pendingRootDOMNodeRequests.push(callback);return;}
this._pendingRootDOMNodeRequests=[callback];this._requestRootDOMNode();}
requestContentFlowList()
{this.requestRootDOMNode(function(rootNode){WebInspector.domTreeManager.getNamedFlowCollection(rootNode.id);});}
_requestRootDOMNode()
{var requestIdentifier=++this._requestIdentifier;function rootObjectAvailable(error,result)
{if(!this._pendingRootDOMNodeRequests||requestIdentifier!==this._requestIdentifier)
return;if(error){console.error(JSON.stringify(error));this._rootDOMNode=null;dispatchCallbacks.call(this);return;}
var remoteObject=WebInspector.RemoteObject.fromPayload(result);remoteObject.pushNodeToFrontend(rootDOMNodeAvailable.bind(this,remoteObject));}
function rootDOMNodeAvailable(remoteObject,nodeId)
{remoteObject.release();if(!this._pendingRootDOMNodeRequests||requestIdentifier!==this._requestIdentifier)
return;if(!nodeId){this._rootDOMNode=null;dispatchCallbacks.call(this);return;}
this._rootDOMNode=WebInspector.domTreeManager.nodeForId(nodeId);if(!this._rootDOMNode){dispatchCallbacks.call(this);return;}
this._rootDOMNode.getChildNodes(dispatchCallbacks.bind(this));}
function mainDocumentAvailable(document)
{this._rootDOMNode=document;dispatchCallbacks.call(this);}
function dispatchCallbacks()
{if(!this._pendingRootDOMNodeRequests||requestIdentifier!==this._requestIdentifier)
return;for(var i=0;i<this._pendingRootDOMNodeRequests.length;++i)
this._pendingRootDOMNodeRequests[i](this._rootDOMNode);this._pendingRootDOMNodeRequests=null;}
if(this._frame.isMainFrame())
WebInspector.domTreeManager.requestDocument(mainDocumentAvailable.bind(this));else{var contextId=this._frame.pageExecutionContext.id;RuntimeAgent.evaluate.invoke({expression:appendWebInspectorSourceURL("document"),objectGroup:"",includeCommandLineAPI:false,doNotPauseOnExceptionsAndMuteConsole:true,contextId,returnByValue:false,generatePreview:false},rootObjectAvailable.bind(this));}}
_nodeRemoved(event)
{if(event.data.node!==this._rootDOMNode)
return;this.invalidate();}
_documentUpdated(event)
{this.invalidate();}
_frameMainResourceDidChange(event)
{this.invalidate();}
_framePageExecutionContextChanged(event)
{if(this._rootDOMNodeRequestWaitingForExecutionContext){this._rootDOMNodeRequestWaitingForExecutionContext=false;this._requestRootDOMNode();}}
_isContentFlowInCurrentDocument(flow)
{return this._rootDOMNode&&this._rootDOMNode.id===flow.documentNodeIdentifier;}
_contentFlowListWasUpdated(event)
{if(!this._rootDOMNode||this._rootDOMNode.id!==event.data.documentNodeIdentifier)
return;let deletedFlows=new Set(this._contentFlowCollection.items);let newFlows=new Set;for(let flow of event.data.flows){if(this._contentFlowCollection.items.has(flow)){deletedFlows.delete(flow);}else{this._contentFlowCollection.add(flow);newFlows.add(flow);}}
for(let flow of deletedFlows)
this._contentFlowCollection.remove(flow);for(let flow of deletedFlows)
this.dispatchEventToListeners(WebInspector.DOMTree.Event.ContentFlowWasRemoved,{flow});for(let flow of newFlows)
this.dispatchEventToListeners(WebInspector.DOMTree.Event.ContentFlowWasAdded,{flow});}
_contentFlowWasAdded(event)
{let flow=event.data.flow;if(!this._isContentFlowInCurrentDocument(flow))
return;this._contentFlowCollection.add(flow);this.dispatchEventToListeners(WebInspector.DOMTree.Event.ContentFlowWasAdded,{flow});}
_contentFlowWasRemoved(event)
{let flow=event.data.flow;if(!this._isContentFlowInCurrentDocument(flow))
return;this._contentFlowCollection.remove(flow);this.dispatchEventToListeners(WebInspector.DOMTree.Event.ContentFlowWasRemoved,{flow});}};WebInspector.DOMTree.Event={RootDOMNodeInvalidated:"dom-tree-root-dom-node-invalidated",ContentFlowWasAdded:"dom-tree-content-flow-was-added",ContentFlowWasRemoved:"dom-tree-content-flow-was-removed"};WebInspector.DatabaseObject=class DatabaseObject extends WebInspector.Object
{constructor(id,host,name,version)
{super();this._id=id;this._host=host?host:WebInspector.UIString("Local File");this._name=name;this._version=version;}
get id(){return this._id;}
get host(){return this._host;}
get name(){return this._name;}
get version(){return this._version;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.DatabaseObject.HostCookieKey]=this.host;cookie[WebInspector.DatabaseObject.NameCookieKey]=this.name;}
getTableNames(callback)
{function sortingCallback(error,names)
{if(!error)
callback(names.sort());}
DatabaseAgent.getDatabaseTableNames(this._id,sortingCallback);}
executeSQL(query,successCallback,errorCallback)
{function queryCallback(error,columnNames,values,sqlError)
{if(error){errorCallback(WebInspector.UIString("An unexpected error occurred."));return;}
if(sqlError){switch(sqlError.code){case SQLException.VERSION_ERR:errorCallback(WebInspector.UIString("Database no longer has expected version."));break;case SQLException.TOO_LARGE_ERR:errorCallback(WebInspector.UIString("Data returned from the database is too large."));break;default:errorCallback(WebInspector.UIString("An unexpected error occurred."));break;}
return;}
successCallback(columnNames,values);}
DatabaseAgent.executeSQL(this._id,query,queryCallback);}};WebInspector.DatabaseObject.TypeIdentifier="database";WebInspector.DatabaseObject.HostCookieKey="database-object-host";WebInspector.DatabaseObject.NameCookieKey="database-object-name";WebInspector.DatabaseTableObject=class DatabaseTableObject extends WebInspector.Object
{constructor(name,database)
{super();this._name=name;this._database=database;}
get name(){return this._name;}
get database(){return this._database;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.DatabaseTableObject.NameCookieKey]=this.name;}};WebInspector.DatabaseTableObject.TypeIdentifier="database-table";WebInspector.DatabaseTableObject.NameCookieKey="database-table-object-name";WebInspector.DebuggerDashboard=class DebuggerDashboard extends WebInspector.Object
{};WebInspector.DebuggerData=class DebuggerData extends WebInspector.Object
{constructor(target)
{super();this._target=target;this._paused=false;this._pausing=false;this._pauseReason=null;this._pauseData=null;this._callFrames=[];this._asyncStackTrace=null;this._scriptIdMap=new Map;this._scriptContentIdentifierMap=new Map;this._makePausingAfterNextResume=false;}
get target(){return this._target;}
get paused(){return this._paused;}
get pausing(){return this._pausing;}
get pauseReason(){return this._pauseReason;}
get pauseData(){return this._pauseData;}
get callFrames(){return this._callFrames;}
get asyncStackTrace(){return this._asyncStackTrace;}
get scripts()
{return Array.from(this._scriptIdMap.values());}
scriptForIdentifier(id)
{return this._scriptIdMap.get(id);}
scriptsForURL(url)
{return this._scriptContentIdentifierMap.get(url)||[];}
reset()
{this._scriptIdMap.clear();}
addScript(script)
{this._scriptIdMap.set(script.id,script);if(script.contentIdentifier){let scripts=this._scriptContentIdentifierMap.get(script.contentIdentifier);if(!scripts){scripts=[];this._scriptContentIdentifierMap.set(script.contentIdentifier,scripts);}
scripts.push(script);}}
pauseIfNeeded()
{if(this._paused||this._pausing)
return Promise.resolve();this._pausing=true;return this._target.DebuggerAgent.pause();}
resumeIfNeeded()
{if(!this._paused&&!this._pausing)
return Promise.resolve();this._pausing=false;return this._target.DebuggerAgent.resume();}
continueUntilNextRunLoop()
{if(!this._paused||this._pausing)
return Promise.resolve();
this._makePausingAfterNextResume=true;return this._target.DebuggerAgent.continueUntilNextRunLoop();}
updateForPause(callFrames,pauseReason,pauseData,asyncStackTrace)
{this._paused=true;this._pausing=false;this._pauseReason=pauseReason;this._pauseData=pauseData;this._callFrames=callFrames;this._asyncStackTrace=asyncStackTrace;this._makePausingAfterNextResume=false;}
updateForResume()
{this._paused=false;this._pausing=false;this._pauseReason=null;this._pauseData=null;this._callFrames=[];this._asyncStackTrace=null;if(this._makePausingAfterNextResume){this._makePausingAfterNextResume=false;this._pausing=true;}}};WebInspector.DefaultDashboard=class DefaultDashboard extends WebInspector.Object
{constructor()
{super();this._waitingForFirstMainResourceToStartTrackingSize=true;WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.CapturingStopped,this._capturingStopped,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ResourceWasAdded,this._resourceWasAdded,this);WebInspector.Target.addEventListener(WebInspector.Target.Event.ResourceAdded,this._resourceWasAdded,this);WebInspector.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.FrameWasAdded,this._frameWasAdded,this);var logManager=WebInspector.logManager;logManager.addEventListener(WebInspector.LogManager.Event.Cleared,this._consoleWasCleared,this);logManager.addEventListener(WebInspector.LogManager.Event.MessageAdded,this._consoleMessageAdded,this);logManager.addEventListener(WebInspector.LogManager.Event.PreviousMessageRepeatCountUpdated,this._consoleMessageWasRepeated,this);this._resourcesCount=0;this._resourcesSize=0;this._time=0;this._logs=0;this._errors=0;this._issues=0;}
get resourcesCount()
{return this._resourcesCount;}
set resourcesCount(value)
{this._resourcesCount=value;this._dataDidChange();}
get resourcesSize()
{return this._resourcesSize;}
set resourcesSize(value)
{this._resourcesSize=value;this._dataDidChange();}
get time()
{return this._time;}
set time(value)
{this._time=value;this._dataDidChange();}
get logs()
{return this._logs;}
set logs(value)
{this._logs=value;this._dataDidChange();}
get errors()
{return this._errors;}
set errors(value)
{this._errors=value;this._dataDidChange();}
get issues()
{return this._issues;}
set issues(value)
{this._issues=value;this._dataDidChange();}
_dataDidChange()
{this.dispatchEventToListeners(WebInspector.DefaultDashboard.Event.DataDidChange);}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;this._time=0;this._resourcesCount=1;this._resourcesSize=WebInspector.frameResourceManager.mainFrame.mainResource.size||0;if(this._waitingForFirstMainResourceToStartTrackingSize){this._waitingForFirstMainResourceToStartTrackingSize=false;WebInspector.Resource.addEventListener(WebInspector.Resource.Event.SizeDidChange,this._resourceSizeDidChange,this);}
this._dataDidChange();this._startUpdatingTime();}
_capturingStopped(event)
{this._stopUpdatingTime();}
_resourceWasAdded(event)
{++this.resourcesCount;}
_frameWasAdded(event)
{++this.resourcesCount;}
_resourceSizeDidChange(event)
{if(event.target.urlComponents.scheme==="data")
return;this.resourcesSize+=event.target.size-event.data.previousSize;}
_startUpdatingTime()
{this._stopUpdatingTime();this.time=0;this._timelineBaseTime=Date.now();this._timeIntervalDelay=50;this._timeIntervalIdentifier=setInterval(this._updateTime.bind(this),this._timeIntervalDelay);}
_stopUpdatingTime()
{if(!this._timeIntervalIdentifier)
return;clearInterval(this._timeIntervalIdentifier);this._timeIntervalIdentifier=undefined;}
_updateTime()
{var duration=Date.now()-this._timelineBaseTime;var timeIntervalDelay=this._timeIntervalDelay;if(duration>=1000)
timeIntervalDelay=100;else if(duration>=60000)
timeIntervalDelay=1000;else if(duration>=3600000)
timeIntervalDelay=10000;if(timeIntervalDelay!==this._timeIntervalDelay){this._timeIntervalDelay=timeIntervalDelay;clearInterval(this._timeIntervalIdentifier);this._timeIntervalIdentifier=setInterval(this._updateTime.bind(this),this._timeIntervalDelay);}
var mainFrame=WebInspector.frameResourceManager.mainFrame;var mainFrameStartTime=mainFrame.mainResource.firstTimestamp;var mainFrameLoadEventTime=mainFrame.loadEventTimestamp;if(isNaN(mainFrameStartTime)||isNaN(mainFrameLoadEventTime)){this.time=duration/1000;return;}
this.time=mainFrameLoadEventTime-mainFrameStartTime;this._stopUpdatingTime();}
_consoleMessageAdded(event)
{var message=event.data.message;this._lastConsoleMessageType=message.level;this._incrementConsoleMessageType(message.level,message.repeatCount);}
_consoleMessageWasRepeated(event)
{this._incrementConsoleMessageType(this._lastConsoleMessageType,1);}
_incrementConsoleMessageType(type,increment)
{switch(type){case WebInspector.ConsoleMessage.MessageLevel.Log:case WebInspector.ConsoleMessage.MessageLevel.Info:case WebInspector.ConsoleMessage.MessageLevel.Debug:this.logs+=increment;break;case WebInspector.ConsoleMessage.MessageLevel.Warning:this.issues+=increment;break;case WebInspector.ConsoleMessage.MessageLevel.Error:this.errors+=increment;break;}}
_consoleWasCleared(event)
{this._logs=0;this._issues=0;this._errors=0;this._dataDidChange();}};WebInspector.DefaultDashboard.Event={DataDidChange:"default-dashboard-data-did-change"};WebInspector.ExecutionContext=class ExecutionContext extends WebInspector.Object
{constructor(target,id,name,isPageContext,frame)
{super();this._target=target;this._id=id;this._name=name;this._isPageContext=isPageContext||false;this._frame=frame||null;}
get target(){return this._target;}
get id(){return this._id;}
get name(){return this._name;}
get isPageContext(){return this._isPageContext;}
get frame(){return this._frame;}};WebInspector.ExecutionContextList=class ExecutionContextList extends WebInspector.Object
{constructor()
{super();this._contexts=[];this._pageExecutionContext=null;}
get pageExecutionContext()
{return this._pageExecutionContext;}
get contexts()
{return this._contexts;}
add(context)
{if(context.isPageContext&&this._pageExecutionContext){return false;}
this._contexts.push(context);if(context.isPageContext){this._pageExecutionContext=context;return true;}
return false;}
clear()
{this._contexts=[];this._pageExecutionContext=null;}};WebInspector.FPSInstrument=class FPSInstrument extends WebInspector.Instrument
{constructor()
{super();}
static supported()
{return window.TimelineAgent&&TimelineAgent.EventType.RenderingFrame;}
get timelineRecordType()
{return WebInspector.TimelineRecord.Type.RenderingFrame;}};WebInspector.Frame=class Frame extends WebInspector.Object
{constructor(id,name,securityOrigin,loaderIdentifier,mainResource)
{super();this._id=id;this._name=null;this._securityOrigin=null;this._resourceCollection=new WebInspector.ResourceCollection;this._provisionalResourceCollection=new WebInspector.ResourceCollection;this._extraScriptCollection=new WebInspector.Collection(WebInspector.Collection.TypeVerifier.Script);this._canvasCollection=new WebInspector.Collection(WebInspector.Collection.TypeVerifier.Canvas);this._childFrameCollection=new WebInspector.Collection(WebInspector.Collection.TypeVerifier.Frame);this._childFrameIdentifierMap=new Map;this._parentFrame=null;this._isMainFrame=false;this._domContentReadyEventTimestamp=NaN;this._loadEventTimestamp=NaN;this._executionContextList=new WebInspector.ExecutionContextList;this.initialize(name,securityOrigin,loaderIdentifier,mainResource);}
get resourceCollection(){return this._resourceCollection;}
get extraScriptCollection(){return this._extraScriptCollection;}
get canvasCollection(){return this._canvasCollection;}
get childFrameCollection(){return this._childFrameCollection;}
initialize(name,securityOrigin,loaderIdentifier,mainResource)
{var oldName=this._name;var oldSecurityOrigin=this._securityOrigin;var oldMainResource=this._mainResource;this._name=name||null;this._securityOrigin=securityOrigin||null;this._loaderIdentifier=loaderIdentifier||null;this._mainResource=mainResource;this._mainResource._parentFrame=this;if(oldMainResource&&this._mainResource!==oldMainResource)
this._disassociateWithResource(oldMainResource);this.removeAllResources();this.removeAllChildFrames();this.clearExecutionContexts();this.clearProvisionalLoad();if(this._mainResource!==oldMainResource)
this._dispatchMainResourceDidChangeEvent(oldMainResource);if(this._securityOrigin!==oldSecurityOrigin)
this.dispatchEventToListeners(WebInspector.Frame.Event.SecurityOriginDidChange,{oldSecurityOrigin});if(this._name!==oldName)
this.dispatchEventToListeners(WebInspector.Frame.Event.NameDidChange,{oldName});}
startProvisionalLoad(provisionalMainResource)
{this._provisionalMainResource=provisionalMainResource;this._provisionalMainResource._parentFrame=this;this._provisionalLoaderIdentifier=provisionalMainResource.loaderIdentifier;this._provisionalResourceCollection.clear();this.dispatchEventToListeners(WebInspector.Frame.Event.ProvisionalLoadStarted);}
commitProvisionalLoad(securityOrigin)
{if(!this._provisionalLoaderIdentifier)
return;var oldSecurityOrigin=this._securityOrigin;var oldMainResource=this._mainResource;this._securityOrigin=securityOrigin||null;this._loaderIdentifier=this._provisionalLoaderIdentifier;this._mainResource=this._provisionalMainResource;this._domContentReadyEventTimestamp=NaN;this._loadEventTimestamp=NaN;if(oldMainResource&&this._mainResource!==oldMainResource)
this._disassociateWithResource(oldMainResource);this.removeAllResources();this._resourceCollection=this._provisionalResourceCollection;this._provisionalResourceCollection=new WebInspector.ResourceCollection;this._extraScriptCollection.clear();this._canvasCollection.clear();this.clearExecutionContexts(true);this.clearProvisionalLoad(true);this.removeAllChildFrames();this.dispatchEventToListeners(WebInspector.Frame.Event.ProvisionalLoadCommitted);if(this._mainResource!==oldMainResource)
this._dispatchMainResourceDidChangeEvent(oldMainResource);if(this._securityOrigin!==oldSecurityOrigin)
this.dispatchEventToListeners(WebInspector.Frame.Event.SecurityOriginDidChange,{oldSecurityOrigin});}
clearProvisionalLoad(skipProvisionalLoadClearedEvent)
{if(!this._provisionalLoaderIdentifier)
return;this._provisionalLoaderIdentifier=null;this._provisionalMainResource=null;this._provisionalResourceCollection.clear();if(!skipProvisionalLoadClearedEvent)
this.dispatchEventToListeners(WebInspector.Frame.Event.ProvisionalLoadCleared);}
get id()
{return this._id;}
get loaderIdentifier()
{return this._loaderIdentifier;}
get provisionalLoaderIdentifier()
{return this._provisionalLoaderIdentifier;}
get name()
{return this._name;}
get securityOrigin()
{return this._securityOrigin;}
get url()
{return this._mainResource._url;}
get domTree()
{if(!this._domTree)
this._domTree=new WebInspector.DOMTree(this);return this._domTree;}
get pageExecutionContext()
{return this._executionContextList.pageExecutionContext;}
get executionContextList()
{return this._executionContextList;}
clearExecutionContexts(committingProvisionalLoad)
{if(this._executionContextList.contexts.length){let contexts=this._executionContextList.contexts.slice();this._executionContextList.clear();this.dispatchEventToListeners(WebInspector.Frame.Event.ExecutionContextsCleared,{committingProvisionalLoad:!!committingProvisionalLoad,contexts});}}
addExecutionContext(context)
{var changedPageContext=this._executionContextList.add(context);if(changedPageContext)
this.dispatchEventToListeners(WebInspector.Frame.Event.PageExecutionContextChanged);}
get mainResource()
{return this._mainResource;}
get provisionalMainResource()
{return this._provisionalMainResource;}
get parentFrame()
{return this._parentFrame;}
get domContentReadyEventTimestamp()
{return this._domContentReadyEventTimestamp;}
get loadEventTimestamp()
{return this._loadEventTimestamp;}
isMainFrame()
{return this._isMainFrame;}
markAsMainFrame()
{this._isMainFrame=true;}
unmarkAsMainFrame()
{this._isMainFrame=false;}
markDOMContentReadyEvent(timestamp)
{this._domContentReadyEventTimestamp=timestamp||NaN;}
markLoadEvent(timestamp)
{this._loadEventTimestamp=timestamp||NaN;}
isDetached()
{var frame=this;while(frame){if(frame.isMainFrame())
return false;frame=frame.parentFrame;}
return true;}
childFrameForIdentifier(frameId)
{return this._childFrameIdentifierMap.get(frameId)||null;}
addChildFrame(frame)
{if(!(frame instanceof WebInspector.Frame))
return;if(frame._parentFrame===this)
return;if(frame._parentFrame)
frame._parentFrame.removeChildFrame(frame);this._childFrameCollection.add(frame);this._childFrameIdentifierMap.set(frame._id,frame);frame._parentFrame=this;this.dispatchEventToListeners(WebInspector.Frame.Event.ChildFrameWasAdded,{childFrame:frame});}
removeChildFrame(frameOrFrameId)
{let childFrameId=frameOrFrameId;if(childFrameId instanceof WebInspector.Frame)
childFrameId=frameOrFrameId._id;
let childFrame=this.childFrameForIdentifier(childFrameId);if(!(childFrame instanceof WebInspector.Frame))
return;this._childFrameCollection.remove(childFrame);this._childFrameIdentifierMap.delete(childFrame._id);childFrame._detachFromParentFrame();this.dispatchEventToListeners(WebInspector.Frame.Event.ChildFrameWasRemoved,{childFrame});}
removeAllChildFrames()
{this._detachFromParentFrame();for(let childFrame of this._childFrameCollection.items)
childFrame.removeAllChildFrames();this._childFrameCollection.clear();this._childFrameIdentifierMap.clear();this.dispatchEventToListeners(WebInspector.Frame.Event.AllChildFramesRemoved);}
resourceForURL(url,recursivelySearchChildFrames)
{var resource=this._resourceCollection.resourceForURL(url);if(resource)
return resource;for(let childFrame of this._childFrameCollection.items){resource=childFrame.mainResource;if(resource.url===url)
return resource;}
if(!recursivelySearchChildFrames)
return null;for(let childFrame of this._childFrameCollection.items){resource=childFrame.resourceForURL(url,true);if(resource)
return resource;}
return null;}
resourceCollectionForType(type)
{return this._resourceCollection.resourceCollectionForType(type);}
addResource(resource)
{if(!(resource instanceof WebInspector.Resource))
return;if(resource.parentFrame===this)
return;if(resource.parentFrame)
resource.parentFrame.remove(resource);this._associateWithResource(resource);if(this._isProvisionalResource(resource)){this._provisionalResourceCollection.add(resource);this.dispatchEventToListeners(WebInspector.Frame.Event.ProvisionalResourceWasAdded,{resource});}else{this._resourceCollection.add(resource);this.dispatchEventToListeners(WebInspector.Frame.Event.ResourceWasAdded,{resource});}}
removeResource(resource)
{this._resourceCollection.remove(resource);this._disassociateWithResource(resource);this.dispatchEventToListeners(WebInspector.Frame.Event.ResourceWasRemoved,{resource});}
removeAllResources()
{let resources=this._resourceCollection.items;if(!resources.size)
return;for(let resource of resources)
this._disassociateWithResource(resource);this._resourceCollection.clear();this.dispatchEventToListeners(WebInspector.Frame.Event.AllResourcesRemoved);}
addExtraScript(script)
{this._extraScriptCollection.add(script);this.dispatchEventToListeners(WebInspector.Frame.Event.ExtraScriptAdded,{script});}
saveIdentityToCookie(cookie)
{cookie[WebInspector.Frame.MainResourceURLCookieKey]=this.mainResource.url.hash;cookie[WebInspector.Frame.IsMainFrameCookieKey]=this._isMainFrame;}
_detachFromParentFrame()
{if(this._domTree){this._domTree.disconnect();this._domTree=null;}
this._parentFrame=null;}
_isProvisionalResource(resource)
{return resource.loaderIdentifier&&this._provisionalLoaderIdentifier&&resource.loaderIdentifier===this._provisionalLoaderIdentifier;}
_associateWithResource(resource)
{if(resource._parentFrame)
return;resource._parentFrame=this;}
_disassociateWithResource(resource)
{if(resource.parentFrame!==this)
return;resource._parentFrame=null;}
_dispatchMainResourceDidChangeEvent(oldMainResource)
{this.dispatchEventToListeners(WebInspector.Frame.Event.MainResourceDidChange,{oldMainResource});}};WebInspector.Frame.Event={NameDidChange:"frame-name-did-change",SecurityOriginDidChange:"frame-security-origin-did-change",MainResourceDidChange:"frame-main-resource-did-change",ProvisionalLoadStarted:"frame-provisional-load-started",ProvisionalLoadCommitted:"frame-provisional-load-committed",ProvisionalLoadCleared:"frame-provisional-load-cleared",ProvisionalResourceWasAdded:"frame-provisional-resource-was-added",ResourceWasAdded:"frame-resource-was-added",ResourceWasRemoved:"frame-resource-was-removed",AllResourcesRemoved:"frame-all-resources-removed",ExtraScriptAdded:"frame-extra-script-added",ChildFrameWasAdded:"frame-child-frame-was-added",ChildFrameWasRemoved:"frame-child-frame-was-removed",AllChildFramesRemoved:"frame-all-child-frames-removed",PageExecutionContextChanged:"frame-page-execution-context-changed",ExecutionContextsCleared:"frame-execution-contexts-cleared"};WebInspector.Frame.TypeIdentifier="Frame";WebInspector.Frame.MainResourceURLCookieKey="frame-main-resource-url";WebInspector.Frame.IsMainFrameCookieKey="frame-is-main-frame";WebInspector.GarbageCollection=class GarbageCollection extends WebInspector.Object
{constructor(type,startTime,endTime)
{super();this._type=type;this._startTime=startTime;this._endTime=endTime;}
static fromPayload(payload)
{let type=WebInspector.GarbageCollection.Type.Full;if(payload.type===HeapAgent.GarbageCollectionType.Partial)
type=WebInspector.GarbageCollection.Type.Partial;return new WebInspector.GarbageCollection(type,payload.startTime,payload.endTime);}
get type(){return this._type;}
get startTime(){return this._startTime;}
get endTime(){return this._endTime;}
get duration()
{return this._endTime-this._startTime;}};WebInspector.GarbageCollection.Type={Partial:Symbol("Partial"),Full:Symbol("Full")};WebInspector.Point=class Point
{constructor(x,y)
{this.x=x||0;this.y=y||0;}
static fromEvent(event)
{return new WebInspector.Point(event.pageX,event.pageY);}
static fromEventInElement(event,element)
{var wkPoint=window.webkitConvertPointFromPageToNode(element,new WebKitPoint(event.pageX,event.pageY));return new WebInspector.Point(wkPoint.x,wkPoint.y);}
toString()
{return"WebInspector.Point["+this.x+","+this.y+"]";}
copy()
{return new WebInspector.Point(this.x,this.y);}
equals(anotherPoint)
{return this.x===anotherPoint.x&&this.y===anotherPoint.y;}
distance(anotherPoint)
{var dx=anotherPoint.x-this.x;var dy=anotherPoint.y-this.y;return Math.sqrt(dx*dx,dy*dy);}};WebInspector.Size=class Size
{constructor(width,height)
{this.width=width||0;this.height=height||0;}
toString()
{return"WebInspector.Size["+this.width+","+this.height+"]";}
copy()
{return new WebInspector.Size(this.width,this.height);}
equals(anotherSize)
{return this.width===anotherSize.width&&this.height===anotherSize.height;}};WebInspector.Size.ZERO_SIZE=new WebInspector.Size(0,0);WebInspector.Rect=class Rect
{constructor(x,y,width,height)
{this.origin=new WebInspector.Point(x||0,y||0);this.size=new WebInspector.Size(width||0,height||0);}
static rectFromClientRect(clientRect)
{return new WebInspector.Rect(clientRect.left,clientRect.top,clientRect.width,clientRect.height);}
static unionOfRects(rects)
{var union=rects[0];for(var i=1;i<rects.length;++i)
union=union.unionWithRect(rects[i]);return union;}
toString()
{return"WebInspector.Rect["+[this.origin.x,this.origin.y,this.size.width,this.size.height].join(", ")+"]";}
copy()
{return new WebInspector.Rect(this.origin.x,this.origin.y,this.size.width,this.size.height);}
equals(anotherRect)
{return this.origin.equals(anotherRect.origin)&&this.size.equals(anotherRect.size);}
inset(insets)
{return new WebInspector.Rect(this.origin.x+insets.left,this.origin.y+insets.top,this.size.width-insets.left-insets.right,this.size.height-insets.top-insets.bottom);}
pad(padding)
{return new WebInspector.Rect(this.origin.x-padding,this.origin.y-padding,this.size.width+padding*2,this.size.height+padding*2);}
minX()
{return this.origin.x;}
minY()
{return this.origin.y;}
midX()
{return this.origin.x+(this.size.width/2);}
midY()
{return this.origin.y+(this.size.height/2);}
maxX()
{return this.origin.x+this.size.width;}
maxY()
{return this.origin.y+this.size.height;}
intersectionWithRect(rect)
{var x1=Math.max(this.minX(),rect.minX());var x2=Math.min(this.maxX(),rect.maxX());if(x1>x2)
return WebInspector.Rect.ZERO_RECT;var intersection=new WebInspector.Rect;intersection.origin.x=x1;intersection.size.width=x2-x1;var y1=Math.max(this.minY(),rect.minY());var y2=Math.min(this.maxY(),rect.maxY());if(y1>y2)
return WebInspector.Rect.ZERO_RECT;intersection.origin.y=y1;intersection.size.height=y2-y1;return intersection;}
unionWithRect(rect)
{var x=Math.min(this.minX(),rect.minX());var y=Math.min(this.minY(),rect.minY());var width=Math.max(this.maxX(),rect.maxX())-x;var height=Math.max(this.maxY(),rect.maxY())-y;return new WebInspector.Rect(x,y,width,height);}
round()
{return new WebInspector.Rect(Math.floor(this.origin.x),Math.floor(this.origin.y),Math.ceil(this.size.width),Math.ceil(this.size.height));}};WebInspector.Rect.ZERO_RECT=new WebInspector.Rect(0,0,0,0);WebInspector.EdgeInsets=class EdgeInsets
{constructor(top,right,bottom,left)
{if(arguments.length===1){this.top=top;this.right=top;this.bottom=top;this.left=top;}else if(arguments.length===4){this.top=top;this.right=right;this.bottom=bottom;this.left=left;}}
equals(anotherInset)
{return this.top===anotherInset.top&&this.right===anotherInset.right&&this.bottom===anotherInset.bottom&&this.left===anotherInset.left;}
copy()
{return new WebInspector.EdgeInsets(this.top,this.right,this.bottom,this.left);}};WebInspector.RectEdge={MIN_X:0,MIN_Y:1,MAX_X:2,MAX_Y:3};WebInspector.Quad=class Quad
{constructor(quad)
{this.points=[new WebInspector.Point(quad[0],quad[1]), new WebInspector.Point(quad[2],quad[3]), new WebInspector.Point(quad[4],quad[5]), new WebInspector.Point(quad[6],quad[7])
];this.width=Math.round(Math.sqrt(Math.pow(quad[0]-quad[2],2)+Math.pow(quad[1]-quad[3],2)));this.height=Math.round(Math.sqrt(Math.pow(quad[0]-quad[6],2)+Math.pow(quad[1]-quad[7],2)));}
toProtocol()
{return[this.points[0].x,this.points[0].y,this.points[1].x,this.points[1].y,this.points[2].x,this.points[2].y,this.points[3].x,this.points[3].y];}};WebInspector.Polygon=class Polygon
{constructor(points)
{this.points=points;}
bounds()
{var minX=Number.MAX_VALUE;var minY=Number.MAX_VALUE;var maxX=-Number.MAX_VALUE;var maxY=-Number.MAX_VALUE;for(var point of this.points){minX=Math.min(minX,point.x);maxX=Math.max(maxX,point.x);minY=Math.min(minY,point.y);maxY=Math.max(maxY,point.y);}
return new WebInspector.Rect(minX,minY,maxX-minX,maxY-minY);}};WebInspector.CubicBezier=class CubicBezier
{constructor(x1,y1,x2,y2)
{this._inPoint=new WebInspector.Point(x1,y1);this._outPoint=new WebInspector.Point(x2,y2);this._curveInfo={x:{c:3.0*x1},y:{c:3.0*y1}};this._curveInfo.x.b=3.0*(x2-x1)-this._curveInfo.x.c;this._curveInfo.x.a=1.0-this._curveInfo.x.c-this._curveInfo.x.b;this._curveInfo.y.b=3.0*(y2-y1)-this._curveInfo.y.c;this._curveInfo.y.a=1.0-this._curveInfo.y.c-this._curveInfo.y.b;}
static fromCoordinates(coordinates)
{if(!coordinates||coordinates.length<4)
return null;coordinates=coordinates.map(Number);if(coordinates.includes(NaN))
return null;return new WebInspector.CubicBezier(coordinates[0],coordinates[1],coordinates[2],coordinates[3]);}
static fromString(text)
{if(!text||!text.length)
return null;var trimmedText=text.toLowerCase().replace(/\s/g,"");if(!trimmedText.length)
return null;if(Object.keys(WebInspector.CubicBezier.keywordValues).includes(trimmedText))
return WebInspector.CubicBezier.fromCoordinates(WebInspector.CubicBezier.keywordValues[trimmedText]);var matches=trimmedText.match(/^cubic-bezier\(([-\d.]+),([-\d.]+),([-\d.]+),([-\d.]+)\)$/);if(!matches)
return null;matches.splice(0,1);return WebInspector.CubicBezier.fromCoordinates(matches);}
get inPoint()
{return this._inPoint;}
get outPoint()
{return this._outPoint;}
copy()
{return new WebInspector.CubicBezier(this._inPoint.x,this._inPoint.y,this._outPoint.x,this._outPoint.y);}
toString()
{var values=[this._inPoint.x,this._inPoint.y,this._outPoint.x,this._outPoint.y];for(var key in WebInspector.CubicBezier.keywordValues){if(Array.shallowEqual(WebInspector.CubicBezier.keywordValues[key],values))
return key;}
return"cubic-bezier("+values.join(", ")+")";}
solve(x,epsilon)
{return this._sampleCurveY(this._solveCurveX(x,epsilon));}
_sampleCurveX(t)
{return((this._curveInfo.x.a*t+this._curveInfo.x.b)*t+this._curveInfo.x.c)*t;}
_sampleCurveY(t)
{return((this._curveInfo.y.a*t+this._curveInfo.y.b)*t+this._curveInfo.y.c)*t;}
_sampleCurveDerivativeX(t)
{return(3.0*this._curveInfo.x.a*t+2.0*this._curveInfo.x.b)*t+this._curveInfo.x.c;}
_solveCurveX(x,epsilon)
{var t0,t1,t2,x2,d2,i;for(t2=x,i=0;i<8;i++){x2=this._sampleCurveX(t2)-x;if(Math.abs(x2)<epsilon)
return t2;d2=this._sampleCurveDerivativeX(t2);if(Math.abs(d2)<1e-6)
break;t2=t2-x2/d2;}
t0=0.0;t1=1.0;t2=x;if(t2<t0)
return t0;if(t2>t1)
return t1;while(t0<t1){x2=this._sampleCurveX(t2);if(Math.abs(x2-x)<epsilon)
return t2;if(x>x2)
t0=t2;else
t1=t2;t2=(t1-t0)*0.5+t0;}
return t2;}};WebInspector.CubicBezier.keywordValues={"ease":[0.25,0.1,0.25,1],"ease-in":[0.42,0,1,1],"ease-out":[0,0,0.58,1],"ease-in-out":[0.42,0,0.58,1],"linear":[0,0,1,1]};WebInspector.Spring=class Spring
{constructor(mass,stiffness,damping,initialVelocity)
{this.mass=Math.max(1,mass);this.stiffness=Math.max(1,stiffness);this.damping=Math.max(0,damping);this.initialVelocity=initialVelocity;}
static fromValues(values)
{if(!values||values.length<4)
return null;values=values.map(Number);if(values.includes(NaN))
return null;return new WebInspector.Spring(...values);}
static fromString(text)
{if(!text||!text.length)
return null;let trimmedText=text.toLowerCase().trim();if(!trimmedText.length)
return null;let matches=trimmedText.match(/^spring\(([\d.]+)\s+([\d.]+)\s+([\d.]+)\s+([-\d.]+)\)$/);if(!matches)
return null;return WebInspector.Spring.fromValues(matches.slice(1));}
copy()
{return new WebInspector.Spring(this.mass,this.stiffness,this.damping,this.initialVelocity);}
toString()
{return`spring(${this.mass} ${this.stiffness} ${this.damping} ${this.initialVelocity})`;}
solve(t)
{let w0=Math.sqrt(this.stiffness/this.mass);let zeta=this.damping/(2*Math.sqrt(this.stiffness*this.mass));let wd=0;let A=1;let B=-this.initialVelocity+w0;if(zeta<1){wd=w0*Math.sqrt(1-zeta*zeta);A=1;B=(zeta*w0+-this.initialVelocity)/wd;}
if(zeta<1)
t=Math.exp(-t*zeta*w0)*(A*Math.cos(wd*t)+B*Math.sin(wd*t));else
t=(A+B*t)*Math.exp(-t*w0);return 1-t;}
calculateDuration(epsilon)
{epsilon=epsilon||0.0001;let t=0;let current=0;let minimum=Number.POSITIVE_INFINITY;while(current>=epsilon||minimum>=epsilon){current=Math.abs(1-this.solve(t)); if(minimum<epsilon&&current>=epsilon)
minimum=Number.POSITIVE_INFINITY; else if(current<minimum)
minimum=current;t+=0.1;}
return t;}};WebInspector.Gradient=class Gradient
{constructor(type,stops)
{this.type=type;this.stops=stops;}
static fromString(cssString)
{var type;var openingParenthesisIndex=cssString.indexOf("(");var typeString=cssString.substring(0,openingParenthesisIndex);if(typeString.indexOf(WebInspector.Gradient.Types.Linear)!==-1)
type=WebInspector.Gradient.Types.Linear;else if(typeString.indexOf(WebInspector.Gradient.Types.Radial)!==-1)
type=WebInspector.Gradient.Types.Radial;else
return null;var components=[];var currentParams=[];var currentParam="";var openParentheses=0;var ch=openingParenthesisIndex+1;var c=null;while(c=cssString[ch]){if(c==="(")
openParentheses++;if(c===")")
openParentheses--;var isComma=c===",";var isSpace=/\s/.test(c);if(openParentheses===0){if(isSpace){if(currentParam!=="")
currentParams.push(currentParam);currentParam="";}else if(isComma){currentParams.push(currentParam);components.push(currentParams);currentParams=[];currentParam="";}}
if(openParentheses===-1){currentParams.push(currentParam);components.push(currentParams);break;}
if(openParentheses>0||(!isComma&&!isSpace))
currentParam+=c;ch++;}
if(openParentheses!==-1)
return null;var gradient;if(type===WebInspector.Gradient.Types.Linear)
gradient=WebInspector.LinearGradient.fromComponents(components);else
gradient=WebInspector.RadialGradient.fromComponents(components);if(gradient)
gradient.repeats=typeString.startsWith("repeating");return gradient;}
static stopsWithComponents(components)
{var stops=components.map(function(component){while(component.length){var color=WebInspector.Color.fromString(component.shift());if(!color)
continue;var stop={color};if(component.length&&component[0].substr(-1)==="%")
stop.offset=parseFloat(component.shift())/100;return stop;}});if(!stops.length)
return null;for(var i=0,count=stops.length;i<count;++i){var stop=stops[i];
if(!stop)
return null;if(!stop.offset)
stop.offset=i/(count-1);}
return stops;}
stringFromStops(stops)
{var count=stops.length-1;return stops.map(function(stop,index){var str=stop.color;if(stop.offset!==index/count)
str+=" "+Math.round(stop.offset*10000)/100+"%";return str;}).join(", ");}
copy()
{}
toString()
{}};WebInspector.Gradient.Types={Linear:"linear-gradient",Radial:"radial-gradient"};WebInspector.LinearGradient=class LinearGradient extends WebInspector.Gradient
{constructor(angle,stops)
{super(WebInspector.Gradient.Types.Linear,stops);this._angle=angle;}
static fromComponents(components)
{let angle={value:180,units:WebInspector.LinearGradient.AngleUnits.DEG};if(components[0].length===1&&!WebInspector.Color.fromString(components[0][0])){let match=components[0][0].match(/([-\d\.]+)(\w+)/);if(!match||!Object.values(WebInspector.LinearGradient.AngleUnits).includes(match[2]))
return null;angle.value=parseFloat(match[1]);angle.units=match[2];components.shift();}else if(components[0][0]==="to"){components[0].shift();switch(components[0].sort().join(" ")){case"top":angle.value=0;break;case"right top":angle.value=45;break;case"right":angle.value=90;break;case"bottom right":angle.value=135;break;case"bottom":angle.value=180;break;case"bottom left":angle.value=225;break;case"left":angle.value=270;break;case"left top":angle.value=315;break;default:return null;}
components.shift();}else if(components[0].length!==1&&!WebInspector.Color.fromString(components[0][0])){
return null;}
var stops=WebInspector.Gradient.stopsWithComponents(components);if(!stops)
return null;return new WebInspector.LinearGradient(angle,stops);}
set angleValue(value){this._angle.value=value;}
get angleValue()
{return this._angle.value.maxDecimals(2);}
set angleUnits(units)
{if(units===this._angle.units)
return;this._angle.value=this._angleValueForUnits(units);this._angle.units=units;}
get angleUnits(){return this._angle.units;}
copy()
{return new WebInspector.LinearGradient(this._angle,this.stops.concat());}
toString()
{let str="";let deg=this._angleValueForUnits(WebInspector.LinearGradient.AngleUnits.DEG);if(deg===0)
str+="to top";else if(deg===45)
str+="to top right";else if(deg===90)
str+="to right";else if(deg===135)
str+="to bottom right";else if(deg===225)
str+="to bottom left";else if(deg===270)
str+="to left";else if(deg===315)
str+="to top left";else if(deg!==180)
str+=this.angleValue+this.angleUnits;if(str!=="")
str+=", ";str+=this.stringFromStops(this.stops);return(this.repeats?"repeating-":"")+this.type+"("+str+")";}
_angleValueForUnits(units)
{if(units===this._angle.units)
return this._angle.value;let deg=0;switch(this._angle.units){case WebInspector.LinearGradient.AngleUnits.DEG:deg=this._angle.value;break;case WebInspector.LinearGradient.AngleUnits.RAD:deg=this._angle.value*180/Math.PI;break;case WebInspector.LinearGradient.AngleUnits.GRAD:deg=this._angle.value/400*360;break;case WebInspector.LinearGradient.AngleUnits.TURN:deg=this._angle.value*360;break;default:WebInspector.reportInternalError(`Unknown angle units "${this._angle.units}"`);return 0;}
let value=0;switch(units){case WebInspector.LinearGradient.AngleUnits.DEG:value=deg;break;case WebInspector.LinearGradient.AngleUnits.RAD:value=deg*Math.PI/180;break;case WebInspector.LinearGradient.AngleUnits.GRAD:value=deg/360*400;break;case WebInspector.LinearGradient.AngleUnits.TURN:value=deg/360;break;}
return value;}};WebInspector.LinearGradient.AngleUnits={DEG:"deg",RAD:"rad",GRAD:"grad",TURN:"turn",};WebInspector.RadialGradient=class RadialGradient extends WebInspector.Gradient
{constructor(sizing,stops)
{super(WebInspector.Gradient.Types.Radial,stops);this.sizing=sizing;}
static fromComponents(components)
{var sizing=!WebInspector.Color.fromString(components[0].join(" "))?components.shift().join(" "):"";var stops=WebInspector.Gradient.stopsWithComponents(components);if(!stops)
return null;return new WebInspector.RadialGradient(sizing,stops);}
copy()
{return new WebInspector.RadialGradient(this.sizing,this.stops.concat());}
toString()
{var str=this.sizing;if(str!=="")
str+=", ";str+=this.stringFromStops(this.stops);return(this.repeats?"repeating-":"")+this.type+"("+str+")";}};WebInspector.HeapAllocationsInstrument=class HeapAllocationsInstrument extends WebInspector.Instrument
{constructor()
{super();this._snapshotIntervalIdentifier=undefined;}
static supported()
{return window.HeapAgent;}
get timelineRecordType()
{return WebInspector.TimelineRecord.Type.HeapAllocations;}
startInstrumentation(initiatedByBackend)
{if(!initiatedByBackend)
HeapAgent.startTracking();const snapshotInterval=10000;this._snapshotIntervalIdentifier=setInterval(this._takeHeapSnapshot.bind(this),snapshotInterval);}
stopInstrumentation(initiatedByBackend)
{if(!initiatedByBackend)
HeapAgent.stopTracking();window.clearInterval(this._snapshotIntervalIdentifier);this._snapshotIntervalIdentifier=undefined;}
_takeHeapSnapshot()
{HeapAgent.snapshot(function(error,timestamp,snapshotStringData){let workerProxy=WebInspector.HeapSnapshotWorkerProxy.singleton();workerProxy.createSnapshot(snapshotStringData,({objectId,snapshot:serializedSnapshot})=>{let snapshot=WebInspector.HeapSnapshotProxy.deserialize(objectId,serializedSnapshot);WebInspector.timelineManager.heapSnapshotAdded(timestamp,snapshot);});});}};WebInspector.HeapAllocationsTimelineRecord=class HeapAllocationsTimelineRecord extends WebInspector.TimelineRecord
{constructor(timestamp,heapSnapshot)
{super(WebInspector.TimelineRecord.Type.HeapAllocations,timestamp,timestamp);this._timestamp=timestamp;this._heapSnapshot=heapSnapshot;}
get timestamp(){return this._timestamp;}
get heapSnapshot(){return this._heapSnapshot;}};WebInspector.HeapSnapshotRootPath=class HeapSnapshotRootPath extends WebInspector.Object
{constructor(node,pathComponent,parent,isGlobalScope)
{super();this._node=node||null;this._parent=parent||null;this._pathComponent=typeof pathComponent==="string"?pathComponent:null;this._isGlobalScope=isGlobalScope||false;if(this._parent&&this._parent.isEmpty())
this._parent=null;}
static emptyPath()
{return new WebInspector.HeapSnapshotRootPath(null);}
static pathComponentForIndividualEdge(edge)
{switch(edge.type){case WebInspector.HeapSnapshotEdgeProxy.EdgeType.Internal:return null;case WebInspector.HeapSnapshotEdgeProxy.EdgeType.Index:return"["+edge.data+"]";case WebInspector.HeapSnapshotEdgeProxy.EdgeType.Property:case WebInspector.HeapSnapshotEdgeProxy.EdgeType.Variable:if(WebInspector.HeapSnapshotRootPath.canPropertyNameBeDotAccess(edge.data))
return edge.data;return"["+doubleQuotedString(edge.data)+"]";}}
static canPropertyNameBeDotAccess(propertyName)
{return/^(?![0-9])\w+$/.test(propertyName);}
get node(){return this._node;}
get parent(){return this._parent;}
get pathComponent(){return this._pathComponent;}
get rootNode()
{return this._parent?this._parent.rootNode:this._node;}
get fullPath()
{let components=[];for(let p=this;p&&p.pathComponent;p=p.parent)
components.push(p.pathComponent);components.reverse();return components.join("");}
isRoot()
{return!this._parent;}
isEmpty()
{return!this._node;}
isGlobalScope()
{return this._isGlobalScope;}
isPathComponentImpossible()
{return this._pathComponent&&this._pathComponent.startsWith("@");}
isFullPathImpossible()
{if(this.isEmpty())
return true;if(this.isPathComponentImpossible())
return true;if(this._parent)
return this._parent.isFullPathImpossible();return false;}
appendInternal(node)
{return new WebInspector.HeapSnapshotRootPath(node,WebInspector.HeapSnapshotRootPath.SpecialPathComponent.InternalPropertyName,this);}
appendArrayIndex(node,index)
{let component="["+index+"]";return new WebInspector.HeapSnapshotRootPath(node,component,this);}
appendPropertyName(node,propertyName)
{let component=WebInspector.HeapSnapshotRootPath.canPropertyNameBeDotAccess(propertyName)?"."+propertyName:"["+doubleQuotedString(propertyName)+"]";return new WebInspector.HeapSnapshotRootPath(node,component,this);}
appendVariableName(node,variableName)
{if(this._isGlobalScope)
return this.appendPropertyName(node,variableName);return new WebInspector.HeapSnapshotRootPath(node,variableName,this);}
appendGlobalScopeName(node,globalScopeName)
{return new WebInspector.HeapSnapshotRootPath(node,globalScopeName,this,true);}
appendEdge(edge)
{switch(edge.type){case WebInspector.HeapSnapshotEdgeProxy.EdgeType.Internal:return this.appendInternal(edge.to);case WebInspector.HeapSnapshotEdgeProxy.EdgeType.Index:return this.appendArrayIndex(edge.to,edge.data);case WebInspector.HeapSnapshotEdgeProxy.EdgeType.Property:return this.appendPropertyName(edge.to,edge.data);case WebInspector.HeapSnapshotEdgeProxy.EdgeType.Variable:return this.appendVariableName(edge.to,edge.data);}
console.error("Unexpected edge type",edge.type);}};WebInspector.HeapSnapshotRootPath.SpecialPathComponent={InternalPropertyName:"@internal",};WebInspector.IndexedDatabase=class IndexedDatabase extends WebInspector.Object
{constructor(name,securityOrigin,version,objectStores)
{super();this._name=name;this._securityOrigin=securityOrigin;this._host=parseSecurityOrigin(securityOrigin).host;this._version=version;this._objectStores=objectStores||[];for(var objectStore of this._objectStores)
objectStore.establishRelationship(this);}
get name(){return this._name;}
get securityOrigin(){return this._securityOrigin;}
get host(){return this._host;}
get version(){return this._version;}
get objectStores(){return this._objectStores;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.IndexedDatabase.NameCookieKey]=this._name;cookie[WebInspector.IndexedDatabase.HostCookieKey]=this._host;}};WebInspector.IndexedDatabase.TypeIdentifier="indexed-database";WebInspector.IndexedDatabase.NameCookieKey="indexed-database-name";WebInspector.IndexedDatabase.HostCookieKey="indexed-database-host";WebInspector.IndexedDatabaseObjectStore=class IndexedDatabaseObjectStore extends WebInspector.Object
{constructor(name,keyPath,autoIncrement,indexes)
{super();this._name=name;this._keyPath=keyPath;this._autoIncrement=autoIncrement||false;this._indexes=indexes||[];this._parentDatabase=null;for(var index of this._indexes)
index.establishRelationship(this);}
get name(){return this._name;}
get keyPath(){return this._keyPath;}
get autoIncrement(){return this._autoIncrement;}
get parentDatabase(){return this._parentDatabase;}
get indexes(){return this._indexes;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.IndexedDatabaseObjectStore.NameCookieKey]=this._name;cookie[WebInspector.IndexedDatabaseObjectStore.KeyPathCookieKey]=this._keyPath;}
establishRelationship(parentDatabase)
{this._parentDatabase=parentDatabase||null;}};WebInspector.IndexedDatabaseObjectStore.TypeIdentifier="indexed-database-object-store";WebInspector.IndexedDatabaseObjectStore.NameCookieKey="indexed-database-object-store-name";WebInspector.IndexedDatabaseObjectStore.KeyPathCookieKey="indexed-database-object-store-key-path";WebInspector.IndexedDatabaseObjectStoreIndex=class IndexedDatabaseObjectStoreIndex extends WebInspector.Object
{constructor(name,keyPath,unique,multiEntry)
{super();this._name=name;this._keyPath=keyPath;this._unique=unique||false;this._multiEntry=multiEntry||false;this._parentObjectStore=null;}
get name(){return this._name;}
get keyPath(){return this._keyPath;}
get unique(){return this._unique;}
get multiEntry(){return this._multiEntry;}
get parentObjectStore(){return this._parentObjectStore;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.IndexedDatabaseObjectStoreIndex.NameCookieKey]=this._name;cookie[WebInspector.IndexedDatabaseObjectStoreIndex.KeyPathCookieKey]=this._keyPath;}
establishRelationship(parentObjectStore)
{this._parentObjectStore=parentObjectStore||null;}};WebInspector.IndexedDatabaseObjectStoreIndex.TypeIdentifier="indexed-database-object-store-index";WebInspector.IndexedDatabaseObjectStoreIndex.NameCookieKey="indexed-database-object-store-index-name";WebInspector.IndexedDatabaseObjectStoreIndex.KeyPathCookieKey="indexed-database-object-store-index-key-path";WebInspector.IssueMessage=class IssueMessage extends WebInspector.Object
{constructor(consoleMessage)
{super();this._consoleMessage=consoleMessage;this._text=this._issueText();switch(this._consoleMessage.source){case"javascript":
var prefixRegex=/^([^:]+): (?:DOM Exception \d+: )?/;var match=prefixRegex.exec(this._text);if(match&&match[1]in WebInspector.IssueMessage.Type._prefixTypeMap){this._type=WebInspector.IssueMessage.Type._prefixTypeMap[match[1]];this._text=this._text.substring(match[0].length);}else
this._type=WebInspector.IssueMessage.Type.OtherIssue;break;case"css":case"xml":this._type=WebInspector.IssueMessage.Type.PageIssue;break;case"network":this._type=WebInspector.IssueMessage.Type.NetworkIssue;break;case"security":this._type=WebInspector.IssueMessage.Type.SecurityIssue;break;case"console-api":case"storage":case"appcache":case"rendering":case"other":this._type=WebInspector.IssueMessage.Type.OtherIssue;break;default:console.error("Unknown issue source:",this._consoleMessage.source);this._type=WebInspector.IssueMessage.Type.OtherIssue;}
this._sourceCodeLocation=consoleMessage.sourceCodeLocation;if(this._sourceCodeLocation)
this._sourceCodeLocation.addEventListener(WebInspector.SourceCodeLocation.Event.DisplayLocationChanged,this._sourceCodeLocationDisplayLocationChanged,this);}
static displayName(type)
{switch(type){case WebInspector.IssueMessage.Type.SemanticIssue:return WebInspector.UIString("Semantic Issue");case WebInspector.IssueMessage.Type.RangeIssue:return WebInspector.UIString("Range Issue");case WebInspector.IssueMessage.Type.ReferenceIssue:return WebInspector.UIString("Reference Issue");case WebInspector.IssueMessage.Type.TypeIssue:return WebInspector.UIString("Type Issue");case WebInspector.IssueMessage.Type.PageIssue:return WebInspector.UIString("Page Issue");case WebInspector.IssueMessage.Type.NetworkIssue:return WebInspector.UIString("Network Issue");case WebInspector.IssueMessage.Type.SecurityIssue:return WebInspector.UIString("Security Issue");case WebInspector.IssueMessage.Type.OtherIssue:return WebInspector.UIString("Other Issue");default:console.error("Unknown issue message type:",type);return WebInspector.UIString("Other Issue");}}
get text(){return this._text;}
get type(){return this._type;}
get level(){return this._consoleMessage.level;}
get source(){return this._consoleMessage.source;}
get url(){return this._consoleMessage.url;}
get sourceCodeLocation(){return this._sourceCodeLocation;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.IssueMessage.URLCookieKey]=this.url;cookie[WebInspector.IssueMessage.LineNumberCookieKey]=this._sourceCodeLocation?this._sourceCodeLocation.lineNumber:0;cookie[WebInspector.IssueMessage.ColumnNumberCookieKey]=this._sourceCodeLocation?this._sourceCodeLocation.columnNumber:0;}
_issueText()
{let parameters=this._consoleMessage.parameters;if(!parameters)
return this._consoleMessage.messageText;if(WebInspector.RemoteObject.type(parameters[0])!=="string")
return this._consoleMessage.messageText;function valueFormatter(obj)
{return obj.description;}
let formatters={};formatters.o=valueFormatter;formatters.s=valueFormatter;formatters.f=valueFormatter;formatters.i=valueFormatter;formatters.d=valueFormatter;function append(a,b)
{a+=b;return a;}
let result=String.format(parameters[0].description,parameters.slice(1),formatters,"",append);let resultText=result.formattedResult;for(let i=0;i<result.unusedSubstitutions.length;++i)
resultText+=" "+result.unusedSubstitutions[i].description;return resultText;}
_sourceCodeLocationDisplayLocationChanged(event)
{this.dispatchEventToListeners(WebInspector.IssueMessage.Event.DisplayLocationDidChange,event.data);}};WebInspector.IssueMessage.Level={Error:"error",Warning:"warning"};WebInspector.IssueMessage.Type={SemanticIssue:"issue-message-type-semantic-issue",RangeIssue:"issue-message-type-range-issue",ReferenceIssue:"issue-message-type-reference-issue",TypeIssue:"issue-message-type-type-issue",PageIssue:"issue-message-type-page-issue",NetworkIssue:"issue-message-type-network-issue",SecurityIssue:"issue-message-type-security-issue",OtherIssue:"issue-message-type-other-issue"};WebInspector.IssueMessage.TypeIdentifier="issue-message";WebInspector.IssueMessage.URLCookieKey="issue-message-url";WebInspector.IssueMessage.LineNumberCookieKey="issue-message-line-number";WebInspector.IssueMessage.ColumnNumberCookieKey="issue-message-column-number";WebInspector.IssueMessage.Event={LocationDidChange:"issue-message-location-did-change",DisplayLocationDidChange:"issue-message-display-location-did-change"};WebInspector.IssueMessage.Type._prefixTypeMap={"SyntaxError":WebInspector.IssueMessage.Type.SemanticIssue,"URIError":WebInspector.IssueMessage.Type.SemanticIssue,"EvalError":WebInspector.IssueMessage.Type.SemanticIssue,"INVALID_CHARACTER_ERR":WebInspector.IssueMessage.Type.SemanticIssue,"SYNTAX_ERR":WebInspector.IssueMessage.Type.SemanticIssue,"RangeError":WebInspector.IssueMessage.Type.RangeIssue,"INDEX_SIZE_ERR":WebInspector.IssueMessage.Type.RangeIssue,"DOMSTRING_SIZE_ERR":WebInspector.IssueMessage.Type.RangeIssue,"ReferenceError":WebInspector.IssueMessage.Type.ReferenceIssue,"HIERARCHY_REQUEST_ERR":WebInspector.IssueMessage.Type.ReferenceIssue,"INVALID_STATE_ERR":WebInspector.IssueMessage.Type.ReferenceIssue,"NOT_FOUND_ERR":WebInspector.IssueMessage.Type.ReferenceIssue,"WRONG_DOCUMENT_ERR":WebInspector.IssueMessage.Type.ReferenceIssue,"TypeError":WebInspector.IssueMessage.Type.TypeIssue,"INVALID_NODE_TYPE_ERR":WebInspector.IssueMessage.Type.TypeIssue,"TYPE_MISMATCH_ERR":WebInspector.IssueMessage.Type.TypeIssue,"SECURITY_ERR":WebInspector.IssueMessage.Type.SecurityIssue,"NETWORK_ERR":WebInspector.IssueMessage.Type.NetworkIssue,"ABORT_ERR":WebInspector.IssueMessage.Type.OtherIssue,"DATA_CLONE_ERR":WebInspector.IssueMessage.Type.OtherIssue,"INUSE_ATTRIBUTE_ERR":WebInspector.IssueMessage.Type.OtherIssue,"INVALID_ACCESS_ERR":WebInspector.IssueMessage.Type.OtherIssue,"INVALID_MODIFICATION_ERR":WebInspector.IssueMessage.Type.OtherIssue,"NAMESPACE_ERR":WebInspector.IssueMessage.Type.OtherIssue,"NOT_SUPPORTED_ERR":WebInspector.IssueMessage.Type.OtherIssue,"NO_DATA_ALLOWED_ERR":WebInspector.IssueMessage.Type.OtherIssue,"NO_MODIFICATION_ALLOWED_ERR":WebInspector.IssueMessage.Type.OtherIssue,"QUOTA_EXCEEDED_ERR":WebInspector.IssueMessage.Type.OtherIssue,"TIMEOUT_ERR":WebInspector.IssueMessage.Type.OtherIssue,"URL_MISMATCH_ERR":WebInspector.IssueMessage.Type.OtherIssue,"VALIDATION_ERR":WebInspector.IssueMessage.Type.OtherIssue};WebInspector.KeyboardShortcut=class KeyboardShortcut extends WebInspector.Object
{constructor(modifiers,key,callback,targetElement)
{super();if(typeof key==="string"){key=key[0].toUpperCase();key=new WebInspector.Key(key.charCodeAt(0),key);}
if(callback&&!targetElement)
targetElement=document;this._modifiers=modifiers||WebInspector.KeyboardShortcut.Modifier.None;this._key=key;this._targetElement=targetElement;this._callback=callback;this._disabled=false;this._implicitlyPreventsDefault=true;if(targetElement){var targetKeyboardShortcuts=targetElement._keyboardShortcuts;if(!targetKeyboardShortcuts)
targetKeyboardShortcuts=targetElement._keyboardShortcuts=[];targetKeyboardShortcuts.push(this);if(!WebInspector.KeyboardShortcut._registeredKeyDownListener){WebInspector.KeyboardShortcut._registeredKeyDownListener=true;window.addEventListener("keydown",WebInspector.KeyboardShortcut._handleKeyDown);}}}
static _handleKeyDown(event)
{if(event.defaultPrevented)
return;for(var targetElement=event.target;targetElement;targetElement=targetElement.parentNode){if(!targetElement._keyboardShortcuts)
continue;for(var i=0;i<targetElement._keyboardShortcuts.length;++i){var keyboardShortcut=targetElement._keyboardShortcuts[i];if(!keyboardShortcut.matchesEvent(event))
continue;if(!keyboardShortcut.callback)
continue;keyboardShortcut.callback(event,keyboardShortcut);if(keyboardShortcut.implicitlyPreventsDefault)
event.preventDefault();return;}}}
get modifiers()
{return this._modifiers;}
get key()
{return this._key;}
get displayName()
{var result="";if(this._modifiers&WebInspector.KeyboardShortcut.Modifier.Control)
result+="\u2303";if(this._modifiers&WebInspector.KeyboardShortcut.Modifier.Option)
result+=WebInspector.Platform.name==="mac"?"\u2325":"\u2387";if(this._modifiers&WebInspector.KeyboardShortcut.Modifier.Shift)
result+="\u21e7";if(this._modifiers&WebInspector.KeyboardShortcut.Modifier.Command)
result+="\u2318";result+=this._key.toString();return result;}
get callback()
{return this._callback;}
set callback(callback)
{this._callback=callback||null;}
get disabled()
{return this._disabled;}
set disabled(disabled)
{this._disabled=disabled||false;}
get implicitlyPreventsDefault()
{return this._implicitlyPreventsDefault;}
set implicitlyPreventsDefault(implicitly)
{this._implicitlyPreventsDefault=implicitly;}
unbind()
{this._disabled=true;if(!this._targetElement)
return;var targetKeyboardShortcuts=this._targetElement._keyboardShortcuts;if(!targetKeyboardShortcuts)
return;targetKeyboardShortcuts.remove(this);}
matchesEvent(event)
{if(this._disabled)
return false;if(this._key.keyCode!==event.keyCode)
return false;var eventModifiers=WebInspector.KeyboardShortcut.Modifier.None;if(event.shiftKey)
eventModifiers|=WebInspector.KeyboardShortcut.Modifier.Shift;if(event.ctrlKey)
eventModifiers|=WebInspector.KeyboardShortcut.Modifier.Control;if(event.altKey)
eventModifiers|=WebInspector.KeyboardShortcut.Modifier.Option;if(event.metaKey)
eventModifiers|=WebInspector.KeyboardShortcut.Modifier.Command;return this._modifiers===eventModifiers;}};WebInspector.Key=class Key
{constructor(keyCode,displayName)
{this._keyCode=keyCode;this._displayName=displayName;}
get keyCode()
{return this._keyCode;}
get displayName()
{return this._displayName;}
toString()
{return this._displayName;}};WebInspector.KeyboardShortcut.Modifier={None:0,Shift:1,Control:2,Option:4,Command:8,get CommandOrControl()
{return WebInspector.Platform.name==="mac"?this.Command:this.Control;}};WebInspector.KeyboardShortcut.Key={Backspace:new WebInspector.Key(8,"\u232b"),Tab:new WebInspector.Key(9,"\u21e5"),Enter:new WebInspector.Key(13,"\u21a9"),Escape:new WebInspector.Key(27,"\u238b"),Space:new WebInspector.Key(32,"Space"),PageUp:new WebInspector.Key(33,"\u21de"),PageDown:new WebInspector.Key(34,"\u21df"),End:new WebInspector.Key(35,"\u2198"),Home:new WebInspector.Key(36,"\u2196"),Left:new WebInspector.Key(37,"\u2190"),Up:new WebInspector.Key(38,"\u2191"),Right:new WebInspector.Key(39,"\u2192"),Down:new WebInspector.Key(40,"\u2193"),Delete:new WebInspector.Key(46,"\u2326"),Zero:new WebInspector.Key(48,"0"),F1:new WebInspector.Key(112,"F1"),F2:new WebInspector.Key(113,"F2"),F3:new WebInspector.Key(114,"F3"),F4:new WebInspector.Key(115,"F4"),F5:new WebInspector.Key(116,"F5"),F6:new WebInspector.Key(117,"F6"),F7:new WebInspector.Key(118,"F7"),F8:new WebInspector.Key(119,"F8"),F9:new WebInspector.Key(120,"F9"),F10:new WebInspector.Key(121,"F10"),F11:new WebInspector.Key(122,"F11"),F12:new WebInspector.Key(123,"F12"),Semicolon:new WebInspector.Key(186,";"),Plus:new WebInspector.Key(187,"+"),Comma:new WebInspector.Key(188,","),Minus:new WebInspector.Key(189,"-"),Period:new WebInspector.Key(190,"."),Slash:new WebInspector.Key(191,"/"),Apostrophe:new WebInspector.Key(192,"`"),LeftCurlyBrace:new WebInspector.Key(219,"{"),Backslash:new WebInspector.Key(220,"\\"),RightCurlyBrace:new WebInspector.Key(221,"}"),SingleQuote:new WebInspector.Key(222,"\'")};WebInspector.LayoutInstrument=class LayoutInstrument extends WebInspector.Instrument
{ get timelineRecordType()
{return WebInspector.TimelineRecord.Type.Layout;}};WebInspector.LayoutTimelineRecord=class LayoutTimelineRecord extends WebInspector.TimelineRecord
{constructor(eventType,startTime,endTime,callFrames,sourceCodeLocation,quad)
{super(WebInspector.TimelineRecord.Type.Layout,startTime,endTime,callFrames,sourceCodeLocation);if(eventType in WebInspector.LayoutTimelineRecord.EventType)
eventType=WebInspector.LayoutTimelineRecord.EventType[eventType];this._eventType=eventType;this._quad=quad||null;}
static displayNameForEventType(eventType)
{switch(eventType){case WebInspector.LayoutTimelineRecord.EventType.InvalidateStyles:return WebInspector.UIString("Styles Invalidated");case WebInspector.LayoutTimelineRecord.EventType.RecalculateStyles:return WebInspector.UIString("Styles Recalculated");case WebInspector.LayoutTimelineRecord.EventType.InvalidateLayout:return WebInspector.UIString("Layout Invalidated");case WebInspector.LayoutTimelineRecord.EventType.ForcedLayout:return WebInspector.UIString("Forced Layout");case WebInspector.LayoutTimelineRecord.EventType.Layout:return WebInspector.UIString("Layout");case WebInspector.LayoutTimelineRecord.EventType.Paint:return WebInspector.UIString("Paint");case WebInspector.LayoutTimelineRecord.EventType.Composite:return WebInspector.UIString("Composite");}}
get eventType()
{return this._eventType;}
get width()
{return this._quad?this._quad.width:NaN;}
get height()
{return this._quad?this._quad.height:NaN;}
get area()
{return this.width*this.height;}
get quad()
{return this._quad;}
saveIdentityToCookie(cookie)
{super.saveIdentityToCookie(cookie);cookie[WebInspector.LayoutTimelineRecord.EventTypeCookieKey]=this._eventType;}};WebInspector.LayoutTimelineRecord.EventType={InvalidateStyles:"layout-timeline-record-invalidate-styles",RecalculateStyles:"layout-timeline-record-recalculate-styles",InvalidateLayout:"layout-timeline-record-invalidate-layout",ForcedLayout:"layout-timeline-record-forced-layout",Layout:"layout-timeline-record-layout",Paint:"layout-timeline-record-paint",Composite:"layout-timeline-record-composite"};WebInspector.LayoutTimelineRecord.TypeIdentifier="layout-timeline-record";WebInspector.LayoutTimelineRecord.EventTypeCookieKey="layout-timeline-record-event-type";
WebInspector.LazySourceCodeLocation=class LazySourceCodeLocation extends WebInspector.SourceCodeLocation
{constructor(sourceCode,lineNumber,columnNumber)
{super(null,lineNumber,columnNumber);this._initialized=false;this._lazySourceCode=sourceCode;}
isEqual(other)
{if(!other)
return false;return this._lazySourceCode===other._sourceCode&&this._lineNumber===other._lineNumber&&this._columnNumber===other._columnNumber;}
get sourceCode()
{return this._lazySourceCode;}
set sourceCode(sourceCode)
{this.setSourceCode(sourceCode);}
get formattedLineNumber()
{this._lazyInitialization();return this._formattedLineNumber;}
get formattedColumnNumber()
{this._lazyInitialization();return this._formattedColumnNumber;}
formattedPosition()
{this._lazyInitialization();return new WebInspector.SourceCodePosition(this._formattedLineNumber,this._formattedColumnNumber);}
hasFormattedLocation()
{this._lazyInitialization();return super.hasFormattedLocation();}
hasDifferentDisplayLocation()
{this._lazyInitialization();return super.hasDifferentDisplayLocation();}
resolveMappedLocation()
{this._lazyInitialization();super.resolveMappedLocation();}
_lazyInitialization()
{if(!this._initialized){this._initialized=true;this.sourceCode=this._lazySourceCode;}}};WebInspector.LineWidget=class LineWidget extends WebInspector.Object
{constructor(codeMirrorLineWidget,widgetElement)
{super();this._codeMirrorLineWidget=codeMirrorLineWidget;this._widgetElement=widgetElement;}
get codeMirrorLineWidget()
{return this._codeMirrorLineWidget;}
get widgetElement()
{return this._widgetElement;}
clear()
{this._codeMirrorLineWidget.clear();}
update()
{if(this._codeMirrorLineWidget.update)
this._codeMirrorLineWidget.update();}};WebInspector.LogObject=class LogObject extends WebInspector.Object
{constructor()
{super();this._startDate=new Date;}
get startDate()
{return this._startDate;}};WebInspector.MemoryCategory=class MemoryCategory extends WebInspector.Object
{constructor(type,size)
{super();this.type=type;this.size=size;}};WebInspector.MemoryCategory.Type={JavaScript:"javascript",Images:"images",Layers:"layers",Page:"page",};WebInspector.MemoryInstrument=class MemoryInstrument extends WebInspector.Instrument
{constructor()
{super();}
static supported()
{return window.MemoryAgent;}
get timelineRecordType()
{return WebInspector.TimelineRecord.Type.Memory;}
startInstrumentation(initiatedByBackend)
{if(!initiatedByBackend)
MemoryAgent.startTracking();}
stopInstrumentation(initiatedByBackend)
{if(!initiatedByBackend)
MemoryAgent.stopTracking();}};WebInspector.MemoryPressureEvent=class MemoryPressureEvent extends WebInspector.Object
{constructor(timestamp,severity)
{super();this._timestamp=timestamp;this._severity=severity;}
static fromPayload(timestamp,protocolSeverity)
{let severity;switch(protocolSeverity){case MemoryAgent.MemoryPressureSeverity.Critical:severity=WebInspector.MemoryPressureEvent.Severity.Critical;break;case MemoryAgent.MemoryPressureSeverity.NonCritical:severity=WebInspector.MemoryPressureEvent.Severity.NonCritical;break;default:console.error("Unexpected memory pressure severity",protocolSeverity);severity=WebInspector.MemoryPressureEvent.Severity.NonCritical;break;}
return new WebInspector.MemoryPressureEvent(timestamp,severity);}
get timestamp(){return this._timestamp;}
get severity(){return this._severity;}};WebInspector.MemoryPressureEvent.Severity={Critical:Symbol("Critical"),NonCritical:Symbol("NonCritical"),};WebInspector.MemoryTimeline=class MemoryTimeline extends WebInspector.Timeline
{ get memoryPressureEvents(){return this._pressureEvents;}
addMemoryPressureEvent(memoryPressureEvent)
{this._pressureEvents.push(memoryPressureEvent);this.dispatchEventToListeners(WebInspector.MemoryTimeline.Event.MemoryPressureEventAdded,{memoryPressureEvent});}
reset(suppressEvents)
{super.reset(suppressEvents);this._pressureEvents=[];}};WebInspector.MemoryTimeline.Event={MemoryPressureEventAdded:"memory-timeline-memory-pressure-event-added",};WebInspector.MemoryTimelineRecord=class MemoryTimelineRecord extends WebInspector.TimelineRecord
{constructor(timestamp,categories)
{super(WebInspector.TimelineRecord.Type.Memory,timestamp,timestamp);this._timestamp=timestamp;this._categories=WebInspector.MemoryTimelineRecord.memoryCategoriesFromProtocol(categories);this._totalSize=0;for(let{size}of categories)
this._totalSize+=size;}
static memoryCategoriesFromProtocol(categories)
{let javascriptSize=0;let imagesSize=0;let layersSize=0;let pageSize=0;for(let{type,size}of categories){switch(type){case MemoryAgent.CategoryDataType.Javascript:case MemoryAgent.CategoryDataType.JIT:javascriptSize+=size;break;case MemoryAgent.CategoryDataType.Images:imagesSize+=size;break;case MemoryAgent.CategoryDataType.Layers:layersSize+=size;break;case MemoryAgent.CategoryDataType.Page:case MemoryAgent.CategoryDataType.Other:pageSize+=size;break;default:console.warn("Unhandled Memory.CategoryDataType: "+type);break;}}
return[{type:WebInspector.MemoryCategory.Type.JavaScript,size:javascriptSize},{type:WebInspector.MemoryCategory.Type.Images,size:imagesSize},{type:WebInspector.MemoryCategory.Type.Layers,size:layersSize},{type:WebInspector.MemoryCategory.Type.Page,size:pageSize},];}
get timestamp(){return this._timestamp;}
get categories(){return this._categories;}
get totalSize(){return this._totalSize;}};WebInspector.NativeConstructorFunctionParameters={Object:{assign:"target, ...sources",create:"prototype, [propertiesObject]",defineProperties:"object, properties",defineProperty:"object, propertyName, descriptor",freeze:"object",getOwnPropertyDescriptor:"object, propertyName",getOwnPropertyNames:"object",getOwnPropertySymbols:"object",getPrototypeOf:"object",is:"value1, value2",isExtensible:"object",isFrozen:"object",isSealed:"object",keys:"object",preventExtensions:"object",seal:"object",setPrototypeOf:"object, prototype",__proto__:null,},Array:{from:"arrayLike, [mapFunction], [thisArg]",isArray:"object",of:"[...values]",__proto__:null,},ArrayBuffer:{isView:"object",transfer:"oldBuffer, [newByteLength=length]",__proto__:null,},Number:{isFinite:"value",isInteger:"value",isNaN:"value",isSafeInteger:"value",parseFloat:"string",parseInt:"string, [radix]",__proto__:null,},Math:{abs:"x",acos:"x",acosh:"x",asin:"x",asinh:"x",atan2:"y, x",atan:"x",atanh:"x",cbrt:"x",ceil:"x",clz32:"x",cos:"x",cosh:"x",exp:"x",expm1:"x",floor:"x",fround:"x",hypot:"[...x]",imul:"x",log:"x",log1p:"x",log2:"x",log10:"x",max:"[...x]",min:"[...x]",pow:"x, y",round:"x",sign:"x",sin:"x",sinh:"x",sqrt:"x",tan:"x",tanh:"x",trunc:"x",__proto__:null,},JSON:{parse:"text, [reviver]",stringify:"value, [replacer], [space]",__proto__:null,},Date:{parse:"dateString",UTC:"year, [month], [day], [hour], [minute], [second], [ms]",__proto__:null,},Promise:{all:"iterable",race:"iterable",reject:"reason",resolve:"value",__proto__:null,},Reflect:{apply:"target, thisArgument, argumentsList",construct:"target, argumentsList, [newTarget=target]",defineProperty:"target, propertyKey, attributes",deleteProperty:"target, propertyKey",get:"target, propertyKey, [receiver]",getOwnPropertyDescriptor:"target, propertyKey",getPrototypeOf:"target",has:"target, propertyKey",isExtensible:"target",ownKeys:"target",preventExtensions:"target",set:"target, propertyKey, value, [receiver]",setPrototypeOf:"target, prototype",__proto__:null,},String:{fromCharCode:"...codeUnits",fromCodePoint:"...codePoints",raw:"template, ...substitutions",__proto__:null,},Symbol:{for:"key",keyFor:"symbol",__proto__:null,},Console:{assert:"condition, [message], [...values]",count:"[label]",debug:"message, [...values]",dir:"object",dirxml:"object",error:"message, [...values]",group:"[name]",groupCollapsed:"[name]",groupEnd:"[name]",info:"message, [...values]",log:"message, [...values]",profile:"name",profileEnd:"name",table:"data, [columns]",takeHeapSnapshot:"[label]",time:"name = \"default\"",timeEnd:"name = \"default\"",timeStamp:"[label]",trace:"message, [...values]",warn:"message, [...values]",__proto__:null,},IDBKeyRangeConstructor:{bound:"lower, upper, [lowerOpen], [upperOpen]",lowerBound:"lower, [open]",only:"value",upperBound:"upper, [open]",__proto__:null,},MediaSourceConstructor:{isTypeSupported:"type",__proto__:null,},MediaStreamTrackConstructor:{getSources:"callback",__proto__:null,},NotificationConstructor:{requestPermission:"[callback]",__proto__:null,},URLConstructor:{createObjectURL:"blob",revokeObjectURL:"url",__proto__:null,},WebKitMediaKeysConstructor:{isTypeSupported:"keySystem, [type]",__proto__:null,},};WebInspector.NativePrototypeFunctionParameters={Object:{__defineGetter__:"propertyName, getterFunction",__defineSetter__:"propertyName, setterFunction",__lookupGetter__:"propertyName",__lookupSetter__:"propertyName",hasOwnProperty:"propertyName",isPrototypeOf:"property",propertyIsEnumerable:"propertyName",__proto__:null,},Array:{concat:"value, ...",copyWithin:"targetIndex, startIndex, [endIndex=length]",every:"callback, [thisArg]",fill:"value, [startIndex=0], [endIndex=length]",filter:"callback, [thisArg]",find:"callback, [thisArg]",findIndex:"callback, [thisArg]",forEach:"callback, [thisArg]",includes:"searchValue, [startIndex=0]",indexOf:"searchValue, [startIndex=0]",join:"[separator=\",\"]",lastIndexOf:"searchValue, [startIndex=length]",map:"callback, [thisArg]",push:"value, ...",reduce:"callback, [initialValue]",reduceRight:"callback, [initialValue]",slice:"[startIndex=0], [endIndex=length]",some:"callback, [thisArg]",sort:"[compareFunction]",splice:"startIndex, [deleteCount=0], ...itemsToAdd",__proto__:null,},ArrayBuffer:{slice:"startIndex, [endIndex=byteLength]",__proto__:null,},DataView:{setInt8:"byteOffset, value",setInt16:"byteOffset, value, [littleEndian=false]",setInt23:"byteOffset, value, [littleEndian=false]",setUint8:"byteOffset, value",setUint16:"byteOffset, value, [littleEndian=false]",setUint32:"byteOffset, value, [littleEndian=false]",setFloat32:"byteOffset, value, [littleEndian=false]",setFloat64:"byteOffset, value, [littleEndian=false]",getInt8:"byteOffset",getInt16:"byteOffset, [littleEndian=false]",getInt23:"byteOffset, [littleEndian=false]",getUint8:"byteOffset",getUint16:"byteOffset, [littleEndian=false]",getUint32:"byteOffset, [littleEndian=false]",getFloat32:"byteOffset, [littleEndian=false]",getFloat64:"byteOffset, [littleEndian=false]",__proto__:null,},Date:{setDate:"day",setFullYear:"year, [month=getMonth()], [day=getDate()]",setHours:"hours, [minutes=getMinutes()], [seconds=getSeconds()], [ms=getMilliseconds()]",setMilliseconds:"ms",setMinutes:"minutes, [seconds=getSeconds()], [ms=getMilliseconds()]",setMonth:"month, [day=getDate()]",setSeconds:"seconds, [ms=getMilliseconds()]",setTime:"time",setUTCDate:"day",setUTCFullYear:"year, [month=getUTCMonth()], [day=getUTCDate()]",setUTCHours:"hours, [minutes=getUTCMinutes()], [seconds=getUTCSeconds()], [ms=getUTCMilliseconds()]",setUTCMilliseconds:"ms",setUTCMinutes:"minutes, [seconds=getUTCSeconds()], [ms=getUTCMilliseconds()]",setUTCMonth:"month, [day=getUTCDate()]",setUTCSeconds:"seconds, [ms=getUTCMilliseconds()]",setUTCTime:"time",setYear:"year",__proto__:null,},Function:{apply:"thisObject, [argumentsArray]",bind:"thisObject, ...arguments",call:"thisObject, ...arguments",__proto__:null,},Map:{delete:"key",forEach:"callback, [thisArg]",get:"key",has:"key",set:"key, value",__proto__:null,},Number:{toExponential:"[digits]",toFixed:"[digits]",toPrecision:"[significantDigits]",toString:"[radix=10]",__proto__:null,},RegExp:{compile:"pattern, flags",exec:"string",test:"string",__proto__:null,},Set:{delete:"value",forEach:"callback, [thisArg]",has:"value",add:"value",__proto__:null,},String:{charAt:"index",charCodeAt:"index",codePoints:"index",concat:"string, ...",includes:"searchValue, [startIndex=0]",indexOf:"searchValue, [startIndex=0]",lastIndexOf:"searchValue, [startIndex=length]",localeCompare:"string",match:"regex",repeat:"count",replace:"regex|string, replaceString|replaceHandler, [flags]",search:"regex",slice:"startIndex, [endIndex=length]",split:"[separator], [limit]",substr:"startIndex, [numberOfCharacters]",substring:"startIndex, [endIndex=length]",__proto__:null,},WeakMap:{delete:"key",get:"key",has:"key",set:"key, value",__proto__:null,},WeakSet:{delete:"value",has:"value",add:"value",__proto__:null,},Promise:{catch:"rejectionHandler",then:"resolvedHandler, rejectionHandler",__proto__:null,},Generator:{next:"value",return:"value",throw:"exception",__proto__:null,},Element:{closest:"selectors",getAttribute:"attributeName",getAttributeNS:"namespace, attributeName",getAttributeNode:"attributeName",getAttributeNodeNS:"namespace, attributeName",hasAttribute:"attributeName",hasAttributeNS:"namespace, attributeName",matches:"selector",removeAttribute:"attributeName",removeAttributeNS:"namespace, attributeName",removeAttributeNode:"attributeName",scrollIntoView:"[alignWithTop]",scrollIntoViewIfNeeded:"[centerIfNeeded]",setAttribute:"name, value",setAttributeNS:"namespace, name, value",setAttributeNode:"attributeNode",setAttributeNodeNS:"namespace, attributeNode",webkitMatchesSelector:"selectors",__proto__:null,},Node:{appendChild:"child",cloneNode:"[deep]",compareDocumentPosition:"[node]",contains:"[node]",insertBefore:"insertElement, referenceElement",isDefaultNamespace:"[namespace]",isEqualNode:"[node]",lookupNamespaceURI:"prefix",removeChild:"node",replaceChild:"newChild, oldChild",__proto__:null,},Window:{alert:"[message]",atob:"encodedData",btoa:"stringToEncode",cancelAnimationFrame:"id",clearInterval:"intervalId",clearTimeout:"timeoutId",confirm:"[message]",find:"string, [caseSensitive], [backwards], [wrapAround]",getComputedStyle:"[element], [pseudoElement]",getMatchedCSSRules:"[element], [pseudoElement]",matchMedia:"mediaQueryString",moveBy:"[deltaX], [deltaY]",moveTo:"[screenX], [screenY]",open:"url, windowName, [featuresString]",openDatabase:"name, version, displayName, estimatedSize, [creationCallback]",postMessage:"message, targetOrigin, [...transferables]",prompt:"[message], [value]",requestAnimationFrame:"callback",resizeBy:"[deltaX], [deltaY]",resizeTo:"[width], [height]",scrollBy:"[deltaX], [deltaY]",scrollTo:"[x], [y]",setInterval:"func, [delay], [...params]",setTimeout:"func, [delay], [...params]",showModalDialog:"url, [arguments], [options]",__proto__:null,},Document:{adoptNode:"[node]",caretRangeFromPoint:"[x], [y]",createAttribute:"attributeName",createAttributeNS:"namespace, qualifiedName",createCDATASection:"data",createComment:"data",createElement:"tagName",createElementNS:"namespace, qualifiedName",createEntityReference:"name",createEvent:"type",createExpression:"xpath, resolver",createNSResolver:"node",createNodeIterator:"root, whatToShow, filter",createProcessingInstruction:"target, data",createTextNode:"data",createTreeWalker:"root, whatToShow, filter, entityReferenceExpansion",elementFromPoint:"x, y",evaluate:"xpath, contextNode, namespaceResolver, resultType, result",execCommand:"command, userInterface, value",getCSSCanvasContext:"contextId, name, width, height",getElementById:"id",getElementsByName:"name",getOverrideStyle:"[element], [pseudoElement]",importNode:"node, deep",queryCommandEnabled:"command",queryCommandIndeterm:"command",queryCommandState:"command",queryCommandSupported:"command",queryCommandValue:"command",__proto__:null,},ANGLEInstancedArrays:{drawArraysInstancedANGLE:"mode, first, count, primcount",drawElementsInstancedANGLE:"mode, count, type, offset, primcount",vertexAttribDivisorANGLE:"index, divisor",__proto__:null,},AnalyserNode:{getByteFrequencyData:"array",getByteTimeDomainData:"array",getFloatFrequencyData:"array",__proto__:null,},AudioBuffer:{getChannelData:"channelIndex",__proto__:null,},AudioBufferCallback:{handleEvent:"audioBuffer",__proto__:null,},AudioBufferSourceNode:{noteGrainOn:"when, grainOffset, grainDuration",noteOff:"when",noteOn:"when",start:"[when], [grainOffset], [grainDuration]",stop:"[when]",__proto__:null,},AudioListener:{setOrientation:"x, y, z, xUp, yUp, zUp",setPosition:"x, y, z",setVelocity:"x, y, z",__proto__:null,},AudioNode:{connect:"destination, [output], [input]",disconnect:"[output]",__proto__:null,},AudioParam:{cancelScheduledValues:"startTime",exponentialRampToValueAtTime:"value, time",linearRampToValueAtTime:"value, time",setTargetAtTime:"target, time, timeConstant",setTargetValueAtTime:"targetValue, time, timeConstant",setValueAtTime:"value, time",setValueCurveAtTime:"values, time, duration",__proto__:null,},AudioTrackList:{getTrackById:"id",item:"index",__proto__:null,},BiquadFilterNode:{getFrequencyResponse:"frequencyHz, magResponse, phaseResponse",__proto__:null,},Blob:{slice:"[start], [end], [contentType]",__proto__:null,},CSS:{supports:"property, value",__proto__:null,},CSSKeyframesRule:{appendRule:"[rule]",deleteRule:"[key]",findRule:"[key]",insertRule:"[rule]",__proto__:null,},CSSMediaRule:{deleteRule:"[index]",insertRule:"[rule], [index]",__proto__:null,},CSSPrimitiveValue:{getFloatValue:"[unitType]",setFloatValue:"[unitType], [floatValue]",setStringValue:"[stringType], [stringValue]",__proto__:null,},CSSRuleList:{item:"[index]",__proto__:null,},CSSStyleDeclaration:{getPropertyCSSValue:"[propertyName]",getPropertyPriority:"[propertyName]",getPropertyShorthand:"[propertyName]",getPropertyValue:"[propertyName]",isPropertyImplicit:"[propertyName]",item:"[index]",removeProperty:"[propertyName]",setProperty:"[propertyName], [value], [priority]",__proto__:null,},CSSStyleSheet:{addRule:"[selector], [style], [index]",deleteRule:"[index]",insertRule:"[rule], [index]",removeRule:"[index]",__proto__:null,},CSSSupportsRule:{deleteRule:"[index]",insertRule:"[rule], [index]",__proto__:null,},CSSValueList:{item:"[index]",__proto__:null,},CanvasGradient:{addColorStop:"[offset], [color]",__proto__:null,},CanvasRenderingContext2D:{arc:"x, y, radius, startAngle, endAngle, [anticlockwise]",arcTo:"x1, y1, x2, y2, radius",bezierCurveTo:"cp1x, cp1y, cp2x, cp2y, x, y",clearRect:"x, y, width, height",clip:"path, [winding]",createImageData:"imagedata",createLinearGradient:"x0, y0, x1, y1",createPattern:"canvas, repetitionType",createRadialGradient:"x0, y0, r0, x1, y1, r1",drawFocusIfNeeded:"element",drawImage:"image, x, y",drawImageFromRect:"image, [sx], [sy], [sw], [sh], [dx], [dy], [dw], [dh], [compositeOperation]",ellipse:"x, y, radiusX, radiusY, rotation, startAngle, endAngle, [anticlockwise]",fill:"path, [winding]",fillRect:"x, y, width, height",fillText:"text, x, y, [maxWidth]",getImageData:"sx, sy, sw, sh",isPointInPath:"path, x, y, [winding]",isPointInStroke:"path, x, y",lineTo:"x, y",measureText:"text",moveTo:"x, y",putImageData:"imagedata, dx, dy",quadraticCurveTo:"cpx, cpy, x, y",rect:"x, y, width, height",rotate:"angle",scale:"sx, sy",setAlpha:"[alpha]",setCompositeOperation:"[compositeOperation]",setFillColor:"color, [alpha]",setLineCap:"[cap]",setLineDash:"dash",setLineJoin:"[join]",setLineWidth:"[width]",setMiterLimit:"[limit]",setShadow:"width, height, blur, [color], [alpha]",setStrokeColor:"color, [alpha]",setTransform:"m11, m12, m21, m22, dx, dy",stroke:"path",strokeRect:"x, y, width, height",strokeText:"text, x, y, [maxWidth]",transform:"m11, m12, m21, m22, dx, dy",translate:"tx, ty",webkitGetImageDataHD:"sx, sy, sw, sh",webkitPutImageDataHD:"imagedata, dx, dy",__proto__:null,},CharacterData:{appendData:"[data]",deleteData:"[offset], [length]",insertData:"[offset], [data]",replaceData:"[offset], [length], [data]",substringData:"[offset], [length]",__proto__:null,},CommandLineAPIHost:{copyText:"text",databaseId:"database",getEventListeners:"node",inspect:"objectId, hints",storageId:"storage",__proto__:null,},CompositionEvent:{initCompositionEvent:"[typeArg], [canBubbleArg], [cancelableArg], [viewArg], [dataArg]",__proto__:null,},Crypto:{getRandomValues:"array",__proto__:null,},CustomElementRegistry:{define:"name, constructor",get:"name",whenDefined:"name",__proto__:null,},CustomEvent:{initCustomEvent:"type, [bubbles], [cancelable], [detail]",__proto__:null,},DOMApplicationCache:{__proto__:null,},DOMImplementation:{createCSSStyleSheet:"[title], [media]",createDocument:"[namespaceURI], [qualifiedName], [doctype]",createDocumentType:"[qualifiedName], [publicId], [systemId]",createHTMLDocument:"[title]",hasFeature:"[feature], [version]",__proto__:null,},DOMParser:{parseFromString:"[str], [contentType]",__proto__:null,},DOMStringList:{contains:"[string]",item:"[index]",__proto__:null,},DOMTokenList:{add:"tokens...",contains:"token",item:"index",remove:"tokens...",toggle:"token, [force]",__proto__:null,},DataTransfer:{clearData:"[type]",getData:"type",setData:"type, data",setDragImage:"image, x, y",__proto__:null,},DataTransferItem:{getAsString:"[callback]",__proto__:null,},DataTransferItemList:{add:"file",item:"[index]",__proto__:null,},Database:{changeVersion:"oldVersion, newVersion, [callback], [errorCallback], [successCallback]",readTransaction:"callback, [errorCallback], [successCallback]",transaction:"callback, [errorCallback], [successCallback]",__proto__:null,},DatabaseCallback:{handleEvent:"database",__proto__:null,},DedicatedWorkerGlobalScope:{postMessage:"message, [messagePorts]",__proto__:null,},DeviceMotionEvent:{initDeviceMotionEvent:"[type], [bubbles], [cancelable], [acceleration], [accelerationIncludingGravity], [rotationRate], [interval]",__proto__:null,},DeviceOrientationEvent:{initDeviceOrientationEvent:"[type], [bubbles], [cancelable], [alpha], [beta], [gamma], [absolute]",__proto__:null,},DocumentFragment:{getElementById:"id",querySelector:"selectors",querySelectorAll:"selectors",__proto__:null,},Event:{initEvent:"type, [bubbles], [cancelable]",__proto__:null,},FileList:{item:"index",__proto__:null,},FileReader:{readAsArrayBuffer:"blob",readAsBinaryString:"blob",readAsDataURL:"blob",readAsText:"blob, [encoding]",__proto__:null,},FileReaderSync:{readAsArrayBuffer:"blob",readAsBinaryString:"blob",readAsDataURL:"blob",readAsText:"blob, [encoding]",__proto__:null,},FontFaceSet:{add:"font",check:"font, [text=\" \"]",delete:"font",load:"font, [text=\" \"]",__proto__:null,},FormData:{append:"[name], [value], [filename]",__proto__:null,},Geolocation:{clearWatch:"watchID",getCurrentPosition:"successCallback, [errorCallback], [options]",watchPosition:"successCallback, [errorCallback], [options]",__proto__:null,},HTMLAllCollection:{item:"[index]",namedItem:"name",tags:"name",__proto__:null,},HTMLButtonElement:{setCustomValidity:"error",__proto__:null,},HTMLCanvasElement:{getContext:"contextId",toDataURL:"[type]",__proto__:null,},HTMLCollection:{item:"[index]",namedItem:"[name]",__proto__:null,},HTMLDocument:{write:"[html]",writeln:"[html]",__proto__:null,},HTMLElement:{insertAdjacentElement:"[position], [element]",insertAdjacentHTML:"[position], [html]",insertAdjacentText:"[position], [text]",__proto__:null,},HTMLFieldSetElement:{setCustomValidity:"error",__proto__:null,},HTMLFormControlsCollection:{namedItem:"[name]",__proto__:null,},HTMLInputElement:{setCustomValidity:"error",setRangeText:"replacement",setSelectionRange:"start, end, [direction]",stepDown:"[n]",stepUp:"[n]",__proto__:null,},HTMLKeygenElement:{setCustomValidity:"error",__proto__:null,},HTMLMediaElement:{addTextTrack:"kind, [label], [language]",canPlayType:"[type], [keySystem]",fastSeek:"time",webkitAddKey:"keySystem, key, [initData], [sessionId]",webkitCancelKeyRequest:"keySystem, [sessionId]",webkitGenerateKeyRequest:"keySystem, [initData]",webkitSetMediaKeys:"mediaKeys",__proto__:null,},HTMLObjectElement:{setCustomValidity:"error",__proto__:null,},HTMLOptionsCollection:{add:"element, [before]",namedItem:"[name]",remove:"[index]",__proto__:null,},HTMLOutputElement:{setCustomValidity:"error",__proto__:null,},HTMLSelectElement:{add:"element, [before]",item:"index",namedItem:"[name]",setCustomValidity:"error",__proto__:null,},HTMLSlotElement:{assignedNodes:"[options]",__proto__:null,},HTMLTableElement:{deleteRow:"index",insertRow:"[index]",__proto__:null,},HTMLTableRowElement:{deleteCell:"index",insertCell:"[index]",__proto__:null,},HTMLTableSectionElement:{deleteRow:"index",insertRow:"[index]",__proto__:null,},HTMLTextAreaElement:{setCustomValidity:"error",setRangeText:"replacement",setSelectionRange:"[start], [end], [direction]",__proto__:null,},HTMLVideoElement:{webkitSetPresentationMode:"mode",webkitSupportsPresentationMode:"mode",__proto__:null,},HashChangeEvent:{initHashChangeEvent:"[type], [canBubble], [cancelable], [oldURL], [newURL]",__proto__:null,},History:{go:"[distance]",pushState:"data, title, [url]",replaceState:"data, title, [url]",__proto__:null,},IDBCursor:{advance:"count",continue:"[key]",update:"value",__proto__:null,},IDBDatabase:{createObjectStore:"name, [options]",deleteObjectStore:"name",transaction:"storeName, [mode]",__proto__:null,},IDBFactory:{cmp:"first, second",deleteDatabase:"name",open:"name, [version]",__proto__:null,},IDBIndex:{count:"[range]",get:"key",getKey:"key",openCursor:"[range], [direction]",openKeyCursor:"[range], [direction]",__proto__:null,},IDBObjectStore:{add:"value, [key]",count:"[range]",createIndex:"name, keyPath, [options]",delete:"keyRange",deleteIndex:"name",get:"key",index:"name",openCursor:"[range], [direction]",put:"value, [key]",__proto__:null,},IDBTransaction:{objectStore:"name",__proto__:null,},KeyboardEvent:{initKeyboardEvent:"[type], [canBubble], [cancelable], [view], [keyIdentifier], [location], [ctrlKey], [altKey], [shiftKey], [metaKey], [altGraphKey]",__proto__:null,},Location:{assign:"[url]",reload:"[force=false]",replace:"[url]",__proto__:null,},MediaController:{__proto__:null,},MediaControlsHost:{displayNameForTrack:"track",mediaUIImageData:"partID",setSelectedTextTrack:"track",sortedTrackListForMenu:"trackList",__proto__:null,},MediaList:{appendMedium:"[newMedium]",deleteMedium:"[oldMedium]",item:"[index]",__proto__:null,},MediaQueryList:{addListener:"[listener]",removeListener:"[listener]",__proto__:null,},MediaQueryListListener:{queryChanged:"[list]",__proto__:null,},MediaSource:{addSourceBuffer:"type",endOfStream:"[error]",removeSourceBuffer:"buffer",__proto__:null,},MediaStreamTrack:{applyConstraints:"constraints",__proto__:null,},MediaStreamTrackSourcesCallback:{handleEvent:"sources",__proto__:null,},MessageEvent:{initMessageEvent:"type, [bubbles], [cancelable], [data], [origin], [lastEventId], [source], [messagePorts]",__proto__:null,},MessagePort:{__proto__:null,},MimeTypeArray:{item:"[index]",namedItem:"[name]",__proto__:null,},MouseEvent:{initMouseEvent:"[type], [canBubble], [cancelable], [view], [detail], [screenX], [screenY], [clientX], [clientY], [ctrlKey], [altKey], [shiftKey], [metaKey], [button], [relatedTarget]",__proto__:null,},MutationEvent:{initMutationEvent:"[type], [canBubble], [cancelable], [relatedNode], [prevValue], [newValue], [attrName], [attrChange]",__proto__:null,},MutationObserver:{observe:"target, options",__proto__:null,},NamedNodeMap:{getNamedItem:"[name]",getNamedItemNS:"[namespaceURI], [localName]",item:"[index]",removeNamedItem:"[name]",removeNamedItemNS:"[namespaceURI], [localName]",setNamedItem:"[node]",setNamedItemNS:"[node]",__proto__:null,},Navigator:{getUserMedia:"options, successCallback, errorCallback",__proto__:null,},NavigatorUserMediaErrorCallback:{handleEvent:"error",__proto__:null,},NavigatorUserMediaSuccessCallback:{handleEvent:"stream",__proto__:null,},NodeFilter:{acceptNode:"[n]",__proto__:null,},NodeList:{item:"index",__proto__:null,},Notification:{__proto__:null,},NotificationCenter:{createNotification:"iconUrl, title, body",requestPermission:"[callback]",__proto__:null,},NotificationPermissionCallback:{handleEvent:"permission",__proto__:null,},OESVertexArrayObject:{bindVertexArrayOES:"[arrayObject]",deleteVertexArrayOES:"[arrayObject]",isVertexArrayOES:"[arrayObject]",__proto__:null,},OscillatorNode:{noteOff:"when",noteOn:"when",setPeriodicWave:"wave",start:"[when]",stop:"[when]",__proto__:null,},Path2D:{addPath:"path, [transform]",arc:"[x], [y], [radius], [startAngle], [endAngle], [anticlockwise]",arcTo:"[x1], [y1], [x2], [y2], [radius]",bezierCurveTo:"[cp1x], [cp1y], [cp2x], [cp2y], [x], [y]",ellipse:"x, y, radiusX, radiusY, rotation, startAngle, endAngle, [anticlockwise]",lineTo:"[x], [y]",moveTo:"[x], [y]",quadraticCurveTo:"[cpx], [cpy], [x], [y]",rect:"[x], [y], [width], [height]",__proto__:null,},Performance:{clearMarks:"[name]",clearMeasures:"name",getEntriesByName:"name, [type]",getEntriesByType:"type",mark:"name",measure:"name, [startMark], [endMark]",__proto__:null,},PerformanceObserver:{observe:"options",__proto__:null,},PerformanceObserverEntryList:{getEntriesByName:"name, [type]",getEntriesByType:"type",__proto__:null,},Plugin:{item:"[index]",namedItem:"[name]",__proto__:null,},PluginArray:{item:"[index]",namedItem:"[name]",refresh:"[reload]",__proto__:null,},PositionCallback:{handleEvent:"position",__proto__:null,},PositionErrorCallback:{handleEvent:"error",__proto__:null,},QuickTimePluginReplacement:{postEvent:"eventName",__proto__:null,},RTCDTMFSender:{insertDTMF:"tones, [duration], [interToneGap]",__proto__:null,},RTCDataChannel:{send:"data",__proto__:null,},RTCPeerConnectionErrorCallback:{handleEvent:"error",__proto__:null,},RTCSessionDescriptionCallback:{handleEvent:"sdp",__proto__:null,},RTCStatsCallback:{handleEvent:"response",__proto__:null,},RTCStatsReport:{stat:"name",__proto__:null,},RTCStatsResponse:{namedItem:"[name]",__proto__:null,},Range:{collapse:"[toStart]",compareBoundaryPoints:"[how], [sourceRange]",compareNode:"[refNode]",comparePoint:"[refNode], [offset]",createContextualFragment:"[html]",expand:"[unit]",insertNode:"[newNode]",intersectsNode:"[refNode]",isPointInRange:"[refNode], [offset]",selectNode:"[refNode]",selectNodeContents:"[refNode]",setEnd:"[refNode], [offset]",setEndAfter:"[refNode]",setEndBefore:"[refNode]",setStart:"[refNode], [offset]",setStartAfter:"[refNode]",setStartBefore:"[refNode]",surroundContents:"[newParent]",__proto__:null,},ReadableStream:{cancel:"reason",pipeThrough:"dest, options",pipeTo:"streams, options",__proto__:null,},WritableStream:{abort:"reason",close:"",write:"chunk",__proto__:null,},RequestAnimationFrameCallback:{handleEvent:"highResTime",__proto__:null,},SQLResultSetRowList:{item:"index",__proto__:null,},SQLStatementCallback:{handleEvent:"transaction, resultSet",__proto__:null,},SQLStatementErrorCallback:{handleEvent:"transaction, error",__proto__:null,},SQLTransaction:{executeSql:"sqlStatement, arguments, [callback], [errorCallback]",__proto__:null,},SQLTransactionCallback:{handleEvent:"transaction",__proto__:null,},SQLTransactionErrorCallback:{handleEvent:"error",__proto__:null,},SVGAngle:{convertToSpecifiedUnits:"unitType",newValueSpecifiedUnits:"unitType, valueInSpecifiedUnits",__proto__:null,},SVGAnimationElement:{beginElementAt:"[offset]",endElementAt:"[offset]",hasExtension:"[extension]",__proto__:null,},SVGColor:{setColor:"colorType, rgbColor, iccColor",setRGBColor:"rgbColor",setRGBColorICCColor:"rgbColor, iccColor",__proto__:null,},SVGCursorElement:{hasExtension:"[extension]",__proto__:null,},SVGDocument:{createEvent:"[eventType]",__proto__:null,},SVGElement:{getPresentationAttribute:"[name]",__proto__:null,},SVGFEDropShadowElement:{setStdDeviation:"[stdDeviationX], [stdDeviationY]",__proto__:null,},SVGFEGaussianBlurElement:{setStdDeviation:"[stdDeviationX], [stdDeviationY]",__proto__:null,},SVGFEMorphologyElement:{setRadius:"[radiusX], [radiusY]",__proto__:null,},SVGFilterElement:{setFilterRes:"[filterResX], [filterResY]",__proto__:null,},SVGGraphicsElement:{getTransformToElement:"[element]",hasExtension:"[extension]",__proto__:null,},SVGLength:{convertToSpecifiedUnits:"unitType",newValueSpecifiedUnits:"unitType, valueInSpecifiedUnits",__proto__:null,},SVGLengthList:{appendItem:"item",getItem:"index",initialize:"item",insertItemBefore:"item, index",removeItem:"index",replaceItem:"item, index",__proto__:null,},SVGMarkerElement:{setOrientToAngle:"[angle]",__proto__:null,},SVGMaskElement:{hasExtension:"[extension]",__proto__:null,},SVGMatrix:{multiply:"secondMatrix",rotate:"angle",rotateFromVector:"x, y",scale:"scaleFactor",scaleNonUniform:"scaleFactorX, scaleFactorY",skewX:"angle",skewY:"angle",translate:"x, y",__proto__:null,},SVGNumberList:{appendItem:"item",getItem:"index",initialize:"item",insertItemBefore:"item, index",removeItem:"index",replaceItem:"item, index",__proto__:null,},SVGPaint:{setPaint:"paintType, uri, rgbColor, iccColor",setUri:"uri",__proto__:null,},SVGPathElement:{createSVGPathSegArcAbs:"[x], [y], [r1], [r2], [angle], [largeArcFlag], [sweepFlag]",createSVGPathSegArcRel:"[x], [y], [r1], [r2], [angle], [largeArcFlag], [sweepFlag]",createSVGPathSegCurvetoCubicAbs:"[x], [y], [x1], [y1], [x2], [y2]",createSVGPathSegCurvetoCubicRel:"[x], [y], [x1], [y1], [x2], [y2]",createSVGPathSegCurvetoCubicSmoothAbs:"[x], [y], [x2], [y2]",createSVGPathSegCurvetoCubicSmoothRel:"[x], [y], [x2], [y2]",createSVGPathSegCurvetoQuadraticAbs:"[x], [y], [x1], [y1]",createSVGPathSegCurvetoQuadraticRel:"[x], [y], [x1], [y1]",createSVGPathSegCurvetoQuadraticSmoothAbs:"[x], [y]",createSVGPathSegCurvetoQuadraticSmoothRel:"[x], [y]",createSVGPathSegLinetoAbs:"[x], [y]",createSVGPathSegLinetoHorizontalAbs:"[x]",createSVGPathSegLinetoHorizontalRel:"[x]",createSVGPathSegLinetoRel:"[x], [y]",createSVGPathSegLinetoVerticalAbs:"[y]",createSVGPathSegLinetoVerticalRel:"[y]",createSVGPathSegMovetoAbs:"[x], [y]",createSVGPathSegMovetoRel:"[x], [y]",getPathSegAtLength:"[distance]",getPointAtLength:"[distance]",__proto__:null,},SVGPathSegList:{appendItem:"newItem",getItem:"index",initialize:"newItem",insertItemBefore:"newItem, index",removeItem:"index",replaceItem:"newItem, index",__proto__:null,},SVGPatternElement:{hasExtension:"[extension]",__proto__:null,},SVGPoint:{matrixTransform:"matrix",__proto__:null,},SVGPointList:{appendItem:"item",getItem:"index",initialize:"item",insertItemBefore:"item, index",removeItem:"index",replaceItem:"item, index",__proto__:null,},SVGSVGElement:{checkEnclosure:"[element], [rect]",checkIntersection:"[element], [rect]",createSVGTransformFromMatrix:"[matrix]",getElementById:"[elementId]",getEnclosureList:"[rect], [referenceElement]",getIntersectionList:"[rect], [referenceElement]",setCurrentTime:"[seconds]",suspendRedraw:"[maxWaitMilliseconds]",unsuspendRedraw:"[suspendHandleId]",__proto__:null,},SVGStringList:{appendItem:"item",getItem:"index",initialize:"item",insertItemBefore:"item, index",removeItem:"index",replaceItem:"item, index",__proto__:null,},SVGTextContentElement:{getCharNumAtPosition:"[point]",getEndPositionOfChar:"[offset]",getExtentOfChar:"[offset]",getRotationOfChar:"[offset]",getStartPositionOfChar:"[offset]",getSubStringLength:"[offset], [length]",selectSubString:"[offset], [length]",__proto__:null,},SVGTransform:{setMatrix:"matrix",setRotate:"angle, cx, cy",setScale:"sx, sy",setSkewX:"angle",setSkewY:"angle",setTranslate:"tx, ty",__proto__:null,},SVGTransformList:{appendItem:"item",createSVGTransformFromMatrix:"matrix",getItem:"index",initialize:"item",insertItemBefore:"item, index",removeItem:"index",replaceItem:"item, index",__proto__:null,},SecurityPolicy:{allowsConnectionTo:"url",allowsFontFrom:"url",allowsFormAction:"url",allowsFrameFrom:"url",allowsImageFrom:"url",allowsMediaFrom:"url",allowsObjectFrom:"url",allowsPluginType:"type",allowsScriptFrom:"url",allowsStyleFrom:"url",__proto__:null,},Selection:{addRange:"[range]",collapse:"[node], [index]",containsNode:"[node], [allowPartial]",extend:"[node], [offset]",getRangeAt:"[index]",modify:"[alter], [direction], [granularity]",selectAllChildren:"[node]",setBaseAndExtent:"[baseNode], [baseOffset], [extentNode], [extentOffset]",setPosition:"[node], [offset]",__proto__:null,},SourceBuffer:{appendBuffer:"data",remove:"start, end",__proto__:null,},SourceBufferList:{item:"index",__proto__:null,},SpeechSynthesis:{speak:"utterance",__proto__:null,},SpeechSynthesisUtterance:{__proto__:null,},Storage:{getItem:"key",key:"index",removeItem:"key",setItem:"key, data",__proto__:null,},StorageErrorCallback:{handleEvent:"error",__proto__:null,},StorageEvent:{initStorageEvent:"[typeArg], [canBubbleArg], [cancelableArg], [keyArg], [oldValueArg], [newValueArg], [urlArg], [storageAreaArg]",__proto__:null,},StorageInfo:{queryUsageAndQuota:"storageType, [usageCallback], [errorCallback]",requestQuota:"storageType, newQuotaInBytes, [quotaCallback], [errorCallback]",__proto__:null,},StorageQuota:{queryUsageAndQuota:"usageCallback, [errorCallback]",requestQuota:"newQuotaInBytes, [quotaCallback], [errorCallback]",__proto__:null,},StorageQuotaCallback:{handleEvent:"grantedQuotaInBytes",__proto__:null,},StorageUsageCallback:{handleEvent:"currentUsageInBytes, currentQuotaInBytes",__proto__:null,},StringCallback:{handleEvent:"data",__proto__:null,},StyleMedia:{matchMedium:"[mediaquery]",__proto__:null,},StyleSheetList:{item:"[index]",__proto__:null,},Text:{replaceWholeText:"[content]",splitText:"offset",__proto__:null,},TextEvent:{initTextEvent:"[typeArg], [canBubbleArg], [cancelableArg], [viewArg], [dataArg]",__proto__:null,},TextTrack:{addCue:"cue",addRegion:"region",removeCue:"cue",removeRegion:"region",__proto__:null,},TextTrackCue:{__proto__:null,},TextTrackCueList:{getCueById:"id",item:"index",__proto__:null,},TextTrackList:{getTrackById:"id",item:"index",__proto__:null,},TimeRanges:{end:"index",start:"index",__proto__:null,},TouchEvent:{initTouchEvent:"[touches], [targetTouches], [changedTouches], [type], [view], [screenX], [screenY], [clientX], [clientY], [ctrlKey], [altKey], [shiftKey], [metaKey]",__proto__:null,},TouchList:{item:"index",__proto__:null,},UIEvent:{initUIEvent:"[type], [canBubble], [cancelable], [view], [detail]",__proto__:null,},UserMessageHandler:{postMessage:"message",__proto__:null,},VTTRegionList:{getRegionById:"id",item:"index",__proto__:null,},VideoTrackList:{getTrackById:"id",item:"index",__proto__:null,},WebGL2RenderingContext:{beginQuery:"target, query",beginTransformFeedback:"primitiveMode",bindBufferBase:"target, index, buffer",bindBufferRange:"target, index, buffer, offset, size",bindSampler:"unit, sampler",bindTransformFeedback:"target, id",bindVertexArray:"vertexArray",blitFramebuffer:"srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter",clearBufferfi:"buffer, drawbuffer, depth, stencil",clearBufferfv:"buffer, drawbuffer, value",clearBufferiv:"buffer, drawbuffer, value",clearBufferuiv:"buffer, drawbuffer, value",clientWaitSync:"sync, flags, timeout",compressedTexImage3D:"target, level, internalformat, width, height, depth, border, imageSize, data",compressedTexSubImage3D:"target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data",copyBufferSubData:"readTarget, writeTarget, readOffset, writeOffset, size",copyTexSubImage3D:"target, level, xoffset, yoffset, zoffset, x, y, width, height",deleteQuery:"query",deleteSampler:"sampler",deleteSync:"sync",deleteTransformFeedback:"id",deleteVertexArray:"vertexArray",drawArraysInstanced:"mode, first, count, instanceCount",drawBuffers:"buffers",drawElementsInstanced:"mode, count, type, offset, instanceCount",drawRangeElements:"mode, start, end, count, type, offset",endQuery:"target",fenceSync:"condition, flags",framebufferTextureLayer:"target, attachment, texture, level, layer",getActiveUniformBlockName:"program, uniformBlockIndex",getActiveUniformBlockParameter:"program, uniformBlockIndex, pname",getActiveUniforms:"program, uniformIndices, pname",getBufferSubData:"target, offset, returnedData",getFragDataLocation:"program, name",getIndexedParameter:"target, index",getInternalformatParameter:"target, internalformat, pname",getQuery:"target, pname",getQueryParameter:"query, pname",getSamplerParameter:"sampler, pname",getSyncParameter:"sync, pname",getTransformFeedbackVarying:"program, index",getUniformBlockIndex:"program, uniformBlockName",getUniformIndices:"program, uniformNames",invalidateFramebuffer:"target, attachments",invalidateSubFramebuffer:"target, attachments, x, y, width, height",isQuery:"query",isSampler:"sampler",isSync:"sync",isTransformFeedback:"id",isVertexArray:"vertexArray",readBuffer:"src",renderbufferStorageMultisample:"target, samples, internalformat, width, height",samplerParameterf:"sampler, pname, param",samplerParameteri:"sampler, pname, param",texImage3D:"target, level, internalformat, width, height, depth, border, format, type, pixels",texStorage2D:"target, levels, internalformat, width, height",texStorage3D:"target, levels, internalformat, width, height, depth",texSubImage3D:"target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels",transformFeedbackVaryings:"program, varyings, bufferMode",uniform1ui:"location, v0",uniform1uiv:"location, value",uniform2ui:"location, v0, v1",uniform2uiv:"location, value",uniform3ui:"location, v0, v1, v2",uniform3uiv:"location, value",uniform4ui:"location, v0, v1, v2, v3",uniform4uiv:"location, value",uniformBlockBinding:"program, uniformBlockIndex, uniformBlockBinding",uniformMatrix2x3fv:"location, transpose, value",uniformMatrix2x4fv:"location, transpose, value",uniformMatrix3x2fv:"location, transpose, value",uniformMatrix3x4fv:"location, transpose, value",uniformMatrix4x2fv:"location, transpose, value",uniformMatrix4x3fv:"location, transpose, value",vertexAttribDivisor:"index, divisor",vertexAttribI4i:"index, x, y, z, w",vertexAttribI4iv:"index, v",vertexAttribI4ui:"index, x, y, z, w",vertexAttribI4uiv:"index, v",vertexAttribIPointer:"index, size, type, stride, offset",waitSync:"sync, flags, timeout",__proto__:null,},WebGLDebugShaders:{getTranslatedShaderSource:"shader",__proto__:null,},WebGLDrawBuffers:{drawBuffersWEBGL:"buffers",__proto__:null,},WebGLRenderingContextBase:{activeTexture:"texture",attachShader:"program, shader",bindAttribLocation:"program, index, name",bindBuffer:"target, buffer",bindFramebuffer:"target, framebuffer",bindRenderbuffer:"target, renderbuffer",bindTexture:"target, texture",blendColor:"red, green, blue, alpha",blendEquation:"mode",blendEquationSeparate:"modeRGB, modeAlpha",blendFunc:"sfactor, dfactor",blendFuncSeparate:"srcRGB, dstRGB, srcAlpha, dstAlpha",bufferData:"target, data, usage",bufferSubData:"target, offset, data",checkFramebufferStatus:"target",clear:"mask",clearColor:"red, green, blue, alpha",clearDepth:"depth",clearStencil:"s",colorMask:"red, green, blue, alpha",compileShader:"shader",compressedTexImage2D:"target, level, internalformat, width, height, border, data",compressedTexSubImage2D:"target, level, xoffset, yoffset, width, height, format, data",copyTexImage2D:"target, level, internalformat, x, y, width, height, border",copyTexSubImage2D:"target, level, xoffset, yoffset, x, y, width, height",createShader:"type",cullFace:"mode",deleteBuffer:"buffer",deleteFramebuffer:"framebuffer",deleteProgram:"program",deleteRenderbuffer:"renderbuffer",deleteShader:"shader",deleteTexture:"texture",depthFunc:"func",depthMask:"flag",depthRange:"zNear, zFar",detachShader:"program, shader",disable:"cap",disableVertexAttribArray:"index",drawArrays:"mode, first, count",drawElements:"mode, count, type, offset",enable:"cap",enableVertexAttribArray:"index",framebufferRenderbuffer:"target, attachment, renderbuffertarget, renderbuffer",framebufferTexture2D:"target, attachment, textarget, texture, level",frontFace:"mode",generateMipmap:"target",getActiveAttrib:"program, index",getActiveUniform:"program, index",getAttachedShaders:"program",getAttribLocation:"program, name",getBufferParameter:"target, pname",getExtension:"name",getFramebufferAttachmentParameter:"target, attachment, pname",getParameter:"pname",getProgramInfoLog:"program",getProgramParameter:"program, pname",getRenderbufferParameter:"target, pname",getShaderInfoLog:"shader",getShaderParameter:"shader, pname",getShaderPrecisionFormat:"shadertype, precisiontype",getShaderSource:"shader",getTexParameter:"target, pname",getUniform:"program, location",getUniformLocation:"program, name",getVertexAttrib:"index, pname",getVertexAttribOffset:"index, pname",hint:"target, mode",isBuffer:"buffer",isEnabled:"cap",isFramebuffer:"framebuffer",isProgram:"program",isRenderbuffer:"renderbuffer",isShader:"shader",isTexture:"texture",lineWidth:"width",linkProgram:"program",pixelStorei:"pname, param",polygonOffset:"factor, units",readPixels:"x, y, width, height, format, type, pixels",renderbufferStorage:"target, internalformat, width, height",sampleCoverage:"value, invert",scissor:"x, y, width, height",shaderSource:"shader, string",stencilFunc:"func, ref, mask",stencilFuncSeparate:"face, func, ref, mask",stencilMask:"mask",stencilMaskSeparate:"face, mask",stencilOp:"fail, zfail, zpass",stencilOpSeparate:"face, fail, zfail, zpass",texImage2D:"target, level, internalformat, width, height, border, format, type, pixels",texParameterf:"target, pname, param",texParameteri:"target, pname, param",texSubImage2D:"target, level, xoffset, yoffset, width, height, format, type, pixels",uniform1f:"location, x",uniform1fv:"location, v",uniform1i:"location, x",uniform1iv:"location, v",uniform2f:"location, x, y",uniform2fv:"location, v",uniform2i:"location, x, y",uniform2iv:"location, v",uniform3f:"location, x, y, z",uniform3fv:"location, v",uniform3i:"location, x, y, z",uniform3iv:"location, v",uniform4f:"location, x, y, z, w",uniform4fv:"location, v",uniform4i:"location, x, y, z, w",uniform4iv:"location, v",uniformMatrix2fv:"location, transpose, array",uniformMatrix3fv:"location, transpose, array",uniformMatrix4fv:"location, transpose, array",useProgram:"program",validateProgram:"program",vertexAttrib1f:"indx, x",vertexAttrib1fv:"indx, values",vertexAttrib2f:"indx, x, y",vertexAttrib2fv:"indx, values",vertexAttrib3f:"indx, x, y, z",vertexAttrib3fv:"indx, values",vertexAttrib4f:"indx, x, y, z, w",vertexAttrib4fv:"indx, values",vertexAttribPointer:"indx, size, type, normalized, stride, offset",viewport:"x, y, width, height",__proto__:null,},WebKitCSSMatrix:{multiply:"[secondMatrix]",rotate:"[rotX], [rotY], [rotZ]",rotateAxisAngle:"[x], [y], [z], [angle]",scale:"[scaleX], [scaleY], [scaleZ]",setMatrixValue:"[string]",skewX:"[angle]",skewY:"[angle]",translate:"[x], [y], [z]",__proto__:null,},WebKitMediaKeySession:{update:"key",__proto__:null,},WebKitMediaKeys:{createSession:"[type], [initData]",__proto__:null,},WebKitNamedFlow:{getRegionsByContent:"contentNode",__proto__:null,},WebKitNamedFlowCollection:{item:"index",namedItem:"name",__proto__:null,},WebKitSubtleCrypto:{decrypt:"algorithm, key, data",digest:"algorithm, data",encrypt:"algorithm, key, data",exportKey:"format, key",generateKey:"algorithm, [extractable], [keyUsages]",importKey:"format, keyData, algorithm, [extractable], [keyUsages]",sign:"algorithm, key, data",unwrapKey:"format, wrappedKey, unwrappingKey, unwrapAlgorithm, unwrappedKeyAlgorithm, [extractable], [keyUsages]",verify:"algorithm, key, signature, data",wrapKey:"format, key, wrappingKey, wrapAlgorithm",__proto__:null,},WebSocket:{close:"[code], [reason]",send:"data",__proto__:null,},WheelEvent:{initWebKitWheelEvent:"[wheelDeltaX], [wheelDeltaY], [view], [screenX], [screenY], [clientX], [clientY], [ctrlKey], [altKey], [shiftKey], [metaKey]",__proto__:null,},Worker:{postMessage:"message, [messagePorts]",__proto__:null,},WorkerGlobalScope:{clearInterval:"[handle]",clearTimeout:"[handle]",setInterval:"handler, [timeout]",setTimeout:"handler, [timeout]",__proto__:null,},XMLHttpRequest:{getResponseHeader:"header",open:"method, url, [async], [user], [password]",overrideMimeType:"override",setRequestHeader:"header, value",__proto__:null,},XMLHttpRequestUpload:{__proto__:null,},XMLSerializer:{serializeToString:"[node]",__proto__:null,},XPathEvaluator:{createExpression:"[expression], [resolver]",createNSResolver:"[nodeResolver]",evaluate:"[expression], [contextNode], [resolver], [type], [inResult]",__proto__:null,},XPathExpression:{evaluate:"[contextNode], [type], [inResult]",__proto__:null,},XPathNSResolver:{lookupNamespaceURI:"[prefix]",__proto__:null,},XPathResult:{snapshotItem:"[index]",__proto__:null,},XSLTProcessor:{getParameter:"namespaceURI, localName",importStylesheet:"[stylesheet]",removeParameter:"namespaceURI, localName",setParameter:"namespaceURI, localName, value",transformToDocument:"[source]",transformToFragment:"[source], [docVal]",__proto__:null,},webkitAudioContext:{createBuffer:"numberOfChannels, numberOfFrames, sampleRate",createChannelMerger:"[numberOfInputs]",createChannelSplitter:"[numberOfOutputs]",createDelay:"[maxDelayTime]",createDelayNode:"[maxDelayTime]",createJavaScriptNode:"bufferSize, [numberOfInputChannels], [numberOfOutputChannels]",createMediaElementSource:"mediaElement",createPeriodicWave:"real, imag",createScriptProcessor:"bufferSize, [numberOfInputChannels], [numberOfOutputChannels]",decodeAudioData:"audioData, successCallback, [errorCallback]",__proto__:null,},webkitAudioPannerNode:{setOrientation:"x, y, z",setPosition:"x, y, z",setVelocity:"x, y, z",__proto__:null,},webkitMediaStream:{addTrack:"track",getTrackById:"trackId",removeTrack:"track",__proto__:null,},webkitRTCPeerConnection:{addIceCandidate:"candidate, successCallback, failureCallback",addStream:"stream",createAnswer:"successCallback, failureCallback, [answerOptions]",createDTMFSender:"track",createDataChannel:"label, [options]",createOffer:"successCallback, failureCallback, [offerOptions]",getStats:"successCallback, failureCallback, [selector]",getStreamById:"streamId",removeStream:"stream",setLocalDescription:"description, successCallback, failureCallback",setRemoteDescription:"description, successCallback, failureCallback",updateIce:"configuration",__proto__:null,},EventTarget:{addEventListener:"type, listener, [useCapture=false]",removeEventListener:"type, listener, [useCapture=false]",dispatchEvent:"event",__proto__:null,},};(function(){
var EventTarget=WebInspector.NativePrototypeFunctionParameters.EventTarget;var eventTargetTypes=["Node","Window","AudioNode","AudioTrackList","DOMApplicationCache","FileReader","MediaController","MediaStreamTrack","MessagePort","Notification","RTCDTMFSender","SpeechSynthesisUtterance","TextTrack","TextTrackCue","TextTrackList","VideoTrackList","WebKitMediaKeySession","WebKitNamedFlow","WebSocket","WorkerGlobalScope","XMLHttpRequest","webkitMediaStream","webkitRTCPeerConnection"];for(var type of eventTargetTypes)
Object.assign(WebInspector.NativePrototypeFunctionParameters[type],EventTarget);var ElementQueries={getElementsByClassName:"classNames",getElementsByTagName:"tagName",getElementsByTagNameNS:"namespace, localName",querySelector:"selectors",querySelectorAll:"selectors",};Object.assign(WebInspector.NativePrototypeFunctionParameters.Element,ElementQueries);Object.assign(WebInspector.NativePrototypeFunctionParameters.Document,ElementQueries);var ChildNode={after:"[node|string]...",before:"[node|string]...",replaceWith:"[node|string]...",};Object.assign(WebInspector.NativePrototypeFunctionParameters.Element,ChildNode);Object.assign(WebInspector.NativePrototypeFunctionParameters.CharacterData,ChildNode);var ParentNode={append:"[node|string]...",prepend:"[node|string]...",};Object.assign(WebInspector.NativePrototypeFunctionParameters.Element,ParentNode);Object.assign(WebInspector.NativePrototypeFunctionParameters.Document,ParentNode);Object.assign(WebInspector.NativePrototypeFunctionParameters.DocumentFragment,ParentNode);WebInspector.NativePrototypeFunctionParameters.Console=WebInspector.NativeConstructorFunctionParameters.Console;})();WebInspector.NetworkInstrument=class NetworkInstrument extends WebInspector.Instrument
{ get timelineRecordType()
{return WebInspector.TimelineRecord.Type.Network;}
startInstrumentation(initiatedByBackend)
{}
stopInstrumentation(initiatedByBackend)
{}};WebInspector.NetworkTimeline=class NetworkTimeline extends WebInspector.Timeline
{ recordForResource(resource)
{return this._resourceRecordMap.get(resource)||null;}
reset(suppressEvents)
{this._resourceRecordMap=new Map;super.reset(suppressEvents);}
addRecord(record)
{if(this._resourceRecordMap.has(record.resource))
return;this._resourceRecordMap.set(record.resource,record);super.addRecord(record);}};WebInspector.ObjectPreview=class ObjectPreview extends WebInspector.Object
{constructor(type,subtype,description,lossless,overflow,properties,entries,size)
{super();this._type=type;this._subtype=subtype;this._description=description||"";this._lossless=lossless;this._overflow=overflow||false;this._size=size;this._properties=properties||null;this._entries=entries||null;}
static fromPayload(payload)
{if(payload.properties)
payload.properties=payload.properties.map(WebInspector.PropertyPreview.fromPayload);if(payload.entries)
payload.entries=payload.entries.map(WebInspector.CollectionEntryPreview.fromPayload);if(payload.subtype==="array"){var match=payload.description.match(/\[(\d+)\]$/);if(match){payload.size=parseInt(match[1]);payload.description=payload.description.replace(/\[\d+\]$/,"");}}
return new WebInspector.ObjectPreview(payload.type,payload.subtype,payload.description,payload.lossless,payload.overflow,payload.properties,payload.entries,payload.size);}
get type(){return this._type;}
get subtype(){return this._subtype;}
get description(){return this._description;}
get lossless(){return this._lossless;}
get overflow(){return this._overflow;}
get propertyPreviews(){return this._properties;}
get collectionEntryPreviews(){return this._entries;}
get size(){return this._size;}
hasSize()
{return this._size!==undefined&&(this._subtype==="array"||this._subtype==="set"||this._subtype==="map"||this._subtype==="weakmap"||this._subtype==="weakset");}};WebInspector.ProbeSample=class ProbeSample extends WebInspector.Object
{constructor(sampleId,batchId,elapsedTime,object)
{super();this.sampleId=sampleId;this.batchId=batchId;this.timestamp=elapsedTime;this.object=object;}};WebInspector.Probe=class Probe extends WebInspector.Object
{constructor(id,breakpoint,expression)
{super();this._id=id;this._breakpoint=breakpoint;this._expression=expression;this._samples=[];}
get id()
{return this._id;}
get breakpoint()
{return this._breakpoint;}
get expression()
{return this._expression;}
set expression(value)
{if(this._expression===value)
return;var data={oldValue:this._expression,newValue:value};this._expression=value;this.clearSamples();this.dispatchEventToListeners(WebInspector.Probe.Event.ExpressionChanged,data);}
get samples()
{return this._samples.slice();}
clearSamples()
{this._samples=[];this.dispatchEventToListeners(WebInspector.Probe.Event.SamplesCleared);}
addSample(sample)
{this._samples.push(sample);this.dispatchEventToListeners(WebInspector.Probe.Event.SampleAdded,sample);}};WebInspector.Probe.Event={ExpressionChanged:"probe-object-expression-changed",SampleAdded:"probe-object-sample-added",SamplesCleared:"probe-object-samples-cleared"};WebInspector.ProbeSet=class ProbeSet extends WebInspector.Object
{constructor(breakpoint)
{super();this._breakpoint=breakpoint;this._probes=[];this._probesByIdentifier=new Map;this._createDataTable();WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceChanged,this);WebInspector.Probe.addEventListener(WebInspector.Probe.Event.SampleAdded,this._sampleCollected,this);WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.ResolvedStateDidChange,this._breakpointResolvedStateDidChange,this);}
get breakpoint(){return this._breakpoint;}
get probes(){return this._probes.slice();}
get dataTable(){return this._dataTable;}
clear()
{this._breakpoint.clearActions(WebInspector.BreakpointAction.Type.Probe);}
clearSamples()
{for(var probe of this._probes)
probe.clearSamples();var oldTable=this._dataTable;this._createDataTable();this.dispatchEventToListeners(WebInspector.ProbeSet.Event.SamplesCleared,{oldTable});}
createProbe(expression)
{this.breakpoint.createAction(WebInspector.BreakpointAction.Type.Probe,null,expression);}
addProbe(probe)
{this._probes.push(probe);this._probesByIdentifier.set(probe.id,probe);this.dataTable.addProbe(probe);this.dispatchEventToListeners(WebInspector.ProbeSet.Event.ProbeAdded,probe);}
removeProbe(probe)
{this._probes.splice(this._probes.indexOf(probe),1);this._probesByIdentifier.delete(probe.id);this.dataTable.removeProbe(probe);this.dispatchEventToListeners(WebInspector.ProbeSet.Event.ProbeRemoved,probe);}
willRemove()
{WebInspector.Frame.removeEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceChanged,this);WebInspector.Probe.removeEventListener(WebInspector.Probe.Event.SampleAdded,this._sampleCollected,this);WebInspector.Breakpoint.removeEventListener(WebInspector.Breakpoint.Event.ResolvedStateDidChange,this._breakpointResolvedStateDidChange,this);}
_mainResourceChanged()
{this.dataTable.mainResourceChanged();}
_createDataTable()
{if(this.dataTable)
this.dataTable.willRemove();this._dataTable=new WebInspector.ProbeSetDataTable(this);}
_sampleCollected(event)
{var sample=event.data;var probe=event.target;if(!this._probesByIdentifier.has(probe.id))
return;this.dataTable.addSampleForProbe(probe,sample);this.dispatchEventToListeners(WebInspector.ProbeSet.Event.SampleAdded,{probe,sample});}
_breakpointResolvedStateDidChange(event)
{this.dispatchEventToListeners(WebInspector.ProbeSet.Event.ResolvedStateDidChange);}};WebInspector.ProbeSet.Event={ProbeAdded:"probe-set-probe-added",ProbeRemoved:"probe-set-probe-removed",ResolvedStateDidChange:"probe-set-resolved-state-did-change",SampleAdded:"probe-set-sample-added",SamplesCleared:"probe-set-samples-cleared",};WebInspector.ProbeSetDataFrame=class ProbeSetDataFrame extends WebInspector.Object
{constructor(index)
{super();this._count=0;this._index=index;this._separator=false;}
static compare(a,b)
{return a.index-b.index;}
get key()
{return String(this._index);}
get count()
{return this._count;}
get index()
{return this._index;}
get isSeparator()
{return this._separator;}
set isSeparator(value)
{this._separator=!!value;}
addSampleForProbe(probe,sample)
{this[probe.id]=sample;this._count++;}
missingKeys(probeSet)
{return probeSet.probes.filter(function(probe){return!this.hasOwnProperty(probe.id);},this);}
isComplete(probeSet)
{return!this.missingKeys(probeSet).length;}
fillMissingValues(probeSet)
{for(var key of this.missingKeys(probeSet))
this[key]=WebInspector.ProbeSetDataFrame.MissingValue;}};WebInspector.ProbeSetDataFrame.MissingValue="?";WebInspector.ProbeSetDataTable=class ProbeSetDataTable extends WebInspector.Object
{constructor(probeSet)
{super();this._probeSet=probeSet;this._frames=[];this._previousBatchIdentifier=WebInspector.ProbeSetDataTable.SentinelValue;}
get frames()
{return this._frames.slice();}
get separators()
{return this._frames.filter(function(frame){return frame.isSeparator;});}
willRemove()
{this.dispatchEventToListeners(WebInspector.ProbeSetDataTable.Event.WillRemove);this._frames=[];delete this._probeSet;}
mainResourceChanged()
{this.addSeparator();}
addSampleForProbe(probe,sample)
{if(sample.batchId!==this._previousBatchIdentifier){if(this._openFrame){this._openFrame.fillMissingValues(this._probeSet);this.addFrame(this._openFrame);}
this._openFrame=this.createFrame();this._previousBatchIdentifier=sample.batchId;}
this._openFrame.addSampleForProbe(probe,sample);if(this._openFrame.count===this._probeSet.probes.length){this.addFrame(this._openFrame);this._openFrame=null;}}
addProbe(probe)
{for(var frame of this.frames)
if(!frame[probe.id])
frame[probe.id]=WebInspector.ProbeSetDataTable.UnknownValue;}
removeProbe(probe)
{for(var frame of this.frames)
delete frame[probe.id];}
createFrame()
{return new WebInspector.ProbeSetDataFrame(this._frames.length);}
addFrame(frame)
{this._frames.push(frame);this.dispatchEventToListeners(WebInspector.ProbeSetDataTable.Event.FrameInserted,frame);}
addSeparator()
{if(!this._frames.length)
return;var previousFrame=this._frames.lastValue;if(previousFrame.isSeparator)
return;previousFrame.isSeparator=true;this.dispatchEventToListeners(WebInspector.ProbeSetDataTable.Event.SeparatorInserted,previousFrame);}};WebInspector.ProbeSetDataTable.Event={FrameInserted:"probe-set-data-table-frame-inserted",SeparatorInserted:"probe-set-data-table-separator-inserted",WillRemove:"probe-set-data-table-will-remove"};WebInspector.ProbeSetDataTable.SentinelValue=-1;WebInspector.ProbeSetDataTable.UnknownValue="?";WebInspector.Profile=class Profile extends WebInspector.Object
{constructor(topDownRootNodes)
{super();topDownRootNodes=topDownRootNodes||[];this._topDownRootNodes=topDownRootNodes;}
get topDownRootNodes()
{return this._topDownRootNodes;}
get bottomUpRootNodes()
{return[];}};WebInspector.ProfileNode=class ProfileNode extends WebInspector.Object
{constructor(id,type,functionName,sourceCodeLocation,callInfo,calls,childNodes)
{super();childNodes=childNodes||[];this._id=id;this._type=type||WebInspector.ProfileNode.Type.Function;this._functionName=functionName||null;this._sourceCodeLocation=sourceCodeLocation||null;this._calls=calls||null;this._callInfo=callInfo||null;this._childNodes=childNodes;this._parentNode=null;this._previousSibling=null;this._nextSibling=null;this._computedTotalTimes=false;if(this._callInfo){this._startTime=this._callInfo.startTime;this._endTime=this._callInfo.endTime;this._totalTime=this._callInfo.totalTime;this._callCount=this._callInfo.callCount;}
for(var i=0;i<this._childNodes.length;++i)
this._childNodes[i].establishRelationships(this,this._childNodes[i-1],this._childNodes[i+1]);if(this._calls){for(var i=0;i<this._calls.length;++i)
this._calls[i].establishRelationships(this,this._calls[i-1],this._calls[i+1]);}}
get id()
{return this._id;}
get type()
{return this._type;}
get functionName()
{return this._functionName;}
get sourceCodeLocation()
{return this._sourceCodeLocation;}
get startTime()
{if(this._startTime===undefined)
this._startTime=Math.max(0,this._calls[0].startTime);return this._startTime;}
get endTime()
{if(this._endTime===undefined)
this._endTime=Math.min(this._calls.lastValue.endTime,Infinity);return this._endTime;}
get selfTime()
{this._computeTotalTimesIfNeeded();return this._selfTime;}
get totalTime()
{this._computeTotalTimesIfNeeded();return this._totalTime;}
get callInfo()
{return this._callInfo;}
get calls()
{return this._calls;}
get previousSibling()
{return this._previousSibling;}
get nextSibling()
{return this._nextSibling;}
get parentNode()
{return this._parentNode;}
get childNodes()
{return this._childNodes;}
computeCallInfoForTimeRange(rangeStartTime,rangeEndTime)
{
if(this._callInfo){if(this._selfTime===undefined){var childNodesTotalTime=0;for(var childNode of this._childNodes)
childNodesTotalTime+=childNode.totalTime;this._selfTime=this._totalTime-childNodesTotalTime;if(this._selfTime<0.0001)
this._selfTime=0.0;}
return{callCount:this._callCount,startTime:this._startTime,endTime:this._endTime,selfTime:this._selfTime,totalTime:this._totalTime,averageTime:(this._selfTime/this._callCount),};}
var recordCallCount=true;var callCount=0;function totalTimeInRange(previousValue,call)
{if(rangeStartTime>call.endTime||rangeEndTime<call.startTime)
return previousValue;if(recordCallCount)
++callCount;return previousValue+Math.min(call.endTime,rangeEndTime)-Math.max(rangeStartTime,call.startTime);}
var startTime=Math.max(rangeStartTime,this._calls[0].startTime);var endTime=Math.min(this._calls.lastValue.endTime,rangeEndTime);var totalTime=this._calls.reduce(totalTimeInRange,0);recordCallCount=false;var childNodesTotalTime=0;for(var childNode of this._childNodes)
childNodesTotalTime+=childNode.calls.reduce(totalTimeInRange,0);var selfTime=totalTime-childNodesTotalTime;var averageTime=selfTime/callCount;return{startTime,endTime,totalTime,selfTime,callCount,averageTime};}
traverseNextProfileNode(stayWithin)
{var profileNode=this._childNodes[0];if(profileNode)
return profileNode;if(this===stayWithin)
return null;profileNode=this._nextSibling;if(profileNode)
return profileNode;profileNode=this;while(profileNode&&!profileNode.nextSibling&&profileNode.parentNode!==stayWithin)
profileNode=profileNode.parentNode;if(!profileNode)
return null;return profileNode.nextSibling;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.ProfileNode.TypeCookieKey]=this._type||null;cookie[WebInspector.ProfileNode.FunctionNameCookieKey]=this._functionName||null;cookie[WebInspector.ProfileNode.SourceCodeURLCookieKey]=this._sourceCodeLocation?this._sourceCodeLocation.sourceCode.url?this._sourceCodeLocation.sourceCode.url.hash:null:null;cookie[WebInspector.ProfileNode.SourceCodeLocationLineCookieKey]=this._sourceCodeLocation?this._sourceCodeLocation.lineNumber:null;cookie[WebInspector.ProfileNode.SourceCodeLocationColumnCookieKey]=this._sourceCodeLocation?this._sourceCodeLocation.columnNumber:null;}
establishRelationships(parentNode,previousSibling,nextSibling)
{this._parentNode=parentNode||null;this._previousSibling=previousSibling||null;this._nextSibling=nextSibling||null;}
_computeTotalTimesIfNeeded()
{if(this._computedTotalTimes)
return;this._computedTotalTimes=true;var info=this.computeCallInfoForTimeRange(0,Infinity);this._startTime=info.startTime;this._endTime=info.endTime;this._selfTime=info.selfTime;this._totalTime=info.totalTime;}};WebInspector.ProfileNode.Type={Function:"profile-node-type-function",Program:"profile-node-type-program"};WebInspector.ProfileNode.TypeIdentifier="profile-node";WebInspector.ProfileNode.TypeCookieKey="profile-node-type";WebInspector.ProfileNode.FunctionNameCookieKey="profile-node-function-name";WebInspector.ProfileNode.SourceCodeURLCookieKey="profile-node-source-code-url";WebInspector.ProfileNode.SourceCodeLocationLineCookieKey="profile-node-source-code-location-line";WebInspector.ProfileNode.SourceCodeLocationColumnCookieKey="profile-node-source-code-location-column";WebInspector.ProfileNodeCall=class ProfileNodeCall extends WebInspector.Object
{constructor(startTime,totalTime)
{super();this._startTime=startTime;this._totalTime=totalTime||0;this._parentNode=null;this._previousSibling=null;this._nextSibling=null;}
get startTime()
{return this._startTime;}
get totalTime()
{return this._totalTime;}
get endTime()
{return this._startTime+this._totalTime;}
establishRelationships(parentNode,previousSibling,nextSibling)
{this._parentNode=parentNode||null;this._previousSibling=previousSibling||null;this._nextSibling=nextSibling||null;}};WebInspector.PropertyDescriptor=class PropertyDescriptor extends WebInspector.Object
{constructor(descriptor,symbol,isOwnProperty,wasThrown,nativeGetter,isInternalProperty)
{super();this._name=descriptor.name;this._value=descriptor.value;this._hasValue="value"in descriptor;this._get=descriptor.get;this._set=descriptor.set;this._symbol=symbol;this._writable=descriptor.writable||false;this._configurable=descriptor.configurable||false;this._enumerable=descriptor.enumerable||false;this._own=isOwnProperty||false;this._wasThrown=wasThrown||false;this._nativeGetterValue=nativeGetter||false;this._internal=isInternalProperty||false;}
static fromPayload(payload,internal,target)
{if(payload.value)
payload.value=WebInspector.RemoteObject.fromPayload(payload.value,target);if(payload.get)
payload.get=WebInspector.RemoteObject.fromPayload(payload.get,target);if(payload.set)
payload.set=WebInspector.RemoteObject.fromPayload(payload.set,target);if(payload.symbol)
payload.symbol=WebInspector.RemoteObject.fromPayload(payload.symbol,target);if(internal){payload.writable=payload.configurable=payload.enumerable=false;payload.isOwn=true;}
return new WebInspector.PropertyDescriptor(payload,payload.symbol,payload.isOwn,payload.wasThrown,payload.nativeGetter,internal);}
get name(){return this._name;}
get value(){return this._value;}
get get(){return this._get;}
get set(){return this._set;}
get writable(){return this._writable;}
get configurable(){return this._configurable;}
get enumerable(){return this._enumerable;}
get symbol(){return this._symbol;}
get isOwnProperty(){return this._own;}
get wasThrown(){return this._wasThrown;}
get nativeGetter(){return this._nativeGetterValue;}
get isInternalProperty(){return this._internal;}
hasValue()
{return this._hasValue;}
hasGetter()
{return this._get&&this._get.type==="function";}
hasSetter()
{return this._set&&this._set.type==="function";}
isIndexProperty()
{return!isNaN(Number(this._name));}
isSymbolProperty()
{return!!this._symbol;}};WebInspector.PropertyPath=class PropertyPath extends WebInspector.Object
{constructor(object,pathComponent,parent,isPrototype)
{super();if(parent&&!parent.object)
throw new Error("Attempted to append to a PropertyPath with null object.");this._object=object;this._pathComponent=typeof pathComponent==="string"?pathComponent:null;this._parent=parent||null;this._isPrototype=isPrototype||false;}
static emptyPropertyPathForScope(object)
{return new WebInspector.PropertyPath(object,WebInspector.PropertyPath.SpecialPathComponent.EmptyPathComponentForScope);}
get object(){return this._object;}
get parent(){return this._parent;}
get isPrototype(){return this._isPrototype;}
get pathComponent(){return this._pathComponent;}
get rootObject()
{return this._parent?this._parent.rootObject:this._object;}
get lastNonPrototypeObject()
{if(!this._parent)
return this._object;var p=this._parent;while(p){if(!p.isPrototype)
break;if(!p.parent)
break;p=p.parent;}
return p.object;}
get fullPath()
{var components=[];for(var p=this;p&&p.pathComponent;p=p.parent)
components.push(p.pathComponent);components.reverse();return components.join("");}
get reducedPath()
{var components=[];var p=this;for(;p&&p.isPrototype;p=p.parent)
components.push(p.pathComponent);for(;p&&p.pathComponent;p=p.parent){if(p.isPrototype)
continue;components.push(p.pathComponent);}
components.reverse();return components.join("");}
displayPath(type)
{return type===WebInspector.PropertyPath.Type.Value?this.reducedPath:this.fullPath;}
isRoot()
{return!this._parent;}
isScope()
{return this._pathComponent===WebInspector.PropertyPath.SpecialPathComponent.EmptyPathComponentForScope;}
isPathComponentImpossible()
{return this._pathComponent&&this._pathComponent.startsWith("@");}
isFullPathImpossible()
{if(this.isPathComponentImpossible())
return true;if(this._parent)
return this._parent.isFullPathImpossible();return false;}
appendPropertyName(object,propertyName)
{var isPrototype=propertyName==="__proto__";if(this.isScope())
return new WebInspector.PropertyPath(object,propertyName,this,isPrototype);var component=this._canPropertyNameBeDotAccess(propertyName)?"."+propertyName:"["+doubleQuotedString(propertyName)+"]";return new WebInspector.PropertyPath(object,component,this,isPrototype);}
appendPropertySymbol(object,symbolName)
{var component=WebInspector.PropertyPath.SpecialPathComponent.SymbolPropertyName+(symbolName.length?"("+symbolName+")":"");return new WebInspector.PropertyPath(object,component,this);}
appendInternalPropertyName(object,propertyName)
{var component=WebInspector.PropertyPath.SpecialPathComponent.InternalPropertyName+"["+propertyName+"]";return new WebInspector.PropertyPath(object,component,this);}
appendGetterPropertyName(object,propertyName)
{var component=".__lookupGetter__("+doubleQuotedString(propertyName)+")";return new WebInspector.PropertyPath(object,component,this);}
appendSetterPropertyName(object,propertyName)
{var component=".__lookupSetter__("+doubleQuotedString(propertyName)+")";return new WebInspector.PropertyPath(object,component,this);}
appendArrayIndex(object,indexString)
{var component="["+indexString+"]";return new WebInspector.PropertyPath(object,component,this);}
appendMapKey(object)
{var component=WebInspector.PropertyPath.SpecialPathComponent.MapKey;return new WebInspector.PropertyPath(object,component,this);}
appendMapValue(object,keyObject)
{if(keyObject&&keyObject.hasValue()){if(keyObject.type==="string"){var component=".get("+doubleQuotedString(keyObject.description)+")";return new WebInspector.PropertyPath(object,component,this);}
var component=".get("+keyObject.description+")";return new WebInspector.PropertyPath(object,component,this);}
var component=WebInspector.PropertyPath.SpecialPathComponent.MapValue;return new WebInspector.PropertyPath(object,component,this);}
appendSetIndex(object)
{var component=WebInspector.PropertyPath.SpecialPathComponent.SetIndex;return new WebInspector.PropertyPath(object,component,this);}
appendSymbolProperty(object)
{var component=WebInspector.PropertyPath.SpecialPathComponent.SymbolPropertyName;return new WebInspector.PropertyPath(object,component,this);}
appendPropertyDescriptor(object,descriptor,type)
{if(descriptor.isInternalProperty)
return this.appendInternalPropertyName(object,descriptor.name);if(descriptor.symbol)
return this.appendSymbolProperty(object);if(type===WebInspector.PropertyPath.Type.Getter)
return this.appendGetterPropertyName(object,descriptor.name);if(type===WebInspector.PropertyPath.Type.Setter)
return this.appendSetterPropertyName(object,descriptor.name);if(this._object.subtype==="array"&&!isNaN(parseInt(descriptor.name)))
return this.appendArrayIndex(object,descriptor.name);return this.appendPropertyName(object,descriptor.name);}
_canPropertyNameBeDotAccess(propertyName)
{return/^(?![0-9])\w+$/.test(propertyName);}};WebInspector.PropertyPath.SpecialPathComponent={InternalPropertyName:"@internal",SymbolPropertyName:"@symbol",MapKey:"@mapkey",MapValue:"@mapvalue",SetIndex:"@setindex",EmptyPathComponentForScope:"",};WebInspector.PropertyPath.Type={Value:"value",Getter:"getter",Setter:"setter",};WebInspector.PropertyPreview=class PropertyPreview extends WebInspector.Object
{constructor(name,type,subtype,value,valuePreview,isInternalProperty)
{super();this._name=name;this._type=type;this._subtype=subtype;this._value=value;this._valuePreview=valuePreview;this._internal=isInternalProperty;}
static fromPayload(payload)
{if(payload.valuePreview)
payload.valuePreview=WebInspector.ObjectPreview.fromPayload(payload.valuePreview);return new WebInspector.PropertyPreview(payload.name,payload.type,payload.subtype,payload.value,payload.valuePreview,payload.internal);}
get name(){return this._name;}
get type(){return this._type;}
get subtype(){return this._subtype;}
get value(){return this._value;}
get valuePreview(){return this._valuePreview;}
get internal(){return this._internal;}};WebInspector.RenderingFrameTimelineRecord=class RenderingFrameTimelineRecord extends WebInspector.TimelineRecord
{constructor(startTime,endTime)
{super(WebInspector.TimelineRecord.Type.RenderingFrame,startTime,endTime);this._durationByTaskType=new Map;this._frameIndex=-1;}
static resetFrameIndex()
{WebInspector.RenderingFrameTimelineRecord._nextFrameIndex=0;}
static displayNameForTaskType(taskType)
{switch(taskType){case WebInspector.RenderingFrameTimelineRecord.TaskType.Script:return WebInspector.UIString("Script");case WebInspector.RenderingFrameTimelineRecord.TaskType.Layout:return WebInspector.UIString("Layout");case WebInspector.RenderingFrameTimelineRecord.TaskType.Paint:return WebInspector.UIString("Paint");case WebInspector.RenderingFrameTimelineRecord.TaskType.Other:return WebInspector.UIString("Other");}}
static taskTypeForTimelineRecord(record)
{switch(record.type){case WebInspector.TimelineRecord.Type.Script:return WebInspector.RenderingFrameTimelineRecord.TaskType.Script;case WebInspector.TimelineRecord.Type.Layout:if(record.eventType===WebInspector.LayoutTimelineRecord.EventType.Paint||record.eventType===WebInspector.LayoutTimelineRecord.EventType.Composite)
return WebInspector.RenderingFrameTimelineRecord.TaskType.Paint;return WebInspector.RenderingFrameTimelineRecord.TaskType.Layout;default:console.error("Unsupported timeline record type: "+record.type);return null;}}
get frameIndex()
{return this._frameIndex;}
get frameNumber()
{return this._frameIndex+1;}
setupFrameIndex()
{if(this._frameIndex>=0)
return;this._frameIndex=WebInspector.RenderingFrameTimelineRecord._nextFrameIndex++;}
durationForTask(taskType)
{if(this._durationByTaskType.has(taskType))
return this._durationByTaskType.get(taskType);var duration;if(taskType===WebInspector.RenderingFrameTimelineRecord.TaskType.Other)
duration=this._calculateDurationRemainder();else{duration=this.children.reduce(function(previousValue,currentValue){if(taskType!==WebInspector.RenderingFrameTimelineRecord.taskTypeForTimelineRecord(currentValue))
return previousValue;var currentDuration=currentValue.duration;if(currentValue.usesActiveStartTime)
currentDuration-=currentValue.inactiveDuration;return previousValue+currentDuration;},0);if(taskType===WebInspector.RenderingFrameTimelineRecord.TaskType.Script){
duration-=this.children.reduce(function(previousValue,currentValue){if(currentValue.type===WebInspector.TimelineRecord.Type.Layout&&(currentValue.sourceCodeLocation||currentValue.callFrames))
return previousValue+currentValue.duration;return previousValue;},0);}}
this._durationByTaskType.set(taskType,duration);return duration;}
_calculateDurationRemainder()
{return Object.keys(WebInspector.RenderingFrameTimelineRecord.TaskType).reduce((previousValue,key)=>{let taskType=WebInspector.RenderingFrameTimelineRecord.TaskType[key];if(taskType===WebInspector.RenderingFrameTimelineRecord.TaskType.Other)
return previousValue;return previousValue-this.durationForTask(taskType);},this.duration);}};WebInspector.RenderingFrameTimelineRecord.TaskType={Script:"rendering-frame-timeline-record-script",Layout:"rendering-frame-timeline-record-layout",Paint:"rendering-frame-timeline-record-paint",Other:"rendering-frame-timeline-record-other"};WebInspector.RenderingFrameTimelineRecord.TypeIdentifier="rendering-frame-timeline-record";WebInspector.RenderingFrameTimelineRecord._nextFrameIndex=0;WebInspector.Resource=class Resource extends WebInspector.SourceCode
{constructor(url,mimeType,type,loaderIdentifier,targetId,requestIdentifier,requestMethod,requestHeaders,requestData,requestSentTimestamp,initiatorSourceCodeLocation,originalRequestWillBeSentTimestamp)
{super();if(type in WebInspector.Resource.Type)
type=WebInspector.Resource.Type[type];this._url=url;this._urlComponents=null;this._mimeType=mimeType;this._mimeTypeComponents=null;this._type=type||WebInspector.Resource.typeFromMIMEType(mimeType);this._loaderIdentifier=loaderIdentifier||null;this._requestIdentifier=requestIdentifier||null;this._requestMethod=requestMethod||null;this._requestData=requestData||null;this._requestHeaders=requestHeaders||{};this._responseHeaders={};this._parentFrame=null;this._initiatorSourceCodeLocation=initiatorSourceCodeLocation||null;this._initiatedResources=[];this._originalRequestWillBeSentTimestamp=originalRequestWillBeSentTimestamp||null;this._requestSentTimestamp=requestSentTimestamp||NaN;this._responseReceivedTimestamp=NaN;this._lastRedirectReceivedTimestamp=NaN;this._lastDataReceivedTimestamp=NaN;this._finishedOrFailedTimestamp=NaN;this._finishThenRequestContentPromise=null;this._statusCode=NaN;this._statusText=null;this._cached=false;this._canceled=false;this._failed=false;this._failureReasonText=null;this._receivedNetworkLoadMetrics=false;this._responseSource=WebInspector.Resource.ResponseSource.Unknown;this._timingData=new WebInspector.ResourceTimingData(this);this._protocol=null;this._priority=WebInspector.Resource.NetworkPriority.Unknown;this._remoteAddress=null;this._connectionIdentifier=null;this._target=targetId?WebInspector.targetManager.targetForIdentifier(targetId):WebInspector.mainTarget;this._requestHeadersTransferSize=NaN;this._requestBodyTransferSize=NaN;this._responseHeadersTransferSize=NaN;this._responseBodyTransferSize=NaN;this._responseBodySize=NaN;this._cachedResponseBodySize=NaN;this._estimatedSize=NaN;this._estimatedTransferSize=NaN;this._estimatedResponseHeadersSize=NaN;if(this._initiatorSourceCodeLocation&&this._initiatorSourceCodeLocation.sourceCode instanceof WebInspector.Resource)
this._initiatorSourceCodeLocation.sourceCode.addInitiatedResource(this);}
static typeFromMIMEType(mimeType)
{if(!mimeType)
return WebInspector.Resource.Type.Other;mimeType=parseMIMEType(mimeType).type;if(mimeType in WebInspector.Resource._mimeTypeMap)
return WebInspector.Resource._mimeTypeMap[mimeType];if(mimeType.startsWith("image/"))
return WebInspector.Resource.Type.Image;if(mimeType.startsWith("font/"))
return WebInspector.Resource.Type.Font;return WebInspector.Resource.Type.Other;}
static displayNameForType(type,plural)
{switch(type){case WebInspector.Resource.Type.Document:if(plural)
return WebInspector.UIString("Documents");return WebInspector.UIString("Document");case WebInspector.Resource.Type.Stylesheet:if(plural)
return WebInspector.UIString("Stylesheets");return WebInspector.UIString("Stylesheet");case WebInspector.Resource.Type.Image:if(plural)
return WebInspector.UIString("Images");return WebInspector.UIString("Image");case WebInspector.Resource.Type.Font:if(plural)
return WebInspector.UIString("Fonts");return WebInspector.UIString("Font");case WebInspector.Resource.Type.Script:if(plural)
return WebInspector.UIString("Scripts");return WebInspector.UIString("Script");case WebInspector.Resource.Type.XHR:if(plural)
return WebInspector.UIString("XHRs");return WebInspector.UIString("XHR");case WebInspector.Resource.Type.Fetch:if(plural)
return WebInspector.UIString("Fetches");return WebInspector.UIString("Fetch");case WebInspector.Resource.Type.WebSocket:if(plural)
return WebInspector.UIString("Sockets");return WebInspector.UIString("Socket");case WebInspector.Resource.Type.Other:return WebInspector.UIString("Other");default:console.error("Unknown resource type",type);return null;}}
static displayNameForProtocol(protocol)
{switch(protocol){case"h2":return"HTTP/2";case"http/1.0":return"HTTP/1.0";case"http/1.1":return"HTTP/1.1";case"spdy/2":return"SPDY/2";case"spdy/3":return"SPDY/3";case"spdy/3.1":return"SPDY/3.1";default:return null;}}
static comparePriority(a,b)
{const map={[WebInspector.Resource.NetworkPriority.Unknown]:0,[WebInspector.Resource.NetworkPriority.Low]:1,[WebInspector.Resource.NetworkPriority.Medium]:2,[WebInspector.Resource.NetworkPriority.High]:3,};let aNum=map[a]||0;let bNum=map[b]||0;return aNum-bNum;}
static displayNameForPriority(priority)
{switch(priority){case WebInspector.Resource.NetworkPriority.Low:return WebInspector.UIString("Low");case WebInspector.Resource.NetworkPriority.Medium:return WebInspector.UIString("Medium");case WebInspector.Resource.NetworkPriority.High:return WebInspector.UIString("High");default:return null;}}
static responseSourceFromPayload(source)
{if(!source)
return WebInspector.Resource.ResponseSource.Unknown;switch(source){case NetworkAgent.ResponseSource.Unknown:return WebInspector.Resource.ResponseSource.Unknown;case NetworkAgent.ResponseSource.Network:return WebInspector.Resource.ResponseSource.Network;case NetworkAgent.ResponseSource.MemoryCache:return WebInspector.Resource.ResponseSource.MemoryCache;case NetworkAgent.ResponseSource.DiskCache:return WebInspector.Resource.ResponseSource.DiskCache;default:console.error("Unknown response source type",source);return WebInspector.Resource.ResponseSource.Unknown;}}
static networkPriorityFromPayload(priority)
{switch(priority){case NetworkAgent.MetricsPriority.Low:return WebInspector.Resource.NetworkPriority.Low;case NetworkAgent.MetricsPriority.Medium:return WebInspector.Resource.NetworkPriority.Medium;case NetworkAgent.MetricsPriority.High:return WebInspector.Resource.NetworkPriority.High;default:console.error("Unknown metrics priority",priority);return WebInspector.Resource.NetworkPriority.Unknown;}}
static connectionIdentifierFromPayload(connectionIdentifier)
{if(!WebInspector.Resource.connectionIdentifierMap){WebInspector.Resource.connectionIdentifierMap=new Map;WebInspector.Resource.nextConnectionIdentifier=1;}
let id=WebInspector.Resource.connectionIdentifierMap.get(connectionIdentifier);if(id)
return id;id=WebInspector.Resource.nextConnectionIdentifier++;WebInspector.Resource.connectionIdentifierMap.set(connectionIdentifier,id);return id;}
get target(){return this._target;}
get type(){return this._type;}
get loaderIdentifier(){return this._loaderIdentifier;}
get requestIdentifier(){return this._requestIdentifier;}
get requestMethod(){return this._requestMethod;}
get requestData(){return this._requestData;}
get statusCode(){return this._statusCode;}
get statusText(){return this._statusText;}
get responseSource(){return this._responseSource;}
get timingData(){return this._timingData;}
get protocol(){return this._protocol;}
get priority(){return this._priority;}
get remoteAddress(){return this._remoteAddress;}
get connectionIdentifier(){return this._connectionIdentifier;}
get url()
{return this._url;}
get urlComponents()
{if(!this._urlComponents)
this._urlComponents=parseURL(this._url);return this._urlComponents;}
get displayName()
{return WebInspector.displayNameForURL(this._url,this.urlComponents);}
get displayURL()
{const isMultiLine=true;const dataURIMaxSize=64;return WebInspector.truncateURL(this._url,isMultiLine,dataURIMaxSize);}
get initiatorSourceCodeLocation()
{return this._initiatorSourceCodeLocation;}
get initiatedResources()
{return this._initiatedResources;}
get originalRequestWillBeSentTimestamp()
{return this._originalRequestWillBeSentTimestamp;}
get mimeType()
{return this._mimeType;}
get mimeTypeComponents()
{if(!this._mimeTypeComponents)
this._mimeTypeComponents=parseMIMEType(this._mimeType);return this._mimeTypeComponents;}
get syntheticMIMEType()
{
if(this._type===WebInspector.Resource.typeFromMIMEType(this._mimeType))
return this._mimeType;
switch(this._type){case WebInspector.Resource.Type.Stylesheet:return"text/css";case WebInspector.Resource.Type.Script:return"text/javascript";}
return this._mimeType;}
createObjectURL()
{let content=this.content;if(!content)
return this._url;if(content instanceof Blob)
return URL.createObjectURL(content);return null;}
isMainResource()
{return this._parentFrame?this._parentFrame.mainResource===this:false;}
addInitiatedResource(resource)
{if(!(resource instanceof WebInspector.Resource))
return;this._initiatedResources.push(resource);this.dispatchEventToListeners(WebInspector.Resource.Event.InitiatedResourcesDidChange);}
get parentFrame()
{return this._parentFrame;}
get finished()
{return this._finished;}
get failed()
{return this._failed;}
get canceled()
{return this._canceled;}
get failureReasonText()
{return this._failureReasonText;}
get requestDataContentType()
{return this._requestHeaders.valueForCaseInsensitiveKey("Content-Type")||null;}
get requestHeaders()
{return this._requestHeaders;}
get responseHeaders()
{return this._responseHeaders;}
get requestSentTimestamp()
{return this._requestSentTimestamp;}
get lastRedirectReceivedTimestamp()
{return this._lastRedirectReceivedTimestamp;}
get responseReceivedTimestamp()
{return this._responseReceivedTimestamp;}
get lastDataReceivedTimestamp()
{return this._lastDataReceivedTimestamp;}
get finishedOrFailedTimestamp()
{return this._finishedOrFailedTimestamp;}
get firstTimestamp()
{return this.timingData.startTime||this.lastRedirectReceivedTimestamp||this.responseReceivedTimestamp||this.lastDataReceivedTimestamp||this.finishedOrFailedTimestamp;}
get lastTimestamp()
{return this.timingData.responseEnd||this.lastDataReceivedTimestamp||this.responseReceivedTimestamp||this.lastRedirectReceivedTimestamp||this.requestSentTimestamp;}
get duration()
{return this.timingData.responseEnd-this.timingData.requestStart;}
get latency()
{return this.timingData.responseStart-this.timingData.requestStart;}
get receiveDuration()
{return this.timingData.responseEnd-this.timingData.responseStart;}
get cached()
{return this._cached;}
get requestHeadersTransferSize(){return this._requestHeadersTransferSize;}
get requestBodyTransferSize(){return this._requestBodyTransferSize;}
get responseHeadersTransferSize(){return this._responseHeadersTransferSize;}
get responseBodyTransferSize(){return this._responseBodyTransferSize;}
get cachedResponseBodySize(){return this._cachedResponseBodySize;}
get size()
{if(!isNaN(this._cachedResponseBodySize))
return this._cachedResponseBodySize;if(!isNaN(this._responseBodySize)&&this._responseBodySize!==0)
return this._responseBodySize;return this._estimatedSize;}
get networkEncodedSize()
{return this._responseBodyTransferSize;}
get networkDecodedSize()
{return this._responseBodySize;}
get networkTotalTransferSize()
{return this._responseHeadersTransferSize+this._responseBodyTransferSize;}
get estimatedNetworkEncodedSize()
{let exact=this.networkEncodedSize;if(!isNaN(exact))
return exact;if(this._cached)
return 0;
if(WebInspector.Platform.name==="mac"){let contentLength=Number(this._responseHeaders.valueForCaseInsensitiveKey("Content-Length"));if(!isNaN(contentLength))
return contentLength;}
if(!isNaN(this._estimatedTransferSize))
return this._estimatedTransferSize;
return Number(this._responseHeaders.valueForCaseInsensitiveKey("Content-Length")||this._estimatedSize);}
get estimatedTotalTransferSize()
{let exact=this.networkTotalTransferSize;if(!isNaN(exact))
return exact;if(this.statusCode===304)
return this._estimatedResponseHeadersSize;if(this._cached)
return 0;return this._estimatedResponseHeadersSize+this.estimatedNetworkEncodedSize;}
get compressed()
{let contentEncoding=this._responseHeaders.valueForCaseInsensitiveKey("Content-Encoding");return!!(contentEncoding&&/\b(?:gzip|deflate)\b/.test(contentEncoding));}
get scripts()
{return this._scripts||[];}
scriptForLocation(sourceCodeLocation)
{if(sourceCodeLocation.sourceCode!==this)
return null;var lineNumber=sourceCodeLocation.lineNumber;var columnNumber=sourceCodeLocation.columnNumber;for(var i=0;i<this._scripts.length;++i){var script=this._scripts[i];if(script.range.startLine<=lineNumber&&script.range.endLine>=lineNumber){if(script.range.startLine===lineNumber&&columnNumber<script.range.startColumn)
continue;if(script.range.endLine===lineNumber&&columnNumber>script.range.endColumn)
continue;return script;}}
return null;}
updateForRedirectResponse(url,requestHeaders,elapsedTime)
{var oldURL=this._url;this._url=url;this._requestHeaders=requestHeaders||{};this._lastRedirectReceivedTimestamp=elapsedTime||NaN;if(oldURL!==url){this._urlComponents=null;this.dispatchEventToListeners(WebInspector.Resource.Event.URLDidChange,{oldURL});}
this.dispatchEventToListeners(WebInspector.Resource.Event.RequestHeadersDidChange);this.dispatchEventToListeners(WebInspector.Resource.Event.TimestampsDidChange);}
hasResponse()
{return!isNaN(this._statusCode);}
updateForResponse(url,mimeType,type,responseHeaders,statusCode,statusText,elapsedTime,timingData,source)
{let oldURL=this._url;let oldMIMEType=this._mimeType;let oldType=this._type;if(type in WebInspector.Resource.Type)
type=WebInspector.Resource.Type[type];this._url=url;this._mimeType=mimeType;this._type=type||WebInspector.Resource.typeFromMIMEType(mimeType);this._statusCode=statusCode;this._statusText=statusText;this._responseHeaders=responseHeaders||{};this._responseReceivedTimestamp=elapsedTime||NaN;this._timingData=WebInspector.ResourceTimingData.fromPayload(timingData,this);if(source)
this._responseSource=WebInspector.Resource.responseSourceFromPayload(source);const headerBaseSize=12;const headerPad=4;this._estimatedResponseHeadersSize=String(this._statusCode).length+this._statusText.length+headerBaseSize;for(let name in this._responseHeaders)
this._estimatedResponseHeadersSize+=name.length+this._responseHeaders[name].length+headerPad;if(!this._cached){if(statusCode===304||(this._responseSource===WebInspector.Resource.ResponseSource.MemoryCache||this._responseSource===WebInspector.Resource.ResponseSource.DiskCache))
this.markAsCached();}
if(oldURL!==url){this._urlComponents=null;this.dispatchEventToListeners(WebInspector.Resource.Event.URLDidChange,{oldURL});}
if(oldMIMEType!==mimeType){this._mimeTypeComponents=null;this.dispatchEventToListeners(WebInspector.Resource.Event.MIMETypeDidChange,{oldMIMEType});}
if(oldType!==type)
this.dispatchEventToListeners(WebInspector.Resource.Event.TypeDidChange,{oldType});
if(statusCode===304||this._responseHeaders.valueForCaseInsensitiveKey("Content-Length"))
this.dispatchEventToListeners(WebInspector.Resource.Event.TransferSizeDidChange);this.dispatchEventToListeners(WebInspector.Resource.Event.ResponseReceived);this.dispatchEventToListeners(WebInspector.Resource.Event.TimestampsDidChange);}
updateWithMetrics(metrics)
{this._receivedNetworkLoadMetrics=true;if(metrics.protocol)
this._protocol=metrics.protocol;if(metrics.priority)
this._priority=WebInspector.Resource.networkPriorityFromPayload(metrics.priority);if(metrics.remoteAddress)
this._remoteAddress=metrics.remoteAddress;if(metrics.connectionIdentifier)
this._connectionIdentifier=WebInspector.Resource.connectionIdentifierFromPayload(metrics.connectionIdentifier);if(metrics.requestHeaders){this._requestHeaders=metrics.requestHeaders;this.dispatchEventToListeners(WebInspector.Resource.Event.RequestHeadersDidChange);}
if("requestHeaderBytesSent"in metrics){this._requestHeadersTransferSize=metrics.requestHeaderBytesSent;this._requestBodyTransferSize=metrics.requestBodyBytesSent;this._responseHeadersTransferSize=metrics.responseHeaderBytesReceived;this._responseBodyTransferSize=metrics.responseBodyBytesReceived;this._responseBodySize=metrics.responseBodyDecodedSize;this.dispatchEventToListeners(WebInspector.Resource.Event.SizeDidChange,{previousSize:this._estimatedSize});this.dispatchEventToListeners(WebInspector.Resource.Event.TransferSizeDidChange);}}
setCachedResponseBodySize(size)
{this._cachedResponseBodySize=size;}
requestContentFromBackend()
{if(this._requestIdentifier)
return NetworkAgent.getResponseBody(this._requestIdentifier);if(this._parentFrame)
return PageAgent.getResourceContent(this._parentFrame.id,this._url);return Promise.reject(new Error("Content request failed."));}
increaseSize(dataLength,elapsedTime)
{if(isNaN(this._estimatedSize))
this._estimatedSize=0;let previousSize=this._estimatedSize;this._estimatedSize+=dataLength;this._lastDataReceivedTimestamp=elapsedTime||NaN;this.dispatchEventToListeners(WebInspector.Resource.Event.SizeDidChange,{previousSize});if(isNaN(this._estimatedTransferSize)&&this._statusCode!==304&&!this._responseHeaders.valueForCaseInsensitiveKey("Content-Length"))
this.dispatchEventToListeners(WebInspector.Resource.Event.TransferSizeDidChange);}
increaseTransferSize(encodedDataLength)
{if(isNaN(this._estimatedTransferSize))
this._estimatedTransferSize=0;this._estimatedTransferSize+=encodedDataLength;this.dispatchEventToListeners(WebInspector.Resource.Event.TransferSizeDidChange);}
markAsCached()
{this._cached=true;this.dispatchEventToListeners(WebInspector.Resource.Event.CacheStatusDidChange);if(this._statusCode!==304)
this.dispatchEventToListeners(WebInspector.Resource.Event.TransferSizeDidChange);}
markAsFinished(elapsedTime)
{this._finished=true;this._finishedOrFailedTimestamp=elapsedTime||NaN;this._timingData.markResponseEndTime(elapsedTime||NaN);if(this._finishThenRequestContentPromise)
this._finishThenRequestContentPromise=null;this.dispatchEventToListeners(WebInspector.Resource.Event.LoadingDidFinish);this.dispatchEventToListeners(WebInspector.Resource.Event.TimestampsDidChange);}
markAsFailed(canceled,elapsedTime,errorText)
{this._failed=true;this._canceled=canceled;this._finishedOrFailedTimestamp=elapsedTime||NaN;if(!this._failureReasonText)
this._failureReasonText=errorText||null;this.dispatchEventToListeners(WebInspector.Resource.Event.LoadingDidFail);this.dispatchEventToListeners(WebInspector.Resource.Event.TimestampsDidChange);}
revertMarkAsFinished()
{this._finished=false;this._finishedOrFailedTimestamp=NaN;}
legacyMarkServedFromMemoryCache()
{this._responseSource=WebInspector.Resource.ResponseSource.MemoryCache;this.markAsCached();}
legacyMarkServedFromDiskCache()
{this._responseSource=WebInspector.Resource.ResponseSource.DiskCache;this.markAsCached();}
hadLoadingError()
{return this._failed||this._canceled||this._statusCode>=400;}
getImageSize(callback)
{if(this.type!==WebInspector.Resource.Type.Image)
throw"Resource is not an image.";if(this._imageSize!==undefined){callback(this._imageSize);return;}
var objectURL=null;function imageDidLoad(){URL.revokeObjectURL(objectURL);this._imageSize={width:image.width,height:image.height};callback(this._imageSize);}
function requestContentFailure(){this._imageSize=null;callback(this._imageSize);}
var image=new Image;image.addEventListener("load",imageDidLoad.bind(this),false);this.requestContent().then((content)=>{objectURL=image.src=content.sourceCode.createObjectURL();if(!objectURL)
requestContentFailure.call(this);},requestContentFailure.bind(this));}
requestContent()
{if(this._finished)
return super.requestContent();if(this._failed)
return Promise.resolve({error:WebInspector.UIString("An error occurred trying to load the resource.")});if(!this._finishThenRequestContentPromise){this._finishThenRequestContentPromise=new Promise((resolve,reject)=>{this.addEventListener(WebInspector.Resource.Event.LoadingDidFinish,resolve);this.addEventListener(WebInspector.Resource.Event.LoadingDidFail,reject);}).then(WebInspector.SourceCode.prototype.requestContent.bind(this));}
return this._finishThenRequestContentPromise;}
associateWithScript(script)
{if(!this._scripts)
this._scripts=[];this._scripts.push(script);if(this._type===WebInspector.Resource.Type.Other||this._type===WebInspector.Resource.Type.XHR){let oldType=this._type;this._type=WebInspector.Resource.Type.Script;this.dispatchEventToListeners(WebInspector.Resource.Event.TypeDidChange,{oldType});}}
saveIdentityToCookie(cookie)
{cookie[WebInspector.Resource.URLCookieKey]=this.url.hash;cookie[WebInspector.Resource.MainResourceCookieKey]=this.isMainResource();}
generateCURLCommand()
{function escapeStringPosix(str){function escapeCharacter(x){let code=x.charCodeAt(0);let hex=code.toString(16);if(code<256)
return"\\x"+hex.padStart(2,"0");return"\\u"+hex.padStart(4,"0");}
if(/[^\x20-\x7E]|'/.test(str)){return"$'"+str.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/!/g,"\\041").replace(/[^\x20-\x7E]/g,escapeCharacter)+"'";}else{return`'${str}'`;}}
let command=["curl "+escapeStringPosix(this.url).replace(/[[{}\]]/g,"\\$&")];command.push(`-X${this.requestMethod}`);for(let key in this.requestHeaders)
command.push("-H "+escapeStringPosix(`${key}: ${this.requestHeaders[key]}`));if(this.requestDataContentType&&this.requestMethod!=="GET"&&this.requestData){if(this.requestDataContentType.match(/^application\/x-www-form-urlencoded\s*(;.*)?$/i))
command.push("--data "+escapeStringPosix(this.requestData));else
command.push("--data-binary "+escapeStringPosix(this.requestData));}
let curlCommand=command.join(" \\\n");InspectorFrontendHost.copyText(curlCommand);return curlCommand;}};WebInspector.Resource.TypeIdentifier="resource";WebInspector.Resource.URLCookieKey="resource-url";WebInspector.Resource.MainResourceCookieKey="resource-is-main-resource";WebInspector.Resource.Event={URLDidChange:"resource-url-did-change",MIMETypeDidChange:"resource-mime-type-did-change",TypeDidChange:"resource-type-did-change",RequestHeadersDidChange:"resource-request-headers-did-change",ResponseReceived:"resource-response-received",LoadingDidFinish:"resource-loading-did-finish",LoadingDidFail:"resource-loading-did-fail",TimestampsDidChange:"resource-timestamps-did-change",SizeDidChange:"resource-size-did-change",TransferSizeDidChange:"resource-transfer-size-did-change",CacheStatusDidChange:"resource-cached-did-change",InitiatedResourcesDidChange:"resource-initiated-resources-did-change",};WebInspector.Resource.Type={Document:"resource-type-document",Stylesheet:"resource-type-stylesheet",Image:"resource-type-image",Font:"resource-type-font",Script:"resource-type-script",XHR:"resource-type-xhr",Fetch:"resource-type-fetch",WebSocket:"resource-type-websocket",Other:"resource-type-other"};WebInspector.Resource.ResponseSource={Unknown:Symbol("unknown"),Network:Symbol("network"),MemoryCache:Symbol("memory-cache"),DiskCache:Symbol("disk-cache"),};WebInspector.Resource.NetworkPriority={Unknown:Symbol("unknown"),Low:Symbol("low"),Medium:Symbol("medium"),High:Symbol("high"),};WebInspector.Resource._mimeTypeMap={"text/html":WebInspector.Resource.Type.Document,"text/xml":WebInspector.Resource.Type.Document,"text/plain":WebInspector.Resource.Type.Document,"application/xhtml+xml":WebInspector.Resource.Type.Document,"image/svg+xml":WebInspector.Resource.Type.Document,"text/css":WebInspector.Resource.Type.Stylesheet,"text/xsl":WebInspector.Resource.Type.Stylesheet,"text/x-less":WebInspector.Resource.Type.Stylesheet,"text/x-sass":WebInspector.Resource.Type.Stylesheet,"text/x-scss":WebInspector.Resource.Type.Stylesheet,"application/pdf":WebInspector.Resource.Type.Image,"application/x-font-type1":WebInspector.Resource.Type.Font,"application/x-font-ttf":WebInspector.Resource.Type.Font,"application/x-font-woff":WebInspector.Resource.Type.Font,"application/x-truetype-font":WebInspector.Resource.Type.Font,"text/javascript":WebInspector.Resource.Type.Script,"text/ecmascript":WebInspector.Resource.Type.Script,"application/javascript":WebInspector.Resource.Type.Script,"application/ecmascript":WebInspector.Resource.Type.Script,"application/x-javascript":WebInspector.Resource.Type.Script,"application/json":WebInspector.Resource.Type.Script,"application/x-json":WebInspector.Resource.Type.Script,"text/x-javascript":WebInspector.Resource.Type.Script,"text/x-json":WebInspector.Resource.Type.Script,"text/javascript1.1":WebInspector.Resource.Type.Script,"text/javascript1.2":WebInspector.Resource.Type.Script,"text/javascript1.3":WebInspector.Resource.Type.Script,"text/jscript":WebInspector.Resource.Type.Script,"text/livescript":WebInspector.Resource.Type.Script,"text/x-livescript":WebInspector.Resource.Type.Script,"text/typescript":WebInspector.Resource.Type.Script,"text/x-clojure":WebInspector.Resource.Type.Script,"text/x-coffeescript":WebInspector.Resource.Type.Script};WebInspector.ResourceCollection=class ResourceCollection extends WebInspector.Collection
{constructor(resourceType)
{super(WebInspector.ResourceCollection.verifierForType(resourceType));this._resourceType=resourceType||null;this._resourceURLMap=new Map;this._resourcesTypeMap=new Map;}
static verifierForType(type){switch(type){case WebInspector.Resource.Type.Document:return WebInspector.ResourceCollection.TypeVerifier.Document;case WebInspector.Resource.Type.Stylesheet:return WebInspector.ResourceCollection.TypeVerifier.Stylesheet;case WebInspector.Resource.Type.Image:return WebInspector.ResourceCollection.TypeVerifier.Image;case WebInspector.Resource.Type.Font:return WebInspector.ResourceCollection.TypeVerifier.Font;case WebInspector.Resource.Type.Script:return WebInspector.ResourceCollection.TypeVerifier.Script;case WebInspector.Resource.Type.XHR:return WebInspector.ResourceCollection.TypeVerifier.XHR;case WebInspector.Resource.Type.Fetch:return WebInspector.ResourceCollection.TypeVerifier.Fetch;case WebInspector.Resource.Type.WebSocket:return WebInspector.ResourceCollection.TypeVerifier.WebSocket;case WebInspector.Resource.Type.Other:return WebInspector.ResourceCollection.TypeVerifier.Other;default:return WebInspector.Collection.TypeVerifier.Resource;}}
resourceForURL(url)
{return this._resourceURLMap.get(url)||null;}
resourceCollectionForType(type)
{if(this._resourceType){return this;}
let resourcesCollectionForType=this._resourcesTypeMap.get(type);if(!resourcesCollectionForType){resourcesCollectionForType=new WebInspector.ResourceCollection(type);this._resourcesTypeMap.set(type,resourcesCollectionForType);}
return resourcesCollectionForType;}
clear()
{super.clear();this._resourceURLMap.clear();if(!this._resourceType)
this._resourcesTypeMap.clear();}
itemAdded(item)
{this._associateWithResource(item);}
itemRemoved(item)
{this._disassociateWithResource(item);}
itemsCleared(items)
{const skipRemoval=true;for(let item of items)
this._disassociateWithResource(item,skipRemoval);}
_associateWithResource(resource)
{this._resourceURLMap.set(resource.url,resource);if(!this._resourceType){let resourcesCollectionForType=this.resourceCollectionForType(resource.type);resourcesCollectionForType.add(resource);}
resource.addEventListener(WebInspector.Resource.Event.URLDidChange,this._resourceURLDidChange,this);resource.addEventListener(WebInspector.Resource.Event.TypeDidChange,this._resourceTypeDidChange,this);}
_disassociateWithResource(resource,skipRemoval)
{resource.removeEventListener(WebInspector.Resource.Event.URLDidChange,this._resourceURLDidChange,this);resource.removeEventListener(WebInspector.Resource.Event.TypeDidChange,this._resourceTypeDidChange,this);if(skipRemoval)
return;if(!this._resourceType){let resourcesCollectionForType=this.resourceCollectionForType(resource.type);resourcesCollectionForType.remove(resource);}
this._resourceURLMap.delete(resource.url);}
_resourceURLDidChange(event)
{let resource=event.target;if(!(resource instanceof WebInspector.Resource))
return;let oldURL=event.data.oldURL;if(!oldURL)
return;this._resourceURLMap.set(resource.url,resource);this._resourceURLMap.delete(oldURL);}
_resourceTypeDidChange(event)
{let resource=event.target;if(!(resource instanceof WebInspector.Resource))
return;if(this._resourceType){this.remove(resource);return;}
let resourcesWithNewType=this.resourceCollectionForType(resource.type);resourcesWithNewType.add(resource);
}};WebInspector.ResourceCollection.TypeVerifier={Document:(object)=>WebInspector.Collection.TypeVerifier.Resource(object)&&object.type===WebInspector.Resource.Type.Document,Stylesheet:(object)=>{if(WebInspector.Collection.TypeVerifier.CSSStyleSheet(object))
return true;return WebInspector.Collection.TypeVerifier.Resource(object)&&object.type===WebInspector.Resource.Type.Stylesheet},Image:(object)=>WebInspector.Collection.TypeVerifier.Resource(object)&&object.type===WebInspector.Resource.Type.Image,Font:(object)=>WebInspector.Collection.TypeVerifier.Resource(object)&&object.type===WebInspector.Resource.Type.Font,Script:(object)=>WebInspector.Collection.TypeVerifier.Resource(object)&&object.type===WebInspector.Resource.Type.Script,XHR:(object)=>WebInspector.Collection.TypeVerifier.Resource(object)&&object.type===WebInspector.Resource.Type.XHR,Fetch:(object)=>WebInspector.Collection.TypeVerifier.Resource(object)&&object.type===WebInspector.Resource.Type.Fetch,WebSocket:(object)=>WebInspector.Collection.TypeVerifier.Resource(object)&&object.type===WebInspector.Resource.Type.WebSocket,Other:(object)=>WebInspector.Collection.TypeVerifier.Resource(object)&&object.type===WebInspector.Resource.Type.Other,};WebInspector.ResourceQueryMatch=class QueryMatch extends WebInspector.Object
{constructor(type,index,queryIndex)
{super();this._type=type;this._index=index;this._queryIndex=queryIndex;this._rank=undefined;}
get type(){return this._type;}
get index(){return this._index;}
get queryIndex(){return this._queryIndex;}};WebInspector.ResourceQueryMatch.Type={Normal:Symbol("normal"),Special:Symbol("special")};WebInspector.ResourceQueryResult=class QueryResult extends WebInspector.Object
{constructor(resource,matches,cookie)
{super();this._resource=resource;this._matches=matches;this._cookie=cookie||null;}
get resource(){return this._resource;}
get cookie(){return this._cookie;}
get rank()
{if(this._rank===undefined)
this._calculateRank();return this._rank;}
get matchingTextRanges()
{if(!this._matchingTextRanges)
this._matchingTextRanges=this._createMatchingTextRanges();return this._matchingTextRanges;}
_calculateRank()
{const normalWeight=10;const consecutiveWeight=5;const specialMultiplier=5;function getMultiplier(match){if(match.type===WebInspector.ResourceQueryMatch.Type.Special)
return specialMultiplier;return 1;}
this._rank=0;let previousMatch=null;let consecutiveMatchStart=null;for(let match of this._matches){this._rank+=normalWeight*getMultiplier(match);let consecutive=previousMatch&&previousMatch.index===match.index-1;if(consecutive){if(!consecutiveMatchStart)
consecutiveMatchStart=previousMatch;
this._rank+=consecutiveWeight*getMultiplier(consecutiveMatchStart)*(match.index-consecutiveMatchStart.index);}else if(consecutiveMatchStart)
consecutiveMatchStart=null;previousMatch=match;
if(!consecutive)
this._rank-=match.index*getMultiplier(match);}}
_createMatchingTextRanges()
{if(!this._matches.length)
return[];let ranges=[];let startIndex=this._matches[0].index;let endIndex=startIndex;for(let i=1;i<this._matches.length;++i){let match=this._matches[i];if(match.index===endIndex+1){endIndex++;continue;}
ranges.push(new WebInspector.TextRange(0,startIndex,0,endIndex+1));startIndex=match.index;endIndex=startIndex;}
ranges.push(new WebInspector.TextRange(0,startIndex,0,endIndex+1));return ranges;}
__test_createMatchesMask()
{let filename=this._resource.displayName;let lastIndex=-1;let result="";for(let match of this._matches){let gap=" ".repeat(match.index-lastIndex-1);result+=gap;result+=filename[match.index];lastIndex=match.index;}
return result;}};WebInspector.ResourceTimelineRecord=class ResourceTimelineRecord extends WebInspector.TimelineRecord
{constructor(resource)
{super(WebInspector.TimelineRecord.Type.Network);this._resource=resource;this._resource.addEventListener(WebInspector.Resource.Event.TimestampsDidChange,this._dispatchUpdatedEvent,this);}
get resource()
{return this._resource;}
get updatesDynamically()
{return true;}
get usesActiveStartTime()
{return true;}
get startTime()
{return this._resource.timingData.startTime;}
get activeStartTime()
{return this._resource.timingData.responseStart;}
get endTime()
{return this._resource.timingData.responseEnd;}
_dispatchUpdatedEvent()
{this.dispatchEventToListeners(WebInspector.TimelineRecord.Event.Updated);}};WebInspector.ResourceTimingData=class ResourceTimingData extends WebInspector.Object
{constructor(resource,data)
{super();data=data||{};this._resource=resource;this._startTime=data.startTime||NaN;this._domainLookupStart=data.domainLookupStart||NaN;this._domainLookupEnd=data.domainLookupEnd||NaN;this._connectStart=data.connectStart||NaN;this._connectEnd=data.connectEnd||NaN;this._secureConnectionStart=data.secureConnectionStart||NaN;this._requestStart=data.requestStart||NaN;this._responseStart=data.responseStart||NaN;this._responseEnd=data.responseEnd||NaN;if(this._domainLookupStart>=this._domainLookupEnd)
this._domainLookupStart=this._domainLookupEnd=NaN;if(this._connectStart>=this._connectEnd)
this._connectStart=this._connectEnd=NaN;}
static fromPayload(payload,resource)
{payload=payload||{};if(typeof payload.requestTime==="number"||typeof payload.navigationStart==="number")
payload={};function offsetToTimestamp(offset){return offset>0?payload.startTime+(offset/1000):NaN;}
let data={startTime:payload.startTime,domainLookupStart:offsetToTimestamp(payload.domainLookupStart),domainLookupEnd:offsetToTimestamp(payload.domainLookupEnd),connectStart:offsetToTimestamp(payload.connectStart),connectEnd:offsetToTimestamp(payload.connectEnd),secureConnectionStart:offsetToTimestamp(payload.secureConnectionStart),requestStart:offsetToTimestamp(payload.requestStart),responseStart:offsetToTimestamp(payload.responseStart),responseEnd:offsetToTimestamp(payload.responseEnd)};if(isNaN(data.connectStart)&&!isNaN(data.secureConnectionStart))
data.connectStart=data.secureConnectionStart;return new WebInspector.ResourceTimingData(resource,data);}
get startTime(){return this._startTime||this._resource.requestSentTimestamp;}
get domainLookupStart(){return this._domainLookupStart;}
get domainLookupEnd(){return this._domainLookupEnd;}
get connectStart(){return this._connectStart;}
get connectEnd(){return this._connectEnd;}
get secureConnectionStart(){return this._secureConnectionStart;}
get requestStart(){return this._requestStart||this._startTime||this._resource.requestSentTimestamp;}
get responseStart(){return this._responseStart||this._startTime||this._resource.responseReceivedTimestamp;}
get responseEnd(){return this._responseEnd||this._resource.finishedOrFailedTimestamp;}
markResponseEndTime(responseEnd)
{this._responseEnd=responseEnd;}};WebInspector.Revision=class Revision extends WebInspector.Object
{ apply()
{console.error("Needs to be implemented by a subclass.");}
revert()
{console.error("Needs to be implemented by a subclass.");}
copy()
{return this;}};WebInspector.ScopeChainNode=class ScopeChainNode extends WebInspector.Object
{constructor(type,objects,name,location,empty)
{super();if(type in WebInspector.ScopeChainNode.Type)
type=WebInspector.ScopeChainNode.Type[type];this._type=type||null;this._objects=objects||[];this._name=name||"";this._location=location||null;this._empty=empty||false;}
get type(){return this._type;}
get objects(){return this._objects;}
get name(){return this._name;}
get location(){return this._location;}
get empty(){return this._empty;}
get hash()
{if(this._hash)
return this._hash;this._hash=this._name;if(this._location)
this._hash+=`:${this._location.scriptId}:${this._location.lineNumber}:${this._location.columnNumber}`;return this._hash;}
convertToLocalScope()
{this._type=WebInspector.ScopeChainNode.Type.Local;}};WebInspector.ScopeChainNode.Type={Local:"scope-chain-type-local",Global:"scope-chain-type-global",GlobalLexicalEnvironment:"scope-chain-type-global-lexical-environment",With:"scope-chain-type-with",Closure:"scope-chain-type-closure",Catch:"scope-chain-type-catch",FunctionName:"scope-chain-type-function-name",Block:"scope-chain-type-block",};WebInspector.Script=class Script extends WebInspector.SourceCode
{constructor(target,id,range,url,sourceType,injected,sourceURL,sourceMapURL)
{super();this._target=target;this._id=id||null;this._range=range||null;this._url=url||null;this._sourceType=sourceType||WebInspector.Script.SourceType.Program;this._sourceURL=sourceURL||null;this._sourceMappingURL=sourceMapURL||null;this._injected=injected||false;this._dynamicallyAddedScriptElement=false;this._scriptSyntaxTree=null;this._resource=this._resolveResource();
if(this._resource&&this._resource.type===WebInspector.Resource.Type.Document&&!this._range.startLine&&!this._range.startColumn){let documentResource=this._resource;this._resource=null;this._dynamicallyAddedScriptElement=true;documentResource.parentFrame.addExtraScript(this);this._dynamicallyAddedScriptElementNumber=documentResource.parentFrame.extraScriptCollection.items.size;}else if(this._resource)
this._resource.associateWithScript(this);if(isWebInspectorConsoleEvaluationScript(this._sourceURL)){this._uniqueDisplayNameNumber=this.constructor._nextUniqueConsoleDisplayNameNumber++;}
if(this._sourceMappingURL)
WebInspector.sourceMapManager.downloadSourceMap(this._sourceMappingURL,this._url,this);}
static resetUniqueDisplayNameNumbers()
{WebInspector.Script._nextUniqueDisplayNameNumber=1;WebInspector.Script._nextUniqueConsoleDisplayNameNumber=1;}
get target(){return this._target;}
get id(){return this._id;}
get range(){return this._range;}
get url(){return this._url;}
get sourceType(){return this._sourceType;}
get sourceURL(){return this._sourceURL;}
get sourceMappingURL(){return this._sourceMappingURL;}
get injected(){return this._injected;}
get contentIdentifier()
{if(this._url)
return this._url;if(!this._sourceURL)
return null;
if(isWebInspectorConsoleEvaluationScript(this._sourceURL))
return null;if(isWebInspectorInternalScript(this._sourceURL))
return null;return this._sourceURL;}
get urlComponents()
{if(!this._urlComponents)
this._urlComponents=parseURL(this._url);return this._urlComponents;}
get mimeType()
{return this._resource.mimeType;}
get displayName()
{if(this._url&&!this._dynamicallyAddedScriptElement)
return WebInspector.displayNameForURL(this._url,this.urlComponents);if(isWebInspectorConsoleEvaluationScript(this._sourceURL)){return WebInspector.UIString("Console Evaluation %d").format(this._uniqueDisplayNameNumber);}
if(this._sourceURL){if(!this._sourceURLComponents)
this._sourceURLComponents=parseURL(this._sourceURL);return WebInspector.displayNameForURL(this._sourceURL,this._sourceURLComponents);}
if(this._dynamicallyAddedScriptElement)
return WebInspector.UIString("Script Element %d").format(this._dynamicallyAddedScriptElementNumber);if(!this._uniqueDisplayNameNumber)
this._uniqueDisplayNameNumber=this.constructor._nextUniqueDisplayNameNumber++;return WebInspector.UIString("Anonymous Script %d").format(this._uniqueDisplayNameNumber);}
get displayURL()
{const isMultiLine=true;const dataURIMaxSize=64;if(this._url)
return WebInspector.truncateURL(this._url,isMultiLine,dataURIMaxSize);if(this._sourceURL)
return WebInspector.truncateURL(this._sourceURL,isMultiLine,dataURIMaxSize);return null;}
get dynamicallyAddedScriptElement()
{return this._dynamicallyAddedScriptElement;}
get anonymous()
{return!this._resource&&!this._url&&!this._sourceURL;}
get resource()
{return this._resource;}
get scriptSyntaxTree()
{return this._scriptSyntaxTree;}
isMainResource()
{return this._target.mainResource===this;}
requestContentFromBackend()
{if(!this._id){
return Promise.reject(new Error("There is no identifier to request content with."));}
return this._target.DebuggerAgent.getScriptSource(this._id);}
saveIdentityToCookie(cookie)
{cookie[WebInspector.Script.URLCookieKey]=this.url;cookie[WebInspector.Script.DisplayNameCookieKey]=this.displayName;}
requestScriptSyntaxTree(callback)
{if(this._scriptSyntaxTree){setTimeout(()=>{callback(this._scriptSyntaxTree);},0);return;}
var makeSyntaxTreeAndCallCallback=(content)=>{this._makeSyntaxTree(content);callback(this._scriptSyntaxTree);};var content=this.content;if(!content&&this._resource&&this._resource.type===WebInspector.Resource.Type.Script&&this._resource.finished)
content=this._resource.content;if(content){setTimeout(makeSyntaxTreeAndCallCallback,0,content);return;}
this.requestContent().then(function(parameters){makeSyntaxTreeAndCallCallback(parameters.sourceCode.content);}).catch(function(error){makeSyntaxTreeAndCallCallback(null);});}
_resolveResource()
{
if(!this._url)
return null;let resolver=WebInspector.frameResourceManager;if(this._target!==WebInspector.mainTarget)
resolver=this._target.resourceCollection;try{let resource=resolver.resourceForURL(this._url);if(resource)
return resource;let decodedURL=decodeURI(this._url);if(decodedURL!==this._url){resource=resolver.resourceForURL(decodedURL);if(resource)
return resource;}
let urlWithoutFragment=removeURLFragment(this._url);if(urlWithoutFragment!==this._url){resource=resolver.resourceForURL(urlWithoutFragment);if(resource)
return resource;}
let decodedURLWithoutFragment=removeURLFragment(decodedURL);if(decodedURLWithoutFragment!==decodedURL){resource=resolver.resourceForURL(decodedURLWithoutFragment);if(resource)
return resource;}}catch(e){}
return null;}
_makeSyntaxTree(sourceText)
{if(this._scriptSyntaxTree||!sourceText)
return;this._scriptSyntaxTree=new WebInspector.ScriptSyntaxTree(sourceText,this);}};WebInspector.Script.SourceType={Program:"script-source-type-program",Module:"script-source-type-module",};WebInspector.Script.TypeIdentifier="script";WebInspector.Script.URLCookieKey="script-url";WebInspector.Script.DisplayNameCookieKey="script-display-name";WebInspector.Script._nextUniqueDisplayNameNumber=1;WebInspector.Script._nextUniqueConsoleDisplayNameNumber=1;WebInspector.ScriptInstrument=class ScriptInstrument extends WebInspector.Instrument
{ get timelineRecordType()
{return WebInspector.TimelineRecord.Type.Script;}
startInstrumentation(initiatedByBackend)
{if(!window.ScriptProfilerAgent){super.startInstrumentation();return;}
const includeSamples=true;if(!initiatedByBackend)
ScriptProfilerAgent.startTracking(includeSamples);}
stopInstrumentation(initiatedByBackend)
{if(!window.ScriptProfilerAgent){super.stopInstrumentation();return;}
if(!initiatedByBackend)
ScriptProfilerAgent.stopTracking();}};WebInspector.ScriptSyntaxTree=class ScriptSyntaxTree extends WebInspector.Object
{constructor(sourceText,script)
{super();this._script=script;try{let sourceType=this._script.sourceType===WebInspector.Script.SourceType.Module?"module":"script";let esprimaSyntaxTree=esprima.parse(sourceText,{range:true,sourceType});this._syntaxTree=this._createInternalSyntaxTree(esprimaSyntaxTree);this._parsedSuccessfully=true;}catch(error){this._parsedSuccessfully=false;this._syntaxTree=null;console.error("Couldn't parse JavaScript File: "+script.url,error);}}
get parsedSuccessfully()
{return this._parsedSuccessfully;}
forEachNode(callback)
{if(!this._parsedSuccessfully)
return;this._recurse(this._syntaxTree,callback,this._defaultParserState());}
filter(predicate,startNode)
{if(!this._parsedSuccessfully)
return[];var nodes=[];function filter(node,state)
{if(predicate(node))
nodes.push(node);else
state.skipChildNodes=true;}
this._recurse(startNode,filter,this._defaultParserState());return nodes;}
containersOfOffset(offset)
{if(!this._parsedSuccessfully)
return[];let allNodes=[];const start=0;const end=1;this.forEachNode((node,state)=>{if(node.range[end]<offset)
state.skipChildNodes=true;if(node.range[start]>offset)
state.shouldStopEarly=true;if(node.range[start]<=offset&&node.range[end]>=offset)
allNodes.push(node);});return allNodes;}
filterByRange(startOffset,endOffset)
{if(!this._parsedSuccessfully)
return[];var allNodes=[];var start=0;var end=1;function filterForNodesInRange(node,state)
{
if(node.range[end]<startOffset)
state.skipChildNodes=true;if(startOffset<=node.range[start]&&node.range[start]<=endOffset)
allNodes.push(node);
if(node.range[start]>endOffset)
state.shouldStopEarly=true;}
this.forEachNode(filterForNodesInRange);return allNodes;}
containsNonEmptyReturnStatement(startNode)
{if(!this._parsedSuccessfully)
return false;if(startNode.attachments._hasNonEmptyReturnStatement!==undefined)
return startNode.attachments._hasNonEmptyReturnStatement;function removeFunctionsFilter(node)
{return node.type!==WebInspector.ScriptSyntaxTree.NodeType.FunctionExpression&&node.type!==WebInspector.ScriptSyntaxTree.NodeType.FunctionDeclaration&&node.type!==WebInspector.ScriptSyntaxTree.NodeType.ArrowFunctionExpression;}
var nodes=this.filter(removeFunctionsFilter,startNode);var hasNonEmptyReturnStatement=false;var returnStatementType=WebInspector.ScriptSyntaxTree.NodeType.ReturnStatement;for(var node of nodes){if(node.type===returnStatementType&&node.argument){hasNonEmptyReturnStatement=true;break;}}
startNode.attachments._hasNonEmptyReturnStatement=hasNonEmptyReturnStatement;return hasNonEmptyReturnStatement;}
static functionReturnDivot(node)
{if(!DOMAgent.hasEvent("pseudoElementAdded"))
return node.body.range[0];return node.typeProfilingReturnDivot;}
updateTypes(nodesToUpdate,callback)
{if(!this._parsedSuccessfully)
return;var allRequests=[];var allRequestNodes=[];var sourceID=this._script.id;for(var node of nodesToUpdate){switch(node.type){case WebInspector.ScriptSyntaxTree.NodeType.FunctionDeclaration:case WebInspector.ScriptSyntaxTree.NodeType.FunctionExpression:case WebInspector.ScriptSyntaxTree.NodeType.ArrowFunctionExpression:for(var param of node.params){for(var identifier of this._gatherIdentifiersInDeclaration(param)){allRequests.push({typeInformationDescriptor:WebInspector.ScriptSyntaxTree.TypeProfilerSearchDescriptor.NormalExpression,sourceID,divot:identifier.range[0]});allRequestNodes.push(identifier);}}
allRequests.push({typeInformationDescriptor:WebInspector.ScriptSyntaxTree.TypeProfilerSearchDescriptor.FunctionReturn,sourceID,divot:WebInspector.ScriptSyntaxTree.functionReturnDivot(node)});allRequestNodes.push(node);break;case WebInspector.ScriptSyntaxTree.NodeType.VariableDeclarator:for(var identifier of this._gatherIdentifiersInDeclaration(node.id)){allRequests.push({typeInformationDescriptor:WebInspector.ScriptSyntaxTree.TypeProfilerSearchDescriptor.NormalExpression,sourceID,divot:identifier.range[0]});allRequestNodes.push(identifier);}
break;}}
function handleTypes(error,typeInformationArray)
{if(error)
return;for(var i=0;i<typeInformationArray.length;i++){var node=allRequestNodes[i];var typeInformation=WebInspector.TypeDescription.fromPayload(typeInformationArray[i]);if(allRequests[i].typeInformationDescriptor===WebInspector.ScriptSyntaxTree.TypeProfilerSearchDescriptor.FunctionReturn)
node.attachments.returnTypes=typeInformation;else
node.attachments.types=typeInformation;}
callback(allRequestNodes);}
this._script.target.RuntimeAgent.getRuntimeTypesForVariablesAtOffsets(allRequests,handleTypes);}
_gatherIdentifiersInDeclaration(node)
{function gatherIdentifiers(node)
{switch(node.type){case WebInspector.ScriptSyntaxTree.NodeType.Identifier:return[node];case WebInspector.ScriptSyntaxTree.NodeType.Property:return gatherIdentifiers(node.value);case WebInspector.ScriptSyntaxTree.NodeType.ObjectPattern:var identifiers=[];for(var property of node.properties){for(var identifier of gatherIdentifiers(property))
identifiers.push(identifier);}
return identifiers;case WebInspector.ScriptSyntaxTree.NodeType.ArrayPattern:var identifiers=[];for(var element of node.elements){for(var identifier of gatherIdentifiers(element))
identifiers.push(identifier);}
return identifiers;case WebInspector.ScriptSyntaxTree.NodeType.AssignmentPattern:return gatherIdentifiers(node.left);case WebInspector.ScriptSyntaxTree.NodeType.RestElement:case WebInspector.ScriptSyntaxTree.NodeType.RestProperty:return gatherIdentifiers(node.argument);default:return[];}}
return gatherIdentifiers(node);}
_defaultParserState()
{return{shouldStopEarly:false,skipChildNodes:false};}
_recurse(node,callback,state)
{if(!node)
return;if(state.shouldStopEarly||state.skipChildNodes)
return;callback(node,state);switch(node.type){case WebInspector.ScriptSyntaxTree.NodeType.AssignmentExpression:this._recurse(node.left,callback,state);this._recurse(node.right,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ArrayExpression:case WebInspector.ScriptSyntaxTree.NodeType.ArrayPattern:this._recurseArray(node.elements,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.AssignmentPattern:this._recurse(node.left,callback,state);this._recurse(node.right,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.AwaitExpression:this._recurse(node.argument,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.BlockStatement:this._recurseArray(node.body,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.BinaryExpression:this._recurse(node.left,callback,state);this._recurse(node.right,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.BreakStatement:this._recurse(node.label,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.CatchClause:this._recurse(node.param,callback,state);this._recurse(node.body,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.CallExpression:this._recurse(node.callee,callback,state);this._recurseArray(node.arguments,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ClassBody:this._recurseArray(node.body,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ClassDeclaration:case WebInspector.ScriptSyntaxTree.NodeType.ClassExpression:this._recurse(node.id,callback,state);this._recurse(node.superClass,callback,state);this._recurse(node.body,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ContinueStatement:this._recurse(node.label,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.DoWhileStatement:this._recurse(node.body,callback,state);this._recurse(node.test,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ExpressionStatement:this._recurse(node.expression,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ForStatement:this._recurse(node.init,callback,state);this._recurse(node.test,callback,state);this._recurse(node.update,callback,state);this._recurse(node.body,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ForInStatement:case WebInspector.ScriptSyntaxTree.NodeType.ForOfStatement:this._recurse(node.left,callback,state);this._recurse(node.right,callback,state);this._recurse(node.body,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.FunctionDeclaration:case WebInspector.ScriptSyntaxTree.NodeType.FunctionExpression:case WebInspector.ScriptSyntaxTree.NodeType.ArrowFunctionExpression:this._recurse(node.id,callback,state);this._recurseArray(node.params,callback,state);this._recurse(node.body,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.IfStatement:this._recurse(node.test,callback,state);this._recurse(node.consequent,callback,state);this._recurse(node.alternate,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.LabeledStatement:this._recurse(node.label,callback,state);this._recurse(node.body,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.LogicalExpression:this._recurse(node.left,callback,state);this._recurse(node.right,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.MemberExpression:this._recurse(node.object,callback,state);this._recurse(node.property,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.MethodDefinition:this._recurse(node.key,callback,state);this._recurse(node.value,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.NewExpression:this._recurse(node.callee,callback,state);this._recurseArray(node.arguments,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ObjectExpression:case WebInspector.ScriptSyntaxTree.NodeType.ObjectPattern:this._recurseArray(node.properties,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.Program:this._recurseArray(node.body,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.Property:this._recurse(node.key,callback,state);this._recurse(node.value,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.RestElement:this._recurse(node.argument,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.RestProperty:this._recurse(node.argument,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ReturnStatement:this._recurse(node.argument,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.SequenceExpression:this._recurseArray(node.expressions,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.SpreadElement:this._recurse(node.argument,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.SpreadProperty:this._recurse(node.argument,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.SwitchStatement:this._recurse(node.discriminant,callback,state);this._recurseArray(node.cases,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.SwitchCase:this._recurse(node.test,callback,state);this._recurseArray(node.consequent,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ConditionalExpression:this._recurse(node.test,callback,state);this._recurse(node.consequent,callback,state);this._recurse(node.alternate,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.TaggedTemplateExpression:this._recurse(node.tag,callback,state);this._recurse(node.quasi,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.TemplateLiteral:this._recurseArray(node.quasis,callback,state);this._recurseArray(node.expressions,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ThrowStatement:this._recurse(node.argument,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.TryStatement:this._recurse(node.block,callback,state);this._recurse(node.handler,callback,state);this._recurse(node.finalizer,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.UnaryExpression:this._recurse(node.argument,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.UpdateExpression:this._recurse(node.argument,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.VariableDeclaration:this._recurseArray(node.declarations,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.VariableDeclarator:this._recurse(node.id,callback,state);this._recurse(node.init,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.WhileStatement:this._recurse(node.test,callback,state);this._recurse(node.body,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.WithStatement:this._recurse(node.object,callback,state);this._recurse(node.body,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.YieldExpression:this._recurse(node.argument,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ExportAllDeclaration:this._recurse(node.source,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ExportNamedDeclaration:this._recurse(node.declaration,callback,state);this._recurseArray(node.specifiers,callback,state);this._recurse(node.source,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ExportDefaultDeclaration:this._recurse(node.declaration,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ExportSpecifier:this._recurse(node.local,callback,state);this._recurse(node.exported,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ImportDeclaration:this._recurseArray(node.specifiers,callback,state);this._recurse(node.source,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ImportDefaultSpecifier:this._recurse(node.local,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ImportNamespaceSpecifier:this._recurse(node.local,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.ImportSpecifier:this._recurse(node.imported,callback,state);this._recurse(node.local,callback,state);break;case WebInspector.ScriptSyntaxTree.NodeType.DebuggerStatement:case WebInspector.ScriptSyntaxTree.NodeType.EmptyStatement:case WebInspector.ScriptSyntaxTree.NodeType.Identifier:case WebInspector.ScriptSyntaxTree.NodeType.Import:case WebInspector.ScriptSyntaxTree.NodeType.Literal:case WebInspector.ScriptSyntaxTree.NodeType.MetaProperty:case WebInspector.ScriptSyntaxTree.NodeType.Super:case WebInspector.ScriptSyntaxTree.NodeType.ThisExpression:case WebInspector.ScriptSyntaxTree.NodeType.TemplateElement:break;}
state.skipChildNodes=false;}
_recurseArray(array,callback,state)
{for(var node of array)
this._recurse(node,callback,state);}
_createInternalSyntaxTree(node)
{if(!node)
return null;var result=null;switch(node.type){case"ArrayExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.ArrayExpression,elements:node.elements.map(this._createInternalSyntaxTree,this)};break;case"ArrayPattern":result={type:WebInspector.ScriptSyntaxTree.NodeType.ArrayPattern,elements:node.elements.map(this._createInternalSyntaxTree,this)};break;case"ArrowFunctionExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.ArrowFunctionExpression,id:this._createInternalSyntaxTree(node.id),params:node.params.map(this._createInternalSyntaxTree,this),body:this._createInternalSyntaxTree(node.body),generator:node.generator,expression:node.expression,async:node.async,typeProfilingReturnDivot:node.range[0]};break;case"AssignmentExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.AssignmentExpression,operator:node.operator,left:this._createInternalSyntaxTree(node.left),right:this._createInternalSyntaxTree(node.right)};break;case"AssignmentPattern":result={type:WebInspector.ScriptSyntaxTree.NodeType.AssignmentPattern,left:this._createInternalSyntaxTree(node.left),right:this._createInternalSyntaxTree(node.right),};break;case"AwaitExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.AwaitExpression,argument:this._createInternalSyntaxTree(node.argument),};break;case"BlockStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.BlockStatement,body:node.body.map(this._createInternalSyntaxTree,this)};break;case"BinaryExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.BinaryExpression,operator:node.operator,left:this._createInternalSyntaxTree(node.left),right:this._createInternalSyntaxTree(node.right)};break;case"BreakStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.BreakStatement,label:this._createInternalSyntaxTree(node.label)};break;case"CallExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.CallExpression,callee:this._createInternalSyntaxTree(node.callee),arguments:node.arguments.map(this._createInternalSyntaxTree,this)};break;case"CatchClause":result={type:WebInspector.ScriptSyntaxTree.NodeType.CatchClause,param:this._createInternalSyntaxTree(node.param),body:this._createInternalSyntaxTree(node.body)};break;case"ClassBody":result={type:WebInspector.ScriptSyntaxTree.NodeType.ClassBody,body:node.body.map(this._createInternalSyntaxTree,this)};break;case"ClassDeclaration":result={type:WebInspector.ScriptSyntaxTree.NodeType.ClassDeclaration,id:this._createInternalSyntaxTree(node.id),superClass:this._createInternalSyntaxTree(node.superClass),body:this._createInternalSyntaxTree(node.body),};break;case"ClassExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.ClassExpression,id:this._createInternalSyntaxTree(node.id),superClass:this._createInternalSyntaxTree(node.superClass),body:this._createInternalSyntaxTree(node.body),};break;case"ConditionalExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.ConditionalExpression,test:this._createInternalSyntaxTree(node.test),consequent:this._createInternalSyntaxTree(node.consequent),alternate:this._createInternalSyntaxTree(node.alternate)};break;case"ContinueStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.ContinueStatement,label:this._createInternalSyntaxTree(node.label)};break;case"DoWhileStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.DoWhileStatement,body:this._createInternalSyntaxTree(node.body),test:this._createInternalSyntaxTree(node.test)};break;case"DebuggerStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.DebuggerStatement};break;case"EmptyStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.EmptyStatement};break;case"ExpressionStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.ExpressionStatement,expression:this._createInternalSyntaxTree(node.expression)};break;case"ForStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.ForStatement,init:this._createInternalSyntaxTree(node.init),test:this._createInternalSyntaxTree(node.test),update:this._createInternalSyntaxTree(node.update),body:this._createInternalSyntaxTree(node.body)};break;case"ForInStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.ForInStatement,left:this._createInternalSyntaxTree(node.left),right:this._createInternalSyntaxTree(node.right),body:this._createInternalSyntaxTree(node.body)};break;case"ForOfStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.ForOfStatement,left:this._createInternalSyntaxTree(node.left),right:this._createInternalSyntaxTree(node.right),body:this._createInternalSyntaxTree(node.body)};break;case"FunctionDeclaration":result={type:WebInspector.ScriptSyntaxTree.NodeType.FunctionDeclaration,id:this._createInternalSyntaxTree(node.id),params:node.params.map(this._createInternalSyntaxTree,this),body:this._createInternalSyntaxTree(node.body),generator:node.generator,async:node.async,typeProfilingReturnDivot:node.range[0]};break;case"FunctionExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.FunctionExpression,id:this._createInternalSyntaxTree(node.id),params:node.params.map(this._createInternalSyntaxTree,this),body:this._createInternalSyntaxTree(node.body),generator:node.generator,async:node.async,typeProfilingReturnDivot:node.range[0]
};break;case"Identifier":result={type:WebInspector.ScriptSyntaxTree.NodeType.Identifier,name:node.name};break;case"IfStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.IfStatement,test:this._createInternalSyntaxTree(node.test),consequent:this._createInternalSyntaxTree(node.consequent),alternate:this._createInternalSyntaxTree(node.alternate)};break;case"Literal":result={type:WebInspector.ScriptSyntaxTree.NodeType.Literal,value:node.value,raw:node.raw};break;case"LabeledStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.LabeledStatement,label:this._createInternalSyntaxTree(node.label),body:this._createInternalSyntaxTree(node.body)};break;case"LogicalExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.LogicalExpression,left:this._createInternalSyntaxTree(node.left),right:this._createInternalSyntaxTree(node.right),operator:node.operator};break;case"MemberExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.MemberExpression,object:this._createInternalSyntaxTree(node.object),property:this._createInternalSyntaxTree(node.property),computed:node.computed};break;case"MetaProperty":result={type:WebInspector.ScriptSyntaxTree.NodeType.MetaProperty,meta:this._createInternalSyntaxTree(node.meta),property:this._createInternalSyntaxTree(node.property),};break;case"MethodDefinition":result={type:WebInspector.ScriptSyntaxTree.NodeType.MethodDefinition,key:this._createInternalSyntaxTree(node.key),value:this._createInternalSyntaxTree(node.value),computed:node.computed,kind:node.kind,static:node.static};result.value.typeProfilingReturnDivot=node.range[0];break;case"NewExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.NewExpression,callee:this._createInternalSyntaxTree(node.callee),arguments:node.arguments.map(this._createInternalSyntaxTree,this)};break;case"ObjectExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.ObjectExpression,properties:node.properties.map(this._createInternalSyntaxTree,this)};break;case"ObjectPattern":result={type:WebInspector.ScriptSyntaxTree.NodeType.ObjectPattern,properties:node.properties.map(this._createInternalSyntaxTree,this)};break;case"Program":result={type:WebInspector.ScriptSyntaxTree.NodeType.Program,sourceType:node.sourceType,body:node.body.map(this._createInternalSyntaxTree,this)};break;case"Property":result={type:WebInspector.ScriptSyntaxTree.NodeType.Property,key:this._createInternalSyntaxTree(node.key),value:this._createInternalSyntaxTree(node.value),kind:node.kind,method:node.method,computed:node.computed};if(result.kind==="get"||result.kind==="set"||result.method)
result.value.typeProfilingReturnDivot=node.range[0];break;case"RestElement":result={type:WebInspector.ScriptSyntaxTree.NodeType.RestElement,argument:this._createInternalSyntaxTree(node.argument)};break;case"RestProperty":result={type:WebInspector.ScriptSyntaxTree.NodeType.RestProperty,argument:this._createInternalSyntaxTree(node.argument),};break;case"ReturnStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.ReturnStatement,argument:this._createInternalSyntaxTree(node.argument)};break;case"SequenceExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.SequenceExpression,expressions:node.expressions.map(this._createInternalSyntaxTree,this)};break;case"SpreadElement":result={type:WebInspector.ScriptSyntaxTree.NodeType.SpreadElement,argument:this._createInternalSyntaxTree(node.argument),};break;case"SpreadProperty":result={type:WebInspector.ScriptSyntaxTree.NodeType.SpreadProperty,argument:this._createInternalSyntaxTree(node.argument),};break;case"Super":result={type:WebInspector.ScriptSyntaxTree.NodeType.Super};break;case"SwitchStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.SwitchStatement,discriminant:this._createInternalSyntaxTree(node.discriminant),cases:node.cases.map(this._createInternalSyntaxTree,this)};break;case"SwitchCase":result={type:WebInspector.ScriptSyntaxTree.NodeType.SwitchCase,test:this._createInternalSyntaxTree(node.test),consequent:node.consequent.map(this._createInternalSyntaxTree,this)};break;case"TaggedTemplateExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.TaggedTemplateExpression,tag:this._createInternalSyntaxTree(node.tag),quasi:this._createInternalSyntaxTree(node.quasi)};break;case"TemplateElement":result={type:WebInspector.ScriptSyntaxTree.NodeType.TemplateElement,value:node.value,tail:node.tail};break;case"TemplateLiteral":result={type:WebInspector.ScriptSyntaxTree.NodeType.TemplateLiteral,quasis:node.quasis.map(this._createInternalSyntaxTree,this),expressions:node.expressions.map(this._createInternalSyntaxTree,this)};break;case"ThisExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.ThisExpression};break;case"ThrowStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.ThrowStatement,argument:this._createInternalSyntaxTree(node.argument)};break;case"TryStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.TryStatement,block:this._createInternalSyntaxTree(node.block),handler:this._createInternalSyntaxTree(node.handler),finalizer:this._createInternalSyntaxTree(node.finalizer)};break;case"UnaryExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.UnaryExpression,operator:node.operator,argument:this._createInternalSyntaxTree(node.argument)};break;case"UpdateExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.UpdateExpression,operator:node.operator,prefix:node.prefix,argument:this._createInternalSyntaxTree(node.argument)};break;case"VariableDeclaration":result={type:WebInspector.ScriptSyntaxTree.NodeType.VariableDeclaration,declarations:node.declarations.map(this._createInternalSyntaxTree,this),kind:node.kind};break;case"VariableDeclarator":result={type:WebInspector.ScriptSyntaxTree.NodeType.VariableDeclarator,id:this._createInternalSyntaxTree(node.id),init:this._createInternalSyntaxTree(node.init)};break;case"WhileStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.WhileStatement,test:this._createInternalSyntaxTree(node.test),body:this._createInternalSyntaxTree(node.body)};break;case"WithStatement":result={type:WebInspector.ScriptSyntaxTree.NodeType.WithStatement,object:this._createInternalSyntaxTree(node.object),body:this._createInternalSyntaxTree(node.body)};break;case"YieldExpression":result={type:WebInspector.ScriptSyntaxTree.NodeType.YieldExpression,argument:this._createInternalSyntaxTree(node.argument),delegate:node.delegate};break;case"ExportAllDeclaration":result={type:WebInspector.ScriptSyntaxTree.NodeType.ExportAllDeclaration,source:this._createInternalSyntaxTree(node.source),};break;case"ExportNamedDeclaration":result={type:WebInspector.ScriptSyntaxTree.NodeType.ExportNamedDeclaration,declaration:this._createInternalSyntaxTree(node.declaration),specifiers:node.specifiers.map(this._createInternalSyntaxTree,this),source:this._createInternalSyntaxTree(node.source),};break;case"ExportDefaultDeclaration":result={type:WebInspector.ScriptSyntaxTree.NodeType.ExportDefaultDeclaration,declaration:this._createInternalSyntaxTree(node.declaration),};break;case"ExportSpecifier":result={type:WebInspector.ScriptSyntaxTree.NodeType.ExportSpecifier,local:this._createInternalSyntaxTree(node.local),exported:this._createInternalSyntaxTree(node.exported),};break;case"Import":result={type:WebInspector.ScriptSyntaxTree.NodeType.Import,};break;case"ImportDeclaration":result={type:WebInspector.ScriptSyntaxTree.NodeType.ImportDeclaration,specifiers:node.specifiers.map(this._createInternalSyntaxTree,this),source:this._createInternalSyntaxTree(node.source),};break;case"ImportDefaultSpecifier":result={type:WebInspector.ScriptSyntaxTree.NodeType.ImportDefaultSpecifier,local:this._createInternalSyntaxTree(node.local),};break;case"ImportNamespaceSpecifier":result={type:WebInspector.ScriptSyntaxTree.NodeType.ImportNamespaceSpecifier,local:this._createInternalSyntaxTree(node.local),};break;case"ImportSpecifier":result={type:WebInspector.ScriptSyntaxTree.NodeType.ImportSpecifier,imported:this._createInternalSyntaxTree(node.imported),local:this._createInternalSyntaxTree(node.local),};break;default:console.error("Unsupported Syntax Tree Node: "+node.type,node);return null;}
result.range=node.range;result.attachments={};return result;}};WebInspector.ScriptSyntaxTree.TypeProfilerSearchDescriptor={NormalExpression:1,FunctionReturn:2};WebInspector.ScriptSyntaxTree.NodeType={ArrayExpression:Symbol("array-expression"),ArrayPattern:Symbol("array-pattern"),ArrowFunctionExpression:Symbol("arrow-function-expression"),AssignmentExpression:Symbol("assignment-expression"),AssignmentPattern:Symbol("assignment-pattern"),AwaitExpression:Symbol("await-expression"),BinaryExpression:Symbol("binary-expression"),BlockStatement:Symbol("block-statement"),BreakStatement:Symbol("break-statement"),CallExpression:Symbol("call-expression"),CatchClause:Symbol("catch-clause"),ClassBody:Symbol("class-body"),ClassDeclaration:Symbol("class-declaration"),ClassExpression:Symbol("class-expression"),ConditionalExpression:Symbol("conditional-expression"),ContinueStatement:Symbol("continue-statement"),DebuggerStatement:Symbol("debugger-statement"),DoWhileStatement:Symbol("do-while-statement"),EmptyStatement:Symbol("empty-statement"),ExportAllDeclaration:Symbol("export-all-declaration"),ExportDefaultDeclaration:Symbol("export-default-declaration"),ExportNamedDeclaration:Symbol("export-named-declaration"),ExportSpecifier:Symbol("export-specifier"),ExpressionStatement:Symbol("expression-statement"),ForInStatement:Symbol("for-in-statement"),ForOfStatement:Symbol("for-of-statement"),ForStatement:Symbol("for-statement"),FunctionDeclaration:Symbol("function-declaration"),FunctionExpression:Symbol("function-expression"),Identifier:Symbol("identifier"),IfStatement:Symbol("if-statement"),Import:Symbol("import"),ImportDeclaration:Symbol("import-declaration"),ImportDefaultSpecifier:Symbol("import-default-specifier"),ImportNamespaceSpecifier:Symbol("import-namespace-specifier"),ImportSpecifier:Symbol("import-specifier"),LabeledStatement:Symbol("labeled-statement"),Literal:Symbol("literal"),LogicalExpression:Symbol("logical-expression"),MemberExpression:Symbol("member-expression"),MetaProperty:Symbol("meta-property"),MethodDefinition:Symbol("method-definition"),NewExpression:Symbol("new-expression"),ObjectExpression:Symbol("object-expression"),ObjectPattern:Symbol("object-pattern"),Program:Symbol("program"),Property:Symbol("property"),RestElement:Symbol("rest-element"),RestProperty:Symbol("rest-property"),ReturnStatement:Symbol("return-statement"),SequenceExpression:Symbol("sequence-expression"),SpreadElement:Symbol("spread-element"),SpreadProperty:Symbol("spread-property"),Super:Symbol("super"),SwitchCase:Symbol("switch-case"),SwitchStatement:Symbol("switch-statement"),TaggedTemplateExpression:Symbol("tagged-template-expression"),TemplateElement:Symbol("template-element"),TemplateLiteral:Symbol("template-literal"),ThisExpression:Symbol("this-expression"),ThrowStatement:Symbol("throw-statement"),TryStatement:Symbol("try-statement"),UnaryExpression:Symbol("unary-expression"),UpdateExpression:Symbol("update-expression"),VariableDeclaration:Symbol("variable-declaration"),VariableDeclarator:Symbol("variable-declarator"),WhileStatement:Symbol("while-statement"),WithStatement:Symbol("with-statement"),YieldExpression:Symbol("yield-expression"),};WebInspector.ScriptTimelineRecord=class ScriptTimelineRecord extends WebInspector.TimelineRecord
{constructor(eventType,startTime,endTime,callFrames,sourceCodeLocation,details,profilePayload)
{super(WebInspector.TimelineRecord.Type.Script,startTime,endTime,callFrames,sourceCodeLocation);if(eventType in WebInspector.ScriptTimelineRecord.EventType)
eventType=WebInspector.ScriptTimelineRecord.EventType[eventType];this._eventType=eventType;this._details=details||"";this._profilePayload=profilePayload||null;this._profile=null;if(!window.ScriptProfilerAgent)
this._callCountOrSamples=NaN;else{this._callCountOrSamples=0;}}
get eventType()
{return this._eventType;}
get details()
{return this._details;}
get profile()
{this._initializeProfileFromPayload();return this._profile;}
get callCountOrSamples()
{return this._callCountOrSamples;}
isGarbageCollection()
{return this._eventType===WebInspector.ScriptTimelineRecord.EventType.GarbageCollected;}
saveIdentityToCookie(cookie)
{super.saveIdentityToCookie(cookie);cookie[WebInspector.ScriptTimelineRecord.EventTypeCookieKey]=this._eventType;cookie[WebInspector.ScriptTimelineRecord.DetailsCookieKey]=this._details;}
get profilePayload()
{return this._profilePayload;}
set profilePayload(payload)
{this._profilePayload=payload;}
_initializeProfileFromPayload(payload)
{if(this._profile||!this._profilePayload)
return;var payload=this._profilePayload;this._profilePayload=undefined;function profileNodeFromPayload(nodePayload)
{if(nodePayload.url){var sourceCode=WebInspector.frameResourceManager.resourceForURL(nodePayload.url);if(!sourceCode)
sourceCode=WebInspector.debuggerManager.scriptsForURL(nodePayload.url,WebInspector.assumingMainTarget())[0];var lineNumber=nodePayload.lineNumber-1;var sourceCodeLocation=sourceCode?sourceCode.createLazySourceCodeLocation(lineNumber,nodePayload.columnNumber):null;}
var isProgramCode=nodePayload.functionName==="(program)";var isAnonymousFunction=nodePayload.functionName==="(anonymous function)";var type=isProgramCode?WebInspector.ProfileNode.Type.Program:WebInspector.ProfileNode.Type.Function;var functionName=!isProgramCode&&!isAnonymousFunction&&nodePayload.functionName!=="(unknown)"?nodePayload.functionName:null;
var calls=null;if("calls"in nodePayload){calls=nodePayload.calls.map(profileNodeCallFromPayload);}
return new WebInspector.ProfileNode(nodePayload.id,type,functionName,sourceCodeLocation,nodePayload.callInfo,calls,nodePayload.children);}
function profileNodeCallFromPayload(nodeCallPayload)
{var startTime=WebInspector.timelineManager.computeElapsedTime(nodeCallPayload.startTime);return new WebInspector.ProfileNodeCall(startTime,nodeCallPayload.totalTime);}
var rootNodes=payload.rootNodes;var stack=[{parent:{children:rootNodes},index:0,root:true}];while(stack.length){var entry=stack.lastValue;if(entry.index<entry.parent.children.length){var childNodePayload=entry.parent.children[entry.index];if(childNodePayload.children&&childNodePayload.children.length)
stack.push({parent:childNodePayload,index:0});++entry.index;}else{if(!entry.root)
entry.parent.children=entry.parent.children.map(profileNodeFromPayload);else
rootNodes=rootNodes.map(profileNodeFromPayload);stack.pop();}}
if(window.ScriptProfilerAgent){for(let i=0;i<rootNodes.length;i++)
this._callCountOrSamples+=rootNodes[i].callInfo.callCount;}
this._profile=new WebInspector.Profile(rootNodes);}};WebInspector.ScriptTimelineRecord.EventType={ScriptEvaluated:"script-timeline-record-script-evaluated",APIScriptEvaluated:"script-timeline-record-api-script-evaluated",MicrotaskDispatched:"script-timeline-record-microtask-dispatched",EventDispatched:"script-timeline-record-event-dispatched",ProbeSampleRecorded:"script-timeline-record-probe-sample-recorded",TimerFired:"script-timeline-record-timer-fired",TimerInstalled:"script-timeline-record-timer-installed",TimerRemoved:"script-timeline-record-timer-removed",AnimationFrameFired:"script-timeline-record-animation-frame-fired",AnimationFrameRequested:"script-timeline-record-animation-frame-requested",AnimationFrameCanceled:"script-timeline-record-animation-frame-canceled",ConsoleProfileRecorded:"script-timeline-record-console-profile-recorded",GarbageCollected:"script-timeline-record-garbage-collected",};WebInspector.ScriptTimelineRecord.EventType.displayName=function(eventType,details,includeDetailsInMainTitle)
{if(details&&!WebInspector.ScriptTimelineRecord._eventDisplayNames){
var nameMap=new Map;nameMap.set("DOMActivate","DOM Activate");nameMap.set("DOMCharacterDataModified","DOM Character Data Modified");nameMap.set("DOMContentLoaded","DOM Content Loaded");nameMap.set("DOMFocusIn","DOM Focus In");nameMap.set("DOMFocusOut","DOM Focus Out");nameMap.set("DOMNodeInserted","DOM Node Inserted");nameMap.set("DOMNodeInsertedIntoDocument","DOM Node Inserted Into Document");nameMap.set("DOMNodeRemoved","DOM Node Removed");nameMap.set("DOMNodeRemovedFromDocument","DOM Node Removed From Document");nameMap.set("DOMSubtreeModified","DOM Sub-Tree Modified");nameMap.set("addsourcebuffer","Add Source Buffer");nameMap.set("addstream","Add Stream");nameMap.set("addtrack","Add Track");nameMap.set("animationend","Animation End");nameMap.set("animationiteration","Animation Iteration");nameMap.set("animationstart","Animation Start");nameMap.set("audioend","Audio End");nameMap.set("audioprocess","Audio Process");nameMap.set("audiostart","Audio Start");nameMap.set("beforecopy","Before Copy");nameMap.set("beforecut","Before Cut");nameMap.set("beforeload","Before Load");nameMap.set("beforepaste","Before Paste");nameMap.set("beforeunload","Before Unload");nameMap.set("canplay","Can Play");nameMap.set("canplaythrough","Can Play Through");nameMap.set("chargingchange","Charging Change");nameMap.set("chargingtimechange","Charging Time Change");nameMap.set("compositionend","Composition End");nameMap.set("compositionstart","Composition Start");nameMap.set("compositionupdate","Composition Update");nameMap.set("contextmenu","Context Menu");nameMap.set("cuechange","Cue Change");nameMap.set("datachannel","Data Channel");nameMap.set("dblclick","Double Click");nameMap.set("devicemotion","Device Motion");nameMap.set("deviceorientation","Device Orientation");nameMap.set("dischargingtimechange","Discharging Time Change");nameMap.set("dragend","Drag End");nameMap.set("dragenter","Drag Enter");nameMap.set("dragleave","Drag Leave");nameMap.set("dragover","Drag Over");nameMap.set("dragstart","Drag Start");nameMap.set("durationchange","Duration Change");nameMap.set("focusin","Focus In");nameMap.set("focusout","Focus Out");nameMap.set("gesturechange","Gesture Change");nameMap.set("gestureend","Gesture End");nameMap.set("gesturescrollend","Gesture Scroll End");nameMap.set("gesturescrollstart","Gesture Scroll Start");nameMap.set("gesturescrollupdate","Gesture Scroll Update");nameMap.set("gesturestart","Gesture Start");nameMap.set("gesturetap","Gesture Tap");nameMap.set("gesturetapdown","Gesture Tap Down");nameMap.set("hashchange","Hash Change");nameMap.set("icecandidate","ICE Candidate");nameMap.set("iceconnectionstatechange","ICE Connection State Change");nameMap.set("keydown","Key Down");nameMap.set("keypress","Key Press");nameMap.set("keyup","Key Up");nameMap.set("levelchange","Level Change");nameMap.set("loadeddata","Loaded Data");nameMap.set("loadedmetadata","Loaded Metadata");nameMap.set("loadend","Load End");nameMap.set("loadingdone","Loading Done");nameMap.set("loadstart","Load Start");nameMap.set("mousedown","Mouse Down");nameMap.set("mouseenter","Mouse Enter");nameMap.set("mouseleave","Mouse Leave");nameMap.set("mousemove","Mouse Move");nameMap.set("mouseout","Mouse Out");nameMap.set("mouseover","Mouse Over");nameMap.set("mouseup","Mouse Up");nameMap.set("mousewheel","Mouse Wheel");nameMap.set("negotiationneeded","Negotiation Needed");nameMap.set("nomatch","No Match");nameMap.set("noupdate","No Update");nameMap.set("orientationchange","Orientation Change");nameMap.set("overflowchanged","Overflow Changed");nameMap.set("pagehide","Page Hide");nameMap.set("pageshow","Page Show");nameMap.set("popstate","Pop State");nameMap.set("ratechange","Rate Change");nameMap.set("readystatechange","Ready State Change");nameMap.set("removesourcebuffer","Remove Source Buffer");nameMap.set("removestream","Remove Stream");nameMap.set("removetrack","Remove Track");nameMap.set("resize","Resize");nameMap.set("securitypolicyviolation","Security Policy Violation");nameMap.set("selectionchange","Selection Change");nameMap.set("selectstart","Select Start");nameMap.set("signalingstatechange","Signaling State Change");nameMap.set("soundend","Sound End");nameMap.set("soundstart","Sound Start");nameMap.set("sourceclose","Source Close");nameMap.set("sourceended","Source Ended");nameMap.set("sourceopen","Source Open");nameMap.set("speechend","Speech End");nameMap.set("speechstart","Speech Start");nameMap.set("textInput","Text Input");nameMap.set("timeupdate","Time Update");nameMap.set("tonechange","Tone Change");nameMap.set("touchcancel","Touch Cancel");nameMap.set("touchend","Touch End");nameMap.set("touchmove","Touch Move");nameMap.set("touchstart","Touch Start");nameMap.set("transitionend","Transition End");nameMap.set("updateend","Update End");nameMap.set("updateready","Update Ready");nameMap.set("updatestart","Update Start");nameMap.set("upgradeneeded","Upgrade Needed");nameMap.set("versionchange","Version Change");nameMap.set("visibilitychange","Visibility Change");nameMap.set("volumechange","Volume Change");nameMap.set("webglcontextcreationerror","WebGL Context Creation Error");nameMap.set("webglcontextlost","WebGL Context Lost");nameMap.set("webglcontextrestored","WebGL Context Restored");nameMap.set("webkitAnimationEnd","Animation End");nameMap.set("webkitAnimationIteration","Animation Iteration");nameMap.set("webkitAnimationStart","Animation Start");nameMap.set("webkitBeforeTextInserted","Before Text Inserted");nameMap.set("webkitEditableContentChanged","Editable Content Changed");nameMap.set("webkitTransitionEnd","Transition End");nameMap.set("webkitaddsourcebuffer","Add Source Buffer");nameMap.set("webkitbeginfullscreen","Begin Full Screen");nameMap.set("webkitcurrentplaybacktargetiswirelesschanged","Current Playback Target Is Wireless Changed");nameMap.set("webkitdeviceproximity","Device Proximity");nameMap.set("webkitendfullscreen","End Full Screen");nameMap.set("webkitfullscreenchange","Full Screen Change");nameMap.set("webkitfullscreenerror","Full Screen Error");nameMap.set("webkitkeyadded","Key Added");nameMap.set("webkitkeyerror","Key Error");nameMap.set("webkitkeymessage","Key Message");nameMap.set("webkitneedkey","Need Key");nameMap.set("webkitnetworkinfochange","Network Info Change");nameMap.set("webkitplaybacktargetavailabilitychanged","Playback Target Availability Changed");nameMap.set("webkitpointerlockchange","Pointer Lock Change");nameMap.set("webkitpointerlockerror","Pointer Lock Error");nameMap.set("webkitregionlayoutupdate","Region Layout Update");nameMap.set("webkitregionoversetchange","Region Overset Change");nameMap.set("webkitremovesourcebuffer","Remove Source Buffer");nameMap.set("webkitresourcetimingbufferfull","Resource Timing Buffer Full");nameMap.set("webkitsourceclose","Source Close");nameMap.set("webkitsourceended","Source Ended");nameMap.set("webkitsourceopen","Source Open");nameMap.set("webkitspeechchange","Speech Change");nameMap.set("writeend","Write End");nameMap.set("writestart","Write Start");WebInspector.ScriptTimelineRecord._eventDisplayNames=nameMap;}
switch(eventType){case WebInspector.ScriptTimelineRecord.EventType.ScriptEvaluated:case WebInspector.ScriptTimelineRecord.EventType.APIScriptEvaluated:return WebInspector.UIString("Script Evaluated");case WebInspector.ScriptTimelineRecord.EventType.MicrotaskDispatched:return WebInspector.UIString("Microtask Dispatched");case WebInspector.ScriptTimelineRecord.EventType.EventDispatched:if(details&&(details instanceof String||typeof details==="string")){var eventDisplayName=WebInspector.ScriptTimelineRecord._eventDisplayNames.get(details)||details.capitalize();return WebInspector.UIString("%s Event Dispatched").format(eventDisplayName);}
return WebInspector.UIString("Event Dispatched");case WebInspector.ScriptTimelineRecord.EventType.ProbeSampleRecorded:return WebInspector.UIString("Probe Sample Recorded");case WebInspector.ScriptTimelineRecord.EventType.ConsoleProfileRecorded:if(details&&(details instanceof String||typeof details==="string"))
return WebInspector.UIString("“%s” Profile Recorded").format(details);return WebInspector.UIString("Console Profile Recorded");case WebInspector.ScriptTimelineRecord.EventType.GarbageCollected:if(details&&(details instanceof WebInspector.GarbageCollection)&&includeDetailsInMainTitle){switch(details.type){case WebInspector.GarbageCollection.Type.Partial:return WebInspector.UIString("Partial Garbage Collection");case WebInspector.GarbageCollection.Type.Full:return WebInspector.UIString("Full Garbage Collection");}}
return WebInspector.UIString("Garbage Collection");case WebInspector.ScriptTimelineRecord.EventType.TimerFired:if(details&&includeDetailsInMainTitle)
return WebInspector.UIString("Timer %d Fired").format(details);return WebInspector.UIString("Timer Fired");case WebInspector.ScriptTimelineRecord.EventType.TimerInstalled:if(details&&includeDetailsInMainTitle)
return WebInspector.UIString("Timer %d Installed").format(details.timerId);return WebInspector.UIString("Timer Installed");case WebInspector.ScriptTimelineRecord.EventType.TimerRemoved:if(details&&includeDetailsInMainTitle)
return WebInspector.UIString("Timer %d Removed").format(details);return WebInspector.UIString("Timer Removed");case WebInspector.ScriptTimelineRecord.EventType.AnimationFrameFired:if(details&&includeDetailsInMainTitle)
return WebInspector.UIString("Animation Frame %d Fired").format(details);return WebInspector.UIString("Animation Frame Fired");case WebInspector.ScriptTimelineRecord.EventType.AnimationFrameRequested:if(details&&includeDetailsInMainTitle)
return WebInspector.UIString("Animation Frame %d Requested").format(details);return WebInspector.UIString("Animation Frame Requested");case WebInspector.ScriptTimelineRecord.EventType.AnimationFrameCanceled:if(details&&includeDetailsInMainTitle)
return WebInspector.UIString("Animation Frame %d Canceled").format(details);return WebInspector.UIString("Animation Frame Canceled");}};WebInspector.ScriptTimelineRecord.TypeIdentifier="script-timeline-record";WebInspector.ScriptTimelineRecord.EventTypeCookieKey="script-timeline-record-event-type";WebInspector.ScriptTimelineRecord.DetailsCookieKey="script-timeline-record-details";WebInspector.SourceCodePosition=class SourceCodePosition extends WebInspector.Object
{constructor(lineNumber,columNumber)
{super();this._lineNumber=lineNumber||0;this._columnNumber=columNumber||0;}
get lineNumber(){return this._lineNumber;}
get columnNumber(){return this._columnNumber;}};WebInspector.SourceCodeRevision=class SourceCodeRevision extends WebInspector.Revision
{constructor(sourceCode,content)
{super();this._sourceCode=sourceCode;this._content=content||"";}
get sourceCode()
{return this._sourceCode;}
get content()
{return this._content;}
set content(content)
{content=content||"";if(this._content===content)
return;this._content=content;this._sourceCode.revisionContentDidChange(this);}
apply()
{this._sourceCode.currentRevision=this;}
revert()
{this._sourceCode.currentRevision=this._sourceCode.originalRevision;}
copy()
{return new WebInspector.SourceCodeRevision(this._sourceCode,this._content);}};WebInspector.SourceCodeSearchMatchObject=class SourceCodeSearchMatchObject extends WebInspector.Object
{constructor(sourceCode,lineText,searchTerm,textRange)
{super();this._sourceCode=sourceCode;this._lineText=lineText;this._searchTerm=searchTerm;this._sourceCodeTextRange=sourceCode.createSourceCodeTextRange(textRange);}
get sourceCode(){return this._sourceCode;}
get title(){return this._lineText;}
get searchTerm(){return this._searchTerm;}
get sourceCodeTextRange(){return this._sourceCodeTextRange;}
get className()
{return"source-code-match";}
saveIdentityToCookie(cookie)
{if(this._sourceCode.url)
cookie[WebInspector.SourceCodeSearchMatchObject.URLCookieKey]=this._sourceCode.url.hash;var textRange=this._sourceCodeTextRange.textRange;cookie[WebInspector.SourceCodeSearchMatchObject.TextRangeKey]=[textRange.startLine,textRange.startColumn,textRange.endLine,textRange.endColumn].join();}};WebInspector.SourceCodeSearchMatchObject.TypeIdentifier="source-code-search-match-object";WebInspector.SourceCodeSearchMatchObject.URLCookieKey="source-code-url";WebInspector.SourceCodeSearchMatchObject.TextRangeKey="text-range";WebInspector.SourceCodeTextRange=class SourceCodeTextRange extends WebInspector.Object
{constructor(sourceCode){super();this._sourceCode=sourceCode;if(arguments.length===2){var textRange=arguments[1];this._startLocation=sourceCode.createSourceCodeLocation(textRange.startLine,textRange.startColumn);this._endLocation=sourceCode.createSourceCodeLocation(textRange.endLine,textRange.endColumn);}else{this._startLocation=arguments[1];this._endLocation=arguments[2];}
this._startLocation.addEventListener(WebInspector.SourceCodeLocation.Event.LocationChanged,this._sourceCodeLocationChanged,this);this._endLocation.addEventListener(WebInspector.SourceCodeLocation.Event.LocationChanged,this._sourceCodeLocationChanged,this);}
get sourceCode()
{return this._sourceCode;}
get textRange()
{var startLine=this._startLocation.lineNumber;var startColumn=this._startLocation.columnNumber;var endLine=this._endLocation.lineNumber;var endColumn=this._endLocation.columnNumber;return new WebInspector.TextRange(startLine,startColumn,endLine,endColumn);}
get formattedTextRange()
{var startLine=this._startLocation.formattedLineNumber;var startColumn=this._startLocation.formattedColumnNumber;var endLine=this._endLocation.formattedLineNumber;var endColumn=this._endLocation.formattedColumnNumber;return new WebInspector.TextRange(startLine,startColumn,endLine,endColumn);}
get displaySourceCode()
{if(!this._startAndEndLocationsInSameMappedResource())
return this._sourceCode;return this._startLocation.displaySourceCode;}
get displayTextRange()
{if(!this._startAndEndLocationsInSameMappedResource())
return this.formattedTextRange;var startLine=this._startLocation.displayLineNumber;var startColumn=this._startLocation.displayColumnNumber;var endLine=this._endLocation.displayLineNumber;var endColumn=this._endLocation.displayColumnNumber;return new WebInspector.TextRange(startLine,startColumn,endLine,endColumn);}
get synthesizedTextValue()
{return this._sourceCode.url+":"+(this._startLocation.lineNumber+1);}
_startAndEndLocationsInSameMappedResource()
{return this._startLocation.hasMappedLocation()&&this._endLocation.hasMappedLocation()&&this._startLocation.displaySourceCode===this._endLocation.displaySourceCode;}
_sourceCodeLocationChanged(event)
{this.dispatchEventToListeners(WebInspector.SourceCodeLocation.Event.RangeChanged);}};WebInspector.SourceCodeTextRange.Event={RangeChanged:"source-code-text-range-range-changed"};WebInspector.SourceCodeTimeline=class SourceCodeTimeline extends WebInspector.Timeline
{constructor(sourceCode,sourceCodeLocation,recordType,recordEventType)
{super();this._sourceCode=sourceCode;this._sourceCodeLocation=sourceCodeLocation||null;this._recordType=recordType;this._recordEventType=recordEventType||null;}
get sourceCode(){return this._sourceCode;}
get sourceCodeLocation(){return this._sourceCodeLocation;}
get recordType(){return this._recordType;}
get recordEventType(){return this._recordEventType;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.SourceCodeTimeline.SourceCodeURLCookieKey]=this._sourceCode.url?this._sourceCode.url.hash:null;cookie[WebInspector.SourceCodeTimeline.SourceCodeLocationLineCookieKey]=this._sourceCodeLocation?this._sourceCodeLocation.lineNumber:null;cookie[WebInspector.SourceCodeTimeline.SourceCodeLocationColumnCookieKey]=this._sourceCodeLocation?this._sourceCodeLocation.columnNumber:null;cookie[WebInspector.SourceCodeTimeline.RecordTypeCookieKey]=this._recordType||null;cookie[WebInspector.SourceCodeTimeline.RecordEventTypeCookieKey]=this._recordEventType||null;}};WebInspector.SourceCodeTimeline.TypeIdentifier="source-code-timeline";WebInspector.SourceCodeTimeline.SourceCodeURLCookieKey="source-code-timeline-source-code-url";WebInspector.SourceCodeTimeline.SourceCodeLocationLineCookieKey="source-code-timeline-source-code-location-line";WebInspector.SourceCodeTimeline.SourceCodeLocationColumnCookieKey="source-code-timeline-source-code-location-column";WebInspector.SourceCodeTimeline.SourceCodeURLCookieKey="source-code-timeline-source-code-url";WebInspector.SourceCodeTimeline.RecordTypeCookieKey="source-code-timeline-record-type";WebInspector.SourceCodeTimeline.RecordEventTypeCookieKey="source-code-timeline-record-event-type";WebInspector.SourceMap=class SourceMap extends WebInspector.Object
{constructor(sourceMappingURL,payload,originalSourceCode)
{super();if(!WebInspector.SourceMap._base64Map){var base64Digits="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";WebInspector.SourceMap._base64Map={};for(var i=0;i<base64Digits.length;++i)
WebInspector.SourceMap._base64Map[base64Digits.charAt(i)]=i;}
this._originalSourceCode=originalSourceCode||null;this._sourceMapResources={};this._sourceMapResourcesList=[];this._sourceMappingURL=sourceMappingURL;this._reverseMappingsBySourceURL={};this._mappings=[];this._sources={};this._sourceRoot=null;this._sourceContentByURL={};this._parseMappingPayload(payload);}
get originalSourceCode()
{return this._originalSourceCode;}
get sourceMappingBasePathURLComponents()
{if(this._sourceMappingURLBasePathComponents)
return this._sourceMappingURLBasePathComponents;if(this._sourceRoot){var baseURLPath=absoluteURL(this._sourceRoot,this._sourceMappingURL);if(baseURLPath){var urlComponents=parseURL(baseURLPath);if(!/\/$/.test(urlComponents.path))
urlComponents.path+="/";this._sourceMappingURLBasePathComponents=urlComponents;return this._sourceMappingURLBasePathComponents;}}
var urlComponents=parseURL(this._sourceMappingURL);if(!urlComponents.path)
urlComponents.path=this._sourceMappingURL||"";urlComponents.path=urlComponents.path.substr(0,urlComponents.path.lastIndexOf(urlComponents.lastPathComponent));urlComponents.lastPathComponent=null;this._sourceMappingURLBasePathComponents=urlComponents;return this._sourceMappingURLBasePathComponents;}
get resources()
{return this._sourceMapResourcesList;}
addResource(resource)
{this._sourceMapResources[resource.url]=resource;this._sourceMapResourcesList.push(resource);}
resourceForURL(url)
{return this._sourceMapResources[url];}
sources()
{return Object.keys(this._sources);}
sourceContent(sourceURL)
{return this._sourceContentByURL[sourceURL];}
_parseMappingPayload(mappingPayload)
{if(mappingPayload.sections)
this._parseSections(mappingPayload.sections);else
this._parseMap(mappingPayload,0,0);}
_parseSections(sections)
{for(var i=0;i<sections.length;++i){var section=sections[i];this._parseMap(section.map,section.offset.line,section.offset.column);}}
findEntry(lineNumber,columnNumber)
{var first=0;var count=this._mappings.length;while(count>1){var step=count>>1;var middle=first+step;var mapping=this._mappings[middle];if(lineNumber<mapping[0]||(lineNumber===mapping[0]&&columnNumber<mapping[1]))
count=step;else{first=middle;count-=step;}}
var entry=this._mappings[first];if(!first&&entry&&(lineNumber<entry[0]||(lineNumber===entry[0]&&columnNumber<entry[1])))
return null;return entry;}
findEntryReversed(sourceURL,lineNumber)
{var mappings=this._reverseMappingsBySourceURL[sourceURL];for(;lineNumber<mappings.length;++lineNumber){var mapping=mappings[lineNumber];if(mapping)
return mapping;}
return this._mappings[0];}
_parseMap(map,lineNumber,columnNumber)
{var sourceIndex=0;var sourceLineNumber=0;var sourceColumnNumber=0;var nameIndex=0;var sources=[];var originalToCanonicalURLMap={};for(var i=0;i<map.sources.length;++i){var originalSourceURL=map.sources[i];var href=originalSourceURL;if(map.sourceRoot&&href.charAt(0)!=="/")
href=map.sourceRoot.replace(/\/+$/,"")+"/"+href;var url=absoluteURL(href,this._sourceMappingURL)||href;originalToCanonicalURLMap[originalSourceURL]=url;sources.push(url);this._sources[url]=true;if(map.sourcesContent&&map.sourcesContent[i])
this._sourceContentByURL[url]=map.sourcesContent[i];}
this._sourceRoot=map.sourceRoot||null;var stringCharIterator=new WebInspector.SourceMap.StringCharIterator(map.mappings);var sourceURL=sources[sourceIndex];while(true){if(stringCharIterator.peek()===",")
stringCharIterator.next();else{while(stringCharIterator.peek()===";"){lineNumber+=1;columnNumber=0;stringCharIterator.next();}
if(!stringCharIterator.hasNext())
break;}
columnNumber+=this._decodeVLQ(stringCharIterator);if(this._isSeparator(stringCharIterator.peek())){this._mappings.push([lineNumber,columnNumber]);continue;}
var sourceIndexDelta=this._decodeVLQ(stringCharIterator);if(sourceIndexDelta){sourceIndex+=sourceIndexDelta;sourceURL=sources[sourceIndex];}
sourceLineNumber+=this._decodeVLQ(stringCharIterator);sourceColumnNumber+=this._decodeVLQ(stringCharIterator);if(!this._isSeparator(stringCharIterator.peek()))
nameIndex+=this._decodeVLQ(stringCharIterator);this._mappings.push([lineNumber,columnNumber,sourceURL,sourceLineNumber,sourceColumnNumber]);}
for(var i=0;i<this._mappings.length;++i){var mapping=this._mappings[i];var url=mapping[2];if(!url)
continue;if(!this._reverseMappingsBySourceURL[url])
this._reverseMappingsBySourceURL[url]=[];var reverseMappings=this._reverseMappingsBySourceURL[url];var sourceLine=mapping[3];if(!reverseMappings[sourceLine])
reverseMappings[sourceLine]=[mapping[0],mapping[1]];}}
_isSeparator(char)
{return char===","||char===";";}
_decodeVLQ(stringCharIterator)
{var result=0;var shift=0;do{var digit=WebInspector.SourceMap._base64Map[stringCharIterator.next()];result+=(digit&WebInspector.SourceMap.VLQ_BASE_MASK)<<shift;shift+=WebInspector.SourceMap.VLQ_BASE_SHIFT;}while(digit&WebInspector.SourceMap.VLQ_CONTINUATION_MASK);var negative=result&1;result>>=1;return negative?-result:result;}};WebInspector.SourceMap.VLQ_BASE_SHIFT=5;WebInspector.SourceMap.VLQ_BASE_MASK=(1<<5)-1;WebInspector.SourceMap.VLQ_CONTINUATION_MASK=1<<5;WebInspector.SourceMap.StringCharIterator=class StringCharIterator
{constructor(string)
{this._string=string;this._position=0;}
next()
{return this._string.charAt(this._position++);}
peek()
{return this._string.charAt(this._position);}
hasNext()
{return this._position<this._string.length;}};WebInspector.SourceMapResource=class SourceMapResource extends WebInspector.Resource
{constructor(url,sourceMap)
{super(url,null);this._sourceMap=sourceMap;var inheritedMIMEType=this._sourceMap.originalSourceCode instanceof WebInspector.Resource?this._sourceMap.originalSourceCode.syntheticMIMEType:null;var fileExtension=WebInspector.fileExtensionForURL(url);var fileExtensionMIMEType=WebInspector.mimeTypeForFileExtension(fileExtension,true);
this._mimeType=fileExtensionMIMEType||inheritedMIMEType||"text/javascript";this._type=WebInspector.Resource.typeFromMIMEType(this._mimeType);this.markAsFinished();}
get sourceMap()
{return this._sourceMap;}
get sourceMapDisplaySubpath()
{var sourceMappingBasePathURLComponents=this._sourceMap.sourceMappingBasePathURLComponents;var resourceURLComponents=this.urlComponents;if(!resourceURLComponents.path)
resourceURLComponents.path=this.url;if(resourceURLComponents.scheme!==sourceMappingBasePathURLComponents.scheme||resourceURLComponents.host!==sourceMappingBasePathURLComponents.host)
return resourceURLComponents.host+(resourceURLComponents.port?(":"+resourceURLComponents.port):"")+resourceURLComponents.path;if(!resourceURLComponents.path.startsWith(sourceMappingBasePathURLComponents.path))
return relativePath(resourceURLComponents.path,sourceMappingBasePathURLComponents.path);return resourceURLComponents.path.substring(sourceMappingBasePathURLComponents.path.length,resourceURLComponents.length);}
requestContentFromBackend(callback)
{this.revertMarkAsFinished();var inlineContent=this._sourceMap.sourceContent(this.url);if(inlineContent){return sourceMapResourceLoaded.call(this,{content:inlineContent,mimeType:this.mimeType,statusCode:200});}
function sourceMapResourceNotAvailable(error,content,mimeType,statusCode)
{this.markAsFailed();return Promise.resolve({error:WebInspector.UIString("An error occurred trying to load the resource."),content,mimeType,statusCode});}
function sourceMapResourceLoadError(error)
{console.error(error||"There was an unknown error calling NetworkAgent.loadResource.");this.markAsFailed();return Promise.resolve({error:WebInspector.UIString("An error occurred trying to load the resource.")});}
function sourceMapResourceLoaded(parameters)
{var{error,content,mimeType,statusCode}=parameters;var base64encoded=false;if(statusCode>=400||error)
return sourceMapResourceNotAvailable(error,content,mimeType,statusCode);this.markAsFinished();return Promise.resolve({content,mimeType,base64encoded,statusCode});}
if(!window.NetworkAgent||!NetworkAgent.loadResource)
return sourceMapResourceLoadError.call(this);var frameIdentifier=null;if(this._sourceMap.originalSourceCode instanceof WebInspector.Resource&&this._sourceMap.originalSourceCode.parentFrame)
frameIdentifier=this._sourceMap.originalSourceCode.parentFrame.id;if(!frameIdentifier)
frameIdentifier=WebInspector.frameResourceManager.mainFrame.id;return NetworkAgent.loadResource(frameIdentifier,this.url).then(sourceMapResourceLoaded.bind(this)).catch(sourceMapResourceLoadError.bind(this));}
createSourceCodeLocation(lineNumber,columnNumber)
{var entry=this._sourceMap.findEntryReversed(this.url,lineNumber);var rawLineNumber=entry[0];var rawColumnNumber=entry[1];var originalSourceCode=this._sourceMap.originalSourceCode;if(originalSourceCode instanceof WebInspector.Script){if(rawLineNumber===0)
rawColumnNumber+=originalSourceCode.range.startColumn;rawLineNumber+=originalSourceCode.range.startLine;}
var location=originalSourceCode.createSourceCodeLocation(rawLineNumber,rawColumnNumber);location._setMappedLocation(this,lineNumber,columnNumber);return location;}
createSourceCodeTextRange(textRange)
{var startSourceCodeLocation=this.createSourceCodeLocation(textRange.startLine,textRange.startColumn);var endSourceCodeLocation=this.createSourceCodeLocation(textRange.endLine,textRange.endColumn);return new WebInspector.SourceCodeTextRange(this._sourceMap.originalSourceCode,startSourceCodeLocation,endSourceCodeLocation);}};WebInspector.StackTrace=class StackTrace extends WebInspector.Object
{constructor(callFrames,topCallFrameIsBoundary,truncated,parentStackTrace)
{super();this._callFrames=callFrames;this._topCallFrameIsBoundary=topCallFrameIsBoundary||false;this._truncated=truncated||false;this._parentStackTrace=parentStackTrace||null;}
static fromPayload(target,payload)
{let result=null;let previousStackTrace=null;while(payload){let callFrames=payload.callFrames.map((x)=>WebInspector.CallFrame.fromPayload(target,x));let stackTrace=new WebInspector.StackTrace(callFrames,payload.topCallFrameIsBoundary,payload.truncated);if(!result)
result=stackTrace;if(previousStackTrace)
previousStackTrace._parentStackTrace=stackTrace;previousStackTrace=stackTrace;payload=payload.parentStackTrace;}
return result;}
static fromString(target,stack)
{let callFrames=WebInspector.StackTrace._parseStackTrace(stack);return WebInspector.StackTrace.fromPayload(target,{callFrames});}
static isLikelyStackTrace(stack)
{const smallestPossibleStackTraceLength="http://a.bc/:9:1".length;if(stack.length<smallestPossibleStackTraceLength.length*2)
return false;const approximateStackLengthOf50Items=5000;if(stack.length>approximateStackLengthOf50Items)
return false;if(/^[^a-z$_]/i.test(stack[0]))
return false;const reasonablyLongLineLength=500;const reasonablyLongNativeMethodLength=120;const stackTraceLine=`(.{1,${reasonablyLongLineLength}}:\\d+:\\d+|eval code|.{1,${reasonablyLongNativeMethodLength}}@\\[native code\\])`;const stackTrace=new RegExp(`^${stackTraceLine}(\\n${stackTraceLine})*$`,"g");return stackTrace.test(stack);}
static _parseStackTrace(stack)
{var lines=stack.split(/\n/g);var result=[];for(var line of lines){var functionName="";var url="";var lineNumber=0;var columnNumber=0;var atIndex=line.indexOf("@");if(atIndex!==-1){functionName=line.slice(0,atIndex);({url,lineNumber,columnNumber}=WebInspector.StackTrace._parseLocation(line.slice(atIndex+1)));}else if(line.includes("/"))
({url,lineNumber,columnNumber}=WebInspector.StackTrace._parseLocation(line));else
functionName=line;result.push({functionName,url,lineNumber,columnNumber});}
return result;}
static _parseLocation(locationString)
{var result={url:"",lineNumber:0,columnNumber:0};var locationRegEx=/(.+?)(?::(\d+)(?::(\d+))?)?$/;var matched=locationString.match(locationRegEx);if(!matched)
return result;result.url=matched[1];if(matched[2])
result.lineNumber=parseInt(matched[2]);if(matched[3])
result.columnNumber=parseInt(matched[3]);return result;}
get callFrames()
{return this._callFrames;}
get firstNonNativeCallFrame()
{for(let frame of this._callFrames){if(!frame.nativeCode)
return frame;}
return null;}
get firstNonNativeNonAnonymousCallFrame()
{for(let frame of this._callFrames){if(frame.nativeCode)
continue;if(frame.sourceCodeLocation){let sourceCode=frame.sourceCodeLocation.sourceCode;if(sourceCode instanceof WebInspector.Script&&sourceCode.anonymous)
continue;}
return frame;}
return null;}
get topCallFrameIsBoundary(){return this._topCallFrameIsBoundary;}
get truncated(){return this._truncated;}
get parentStackTrace(){return this._parentStackTrace;}};WebInspector.StructureDescription=class StructureDescription extends WebInspector.Object
{constructor(fields,optionalFields,constructorName,prototypeStructure,imprecise)
{super();this._fields=fields||null;this._optionalFields=optionalFields||null;this._constructorName=constructorName||"";this._prototypeStructure=prototypeStructure||null;this._imprecise=imprecise||false;}
static fromPayload(payload)
{if(payload.prototypeStructure)
payload.prototypeStructure=WebInspector.StructureDescription.fromPayload(payload.prototypeStructure);return new WebInspector.StructureDescription(payload.fields,payload.optionalFields,payload.constructorName,payload.prototypeStructure,payload.imprecise);}
get fields(){return this._fields;}
get optionalFields(){return this._optionalFields;}
get constructorName(){return this._constructorName;}
get prototypeStructure(){return this._prototypeStructure;}
get imprecise(){return this._imprecise;}};WebInspector.TextMarker=class TextMarker extends WebInspector.Object
{constructor(codeMirrorTextMarker,type)
{super();this._codeMirrorTextMarker=codeMirrorTextMarker;codeMirrorTextMarker.__webInspectorTextMarker=this;this._type=type||WebInspector.TextMarker.Type.Plain;}
static textMarkerForCodeMirrorTextMarker(codeMirrorTextMarker)
{return codeMirrorTextMarker.__webInspectorTextMarker||new WebInspector.TextMarker(codeMirrorTextMarker);}
get codeMirrorTextMarker()
{return this._codeMirrorTextMarker;}
get type()
{return this._type;}
get range()
{var range=this._codeMirrorTextMarker.find();if(!range)
return null;return new WebInspector.TextRange(range.from.line,range.from.ch,range.to.line,range.to.ch);}
get rects()
{var range=this._codeMirrorTextMarker.find();if(!range)
return WebInspector.Rect.ZERO_RECT;return this._codeMirrorTextMarker.doc.cm.rectsForRange({start:range.from,end:range.to});}
clear()
{this._codeMirrorTextMarker.clear();}};WebInspector.TextMarker.Type={Color:"text-marker-type-color",Gradient:"text-marker-type-gradient",Plain:"text-marker-type-plain",CubicBezier:"text-marker-type-cubic-bezier",Spring:"text-marker-type-spring",Variable:"text-marker-type-variable",};WebInspector.TextRange=class TextRange extends WebInspector.Object
{constructor(startLineOrStartOffset,startColumnOrEndOffset,endLine,endColumn)
{super();if(arguments.length===4){this._startLine=typeof startLineOrStartOffset==="number"?startLineOrStartOffset:NaN;this._startColumn=typeof startColumnOrEndOffset==="number"?startColumnOrEndOffset:NaN;this._endLine=typeof endLine==="number"?endLine:NaN;this._endColumn=typeof endColumn==="number"?endColumn:NaN;this._startOffset=NaN;this._endOffset=NaN;}else if(arguments.length===2){this._startOffset=typeof startLineOrStartOffset==="number"?startLineOrStartOffset:NaN;this._endOffset=typeof startColumnOrEndOffset==="number"?startColumnOrEndOffset:NaN;this._startLine=NaN;this._startColumn=NaN;this._endLine=NaN;this._endColumn=NaN;}}
get startLine(){return this._startLine;}
get startColumn(){return this._startColumn;}
get endLine(){return this._endLine;}
get endColumn(){return this._endColumn;}
get startOffset(){return this._startOffset;}
get endOffset(){return this._endOffset;}
startPosition()
{return new WebInspector.SourceCodePosition(this._startLine,this._startColumn);}
endPosition()
{return new WebInspector.SourceCodePosition(this._endLine,this._endColumn);}
resolveOffsets(text)
{if(typeof text!=="string")
return;if(isNaN(this._startLine)||isNaN(this._startColumn)||isNaN(this._endLine)||isNaN(this._endColumn))
return;var lastNewLineOffset=0;for(var i=0;i<this._startLine;++i)
lastNewLineOffset=text.indexOf("\n",lastNewLineOffset)+1;this._startOffset=lastNewLineOffset+this._startColumn;for(var i=this._startLine;i<this._endLine;++i)
lastNewLineOffset=text.indexOf("\n",lastNewLineOffset)+1;this._endOffset=lastNewLineOffset+this._endColumn;}
contains(line,column)
{if(line<this._startLine||line>this._endLine)
return false;if(line===this._startLine&&column<this._startColumn)
return false;if(line===this._endLine&&column>this._endColumn)
return false;return true;}};WebInspector.TimelineMarker=class TimelineMarker extends WebInspector.Object
{constructor(time,type,details)
{super();this._time=time||0;this._type=type;this._details=details||null;}
get time()
{return this._time;}
set time(x)
{x=x||0;if(this._time===x)
return;this._time=x;this.dispatchEventToListeners(WebInspector.TimelineMarker.Event.TimeChanged);}
get type()
{return this._type;}
get details()
{return this._details;}};WebInspector.TimelineMarker.Event={TimeChanged:"timeline-marker-time-changed"};WebInspector.TimelineMarker.Type={CurrentTime:"current-time",LoadEvent:"load-event",DOMContentEvent:"dom-content-event",TimeStamp:"timestamp"};WebInspector.TimelineRecording=class TimelineRecording extends WebInspector.Object
{constructor(identifier,displayName,instruments)
{super();this._identifier=identifier;this._timelines=new Map;this._displayName=displayName;this._capturing=false;this._readonly=false;this._instruments=instruments||[];this._topDownCallingContextTree=new WebInspector.CallingContextTree(WebInspector.CallingContextTree.Type.TopDown);this._bottomUpCallingContextTree=new WebInspector.CallingContextTree(WebInspector.CallingContextTree.Type.BottomUp);this._topFunctionsTopDownCallingContextTree=new WebInspector.CallingContextTree(WebInspector.CallingContextTree.Type.TopFunctionsTopDown);this._topFunctionsBottomUpCallingContextTree=new WebInspector.CallingContextTree(WebInspector.CallingContextTree.Type.TopFunctionsBottomUp);for(let type of WebInspector.TimelineManager.availableTimelineTypes()){let timeline=WebInspector.Timeline.create(type);this._timelines.set(type,timeline);timeline.addEventListener(WebInspector.Timeline.Event.TimesUpdated,this._timelineTimesUpdated,this);}
this._legacyFirstRecordedTimestamp=NaN;this.reset(true);}
static sourceCodeTimelinesSupported()
{return WebInspector.debuggableType===WebInspector.DebuggableType.Web;}
get displayName(){return this._displayName;}
get identifier(){return this._identifier;}
get timelines(){return this._timelines;}
get instruments(){return this._instruments;}
get readonly(){return this._readonly;}
get startTime(){return this._startTime;}
get endTime(){return this._endTime;}
get topDownCallingContextTree(){return this._topDownCallingContextTree;}
get bottomUpCallingContextTree(){return this._bottomUpCallingContextTree;}
get topFunctionsTopDownCallingContextTree(){return this._topFunctionsTopDownCallingContextTree;}
get topFunctionsBottomUpCallingContextTree(){return this._topFunctionsBottomUpCallingContextTree;}
start(initiatedByBackend)
{this._capturing=true;for(let instrument of this._instruments)
instrument.startInstrumentation(initiatedByBackend);}
stop(initiatedByBackend)
{this._capturing=false;for(let instrument of this._instruments)
instrument.stopInstrumentation(initiatedByBackend);}
saveIdentityToCookie()
{
}
isEmpty()
{for(var timeline of this._timelines.values()){if(timeline.records.length)
return false;}
return true;}
unloaded()
{this._readonly=true;this.dispatchEventToListeners(WebInspector.TimelineRecording.Event.Unloaded);}
reset(suppressEvents)
{this._sourceCodeTimelinesMap=new Map;this._eventMarkers=[];this._startTime=NaN;this._endTime=NaN;this._discontinuities=[];this._topDownCallingContextTree.reset();this._bottomUpCallingContextTree.reset();this._topFunctionsTopDownCallingContextTree.reset();this._topFunctionsBottomUpCallingContextTree.reset();for(var timeline of this._timelines.values())
timeline.reset(suppressEvents);WebInspector.RenderingFrameTimelineRecord.resetFrameIndex();if(!suppressEvents){this.dispatchEventToListeners(WebInspector.TimelineRecording.Event.Reset);this.dispatchEventToListeners(WebInspector.TimelineRecording.Event.TimesUpdated);}}
sourceCodeTimelinesForSourceCode(sourceCode)
{var timelines=this._sourceCodeTimelinesMap.get(sourceCode);if(!timelines)
return[];return[...timelines.values()];}
timelineForInstrument(instrument)
{return this._timelines.get(instrument.timelineRecordType);}
instrumentForTimeline(timeline)
{return this._instruments.find((instrument)=>instrument.timelineRecordType===timeline.type);}
timelineForRecordType(recordType)
{return this._timelines.get(recordType);}
addInstrument(instrument)
{this._instruments.push(instrument);this.dispatchEventToListeners(WebInspector.TimelineRecording.Event.InstrumentAdded,{instrument});}
removeInstrument(instrument)
{this._instruments.remove(instrument);this.dispatchEventToListeners(WebInspector.TimelineRecording.Event.InstrumentRemoved,{instrument});}
addEventMarker(marker)
{if(!this._capturing)
return;this._eventMarkers.push(marker);this.dispatchEventToListeners(WebInspector.TimelineRecording.Event.MarkerAdded,{marker});}
addRecord(record)
{var timeline=this._timelines.get(record.type);if(!timeline)
return;timeline.addRecord(record);if(record.type===WebInspector.TimelineRecord.Type.Network||record.type===WebInspector.TimelineRecord.Type.RenderingFrame||record.type===WebInspector.TimelineRecord.Type.Memory||record.type===WebInspector.TimelineRecord.Type.HeapAllocations)
return;if(!WebInspector.TimelineRecording.sourceCodeTimelinesSupported())
return;var activeMainResource=WebInspector.frameResourceManager.mainFrame.provisionalMainResource||WebInspector.frameResourceManager.mainFrame.mainResource;var sourceCode=record.sourceCodeLocation?record.sourceCodeLocation.sourceCode:activeMainResource;var sourceCodeTimelines=this._sourceCodeTimelinesMap.get(sourceCode);if(!sourceCodeTimelines){sourceCodeTimelines=new Map;this._sourceCodeTimelinesMap.set(sourceCode,sourceCodeTimelines);}
var newTimeline=false;var key=this._keyForRecord(record);var sourceCodeTimeline=sourceCodeTimelines.get(key);if(!sourceCodeTimeline){sourceCodeTimeline=new WebInspector.SourceCodeTimeline(sourceCode,record.sourceCodeLocation,record.type,record.eventType);sourceCodeTimelines.set(key,sourceCodeTimeline);newTimeline=true;}
sourceCodeTimeline.addRecord(record);if(newTimeline)
this.dispatchEventToListeners(WebInspector.TimelineRecording.Event.SourceCodeTimelineAdded,{sourceCodeTimeline});}
addMemoryPressureEvent(memoryPressureEvent)
{let memoryTimeline=this._timelines.get(WebInspector.TimelineRecord.Type.Memory);if(!memoryTimeline)
return;memoryTimeline.addMemoryPressureEvent(memoryPressureEvent);}
addDiscontinuity(startTime,endTime)
{this._discontinuities.push({startTime,endTime});}
discontinuitiesInTimeRange(startTime,endTime)
{return this._discontinuities.filter((item)=>item.startTime<endTime&&item.endTime>startTime);}
addScriptInstrumentForProgrammaticCapture()
{for(let instrument of this._instruments){if(instrument instanceof WebInspector.ScriptInstrument)
return;}
this.addInstrument(new WebInspector.ScriptInstrument);let instrumentTypes=this._instruments.map((instrument)=>instrument.timelineRecordType);WebInspector.timelineManager.enabledTimelineTypes=instrumentTypes;}
computeElapsedTime(timestamp)
{if(!timestamp||isNaN(timestamp))
return NaN;
if(WebInspector.TimelineRecording.isLegacy===undefined)
WebInspector.TimelineRecording.isLegacy=timestamp>WebInspector.TimelineRecording.TimestampThresholdForLegacyRecordConversion;if(!WebInspector.TimelineRecording.isLegacy)
return timestamp;
if(timestamp<WebInspector.TimelineRecording.TimestampThresholdForLegacyAssumedMilliseconds)
timestamp*=1000;if(isNaN(this._legacyFirstRecordedTimestamp))
this._legacyFirstRecordedTimestamp=timestamp;return(timestamp-this._legacyFirstRecordedTimestamp)/1000.0;}
setLegacyBaseTimestamp(timestamp)
{if(timestamp<WebInspector.TimelineRecording.TimestampThresholdForLegacyAssumedMilliseconds)
timestamp*=1000;this._legacyFirstRecordedTimestamp=timestamp;}
initializeTimeBoundsIfNecessary(timestamp)
{if(isNaN(this._startTime)){this._startTime=timestamp;this._endTime=timestamp;this.dispatchEventToListeners(WebInspector.TimelineRecording.Event.TimesUpdated);}}
_keyForRecord(record)
{var key=record.type;if(record instanceof WebInspector.ScriptTimelineRecord||record instanceof WebInspector.LayoutTimelineRecord)
key+=":"+record.eventType;if(record instanceof WebInspector.ScriptTimelineRecord&&record.eventType===WebInspector.ScriptTimelineRecord.EventType.EventDispatched)
key+=":"+record.details;if(record.sourceCodeLocation)
key+=":"+record.sourceCodeLocation.lineNumber+":"+record.sourceCodeLocation.columnNumber;return key;}
_timelineTimesUpdated(event)
{var timeline=event.target;var changed=false;if(isNaN(this._startTime)||timeline.startTime<this._startTime){this._startTime=timeline.startTime;changed=true;}
if(isNaN(this._endTime)||this._endTime<timeline.endTime){this._endTime=timeline.endTime;changed=true;}
if(changed)
this.dispatchEventToListeners(WebInspector.TimelineRecording.Event.TimesUpdated);}};WebInspector.TimelineRecording.Event={Reset:"timeline-recording-reset",Unloaded:"timeline-recording-unloaded",SourceCodeTimelineAdded:"timeline-recording-source-code-timeline-added",InstrumentAdded:"timeline-recording-instrument-added",InstrumentRemoved:"timeline-recording-instrument-removed",TimesUpdated:"timeline-recording-times-updated",MarkerAdded:"timeline-recording-marker-added",};WebInspector.TimelineRecording.isLegacy=undefined;WebInspector.TimelineRecording.TimestampThresholdForLegacyRecordConversion=10000000;WebInspector.TimelineRecording.TimestampThresholdForLegacyAssumedMilliseconds=1420099200000;WebInspector.TypeDescription=class TypeDescription extends WebInspector.Object
{constructor(leastCommonAncestor,typeSet,structures,valid,truncated)
{super();this._leastCommonAncestor=leastCommonAncestor||null;this._typeSet=typeSet||null;this._structures=structures||null;this._valid=valid||false;this._truncated=truncated||false;}
static fromPayload(payload)
{var typeSet=undefined;if(payload.typeSet)
typeSet=WebInspector.TypeSet.fromPayload(payload.typeSet);var structures=undefined;if(payload.structures)
structures=payload.structures.map(WebInspector.StructureDescription.fromPayload);return new WebInspector.TypeDescription(payload.leastCommonAncestor,typeSet,structures,payload.isValid,payload.isTruncated);}
get leastCommonAncestor(){return this._leastCommonAncestor;}
get typeSet(){return this._typeSet;}
get structures(){return this._structures;}
get valid(){return this._valid;}
get truncated(){return this._truncated;}};WebInspector.TypeSet=class TypeSet extends WebInspector.Object
{constructor(typeSet)
{super();var bitString=0x0;if(typeSet.isFunction)
bitString|=WebInspector.TypeSet.TypeBit.Function;if(typeSet.isUndefined)
bitString|=WebInspector.TypeSet.TypeBit.Undefined;if(typeSet.isNull)
bitString|=WebInspector.TypeSet.TypeBit.Null;if(typeSet.isBoolean)
bitString|=WebInspector.TypeSet.TypeBit.Boolean;if(typeSet.isInteger)
bitString|=WebInspector.TypeSet.TypeBit.Integer;if(typeSet.isNumber)
bitString|=WebInspector.TypeSet.TypeBit.Number;if(typeSet.isString)
bitString|=WebInspector.TypeSet.TypeBit.String;if(typeSet.isObject)
bitString|=WebInspector.TypeSet.TypeBit.Object;if(typeSet.isSymbol)
bitString|=WebInspector.TypeSet.TypeBit.Symbol;this._typeSet=typeSet;this._bitString=bitString;this._primitiveTypeNames=null;}
static fromPayload(payload)
{return new WebInspector.TypeSet(payload);}
isContainedIn(test)
{
return this._bitString&&(this._bitString&test)===this._bitString;}
get primitiveTypeNames()
{if(this._primitiveTypeNames)
return this._primitiveTypeNames;this._primitiveTypeNames=[];var typeSet=this._typeSet;if(typeSet.isUndefined)
this._primitiveTypeNames.push("Undefined");if(typeSet.isNull)
this._primitiveTypeNames.push("Null");if(typeSet.isBoolean)
this._primitiveTypeNames.push("Boolean");if(typeSet.isString)
this._primitiveTypeNames.push("String");if(typeSet.isSymbol)
this._primitiveTypeNames.push("Symbol");
if(typeSet.isNumber)
this._primitiveTypeNames.push("Number");else if(typeSet.isInteger)
this._primitiveTypeNames.push("Integer");return this._primitiveTypeNames;}};WebInspector.TypeSet.TypeBit={"Function":0x1,"Undefined":0x2,"Null":0x4,"Boolean":0x8,"Integer":0x10,"Number":0x20,"String":0x40,"Object":0x80,"Symbol":0x100};WebInspector.TypeSet.NullOrUndefinedTypeBits=WebInspector.TypeSet.TypeBit.Null|WebInspector.TypeSet.TypeBit.Undefined;WebInspector.WebSocketResource=class WebSocketResource extends WebInspector.Resource
{constructor(url,loaderIdentifier,targetId,requestIdentifier,requestHeaders,requestData,timestamp,walltime,requestSentTimestamp,initiatorSourceCodeLocation)
{const type=WebInspector.Resource.Type.WebSocket;const mimeType=null;const requestMethod="GET";super(url,mimeType,type,loaderIdentifier,targetId,requestIdentifier,requestMethod,requestHeaders,requestData,requestSentTimestamp,initiatorSourceCodeLocation);this._timestamp=timestamp;this._walltime=walltime;this._readyState=WebInspector.WebSocketResource.ReadyState.Connecting;this._frames=[];}
get frames(){return this._frames;}
get walltime(){return this._walltime;}
get readyState()
{return this._readyState;}
set readyState(state)
{if(state===this._readyState)
return;let previousState=this._readyState;this._readyState=state;this.dispatchEventToListeners(WebInspector.WebSocketResource.Event.ReadyStateChanged,{previousState,state});}
addFrame(data,payloadLength,isOutgoing,opcode,timestamp,elapsedTime)
{let frameData;if(opcode===WebInspector.WebSocketResource.OpCodes.BinaryFrame)
frameData=null;else
frameData=data;let frame={data:frameData,isOutgoing,opcode,walltime:this._walltimeForWebSocketTimestamp(timestamp)};this._frames.push(frame);if(payloadLength===undefined)
payloadLength=new TextEncoder("utf-8").encode(data).length;this.increaseSize(payloadLength,elapsedTime);this.dispatchEventToListeners(WebInspector.WebSocketResource.Event.FrameAdded,frame);}
_walltimeForWebSocketTimestamp(timestamp)
{return this._walltime+(timestamp-this._timestamp);}};WebInspector.WebSocketResource.Event={FrameAdded:Symbol("web-socket-frame-added"),ReadyStateChanged:Symbol("web-socket-resource-ready-state-changed"),};WebInspector.WebSocketResource.ReadyState={Closed:Symbol("closed"),Connecting:Symbol("connecting"),Open:Symbol("open"),};WebInspector.WebSocketResource.OpCodes={ContinuationFrame:0,TextFrame:1,BinaryFrame:2,ConnectionCloseFrame:8,PingFrame:9,PongFrame:10,};WebInspector.WrappedPromise=class WrappedPromise
{constructor(work)
{this._settled=false;this._promise=new Promise((resolve,reject)=>{this._resolveCallback=resolve;this._rejectCallback=reject;
if(work&&typeof work==="function")
return work(this.resolve.bind(this),this.reject.bind(this));});}
get settled()
{return this._settled;}
get promise()
{return this._promise;}
resolve(value)
{if(this._settled)
throw new Error("Promise is already settled, cannot call resolve().");this._settled=true;this._resolveCallback(value);}
reject(value)
{if(this._settled)
throw new Error("Promise is already settled, cannot call reject().");this._settled=true;this._rejectCallback(value);}};WebInspector.XHRBreakpoint=class XHRBreakpoint extends WebInspector.Object
{constructor(type,url,disabled)
{super();this._type=type||WebInspector.XHRBreakpoint.Type.Text;this._url=url||"";this._disabled=disabled||false;}
get type(){return this._type;}
get url(){return this._url;}
get disabled()
{return this._disabled;}
set disabled(disabled)
{if(this._disabled===disabled)
return;this._disabled=disabled;this.dispatchEventToListeners(WebInspector.XHRBreakpoint.Event.DisabledStateDidChange);}
get serializableInfo()
{let info={type:this._type,url:this._url};if(this._disabled)
info.disabled=true;return info;}
saveIdentityToCookie(cookie)
{cookie[WebInspector.XHRBreakpoint.URLCookieKey]=this._url;}};WebInspector.XHRBreakpoint.URLCookieKey="xhr-breakpoint-url";WebInspector.XHRBreakpoint.Event={DisabledStateDidChange:"xhr-breakpoint-disabled-state-did-change",ResolvedStateDidChange:"xhr-breakpoint-resolved-state-did-change",};WebInspector.XHRBreakpoint.Type={Text:"text",RegularExpression:"regex",};WebInspector.FormatterWorkerProxy=class FormatterWorkerProxy extends WebInspector.Object
{constructor()
{super();this._formatterWorker=new Worker("Workers/Formatter/FormatterWorker.js");this._formatterWorker.addEventListener("message",this._handleMessage.bind(this));this._nextCallId=1;this._callbacks=new Map;}
static singleton()
{if(!FormatterWorkerProxy.instance)
FormatterWorkerProxy.instance=new FormatterWorkerProxy;return FormatterWorkerProxy.instance;}
formatJavaScript(sourceText,isModule,indentString,includeSourceMapData)
{this.performAction("formatJavaScript",...arguments);}
performAction(actionName)
{let callId=this._nextCallId++;let callback=arguments[arguments.length-1];let actionArguments=Array.prototype.slice.call(arguments,1,arguments.length-1);this._callbacks.set(callId,callback);this._postMessage({callId,actionName,actionArguments});}
_postMessage()
{this._formatterWorker.postMessage(...arguments);}
_handleMessage(event)
{let data=event.data;if(data.callId){let callback=this._callbacks.get(data.callId);this._callbacks.delete(data.callId);callback(data.result);return;}
console.error("Unexpected FormatterWorker message",data);}};WebInspector.HeapSnapshotDiffProxy=class HeapSnapshotDiffProxy extends WebInspector.Object
{constructor(snapshotDiffObjectId,snapshot1,snapshot2,totalSize,totalObjectCount,categories)
{super();this._proxyObjectId=snapshotDiffObjectId;this._snapshot1=snapshot1;this._snapshot2=snapshot2;this._totalSize=totalSize;this._totalObjectCount=totalObjectCount;this._categories=Map.fromObject(categories);}
static deserialize(objectId,serializedSnapshotDiff)
{let{snapshot1:serializedSnapshot1,snapshot2:serializedSnapshot2,totalSize,totalObjectCount,categories}=serializedSnapshotDiff;
let snapshot1=WebInspector.HeapSnapshotProxy.deserialize(objectId,serializedSnapshot1);let snapshot2=WebInspector.HeapSnapshotProxy.deserialize(objectId,serializedSnapshot2);return new WebInspector.HeapSnapshotDiffProxy(objectId,snapshot1,snapshot2,totalSize,totalObjectCount,categories);}
get snapshot1(){return this._snapshot1;}
get snapshot2(){return this._snapshot2;}
get totalSize(){return this._totalSize;}
get totalObjectCount(){return this._totalObjectCount;}
get categories(){return this._categories;}
get invalid(){return this._snapshot1.invalid||this._snapshot2.invalid;}
updateForCollectionEvent(event)
{if(!event.data.affectedSnapshots.includes(this._snapshot2._identifier))
return;this.update(()=>{this.dispatchEventToListeners(WebInspector.HeapSnapshotProxy.Event.CollectedNodes,event.data);});}
allocationBucketCounts(bucketSizes,callback)
{WebInspector.HeapSnapshotWorkerProxy.singleton().callMethod(this._proxyObjectId,"allocationBucketCounts",bucketSizes,callback);}
instancesWithClassName(className,callback)
{WebInspector.HeapSnapshotWorkerProxy.singleton().callMethod(this._proxyObjectId,"instancesWithClassName",className,(serializedNodes)=>{callback(serializedNodes.map(WebInspector.HeapSnapshotNodeProxy.deserialize.bind(null,this._proxyObjectId)));});}
update(callback)
{WebInspector.HeapSnapshotWorkerProxy.singleton().callMethod(this._proxyObjectId,"update",({liveSize,categories})=>{this._categories=Map.fromObject(categories);callback();});}
nodeWithIdentifier(nodeIdentifier,callback)
{WebInspector.HeapSnapshotWorkerProxy.singleton().callMethod(this._proxyObjectId,"nodeWithIdentifier",nodeIdentifier,(serializedNode)=>{callback(WebInspector.HeapSnapshotNodeProxy.deserialize(this._proxyObjectId,serializedNode));});}};WebInspector.HeapSnapshotEdgeProxy=class HeapSnapshotEdgeProxy
{constructor(objectId,fromIdentifier,toIdentifier,type,data)
{this._proxyObjectId=objectId;this.fromIdentifier=fromIdentifier;this.toIdentifier=toIdentifier;this.type=type;this.data=data;this.from=null;this.to=null;}
isPrivateSymbol()
{if(WebInspector.isDebugUIEnabled())
return false;return typeof this.data==="string"&&this.data.startsWith("PrivateSymbol");}
static deserialize(objectId,serializedEdge)
{let{from,to,type,data}=serializedEdge;return new WebInspector.HeapSnapshotEdgeProxy(objectId,from,to,type,data);}};WebInspector.HeapSnapshotEdgeProxy.EdgeType={Internal:"Internal",Property:"Property",Index:"Index",Variable:"Variable",};WebInspector.HeapSnapshotNodeProxy=class HeapSnapshotNodeProxy
{constructor(snapshotObjectId,identifier,className,size,retainedSize,internal,gcRoot,dead,dominatorNodeIdentifier,hasChildren)
{this._proxyObjectId=snapshotObjectId;this.id=identifier;this.className=className;this.size=size;this.retainedSize=retainedSize;this.internal=internal;this.gcRoot=gcRoot;this.dead=dead;this.dominatorNodeIdentifier=dominatorNodeIdentifier;this.hasChildren=hasChildren;}
static deserialize(objectId,serializedNode)
{let{id,className,size,retainedSize,internal,gcRoot,dead,dominatorNodeIdentifier,hasChildren}=serializedNode;return new WebInspector.HeapSnapshotNodeProxy(objectId,id,className,size,retainedSize,internal,gcRoot,dead,dominatorNodeIdentifier,hasChildren);}
shortestGCRootPath(callback)
{WebInspector.HeapSnapshotWorkerProxy.singleton().callMethod(this._proxyObjectId,"shortestGCRootPath",this.id,(serializedPath)=>{let isNode=false;let path=serializedPath.map((component)=>{isNode=!isNode;if(isNode)
return WebInspector.HeapSnapshotNodeProxy.deserialize(this._proxyObjectId,component);return WebInspector.HeapSnapshotEdgeProxy.deserialize(this._proxyObjectId,component);});for(let i=1;i<path.length;i+=2){let edge=path[i];edge.from=path[i-1];edge.to=path[i+1];}
callback(path);});}
dominatedNodes(callback)
{WebInspector.HeapSnapshotWorkerProxy.singleton().callMethod(this._proxyObjectId,"dominatedNodes",this.id,(serializedNodes)=>{callback(serializedNodes.map(WebInspector.HeapSnapshotNodeProxy.deserialize.bind(null,this._proxyObjectId)));});}
retainedNodes(callback)
{WebInspector.HeapSnapshotWorkerProxy.singleton().callMethod(this._proxyObjectId,"retainedNodes",this.id,({retainedNodes:serializedNodes,edges:serializedEdges})=>{let deserializedNodes=serializedNodes.map(WebInspector.HeapSnapshotNodeProxy.deserialize.bind(null,this._proxyObjectId));let deserializedEdges=serializedEdges.map(WebInspector.HeapSnapshotEdgeProxy.deserialize.bind(null,this._proxyObjectId));callback(deserializedNodes,deserializedEdges);});}
retainers(callback)
{WebInspector.HeapSnapshotWorkerProxy.singleton().callMethod(this._proxyObjectId,"retainers",this.id,({retainers:serializedNodes,edges:serializedEdges})=>{let deserializedNodes=serializedNodes.map(WebInspector.HeapSnapshotNodeProxy.deserialize.bind(null,this._proxyObjectId));let deserializedEdges=serializedEdges.map(WebInspector.HeapSnapshotEdgeProxy.deserialize.bind(null,this._proxyObjectId));callback(deserializedNodes,deserializedEdges);});}};WebInspector.HeapSnapshotProxy=class HeapSnapshotProxy extends WebInspector.Object
{constructor(snapshotObjectId,identifier,title,totalSize,totalObjectCount,liveSize,categories)
{super();this._proxyObjectId=snapshotObjectId;this._identifier=identifier;this._title=title;this._totalSize=totalSize;this._totalObjectCount=totalObjectCount;this._liveSize=liveSize;this._categories=Map.fromObject(categories);if(!WebInspector.HeapSnapshotProxy.ValidSnapshotProxies)
WebInspector.HeapSnapshotProxy.ValidSnapshotProxies=[];WebInspector.HeapSnapshotProxy.ValidSnapshotProxies.push(this);}
static deserialize(objectId,serializedSnapshot)
{let{identifier,title,totalSize,totalObjectCount,liveSize,categories}=serializedSnapshot;return new WebInspector.HeapSnapshotProxy(objectId,identifier,title,totalSize,totalObjectCount,liveSize,categories);}
static invalidateSnapshotProxies()
{if(!WebInspector.HeapSnapshotProxy.ValidSnapshotProxies)
return;for(let snapshotProxy of WebInspector.HeapSnapshotProxy.ValidSnapshotProxies)
snapshotProxy._invalidate();WebInspector.HeapSnapshotProxy.ValidSnapshotProxies=null;}
get proxyObjectId(){return this._proxyObjectId;}
get identifier(){return this._identifier;}
get title(){return this._title;}
get totalSize(){return this._totalSize;}
get totalObjectCount(){return this._totalObjectCount;}
get liveSize(){return this._liveSize;}
get categories(){return this._categories;}
get invalid(){return this._proxyObjectId===0;}
updateForCollectionEvent(event)
{if(!event.data.affectedSnapshots.includes(this._identifier))
return;this.update(()=>{this.dispatchEventToListeners(WebInspector.HeapSnapshotProxy.Event.CollectedNodes,event.data);});}
allocationBucketCounts(bucketSizes,callback)
{WebInspector.HeapSnapshotWorkerProxy.singleton().callMethod(this._proxyObjectId,"allocationBucketCounts",bucketSizes,callback);}
instancesWithClassName(className,callback)
{WebInspector.HeapSnapshotWorkerProxy.singleton().callMethod(this._proxyObjectId,"instancesWithClassName",className,(serializedNodes)=>{callback(serializedNodes.map(WebInspector.HeapSnapshotNodeProxy.deserialize.bind(null,this._proxyObjectId)));});}
update(callback)
{WebInspector.HeapSnapshotWorkerProxy.singleton().callMethod(this._proxyObjectId,"update",({liveSize,categories})=>{this._liveSize=liveSize;this._categories=Map.fromObject(categories);callback();});}
nodeWithIdentifier(nodeIdentifier,callback)
{WebInspector.HeapSnapshotWorkerProxy.singleton().callMethod(this._proxyObjectId,"nodeWithIdentifier",nodeIdentifier,(serializedNode)=>{callback(WebInspector.HeapSnapshotNodeProxy.deserialize(this._proxyObjectId,serializedNode));});}
_invalidate()
{this._proxyObjectId=0;this._liveSize=0;this.dispatchEventToListeners(WebInspector.HeapSnapshotProxy.Event.Invalidated);}};WebInspector.HeapSnapshotProxy.Event={CollectedNodes:"heap-snapshot-proxy-collected-nodes",Invalidated:"heap-snapshot-proxy-invalidated",};WebInspector.HeapSnapshotWorkerProxy=class HeapSnapshotWorkerProxy extends WebInspector.Object
{constructor()
{super();this._heapSnapshotWorker=new Worker("Workers/HeapSnapshot/HeapSnapshotWorker.js");this._heapSnapshotWorker.addEventListener("message",this._handleMessage.bind(this));this._nextCallId=1;this._callbacks=new Map;WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);}
static singleton()
{if(!HeapSnapshotWorkerProxy.instance)
HeapSnapshotWorkerProxy.instance=new HeapSnapshotWorkerProxy;return HeapSnapshotWorkerProxy.instance;}
clearSnapshots(callback)
{this.performAction("clearSnapshots",callback);}
createSnapshot(snapshotStringData,callback)
{this.performAction("createSnapshot",...arguments);}
createSnapshotDiff(objectId1,objectId2,callback)
{this.performAction("createSnapshotDiff",...arguments);}
performAction(actionName)
{let callId=this._nextCallId++;let callback=arguments[arguments.length-1];let actionArguments=Array.prototype.slice.call(arguments,1,arguments.length-1);this._callbacks.set(callId,callback);this._postMessage({callId,actionName,actionArguments});}
callMethod(objectId,methodName)
{let callId=this._nextCallId++;let callback=arguments[arguments.length-1];let methodArguments=Array.prototype.slice.call(arguments,2,arguments.length-1);this._callbacks.set(callId,callback);this._postMessage({callId,objectId,methodName,methodArguments});}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;this.clearSnapshots(()=>{WebInspector.HeapSnapshotProxy.invalidateSnapshotProxies();});}
_postMessage()
{this._heapSnapshotWorker.postMessage(...arguments);}
_handleMessage(event)
{let data=event.data;if(data.error){this._callbacks.delete(data.callId);return;}
if(data.eventName){this.dispatchEventToListeners(data.eventName,data.eventData);return;}
if(data.callId){let callback=this._callbacks.get(data.callId);this._callbacks.delete(data.callId);callback(data.result);return;}
console.error("Unexpected HeapSnapshotWorker message",data);}};WebInspector.View=class View extends WebInspector.Object
{constructor(element)
{super();this._element=element||document.createElement("div");this._element.__view=this;this._parentView=null;this._subviews=[];this._dirty=false;this._dirtyDescendantsCount=0;this._needsLayoutWhenAttachedToRoot=false;this._isAttachedToRoot=false;this._layoutReason=null;this._didInitialLayout=false;}
static rootView()
{if(!WebInspector.View._rootView)
WebInspector.View._rootView=new WebInspector.View(document.body);return WebInspector.View._rootView;}
get element()
{return this._element;}
get layoutPending()
{return this._dirty;}
get parentView()
{return this._parentView;}
get subviews()
{return this._subviews;}
isDescendantOf(view)
{let parentView=this._parentView;while(parentView){if(parentView===view)
return true;parentView=parentView.parentView;}
return false;}
addSubview(view)
{this.insertSubviewBefore(view,null);}
insertSubviewBefore(view,referenceView)
{if(this._subviews.includes(view)){return;}
const beforeIndex=referenceView?this._subviews.indexOf(referenceView):this._subviews.length;if(beforeIndex===-1){return;}
this._subviews.insertAtIndex(view,beforeIndex);if(!view.element.parentNode)
this._element.insertBefore(view.element,referenceView?referenceView.element:null);view.didMoveToParent(this);}
removeSubview(view)
{if(!this._subviews.includes(view)){return;}
this._subviews.remove(view,true);this._element.removeChild(view.element);view.didMoveToParent(null);}
replaceSubview(oldView,newView)
{this.insertSubviewBefore(newView,oldView);this.removeSubview(oldView);}
updateLayout(layoutReason)
{this.cancelLayout();this._setLayoutReason(layoutReason);this._layoutSubtree();}
updateLayoutIfNeeded(layoutReason)
{if(!this._dirty&&this._didInitialLayout)
return;this.updateLayout(layoutReason);}
needsLayout(layoutReason)
{this._setLayoutReason(layoutReason);if(this._dirty)
return;WebInspector.View._scheduleLayoutForView(this);}
cancelLayout()
{WebInspector.View._cancelScheduledLayoutForView(this);}
get layoutReason(){return this._layoutReason;}
didMoveToWindow(isAttachedToRoot)
{this._isAttachedToRoot=isAttachedToRoot;if(this._isAttachedToRoot&&this._needsLayoutWhenAttachedToRoot){WebInspector.View._scheduleLayoutForView(this);this._needsLayoutWhenAttachedToRoot=false;}
for(let view of this._subviews)
view.didMoveToWindow(isAttachedToRoot);}
didMoveToParent(parentView)
{this._parentView=parentView;let isAttachedToRoot=this.isDescendantOf(WebInspector.View._rootView);this.didMoveToWindow(isAttachedToRoot);if(!this._parentView)
return;let pendingLayoutsCount=this._dirtyDescendantsCount;if(this._dirty)
pendingLayoutsCount++;let view=this._parentView;while(view){view._dirtyDescendantsCount+=pendingLayoutsCount;view=view.parentView;}}
initialLayout()
{
}
layout()
{}
sizeDidChange()
{}
_layoutSubtree()
{this._dirty=false;this._dirtyDescendantsCount=0;if(!this._didInitialLayout){this.initialLayout();this._didInitialLayout=true;}
if(this._layoutReason===WebInspector.View.LayoutReason.Resize)
this.sizeDidChange();this.layout();for(let view of this._subviews){view._setLayoutReason(this._layoutReason);view._layoutSubtree();}
this._layoutReason=null;}
_setLayoutReason(layoutReason)
{if(this._layoutReason===WebInspector.View.LayoutReason.Resize)
return;this._layoutReason=layoutReason||WebInspector.View.LayoutReason.Dirty;}
static _scheduleLayoutForView(view)
{view._dirty=true;let parentView=view.parentView;while(parentView){parentView._dirtyDescendantsCount++;parentView=parentView.parentView;}
if(!view._isAttachedToRoot){view._needsLayoutWhenAttachedToRoot=true;return;}
if(WebInspector.View._scheduledLayoutUpdateIdentifier)
return;WebInspector.View._scheduledLayoutUpdateIdentifier=requestAnimationFrame(WebInspector.View._visitViewTreeForLayout);}
static _cancelScheduledLayoutForView(view)
{let cancelledLayoutsCount=view._dirtyDescendantsCount;if(view.layoutPending)
cancelledLayoutsCount++;let parentView=view.parentView;while(parentView){parentView._dirtyDescendantsCount=Math.max(0,parentView._dirtyDescendantsCount-cancelledLayoutsCount);parentView=parentView.parentView;}
if(!WebInspector.View._scheduledLayoutUpdateIdentifier)
return;let rootView=WebInspector.View._rootView;if(!rootView||rootView._dirtyDescendantsCount)
return;cancelAnimationFrame(WebInspector.View._scheduledLayoutUpdateIdentifier);WebInspector.View._scheduledLayoutUpdateIdentifier=undefined;}
static _visitViewTreeForLayout()
{WebInspector.View._scheduledLayoutUpdateIdentifier=undefined;let views=[WebInspector.View._rootView];while(views.length){let view=views.shift();if(view.layoutPending)
view._layoutSubtree();else if(view._dirtyDescendantsCount){views=views.concat(view.subviews);view._dirtyDescendantsCount=0;}}}};WebInspector.View.LayoutReason={Dirty:Symbol("layout-reason-dirty"),Resize:Symbol("layout-reason-resize")};WebInspector.View._rootView=null;WebInspector.View._scheduledLayoutUpdateIdentifier=undefined;WebInspector.ConsoleCommandView=class ConsoleCommandView extends WebInspector.Object
{constructor(commandText,className)
{super();this._commandText=commandText;this._className=className||"";}
render()
{this._element=document.createElement("div");this._element.classList.add("console-user-command");this._element.setAttribute("data-labelprefix",WebInspector.UIString("Input: "));if(this._className)
this._element.classList.add(this._className);this._formattedCommandElement=this._element.appendChild(document.createElement("span"));this._formattedCommandElement.classList.add("console-message-text");this._formattedCommandElement.textContent=this._commandText; this._element.__commandView=this;}
get element()
{return this._element;}
get commandText()
{return this._commandText;}
toClipboardString(isPrefixOptional)
{return(isPrefixOptional?"":"> ")+this._commandText.removeWordBreakCharacters();}};WebInspector.ConsoleMessageView=class ConsoleMessageView extends WebInspector.Object
{constructor(message)
{super();this._message=message;this._expandable=false;this._repeatCount=message._repeatCount||0;this._extraParameters=message.parameters;}
render()
{this._element=document.createElement("div");this._element.classList.add("console-message"); this._element.__message=this._message;this._element.__messageView=this;if(this._message.type===WebInspector.ConsoleMessage.MessageType.Result){this._element.classList.add("console-user-command-result");this._element.setAttribute("data-labelprefix",WebInspector.UIString("Output: "));}else if(this._message.type===WebInspector.ConsoleMessage.MessageType.StartGroup||this._message.type===WebInspector.ConsoleMessage.MessageType.StartGroupCollapsed)
this._element.classList.add("console-group-title");switch(this._message.level){case WebInspector.ConsoleMessage.MessageLevel.Log:this._element.classList.add("console-log-level");this._element.setAttribute("data-labelprefix",WebInspector.UIString("Log: "));break;case WebInspector.ConsoleMessage.MessageLevel.Info:this._element.classList.add("console-info-level");this._element.setAttribute("data-labelprefix",WebInspector.UIString("Info: "));break;case WebInspector.ConsoleMessage.MessageLevel.Debug:this._element.classList.add("console-debug-level");this._element.setAttribute("data-labelprefix",WebInspector.UIString("Debug: "));break;case WebInspector.ConsoleMessage.MessageLevel.Warning:this._element.classList.add("console-warning-level");this._element.setAttribute("data-labelprefix",WebInspector.UIString("Warning: "));break;case WebInspector.ConsoleMessage.MessageLevel.Error:this._element.classList.add("console-error-level");this._element.setAttribute("data-labelprefix",WebInspector.UIString("Error: "));break;}
this._appendLocationLink();this._messageTextElement=this._element.appendChild(document.createElement("span"));this._messageTextElement.classList.add("console-top-level-message");this._messageTextElement.classList.add("console-message-text");this._appendMessageTextAndArguments(this._messageTextElement);this._appendSavedResultIndex();this._appendExtraParameters();this._appendStackTrace();this._renderRepeatCount();}
get element()
{return this._element;}
get message()
{return this._message;}
get repeatCount()
{return this._repeatCount;}
set repeatCount(count)
{if(this._repeatCount===count)
return;this._repeatCount=count;if(this._element)
this._renderRepeatCount();}
_renderRepeatCount()
{let count=this._repeatCount;if(count<=1){if(this._repeatCountElement){this._repeatCountElement.remove();this._repeatCountElement=null;}
return;}
if(!this._repeatCountElement){this._repeatCountElement=document.createElement("span");this._repeatCountElement.classList.add("repeat-count");this._element.insertBefore(this._repeatCountElement,this._element.firstChild);}
this._repeatCountElement.textContent=Number.abbreviate(count);}
get expandable()
{if(this._expandable)
return true;if(this._objectTree)
return true;return false;}
expand()
{if(this._expandable)
this._element.classList.add("expanded");if(this._objectTree&&this._message.type!==WebInspector.ConsoleMessage.MessageType.Trace){if(!this._extraParameters||this._extraParameters.length<=1)
this._objectTree.expand();}}
collapse()
{if(this._expandable)
this._element.classList.remove("expanded");if(this._objectTree){if(!this._extraParameters||this._extraParameters.length<=1)
this._objectTree.collapse();}}
toggle()
{if(this._element.classList.contains("expanded"))
this.collapse();else
this.expand();}
toClipboardString(isPrefixOptional)
{let clipboardString=this._messageTextElement.innerText.removeWordBreakCharacters();if(this._message.savedResultIndex)
clipboardString=clipboardString.replace(/\s*=\s*(\$\d+)$/,"");let hasStackTrace=this._shouldShowStackTrace();if(!hasStackTrace){let repeatString=this.repeatCount>1?"x"+this.repeatCount:"";let urlLine="";if(this._message.url){let components=[WebInspector.displayNameForURL(this._message.url),"line "+this._message.line];if(repeatString)
components.push(repeatString);urlLine=" ("+components.join(", ")+")";}else if(repeatString)
urlLine=" ("+repeatString+")";if(urlLine){let lines=clipboardString.split("\n");lines[0]+=urlLine;clipboardString=lines.join("\n");}}
if(this._extraElementsList)
clipboardString+="\n"+this._extraElementsList.innerText.removeWordBreakCharacters().trim();if(hasStackTrace){this._message.stackTrace.callFrames.forEach(function(frame){clipboardString+="\n\t"+(frame.functionName||WebInspector.UIString("(anonymous function)"));if(frame.sourceCodeLocation)
clipboardString+=" ("+frame.sourceCodeLocation.originalLocationString()+")";});}
if(!isPrefixOptional||this._enforcesClipboardPrefixString())
return this._clipboardPrefixString()+clipboardString;return clipboardString;}
_appendMessageTextAndArguments(element)
{if(this._message.source===WebInspector.ConsoleMessage.MessageSource.ConsoleAPI){switch(this._message.type){case WebInspector.ConsoleMessage.MessageType.Trace:var args=[WebInspector.UIString("Trace")];if(this._message.parameters){if(this._message.parameters[0].type==="string"){var prefixedFormatString=WebInspector.UIString("Trace: %s").format(this._message.parameters[0].description);args=[prefixedFormatString].concat(this._message.parameters.slice(1));}else
args=args.concat(this._message.parameters);}
this._appendFormattedArguments(element,args);break;case WebInspector.ConsoleMessage.MessageType.Assert:var args=[WebInspector.UIString("Assertion Failed")];if(this._message.parameters){if(this._message.parameters[0].type==="string"){var prefixedFormatString=WebInspector.UIString("Assertion Failed: %s").format(this._message.parameters[0].description);args=[prefixedFormatString].concat(this._message.parameters.slice(1));}else
args=args.concat(this._message.parameters);}
this._appendFormattedArguments(element,args);break;case WebInspector.ConsoleMessage.MessageType.Dir:var obj=this._message.parameters?this._message.parameters[0]:undefined;this._appendFormattedArguments(element,["%O",obj]);break;case WebInspector.ConsoleMessage.MessageType.Table:var args=this._message.parameters;element.appendChild(this._formatParameterAsTable(args));this._extraParameters=null;break;case WebInspector.ConsoleMessage.MessageType.StartGroup:case WebInspector.ConsoleMessage.MessageType.StartGroupCollapsed:var args=this._message.parameters||[this._message.messageText||WebInspector.UIString("Group")];this._formatWithSubstitutionString(args,element);this._extraParameters=null;break;default:var args=this._message.parameters||[this._message.messageText];this._appendFormattedArguments(element,args);break;}
return;}
var args=this._message.parameters||[this._message.messageText];this._appendFormattedArguments(element,args);}
_appendSavedResultIndex(element)
{if(!this._message.savedResultIndex)
return;var savedVariableElement=document.createElement("span");savedVariableElement.classList.add("console-saved-variable");savedVariableElement.textContent=" = $"+this._message.savedResultIndex;if(this._objectTree)
this._objectTree.appendTitleSuffix(savedVariableElement);else
this._messageTextElement.appendChild(savedVariableElement);}
_appendLocationLink()
{if(this._message.source===WebInspector.ConsoleMessage.MessageSource.Network){if(this._message.url){var anchor=WebInspector.linkifyURLAsNode(this._message.url,this._message.url,"console-message-url");anchor.classList.add("console-message-location");this._element.appendChild(anchor);}
return;}
var firstNonNativeNonAnonymousCallFrame=this._message.stackTrace.firstNonNativeNonAnonymousCallFrame;var callFrame;if(firstNonNativeNonAnonymousCallFrame){callFrame=firstNonNativeNonAnonymousCallFrame;}else if(this._message.url&&!this._shouldHideURL(this._message.url)){callFrame=WebInspector.CallFrame.fromPayload(this._message.target,{functionName:"",url:this._message.url,lineNumber:this._message.line,columnNumber:this._message.column});}
if(callFrame&&(!callFrame.isConsoleEvaluation||WebInspector.isDebugUIEnabled())){const showFunctionName=!!callFrame.functionName;var locationElement=new WebInspector.CallFrameView(callFrame,showFunctionName);locationElement.classList.add("console-message-location");this._element.appendChild(locationElement);return;}
if(this._message.parameters&&this._message.parameters.length===1){var parameter=this._createRemoteObjectIfNeeded(this._message.parameters[0]);parameter.findFunctionSourceCodeLocation().then(function(result){if(result===WebInspector.RemoteObject.SourceCodeLocationPromise.NoSourceFound||result===WebInspector.RemoteObject.SourceCodeLocationPromise.MissingObjectId)
return;var link=this._linkifyLocation(result.sourceCode.url,result.lineNumber,result.columnNumber);link.classList.add("console-message-location");if(this._element.hasChildNodes())
this._element.insertBefore(link,this._element.firstChild);else
this._element.appendChild(link);}.bind(this));}}
_appendExtraParameters()
{if(!this._extraParameters||!this._extraParameters.length)
return;this._makeExpandable();if(this._extraParameters.length>1)
this.expand();this._extraElementsList=this._element.appendChild(document.createElement("ol"));this._extraElementsList.classList.add("console-message-extra-parameters-container");for(var parameter of this._extraParameters){var listItemElement=this._extraElementsList.appendChild(document.createElement("li"));const forceObjectFormat=parameter.type==="object"&&(parameter.subtype!=="null"&&parameter.subtype!=="regexp"&&parameter.subtype!=="node"&&parameter.subtype!=="error");listItemElement.classList.add("console-message-extra-parameter");listItemElement.appendChild(this._formatParameter(parameter,forceObjectFormat));}}
_appendStackTrace()
{if(!this._shouldShowStackTrace())
return;this._makeExpandable();if(this._message.type===WebInspector.ConsoleMessage.MessageType.Trace)
this.expand();this._stackTraceElement=this._element.appendChild(document.createElement("div"));this._stackTraceElement.classList.add("console-message-text","console-message-stack-trace-container");var callFramesElement=new WebInspector.StackTraceView(this._message.stackTrace).element;this._stackTraceElement.appendChild(callFramesElement);}
_createRemoteObjectIfNeeded(parameter)
{if(parameter instanceof WebInspector.RemoteObject)
return parameter;if(typeof parameter==="object")
return WebInspector.RemoteObject.fromPayload(parameter,this._message.target);return WebInspector.RemoteObject.fromPrimitiveValue(parameter);}
_appendFormattedArguments(element,parameters)
{if(!parameters.length)
return;for(var i=0;i<parameters.length;++i)
parameters[i]=this._createRemoteObjectIfNeeded(parameters[i]);var builderElement=element.appendChild(document.createElement("span"));var shouldFormatWithStringSubstitution=WebInspector.RemoteObject.type(parameters[0])==="string"&&this._message.type!==WebInspector.ConsoleMessage.MessageType.Result;if(parameters.length===1&&!shouldFormatWithStringSubstitution){this._extraParameters=null;builderElement.appendChild(this._formatParameter(parameters[0],false));return;}
if(shouldFormatWithStringSubstitution&&this._isStackTrace(parameters[0]))
shouldFormatWithStringSubstitution=false;if(shouldFormatWithStringSubstitution){var result=this._formatWithSubstitutionString(parameters,builderElement);parameters=result.unusedSubstitutions;this._extraParameters=parameters;}else{var defaultMessage=WebInspector.UIString("No message");builderElement.append(defaultMessage);}
if(parameters.length){let enclosedElement=document.createElement("span");if(parameters.length===1&&!this._isStackTrace(parameters[0])){let parameter=parameters[0];builderElement.append(enclosedElement);enclosedElement.classList.add("console-message-preview-divider");enclosedElement.textContent=" \u2013 ";var previewContainer=builderElement.appendChild(document.createElement("span"));previewContainer.classList.add("console-message-preview");var preview=WebInspector.FormattedValue.createObjectPreviewOrFormattedValueForRemoteObject(parameter,WebInspector.ObjectPreviewView.Mode.Brief);var isPreviewView=preview instanceof WebInspector.ObjectPreviewView;if(isPreviewView)
preview.setOriginatingObjectInfo(parameter,null);var previewElement=isPreviewView?preview.element:preview;previewContainer.appendChild(previewElement);if((isPreviewView&&preview.lossless)||(!isPreviewView&&this._shouldConsiderObjectLossless(parameter))){this._extraParameters=null;enclosedElement.classList.add("inline-lossless");previewContainer.classList.add("inline-lossless");}}else{builderElement.append(" ",enclosedElement);enclosedElement.classList.add("console-message-enclosed");enclosedElement.textContent="("+parameters.length+")";}}}
_isStackTrace(parameter)
{if(WebInspector.RemoteObject.type(parameter)!=="string")
return false;return WebInspector.StackTrace.isLikelyStackTrace(parameter.description);}
_shouldConsiderObjectLossless(object)
{if(object.type==="string"){const description=object.description;const maxLength=WebInspector.FormattedValue.MAX_PREVIEW_STRING_LENGTH;const longOrMultiLineString=description.length>maxLength||description.slice(0,maxLength).includes("\n");return!longOrMultiLineString;}
return object.type!=="object"||object.subtype==="null"||object.subtype==="regexp";}
_formatParameter(parameter,forceObjectFormat)
{var type;if(forceObjectFormat)
type="object";else if(parameter instanceof WebInspector.RemoteObject)
type=parameter.subtype||parameter.type;else{type=typeof parameter;}
var formatters={"object":this._formatParameterAsObject,"error":this._formatParameterAsError,"map":this._formatParameterAsObject,"set":this._formatParameterAsObject,"weakmap":this._formatParameterAsObject,"weakset":this._formatParameterAsObject,"iterator":this._formatParameterAsObject,"class":this._formatParameterAsObject,"proxy":this._formatParameterAsObject,"array":this._formatParameterAsArray,"node":this._formatParameterAsNode,"string":this._formatParameterAsString,};var formatter=formatters[type]||this._formatParameterAsValue;const fragment=document.createDocumentFragment();formatter.call(this,parameter,fragment,forceObjectFormat);return fragment;}
_formatParameterAsValue(value,fragment)
{fragment.appendChild(WebInspector.FormattedValue.createElementForRemoteObject(value));}
_formatParameterAsString(object,fragment)
{if(this._isStackTrace(object)){let stackTrace=WebInspector.StackTrace.fromString(this._message.target,object.description);if(stackTrace.callFrames.length){let stackView=new WebInspector.StackTraceView(stackTrace);fragment.appendChild(stackView.element);return;}}
fragment.appendChild(WebInspector.FormattedValue.createLinkifiedElementString(object.description));}
_formatParameterAsNode(object,fragment)
{fragment.appendChild(WebInspector.FormattedValue.createElementForNode(object));}
_formatParameterAsObject(object,fragment,forceExpansion)
{this._objectTree=new WebInspector.ObjectTreeView(object,null,this._rootPropertyPathForObject(object),forceExpansion);fragment.appendChild(this._objectTree.element);}
_formatParameterAsError(object,fragment)
{this._objectTree=new WebInspector.ErrorObjectView(object);fragment.appendChild(this._objectTree.element);}
_formatParameterAsArray(array,fragment)
{this._objectTree=new WebInspector.ObjectTreeView(array,WebInspector.ObjectTreeView.Mode.Properties,this._rootPropertyPathForObject(array));fragment.appendChild(this._objectTree.element);}
_rootPropertyPathForObject(object)
{if(!this._message.savedResultIndex)
return null;return new WebInspector.PropertyPath(object,"$"+this._message.savedResultIndex);}
_formatWithSubstitutionString(parameters,formattedResult)
{function parameterFormatter(force,obj)
{return this._formatParameter(obj,force);}
function stringFormatter(obj)
{return obj.description;}
function floatFormatter(obj,token)
{let value=typeof obj.value==="number"?obj.value:obj.description;return String.standardFormatters.f(value,token);}
function integerFormatter(obj)
{let value=typeof obj.value==="number"?obj.value:obj.description;return String.standardFormatters.d(value);}
var currentStyle=null;function styleFormatter(obj)
{currentStyle={};var buffer=document.createElement("span");buffer.setAttribute("style",obj.description);for(var i=0;i<buffer.style.length;i++){var property=buffer.style[i];if(isWhitelistedProperty(property))
currentStyle[property]=buffer.style[property];}}
function isWhitelistedProperty(property)
{for(var prefix of["background","border","color","font","line","margin","padding","text"]){if(property.startsWith(prefix)||property.startsWith("-webkit-"+prefix))
return true;}
return false;}
var formatters={};formatters.o=parameterFormatter.bind(this,false);formatters.s=stringFormatter;formatters.f=floatFormatter;formatters.i=integerFormatter;formatters.d=integerFormatter;formatters.c=styleFormatter;formatters.O=parameterFormatter.bind(this,true);function append(a,b)
{if(b instanceof Node)
a.appendChild(b);else if(b!==undefined){var toAppend=WebInspector.linkifyStringAsFragment(b.toString());if(currentStyle){var wrapper=document.createElement("span");for(var key in currentStyle)
wrapper.style[key]=currentStyle[key];wrapper.appendChild(toAppend);toAppend=wrapper;}
a.appendChild(toAppend);}
return a;}
return String.format(parameters[0].description,parameters.slice(1),formatters,formattedResult,append);}
_shouldShowStackTrace()
{if(!this._message.stackTrace.callFrames.length)
return false;return this._message.source===WebInspector.ConsoleMessage.MessageSource.Network||this._message.level===WebInspector.ConsoleMessage.MessageLevel.Error||this._message.type===WebInspector.ConsoleMessage.MessageType.Trace;}
_shouldHideURL(url)
{return url==="undefined"||url==="[native code]";}
_linkifyLocation(url,lineNumber,columnNumber)
{const options={className:"console-message-url",ignoreNetworkTab:true,ignoreSearchTab:true,};return WebInspector.linkifyLocation(url,new WebInspector.SourceCodePosition(lineNumber,columnNumber),options);}
_userProvidedColumnNames(columnNamesArgument)
{if(!columnNamesArgument)
return null;if(columnNamesArgument.type==="string"||columnNamesArgument.type==="number")
return[String(columnNamesArgument.value)];if(columnNamesArgument.type!=="object"||columnNamesArgument.subtype!=="array"||!columnNamesArgument.preview||!columnNamesArgument.preview.propertyPreviews)
return null;var extractedColumnNames=[];for(var propertyPreview of columnNamesArgument.preview.propertyPreviews){if(propertyPreview.type==="string"||propertyPreview.type==="number")
extractedColumnNames.push(String(propertyPreview.value));}
return extractedColumnNames.length?extractedColumnNames:null;}
_formatParameterAsTable(parameters)
{var element=document.createElement("span");var table=parameters[0];if(!table||!table.preview)
return element;var rows=[];var columnNames=[];var flatValues=[];var preview=table.preview;var userProvidedColumnNames=false;var extractedColumnNames=this._userProvidedColumnNames(parameters[1]);if(extractedColumnNames){userProvidedColumnNames=true;columnNames=extractedColumnNames;}
if(preview.propertyPreviews){for(var i=0;i<preview.propertyPreviews.length;++i){var rowProperty=preview.propertyPreviews[i];var rowPreview=rowProperty.valuePreview;if(!rowPreview||!rowPreview.propertyPreviews)
continue;var rowValue={};var maxColumnsToRender=15;for(var j=0;j<rowPreview.propertyPreviews.length;++j){var cellProperty=rowPreview.propertyPreviews[j];var columnRendered=columnNames.includes(cellProperty.name);if(!columnRendered){if(userProvidedColumnNames||columnNames.length===maxColumnsToRender)
continue;columnRendered=true;columnNames.push(cellProperty.name);}
rowValue[cellProperty.name]=WebInspector.FormattedValue.createElementForPropertyPreview(cellProperty);}
rows.push([rowProperty.name,rowValue]);}}
if(rows.length){columnNames.unshift(WebInspector.UIString("(Index)"));for(var i=0;i<rows.length;++i){var rowName=rows[i][0];var rowValue=rows[i][1];flatValues.push(rowName);for(var j=1;j<columnNames.length;++j){var columnName=columnNames[j];if(!(columnName in rowValue))
flatValues.push(emDash);else
flatValues.push(rowValue[columnName]);}}}
if(!flatValues.length&&preview.propertyPreviews){for(var i=0;i<preview.propertyPreviews.length;++i){var rowProperty=preview.propertyPreviews[i];if(!("value"in rowProperty))
continue;if(!columnNames.length){columnNames.push(WebInspector.UIString("Index"));columnNames.push(WebInspector.UIString("Value"));}
flatValues.push(rowProperty.name);flatValues.push(WebInspector.FormattedValue.createElementForPropertyPreview(rowProperty));}}
if(!flatValues.length)
return element;var dataGrid=WebInspector.DataGrid.createSortableDataGrid(columnNames,flatValues);dataGrid.inline=true;dataGrid.variableHeightRows=true;element.appendChild(dataGrid.element);dataGrid.updateLayoutIfNeeded();return element;}
_levelString()
{switch(this._message.level){case WebInspector.ConsoleMessage.MessageLevel.Log:return"Log";case WebInspector.ConsoleMessage.MessageLevel.Info:return"Info";case WebInspector.ConsoleMessage.MessageLevel.Warning:return"Warning";case WebInspector.ConsoleMessage.MessageLevel.Debug:return"Debug";case WebInspector.ConsoleMessage.MessageLevel.Error:return"Error";}}
_enforcesClipboardPrefixString()
{return this._message.type!==WebInspector.ConsoleMessage.MessageType.Result;}
_clipboardPrefixString()
{if(this._message.type===WebInspector.ConsoleMessage.MessageType.Result)
return"< ";return"["+this._levelString()+"] ";}
_makeExpandable()
{if(this._expandable)
return;this._expandable=true;this._element.classList.add("expandable");this._boundClickHandler=this.toggle.bind(this);this._messageTextElement.addEventListener("click",this._boundClickHandler);}};WebInspector.ContentBrowser=class ContentBrowser extends WebInspector.View
{constructor(element,delegate,disableBackForward,disableFindBanner)
{super(element);this.element.classList.add("content-browser");this._navigationBar=new WebInspector.NavigationBar;this.addSubview(this._navigationBar);this._contentViewContainer=new WebInspector.ContentViewContainer;this._contentViewContainer.addEventListener(WebInspector.ContentViewContainer.Event.CurrentContentViewDidChange,this._currentContentViewDidChange,this);this.addSubview(this._contentViewContainer);if(!disableBackForward){let isRTL=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL;let goBack=()=>{this.goBack();};let goForward=()=>{this.goForward();};let backShortcutKey=isRTL?WebInspector.KeyboardShortcut.Key.Right:WebInspector.KeyboardShortcut.Key.Left;let forwardShortcutKey=isRTL?WebInspector.KeyboardShortcut.Key.Left:WebInspector.KeyboardShortcut.Key.Right;this._backKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Control,backShortcutKey,goBack,this.element);this._forwardKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Control,forwardShortcutKey,goForward,this.element);let leftArrow="Images/BackForwardArrows.svg#left-arrow-mask";let rightArrow="Images/BackForwardArrows.svg#right-arrow-mask";let backButtonImage=isRTL?rightArrow:leftArrow;let forwardButtonImage=isRTL?leftArrow:rightArrow;this._backNavigationItem=new WebInspector.ButtonNavigationItem("back",WebInspector.UIString("Back (%s)").format(this._backKeyboardShortcut.displayName),backButtonImage,8,13);this._backNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,goBack);this._backNavigationItem.enabled=false;this._navigationBar.addNavigationItem(this._backNavigationItem);this._forwardNavigationItem=new WebInspector.ButtonNavigationItem("forward",WebInspector.UIString("Forward (%s)").format(this._forwardKeyboardShortcut.displayName),forwardButtonImage,8,13);this._forwardNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,goForward);this._forwardNavigationItem.enabled=false;this._navigationBar.addNavigationItem(this._forwardNavigationItem);this._navigationBar.addNavigationItem(new WebInspector.DividerNavigationItem);}
if(!disableFindBanner){this._findBanner=new WebInspector.FindBanner(this);this._findBanner.addEventListener(WebInspector.FindBanner.Event.DidShow,this._findBannerDidShow,this);this._findBanner.addEventListener(WebInspector.FindBanner.Event.DidHide,this._findBannerDidHide,this);}
this._hierarchicalPathNavigationItem=new WebInspector.HierarchicalPathNavigationItem;this._hierarchicalPathNavigationItem.addEventListener(WebInspector.HierarchicalPathNavigationItem.Event.PathComponentWasSelected,this._hierarchicalPathComponentWasSelected,this);this._navigationBar.addNavigationItem(this._hierarchicalPathNavigationItem);this._contentViewSelectionPathNavigationItem=new WebInspector.HierarchicalPathNavigationItem;this._dividingFlexibleSpaceNavigationItem=new WebInspector.FlexibleSpaceNavigationItem;this._navigationBar.addNavigationItem(this._dividingFlexibleSpaceNavigationItem);WebInspector.ContentView.addEventListener(WebInspector.ContentView.Event.SelectionPathComponentsDidChange,this._contentViewSelectionPathComponentDidChange,this);WebInspector.ContentView.addEventListener(WebInspector.ContentView.Event.SupplementalRepresentedObjectsDidChange,this._contentViewSupplementalRepresentedObjectsDidChange,this);WebInspector.ContentView.addEventListener(WebInspector.ContentView.Event.NumberOfSearchResultsDidChange,this._contentViewNumberOfSearchResultsDidChange,this);WebInspector.ContentView.addEventListener(WebInspector.ContentView.Event.NavigationItemsDidChange,this._contentViewNavigationItemsDidChange,this);this._delegate=delegate||null;this._currentContentViewNavigationItems=[];}
get navigationBar()
{return this._navigationBar;}
get contentViewContainer()
{return this._contentViewContainer;}
get delegate()
{return this._delegate;}
set delegate(newDelegate)
{this._delegate=newDelegate||null;}
get currentContentView()
{return this._contentViewContainer.currentContentView;}
get currentRepresentedObjects()
{var representedObjects=[];var lastComponent=this._hierarchicalPathNavigationItem.lastComponent;if(lastComponent&&lastComponent.representedObject)
representedObjects.push(lastComponent.representedObject);lastComponent=this._contentViewSelectionPathNavigationItem.lastComponent;if(lastComponent&&lastComponent.representedObject)
representedObjects.push(lastComponent.representedObject);var currentContentView=this.currentContentView;if(currentContentView){var supplementalRepresentedObjects=currentContentView.supplementalRepresentedObjects;if(supplementalRepresentedObjects&&supplementalRepresentedObjects.length)
representedObjects=representedObjects.concat(supplementalRepresentedObjects);}
return representedObjects;}
showContentViewForRepresentedObject(representedObject,cookie,extraArguments)
{var contentView=this.contentViewForRepresentedObject(representedObject,false,extraArguments);return this._contentViewContainer.showContentView(contentView,cookie);}
showContentView(contentView,cookie)
{return this._contentViewContainer.showContentView(contentView,cookie);}
contentViewForRepresentedObject(representedObject,onlyExisting,extraArguments)
{return this._contentViewContainer.contentViewForRepresentedObject(representedObject,onlyExisting,extraArguments);}
updateHierarchicalPathForCurrentContentView()
{var currentContentView=this.currentContentView;this._updateHierarchicalPathNavigationItem(currentContentView?currentContentView.representedObject:null);}
canGoBack()
{var currentContentView=this.currentContentView;if(currentContentView&&currentContentView.canGoBack())
return true;return this._contentViewContainer.canGoBack();}
canGoForward()
{var currentContentView=this.currentContentView;if(currentContentView&&currentContentView.canGoForward())
return true;return this._contentViewContainer.canGoForward();}
goBack()
{var currentContentView=this.currentContentView;if(currentContentView&&currentContentView.canGoBack()){currentContentView.goBack();this._updateBackForwardButtons();return;}
this._contentViewContainer.goBack();}
goForward()
{var currentContentView=this.currentContentView;if(currentContentView&&currentContentView.canGoForward()){currentContentView.goForward();this._updateBackForwardButtons();return;}
this._contentViewContainer.goForward();}
showFindBanner()
{if(!this._findBanner)
return;var currentContentView=this.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return;if(currentContentView.supportsCustomFindBanner){currentContentView.showCustomFindBanner();return;}
this._findBanner.show();}
findBannerPerformSearch(findBanner,query)
{var currentContentView=this.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return;currentContentView.performSearch(query);}
findBannerSearchCleared(findBanner)
{var currentContentView=this.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return;currentContentView.searchCleared();}
findBannerSearchQueryForSelection(findBanner)
{var currentContentView=this.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return null;return currentContentView.searchQueryWithSelection();}
findBannerRevealPreviousResult(findBanner)
{var currentContentView=this.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return;currentContentView.revealPreviousSearchResult(!findBanner.showing);}
findBannerRevealNextResult(findBanner)
{var currentContentView=this.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return;currentContentView.revealNextSearchResult(!findBanner.showing);}
shown()
{this._contentViewContainer.shown();if(this._findBanner)
this._findBanner.enableKeyboardShortcuts();}
hidden()
{this._contentViewContainer.hidden();if(this._findBanner)
this._findBanner.disableKeyboardShortcuts();}
_findBannerDidShow(event)
{var currentContentView=this.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return;currentContentView.automaticallyRevealFirstSearchResult=true;if(this._findBanner.searchQuery!=="")
currentContentView.performSearch(this._findBanner.searchQuery);}
_findBannerDidHide(event)
{var currentContentView=this.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return;currentContentView.automaticallyRevealFirstSearchResult=false;currentContentView.searchCleared();}
_contentViewNumberOfSearchResultsDidChange(event)
{if(!this._findBanner)
return;if(event.target!==this.currentContentView)
return;this._findBanner.numberOfResults=this.currentContentView.numberOfSearchResults;}
_updateHierarchicalPathNavigationItem(representedObject)
{if(!this.delegate||typeof this.delegate.contentBrowserTreeElementForRepresentedObject!=="function")
return;var treeElement=representedObject?this.delegate.contentBrowserTreeElementForRepresentedObject(this,representedObject):null;var pathComponents=[];while(treeElement&&!treeElement.root){var pathComponent=new WebInspector.GeneralTreeElementPathComponent(treeElement);pathComponents.unshift(pathComponent);treeElement=treeElement.parent;}
this._hierarchicalPathNavigationItem.components=pathComponents;}
_updateContentViewSelectionPathNavigationItem(contentView)
{var selectionPathComponents=contentView?contentView.selectionPathComponents||[]:[];this._contentViewSelectionPathNavigationItem.components=selectionPathComponents;if(!selectionPathComponents.length){this._hierarchicalPathNavigationItem.alwaysShowLastPathComponentSeparator=false;this._navigationBar.removeNavigationItem(this._contentViewSelectionPathNavigationItem);return;}
if(!this._navigationBar.navigationItems.includes(this._contentViewSelectionPathNavigationItem)){var hierarchicalPathItemIndex=this._navigationBar.navigationItems.indexOf(this._hierarchicalPathNavigationItem);this._navigationBar.insertNavigationItem(this._contentViewSelectionPathNavigationItem,hierarchicalPathItemIndex+1);this._hierarchicalPathNavigationItem.alwaysShowLastPathComponentSeparator=true;}}
_updateBackForwardButtons()
{if(!this._backNavigationItem||!this._forwardNavigationItem)
return;this._backNavigationItem.enabled=this.canGoBack();this._forwardNavigationItem.enabled=this.canGoForward();}
_updateContentViewNavigationItems(forceUpdate)
{let currentContentView=this.currentContentView;if(!currentContentView){this._removeAllNavigationItems();this._currentContentViewNavigationItems=[];return;}
if(currentContentView.parentContainer!==this._contentViewContainer)
return;if(!forceUpdate){let previousItems=this._currentContentViewNavigationItems.filter((item)=>!(item instanceof WebInspector.DividerNavigationItem));let isUnchanged=Array.shallowEqual(previousItems,currentContentView.navigationItems);if(isUnchanged)
return;}
this._removeAllNavigationItems();let navigationBar=this.navigationBar;let insertionIndex=navigationBar.navigationItems.indexOf(this._dividingFlexibleSpaceNavigationItem)+1;let newNavigationItems=[];currentContentView.navigationItems.forEach(function(navigationItem,index){if(index!==0||navigationItem instanceof WebInspector.ButtonNavigationItem){let divider=new WebInspector.DividerNavigationItem;navigationBar.insertNavigationItem(divider,insertionIndex++);newNavigationItems.push(divider);}
navigationBar.insertNavigationItem(navigationItem,insertionIndex++);newNavigationItems.push(navigationItem);});
this._currentContentViewNavigationItems=newNavigationItems;}
_removeAllNavigationItems()
{for(let navigationItem of this._currentContentViewNavigationItems){if(navigationItem.parentNavigationBar)
navigationItem.parentNavigationBar.removeNavigationItem(navigationItem);}}
_updateFindBanner(currentContentView)
{if(!this._findBanner)
return;if(!currentContentView){this._findBanner.targetElement=null;this._findBanner.numberOfResults=null;return;}
this._findBanner.targetElement=currentContentView.element;this._findBanner.numberOfResults=currentContentView.hasPerformedSearch?currentContentView.numberOfSearchResults:null;if(currentContentView.supportsSearch&&this._findBanner.searchQuery){currentContentView.automaticallyRevealFirstSearchResult=this._findBanner.showing;currentContentView.performSearch(this._findBanner.searchQuery);}}
_dispatchCurrentRepresentedObjectsDidChangeEvent()
{this._dispatchCurrentRepresentedObjectsDidChangeEvent.cancelDebounce();this.dispatchEventToListeners(WebInspector.ContentBrowser.Event.CurrentRepresentedObjectsDidChange);}
_contentViewSelectionPathComponentDidChange(event)
{if(event.target!==this.currentContentView)
return;this._updateContentViewSelectionPathNavigationItem(event.target);this._updateBackForwardButtons();this._updateContentViewNavigationItems();this._navigationBar.needsLayout();this.soon._dispatchCurrentRepresentedObjectsDidChangeEvent();}
_contentViewSupplementalRepresentedObjectsDidChange(event)
{if(event.target!==this.currentContentView)
return;this.soon._dispatchCurrentRepresentedObjectsDidChangeEvent();}
_currentContentViewDidChange(event)
{var currentContentView=this.currentContentView;this._updateHierarchicalPathNavigationItem(currentContentView?currentContentView.representedObject:null);this._updateContentViewSelectionPathNavigationItem(currentContentView);this._updateBackForwardButtons();this._updateContentViewNavigationItems();this._updateFindBanner(currentContentView);this._navigationBar.needsLayout();this.dispatchEventToListeners(WebInspector.ContentBrowser.Event.CurrentContentViewDidChange);this._dispatchCurrentRepresentedObjectsDidChangeEvent();}
_contentViewNavigationItemsDidChange(event)
{if(event.target!==this.currentContentView)
return;const forceUpdate=true;this._updateContentViewNavigationItems(forceUpdate);this._navigationBar.needsLayout();}
_hierarchicalPathComponentWasSelected(event)
{var treeElement=event.data.pathComponent.generalTreeElement;var originalTreeElement=treeElement;while(treeElement&&!WebInspector.ContentView.isViewable(treeElement.representedObject))
treeElement=treeElement.traverseNextTreeElement(false,originalTreeElement,false);if(!treeElement)
return;treeElement.revealAndSelect();}};WebInspector.ContentBrowser.Event={CurrentRepresentedObjectsDidChange:"content-browser-current-represented-objects-did-change",CurrentContentViewDidChange:"content-browser-current-content-view-did-change"};WebInspector.ContentView=class ContentView extends WebInspector.View
{constructor(representedObject,extraArguments)
{super();this._representedObject=representedObject;this.element.classList.add("content-view");this._parentContainer=null;}
static createFromRepresentedObject(representedObject,extraArguments)
{if(representedObject instanceof WebInspector.Frame)
return new WebInspector.ResourceClusterContentView(representedObject.mainResource,extraArguments);if(representedObject instanceof WebInspector.Resource)
return new WebInspector.ResourceClusterContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.Script)
return new WebInspector.ScriptContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.CSSStyleSheet)
return new WebInspector.TextResourceContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.Canvas)
return new WebInspector.CanvasContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.TimelineRecording)
return new WebInspector.TimelineRecordingContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.Timeline){var timelineType=representedObject.type;if(timelineType===WebInspector.TimelineRecord.Type.Network)
return new WebInspector.NetworkTimelineView(representedObject,extraArguments);if(timelineType===WebInspector.TimelineRecord.Type.Layout)
return new WebInspector.LayoutTimelineView(representedObject,extraArguments);if(timelineType===WebInspector.TimelineRecord.Type.Script)
return new WebInspector.ScriptClusterTimelineView(representedObject,extraArguments);if(timelineType===WebInspector.TimelineRecord.Type.RenderingFrame)
return new WebInspector.RenderingFrameTimelineView(representedObject,extraArguments);if(timelineType===WebInspector.TimelineRecord.Type.Memory)
return new WebInspector.MemoryTimelineView(representedObject,extraArguments);if(timelineType===WebInspector.TimelineRecord.Type.HeapAllocations)
return new WebInspector.HeapAllocationsTimelineView(representedObject,extraArguments);}
if(representedObject instanceof WebInspector.Breakpoint||representedObject instanceof WebInspector.IssueMessage){if(representedObject.sourceCodeLocation)
return WebInspector.ContentView.createFromRepresentedObject(representedObject.sourceCodeLocation.displaySourceCode,extraArguments);}
if(representedObject instanceof WebInspector.DOMStorageObject)
return new WebInspector.DOMStorageContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.CookieStorageObject)
return new WebInspector.CookieStorageContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.DatabaseTableObject)
return new WebInspector.DatabaseTableContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.DatabaseObject)
return new WebInspector.DatabaseContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.IndexedDatabase)
return new WebInspector.IndexedDatabaseContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.IndexedDatabaseObjectStore)
return new WebInspector.IndexedDatabaseObjectStoreContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.IndexedDatabaseObjectStoreIndex)
return new WebInspector.IndexedDatabaseObjectStoreContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.ApplicationCacheFrame)
return new WebInspector.ApplicationCacheFrameContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.DOMTree)
return new WebInspector.FrameDOMTreeContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.DOMSearchMatchObject){var resultView=new WebInspector.FrameDOMTreeContentView(WebInspector.frameResourceManager.mainFrame.domTree,extraArguments);resultView.restoreFromCookie({nodeToSelect:representedObject.domNode});return resultView;}
if(representedObject instanceof WebInspector.DOMNode){if(representedObject.frame){let resultView=WebInspector.ContentView.createFromRepresentedObject(representedObject.frame,extraArguments);resultView.restoreFromCookie({nodeToSelect:representedObject});return resultView;}}
if(representedObject instanceof WebInspector.SourceCodeSearchMatchObject){var resultView;if(representedObject.sourceCode instanceof WebInspector.Resource)
resultView=new WebInspector.ResourceClusterContentView(representedObject.sourceCode,extraArguments);else if(representedObject.sourceCode instanceof WebInspector.Script)
resultView=new WebInspector.ScriptContentView(representedObject.sourceCode,extraArguments);else
console.error("Unknown SourceCode",representedObject.sourceCode);var textRangeToSelect=representedObject.sourceCodeTextRange.formattedTextRange;var startPosition=textRangeToSelect.startPosition();resultView.restoreFromCookie({lineNumber:startPosition.lineNumber,columnNumber:startPosition.columnNumber});return resultView;}
if(representedObject instanceof WebInspector.LogObject)
return new WebInspector.LogContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.ContentFlow)
return new WebInspector.ContentFlowDOMTreeContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.CallingContextTree)
return new WebInspector.ProfileView(representedObject,extraArguments);if(representedObject instanceof WebInspector.HeapSnapshotProxy||representedObject instanceof WebInspector.HeapSnapshotDiffProxy)
return new WebInspector.HeapSnapshotClusterContentView(representedObject,extraArguments);if(representedObject instanceof WebInspector.Collection)
return new WebInspector.CollectionContentView(representedObject,extraArguments);if(typeof representedObject==="string"||representedObject instanceof String)
return new WebInspector.TextContentView(representedObject,extraArguments);throw new Error("Can't make a ContentView for an unknown representedObject of type: "+representedObject.constructor.name);}
static contentViewForRepresentedObject(representedObject,onlyExisting,extraArguments)
{let resolvedRepresentedObject=WebInspector.ContentView.resolvedRepresentedObjectForRepresentedObject(representedObject);if(!resolvedRepresentedObject)
return null;let existingContentView=resolvedRepresentedObject[WebInspector.ContentView.ContentViewForRepresentedObjectSymbol];if(existingContentView)
return existingContentView;if(onlyExisting)
return null;let newContentView=WebInspector.ContentView.createFromRepresentedObject(representedObject,extraArguments);if(!newContentView)
return null;newContentView.representedObject[WebInspector.ContentView.ContentViewForRepresentedObjectSymbol]=newContentView;return newContentView;}
static closedContentViewForRepresentedObject(representedObject)
{let resolvedRepresentedObject=WebInspector.ContentView.resolvedRepresentedObjectForRepresentedObject(representedObject);resolvedRepresentedObject[WebInspector.ContentView.ContentViewForRepresentedObjectSymbol]=null;}
static resolvedRepresentedObjectForRepresentedObject(representedObject)
{if(representedObject instanceof WebInspector.Frame)
return representedObject.mainResource;if(representedObject instanceof WebInspector.Breakpoint||representedObject instanceof WebInspector.IssueMessage){if(representedObject.sourceCodeLocation)
return representedObject.sourceCodeLocation.displaySourceCode;}
if(representedObject instanceof WebInspector.DOMBreakpoint){if(representedObject.domNode)
return WebInspector.ContentView.resolvedRepresentedObjectForRepresentedObject(representedObject.domNode);}
if(representedObject instanceof WebInspector.DOMNode){if(representedObject.frame)
return WebInspector.ContentView.resolvedRepresentedObjectForRepresentedObject(representedObject.frame);}
if(representedObject instanceof WebInspector.DOMSearchMatchObject)
return WebInspector.frameResourceManager.mainFrame.domTree;if(representedObject instanceof WebInspector.SourceCodeSearchMatchObject)
return representedObject.sourceCode;return representedObject;}
static isViewable(representedObject)
{if(representedObject instanceof WebInspector.Frame)
return true;if(representedObject instanceof WebInspector.Resource)
return true;if(representedObject instanceof WebInspector.Script)
return true;if(representedObject instanceof WebInspector.CSSStyleSheet)
return true;if(representedObject instanceof WebInspector.Canvas)
return true;if(representedObject instanceof WebInspector.TimelineRecording)
return true;if(representedObject instanceof WebInspector.Timeline)
return true;if(representedObject instanceof WebInspector.Breakpoint||representedObject instanceof WebInspector.IssueMessage)
return representedObject.sourceCodeLocation;if(representedObject instanceof WebInspector.DOMStorageObject)
return true;if(representedObject instanceof WebInspector.CookieStorageObject)
return true;if(representedObject instanceof WebInspector.DatabaseTableObject)
return true;if(representedObject instanceof WebInspector.DatabaseObject)
return true;if(representedObject instanceof WebInspector.IndexedDatabase)
return true;if(representedObject instanceof WebInspector.IndexedDatabaseObjectStore)
return true;if(representedObject instanceof WebInspector.IndexedDatabaseObjectStoreIndex)
return true;if(representedObject instanceof WebInspector.ApplicationCacheFrame)
return true;if(representedObject instanceof WebInspector.DOMTree)
return true;if(representedObject instanceof WebInspector.DOMSearchMatchObject)
return true;if(representedObject instanceof WebInspector.SourceCodeSearchMatchObject)
return true;if(representedObject instanceof WebInspector.LogObject)
return true;if(representedObject instanceof WebInspector.ContentFlow)
return true;if(representedObject instanceof WebInspector.CallingContextTree)
return true;if(representedObject instanceof WebInspector.HeapSnapshotProxy||representedObject instanceof WebInspector.HeapSnapshotDiffProxy)
return true;if(representedObject instanceof WebInspector.Collection)
return true;if(typeof representedObject==="string"||representedObject instanceof String)
return true;return false;}
get representedObject()
{return this._representedObject;}
get navigationItems()
{return[];}
get parentContainer()
{return this._parentContainer;}
get visible()
{return this._visible;}
set visible(flag)
{this._visible=flag;}
get scrollableElements()
{return[];}
get shouldKeepElementsScrolledToBottom()
{return false;}
get selectionPathComponents()
{return[];}
get supplementalRepresentedObjects()
{return[];}
get supportsSplitContentBrowser()
{return WebInspector.dockedConfigurationSupportsSplitContentBrowser();}
shown()
{}
hidden()
{}
closed()
{}
saveToCookie(cookie)
{}
restoreFromCookie(cookie)
{}
canGoBack()
{return false;}
canGoForward()
{return false;}
goBack()
{}
goForward()
{}
get supportsSearch()
{return false;}
get supportsCustomFindBanner()
{return false;}
showCustomFindBanner()
{}
get numberOfSearchResults()
{return null;}
get hasPerformedSearch()
{return false;}
set automaticallyRevealFirstSearchResult(reveal)
{}
performSearch(query)
{}
searchCleared()
{}
searchQueryWithSelection()
{return null;}
revealPreviousSearchResult(changeFocus)
{}
revealNextSearchResult(changeFocus)
{}};WebInspector.ContentView.Event={SelectionPathComponentsDidChange:"content-view-selection-path-components-did-change",SupplementalRepresentedObjectsDidChange:"content-view-supplemental-represented-objects-did-change",NumberOfSearchResultsDidChange:"content-view-number-of-search-results-did-change",NavigationItemsDidChange:"content-view-navigation-items-did-change"};WebInspector.ContentView.ContentViewForRepresentedObjectSymbol=Symbol("content-view-for-represented-object");WebInspector.DataGrid=class DataGrid extends WebInspector.View
{constructor(columnsData,editCallback,deleteCallback,preferredColumnOrder)
{super();this.columns=new Map;this.orderedColumns=[];this._settingsIdentifier=null;this._sortColumnIdentifier=null;this._sortColumnIdentifierSetting=null;this._sortOrder=WebInspector.DataGrid.SortOrder.Indeterminate;this._sortOrderSetting=null;this._columnVisibilitySetting=null;this._columnChooserEnabled=false;this._headerVisible=true;this._rows=[];this.children=[];this.selectedNode=null;this.expandNodesWhenArrowing=false;this.root=true;this.hasChildren=false;this.expanded=true;this.revealed=true;this.selected=false;this.dataGrid=this;this.indentWidth=15;this.rowHeight=20;this.resizers=[];this._columnWidthsInitialized=false;this._scrollbarWidth=0;this._cachedScrollTop=NaN;this._cachedScrollableOffsetHeight=NaN;this._previousRevealedRowCount=NaN;this._topDataTableMarginHeight=NaN;this._bottomDataTableMarginHeight=NaN;this._filterText="";this._filterDelegate=null;this._filterDidModifyNodeWhileProcessingItems=false;this.element.className="data-grid";this.element.tabIndex=0;this.element.addEventListener("keydown",this._keyDown.bind(this),false);this.element.copyHandler=this;this._headerWrapperElement=document.createElement("div");this._headerWrapperElement.classList.add("header-wrapper");this._headerTableElement=document.createElement("table");this._headerTableElement.className="header";this._headerWrapperElement.appendChild(this._headerTableElement);this._headerTableColumnGroupElement=this._headerTableElement.createChild("colgroup");this._headerTableBodyElement=this._headerTableElement.createChild("tbody");this._headerTableRowElement=this._headerTableBodyElement.createChild("tr");this._headerTableRowElement.addEventListener("contextmenu",this._contextMenuInHeader.bind(this),true);this._headerTableCellElements=new Map;this._scrollContainerElement=document.createElement("div");this._scrollContainerElement.className="data-container";this._scrollListener=()=>this._noteScrollPositionChanged();this._updateScrollListeners();this._topDataTableMarginElement=this._scrollContainerElement.createChild("div");this._dataTableElement=this._scrollContainerElement.createChild("table","data");this._bottomDataTableMarginElement=this._scrollContainerElement.createChild("div");this._dataTableElement.addEventListener("mousedown",this._mouseDownInDataTable.bind(this));this._dataTableElement.addEventListener("click",this._clickInDataTable.bind(this));this._dataTableElement.addEventListener("contextmenu",this._contextMenuInDataTable.bind(this),true);
if(editCallback){this._dataTableElement.addEventListener("dblclick",this._ondblclick.bind(this),false);this._editCallback=editCallback;}
if(deleteCallback)
this._deleteCallback=deleteCallback;this._dataTableColumnGroupElement=this._headerTableColumnGroupElement.cloneNode(true);this._dataTableElement.appendChild(this._dataTableColumnGroupElement);this.dataTableBodyElement=this._dataTableElement.createChild("tbody");this._fillerRowElement=this.dataTableBodyElement.createChild("tr","filler");this.element.appendChild(this._headerWrapperElement);this.element.appendChild(this._scrollContainerElement);if(preferredColumnOrder){for(var columnIdentifier of preferredColumnOrder)
this.insertColumn(columnIdentifier,columnsData[columnIdentifier]);}else{for(var columnIdentifier in columnsData)
this.insertColumn(columnIdentifier,columnsData[columnIdentifier]);}
this._updateScrollbarPadding();this._copyTextDelimiter="\t";}
_updateScrollbarPadding()
{if(this._inline)
return;let scrollbarWidth=this._scrollContainerElement.offsetWidth-this._scrollContainerElement.scrollWidth;if(this._scrollbarWidth===scrollbarWidth)
return;if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL)
this._headerWrapperElement.style.setProperty("padding-left",`${scrollbarWidth}px`);else
this._headerWrapperElement.style.setProperty("padding-right",`${scrollbarWidth}px`);this._scrollbarWidth=scrollbarWidth;}
static createSortableDataGrid(columnNames,values)
{var numColumns=columnNames.length;if(!numColumns)
return null;var columnsData={};for(var columnName of columnNames){columnsData[columnName]={width:columnName.length,title:columnName,sortable:true,};}
var dataGrid=new WebInspector.DataGrid(columnsData,undefined,undefined,columnNames);for(var i=0;i<values.length/numColumns;++i){var data={};for(var j=0;j<columnNames.length;++j)
data[columnNames[j]]=values[numColumns*i+j];var node=new WebInspector.DataGridNode(data,false);dataGrid.appendChild(node);}
function sortDataGrid()
{var sortColumnIdentifier=dataGrid.sortColumnIdentifier;var columnIsNumeric=true;for(var node of dataGrid.children){var value=dataGrid.textForDataGridNodeColumn(node,sortColumnIdentifier);if(isNaN(Number(value)))
columnIsNumeric=false;}
function comparator(dataGridNode1,dataGridNode2)
{var item1=dataGrid.textForDataGridNodeColumn(dataGridNode1,sortColumnIdentifier);var item2=dataGrid.textForDataGridNodeColumn(dataGridNode2,sortColumnIdentifier);var comparison;if(columnIsNumeric){var number1=parseFloat(item1);var number2=parseFloat(item2);comparison=number1<number2?-1:(number1>number2?1:0);}else
comparison=item1<item2?-1:(item1>item2?1:0);return comparison;}
dataGrid.sortNodes(comparator);}
dataGrid.addEventListener(WebInspector.DataGrid.Event.SortChanged,sortDataGrid,this);dataGrid.sortOrder=WebInspector.DataGrid.SortOrder.Ascending;dataGrid.sortColumnIdentifier=columnNames[0];return dataGrid;}
get headerVisible(){return this._headerVisible;}
set headerVisible(x)
{if(x===this._headerVisible)
return;this._headerVisible=x;this.element.classList.toggle("no-header",!this._headerVisible);}
get columnChooserEnabled(){return this._columnChooserEnabled;}
set columnChooserEnabled(x){this._columnChooserEnabled=x;}
get refreshCallback()
{return this._refreshCallback;}
set refreshCallback(refreshCallback)
{this._refreshCallback=refreshCallback;}
get sortOrder()
{return this._sortOrder;}
set sortOrder(order)
{if(!order||order===this._sortOrder)
return;this._sortOrder=order;if(this._sortOrderSetting)
this._sortOrderSetting.value=this._sortOrder;if(!this._sortColumnIdentifier)
return;var sortHeaderCellElement=this._headerTableCellElements.get(this._sortColumnIdentifier);sortHeaderCellElement.classList.toggle(WebInspector.DataGrid.SortColumnAscendingStyleClassName,this._sortOrder===WebInspector.DataGrid.SortOrder.Ascending);sortHeaderCellElement.classList.toggle(WebInspector.DataGrid.SortColumnDescendingStyleClassName,this._sortOrder===WebInspector.DataGrid.SortOrder.Descending);this.dispatchEventToListeners(WebInspector.DataGrid.Event.SortChanged);}
get sortColumnIdentifier()
{return this._sortColumnIdentifier;}
set sortColumnIdentifier(columnIdentifier)
{if(this._sortColumnIdentifier===columnIdentifier)
return;let oldSortColumnIdentifier=this._sortColumnIdentifier;this._sortColumnIdentifier=columnIdentifier;this._updateSortedColumn(oldSortColumnIdentifier);}
get inline(){return this._inline;}
set inline(x)
{if(this._inline===x)
return;this._inline=x||false;this._element.classList.toggle("inline",this._inline);this._updateScrollListeners();}
get variableHeightRows(){return this._variableHeightRows;}
set variableHeightRows(x)
{if(this._variableHeightRows===x)
return;this._variableHeightRows=x||false;this._element.classList.toggle("variable-height-rows",this._variableHeightRows);this._updateScrollListeners();}
get filterText(){return this._filterText;}
set filterText(x)
{if(this._filterText===x)
return;this._filterText=x;this.filterDidChange();}
get filterDelegate(){return this._filterDelegate;}
set filterDelegate(delegate)
{this._filterDelegate=delegate;this.filterDidChange();}
filterDidChange()
{if(this._scheduledFilterUpdateIdentifier)
return;if(this._applyFilterToNodesTask){this._applyFilterToNodesTask.cancel();this._applyFilterToNodesTask=null;}
this._scheduledFilterUpdateIdentifier=requestAnimationFrame(this._updateFilter.bind(this));}
hasFilters()
{return this._textFilterRegex||this._hasFilterDelegate();}
matchNodeAgainstCustomFilters(node)
{if(!this._hasFilterDelegate())
return true;return this._filterDelegate.dataGridMatchNodeAgainstCustomFilters(node);}
createSettings(identifier)
{if(this._settingsIdentifier===identifier)
return;this._settingsIdentifier=identifier;this._sortColumnIdentifierSetting=new WebInspector.Setting(this._settingsIdentifier+"-sort",this._sortColumnIdentifier);this._sortOrderSetting=new WebInspector.Setting(this._settingsIdentifier+"-sort-order",this._sortOrder);this._columnVisibilitySetting=new WebInspector.Setting(this._settingsIdentifier+"-column-visibility",{});if(!this.columns)
return;if(this._sortColumnIdentifierSetting.value){this.sortColumnIdentifier=this._sortColumnIdentifierSetting.value;this.sortOrder=this._sortOrderSetting.value;}
let visibilitySettings=this._columnVisibilitySetting.value;for(let columnIdentifier in visibilitySettings){let visible=visibilitySettings[columnIdentifier];this.setColumnVisible(columnIdentifier,visible);}}
_updateScrollListeners()
{if(this._inline||this._variableHeightRows){this._scrollContainerElement.removeEventListener("scroll",this._scrollListener);this._scrollContainerElement.removeEventListener("mousewheel",this._scrollListener);}else{this._scrollContainerElement.addEventListener("scroll",this._scrollListener);this._scrollContainerElement.addEventListener("mousewheel",this._scrollListener);}}
_applyFiltersToNodeAndDispatchEvent(node)
{const nodeWasHidden=node.hidden;this._applyFiltersToNode(node);if(nodeWasHidden!==node.hidden)
this.dispatchEventToListeners(WebInspector.DataGrid.Event.NodeWasFiltered,{node});return nodeWasHidden!==node.hidden;}
_applyFiltersToNode(node)
{if(!this.hasFilters()){node.hidden=false;if(node.expanded&&node[WebInspector.DataGrid.WasExpandedDuringFilteringSymbol]){node[WebInspector.DataGrid.WasExpandedDuringFilteringSymbol]=false;node.collapse();}
return;}
let filterableData=node.filterableData||[];let flags={expandNode:false};let filterRegex=this._textFilterRegex;function matchTextFilter()
{if(!filterableData.length||!filterRegex)
return true;if(filterableData.some((value)=>filterRegex.test(value))){flags.expandNode=true;return true;}
return false;}
function makeVisible()
{node.hidden=false;let currentAncestor=node.parent;while(currentAncestor&&!currentAncestor.root){currentAncestor.hidden=false;if(flags.expandNode&&!currentAncestor.expanded){currentAncestor[WebInspector.DataGrid.WasExpandedDuringFilteringSymbol]=true;currentAncestor.expand();}
currentAncestor=currentAncestor.parent;}}
if(matchTextFilter()&&this.matchNodeAgainstCustomFilters(node)){makeVisible();if(!flags.expandNode&&node.expanded&&node[WebInspector.DataGrid.WasExpandedDuringFilteringSymbol]){node[WebInspector.DataGrid.WasExpandedDuringFilteringSymbol]=false;node.collapse();}
return;}
node.hidden=true;}
_updateSortedColumn(oldSortColumnIdentifier)
{if(this._sortColumnIdentifierSetting)
this._sortColumnIdentifierSetting.value=this._sortColumnIdentifier;if(oldSortColumnIdentifier){let oldSortHeaderCellElement=this._headerTableCellElements.get(oldSortColumnIdentifier);oldSortHeaderCellElement.classList.remove(WebInspector.DataGrid.SortColumnAscendingStyleClassName);oldSortHeaderCellElement.classList.remove(WebInspector.DataGrid.SortColumnDescendingStyleClassName);}
if(this._sortColumnIdentifier){let newSortHeaderCellElement=this._headerTableCellElements.get(this._sortColumnIdentifier);newSortHeaderCellElement.classList.toggle(WebInspector.DataGrid.SortColumnAscendingStyleClassName,this._sortOrder===WebInspector.DataGrid.SortOrder.Ascending);newSortHeaderCellElement.classList.toggle(WebInspector.DataGrid.SortColumnDescendingStyleClassName,this._sortOrder===WebInspector.DataGrid.SortOrder.Descending);}
this.dispatchEventToListeners(WebInspector.DataGrid.Event.SortChanged);}
_hasFilterDelegate()
{return this._filterDelegate&&typeof this._filterDelegate.dataGridMatchNodeAgainstCustomFilters==="function";}
_ondblclick(event)
{if(this._editing||this._editingNode)
return;this._startEditing(event.target);}
_startEditingNodeAtColumnIndex(node,columnIndex)
{this._editing=true;this._editingNode=node;this._editingNode.select();var element=this._editingNode._element.children[columnIndex];WebInspector.startEditing(element,this._startEditingConfig(element));window.getSelection().setBaseAndExtent(element,0,element,1);}
_startEditing(target)
{var element=target.enclosingNodeOrSelfWithNodeName("td");if(!element)
return;this._editingNode=this.dataGridNodeFromNode(target);if(!this._editingNode){if(!this.placeholderNode)
return;this._editingNode=this.placeholderNode;}
if(this._editingNode.isPlaceholderNode)
return this._startEditingNodeAtColumnIndex(this._editingNode,0);this._editing=true;WebInspector.startEditing(element,this._startEditingConfig(element));window.getSelection().setBaseAndExtent(element,0,element,1);}
_startEditingConfig(element)
{return new WebInspector.EditingConfig(this._editingCommitted.bind(this),this._editingCancelled.bind(this),element.textContent);}
_editingCommitted(element,newText,oldText,context,moveDirection)
{var columnIdentifier=element.__columnIdentifier;var columnIndex=this.orderedColumns.indexOf(columnIdentifier);var textBeforeEditing=this._editingNode.data[columnIdentifier]||"";var currentEditingNode=this._editingNode;
function determineNextCell(valueDidChange){if(moveDirection==="forward"){if(columnIndex<this.orderedColumns.length-1)
return{shouldSort:false,editingNode:currentEditingNode,columnIndex:columnIndex+1};var nextDataGridNode=currentEditingNode.traverseNextNode(true,null,true);return{shouldSort:true,editingNode:nextDataGridNode||currentEditingNode,columnIndex:0};}
if(moveDirection==="backward"){if(columnIndex>0)
return{shouldSort:false,editingNode:currentEditingNode,columnIndex:columnIndex-1};var previousDataGridNode=currentEditingNode.traversePreviousNode(true,null,true);return{shouldSort:true,editingNode:previousDataGridNode||currentEditingNode,columnIndex:this.orderedColumns.length-1};}
return{shouldSort:true};}
function moveToNextCell(valueDidChange){var moveCommand=determineNextCell.call(this,valueDidChange);if(moveCommand.shouldSort&&this._sortAfterEditingCallback){this._sortAfterEditingCallback();this._sortAfterEditingCallback=null;}
if(moveCommand.editingNode)
this._startEditingNodeAtColumnIndex(moveCommand.editingNode,moveCommand.columnIndex);}
this._editingCancelled(element);currentEditingNode.data[columnIdentifier]=newText.trim();this._editCallback(currentEditingNode,columnIdentifier,textBeforeEditing,newText,moveDirection);var textDidChange=textBeforeEditing.trim()!==newText.trim();moveToNextCell.call(this,textDidChange);}
_editingCancelled(element)
{this._editingNode.refresh();this._editing=false;this._editingNode=null;}
autoSizeColumns(minPercent,maxPercent,maxDescentLevel)
{if(minPercent)
minPercent=Math.min(minPercent,Math.floor(100/this.orderedColumns.length));var widths={};for(var[identifier,column]of this.columns)
widths[identifier]=(column["title"]||"").length;var children=maxDescentLevel?this._enumerateChildren(this,[],maxDescentLevel+1):this.children;for(var node of children){for(var identifier of this.columns.keys()){var text=this.textForDataGridNodeColumn(node,identifier);if(text.length>widths[identifier])
widths[identifier]=text.length;}}
var totalColumnWidths=0;for(var identifier of this.columns.keys())
totalColumnWidths+=widths[identifier];var recoupPercent=0;for(var identifier of this.columns.keys()){var width=Math.round(100*widths[identifier]/totalColumnWidths);if(minPercent&&width<minPercent){recoupPercent+=(minPercent-width);width=minPercent;}else if(maxPercent&&width>maxPercent){recoupPercent-=(width-maxPercent);width=maxPercent;}
widths[identifier]=width;}
while(minPercent&&recoupPercent>0){for(var identifier of this.columns.keys()){if(widths[identifier]>minPercent){--widths[identifier];--recoupPercent;if(!recoupPercent)
break;}}}
while(maxPercent&&recoupPercent<0){for(var identifier of this.columns.keys()){if(widths[identifier]<maxPercent){++widths[identifier];++recoupPercent;if(!recoupPercent)
break;}}}
for(var[identifier,column]of this.columns){column["element"].style.width=widths[identifier]+"%";column["bodyElement"].style.width=widths[identifier]+"%";}
this._columnWidthsInitialized=false;this.needsLayout();}
insertColumn(columnIdentifier,columnData,insertionIndex)
{if(insertionIndex===undefined)
insertionIndex=this.orderedColumns.length;insertionIndex=Number.constrain(insertionIndex,0,this.orderedColumns.length);var listeners=new WebInspector.EventListenerSet(this,"DataGrid column DOM listeners");var column=Object.shallowCopy(columnData);column["listeners"]=listeners;column["ordinal"]=insertionIndex;column["columnIdentifier"]=columnIdentifier;this.orderedColumns.splice(insertionIndex,0,columnIdentifier);for(var[identifier,existingColumn]of this.columns){var ordinal=existingColumn["ordinal"];if(ordinal>=insertionIndex)
existingColumn["ordinal"]=ordinal+1;}
this.columns.set(columnIdentifier,column);if(column["disclosure"])
this.disclosureColumnIdentifier=columnIdentifier;var headerColumnElement=document.createElement("col");if(column["width"])
headerColumnElement.style.width=column["width"];column["element"]=headerColumnElement;var referenceElement=this._headerTableColumnGroupElement.children[insertionIndex];this._headerTableColumnGroupElement.insertBefore(headerColumnElement,referenceElement);var headerCellElement=document.createElement("th");headerCellElement.className=columnIdentifier+"-column";headerCellElement.columnIdentifier=columnIdentifier;if(column["aligned"])
headerCellElement.classList.add(column["aligned"]);this._headerTableCellElements.set(columnIdentifier,headerCellElement);var referenceElement=this._headerTableRowElement.children[insertionIndex];this._headerTableRowElement.insertBefore(headerCellElement,referenceElement);if(column["headerView"]){let headerView=column["headerView"];headerCellElement.appendChild(headerView.element);this.addSubview(headerView);}else{let titleElement=headerCellElement.createChild("div");if(column["titleDOMFragment"])
titleElement.appendChild(column["titleDOMFragment"]);else
titleElement.textContent=column["title"]||"";}
if(column["sortable"]){listeners.register(headerCellElement,"click",this._headerCellClicked);headerCellElement.classList.add(WebInspector.DataGrid.SortableColumnStyleClassName);}
if(column["group"])
headerCellElement.classList.add("column-group-"+column["group"]);if(column["tooltip"])
headerCellElement.title=column["tooltip"];if(column["collapsesGroup"]){headerCellElement.createChild("div","divider");var collapseDiv=headerCellElement.createChild("div","collapser-button");collapseDiv.title=this._collapserButtonCollapseColumnsToolTip();listeners.register(collapseDiv,"mouseover",this._mouseoverColumnCollapser);listeners.register(collapseDiv,"mouseout",this._mouseoutColumnCollapser);listeners.register(collapseDiv,"click",this._clickInColumnCollapser);headerCellElement.collapsesGroup=column["collapsesGroup"];headerCellElement.classList.add("collapser");}
this._headerTableColumnGroupElement.span=this.orderedColumns.length;var dataColumnElement=headerColumnElement.cloneNode();var referenceElement=this._dataTableColumnGroupElement.children[insertionIndex];this._dataTableColumnGroupElement.insertBefore(dataColumnElement,referenceElement);column["bodyElement"]=dataColumnElement;var fillerCellElement=document.createElement("td");fillerCellElement.className=columnIdentifier+"-column";fillerCellElement.__columnIdentifier=columnIdentifier;if(column["group"])
fillerCellElement.classList.add("column-group-"+column["group"]);var referenceElement=this._fillerRowElement.children[insertionIndex];this._fillerRowElement.insertBefore(fillerCellElement,referenceElement);listeners.install();this.setColumnVisible(columnIdentifier,!column.hidden);}
removeColumn(columnIdentifier)
{var removedColumn=this.columns.get(columnIdentifier);this.columns.delete(columnIdentifier);this.orderedColumns.splice(this.orderedColumns.indexOf(columnIdentifier),1);var removedOrdinal=removedColumn["ordinal"];for(var[identifier,column]of this.columns){var ordinal=column["ordinal"];if(ordinal>removedOrdinal)
column["ordinal"]=ordinal-1;}
removedColumn["listeners"].uninstall(true);if(removedColumn["disclosure"])
this.disclosureColumnIdentifier=undefined;if(this.sortColumnIdentifier===columnIdentifier)
this.sortColumnIdentifier=null;this._headerTableCellElements.delete(columnIdentifier);this._headerTableRowElement.children[removedOrdinal].remove();this._headerTableColumnGroupElement.children[removedOrdinal].remove();this._dataTableColumnGroupElement.children[removedOrdinal].remove();this._fillerRowElement.children[removedOrdinal].remove();this._headerTableColumnGroupElement.span=this.orderedColumns.length;for(var child of this.children)
child.refresh();}
_enumerateChildren(rootNode,result,maxLevel)
{if(!rootNode.root)
result.push(rootNode);if(!maxLevel)
return;for(var i=0;i<rootNode.children.length;++i)
this._enumerateChildren(rootNode.children[i],result,maxLevel-1);return result;}
layout()
{if(!this._columnWidthsInitialized&&this.element.offsetWidth){
let headerTableColumnElements=this._headerTableColumnGroupElement.children;let tableWidth=this._dataTableElement.offsetWidth;let numColumns=headerTableColumnElements.length;let cells=this._headerTableBodyElement.rows[0].cells;let columnWidths=[];for(let i=0;i<numColumns;++i){let headerCellElement=cells[i];if(this._isColumnVisible(headerCellElement.columnIdentifier)){let columnWidth=headerCellElement.offsetWidth;let percentWidth=((columnWidth/tableWidth)*100)+"%";columnWidths.push(percentWidth);}else
columnWidths.push(0);}
for(let i=0;i<numColumns;i++){let percentWidth=columnWidths[i];this._headerTableColumnGroupElement.children[i].style.width=percentWidth;this._dataTableColumnGroupElement.children[i].style.width=percentWidth;}
this._columnWidthsInitialized=true;this._updateHeaderAndScrollbar();}
this._updateVisibleRows();}
sizeDidChange()
{this._updateHeaderAndScrollbar();}
_updateHeaderAndScrollbar()
{this._positionResizerElements();this._positionHeaderViews();this._updateScrollbarPadding();this._cachedScrollTop=NaN;this._cachedScrollableOffsetHeight=NaN;}
columnWidthsMap()
{var result={};for(var[identifier,column]of this.columns){var width=this._headerTableColumnGroupElement.children[column["ordinal"]].style.width;result[identifier]=parseFloat(width);}
return result;}
applyColumnWidthsMap(columnWidthsMap)
{for(var[identifier,column]of this.columns){var width=(columnWidthsMap[identifier]||0)+"%";var ordinal=column["ordinal"];this._headerTableColumnGroupElement.children[ordinal].style.width=width;this._dataTableColumnGroupElement.children[ordinal].style.width=width;}
this.needsLayout();}
_isColumnVisible(columnIdentifier)
{return!this.columns.get(columnIdentifier)["hidden"];}
setColumnVisible(columnIdentifier,visible)
{let column=this.columns.get(columnIdentifier);if(!column||visible===!column.hidden)
return;column.element.style.width=visible?column.width:0;column.hidden=!visible;if(this._columnVisibilitySetting){if(this._columnVisibilitySetting.value[columnIdentifier]!==visible){let copy=Object.shallowCopy(this._columnVisibilitySetting.value);copy[columnIdentifier]=visible;this._columnVisibilitySetting.value=copy;}}
this._columnWidthsInitialized=false;this.updateLayout();}
get scrollContainer()
{return this._scrollContainerElement;}
isScrolledToLastRow()
{return this._scrollContainerElement.isScrolledToBottom();}
scrollToLastRow()
{this._scrollContainerElement.scrollTop=this._scrollContainerElement.scrollHeight-this._scrollContainerElement.offsetHeight;}
_positionResizerElements()
{let leadingOffset=0;var previousResizer=null;var numResizers=this.orderedColumns.length-1;
var cells=this._headerTableBodyElement.rows[0].cells;var columnWidths=[];for(var i=0;i<numResizers;++i){leadingOffset+=cells[i].getBoundingClientRect().width;columnWidths.push(leadingOffset);}
for(var i=0;i<numResizers;++i){var resizer=this.resizers[i];if(!resizer){resizer=this.resizers[i]=new WebInspector.Resizer(WebInspector.Resizer.RuleOrientation.Vertical,this);this.element.appendChild(resizer.element);}
leadingOffset=columnWidths[i];if(this._isColumnVisible(this.orderedColumns[i])){resizer.element.style.removeProperty("display");resizer.element.style.setProperty(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"right":"left",`${leadingOffset}px`);resizer[WebInspector.DataGrid.PreviousColumnOrdinalSymbol]=i;if(previousResizer)
previousResizer[WebInspector.DataGrid.NextColumnOrdinalSymbol]=i;previousResizer=resizer;}else{resizer.element.style.setProperty("display","none");resizer[WebInspector.DataGrid.PreviousColumnOrdinalSymbol]=0;resizer[WebInspector.DataGrid.NextColumnOrdinalSymbol]=0;}}
if(previousResizer)
previousResizer[WebInspector.DataGrid.NextColumnOrdinalSymbol]=this.orderedColumns.length-1;}
_positionHeaderViews()
{let leadingOffset=0;let headerViews=[];let offsets=[];let columnWidths=[];for(let columnIdentifier of this.orderedColumns){let column=this.columns.get(columnIdentifier);if(!column)
continue;let columnWidth=this._headerTableCellElements.get(columnIdentifier).offsetWidth;let headerView=column["headerView"];if(headerView){headerViews.push(headerView);offsets.push(leadingOffset);columnWidths.push(columnWidth);}
leadingOffset+=columnWidth;}
for(let i=0;i<headerViews.length;++i){let headerView=headerViews[i];headerView.element.style.setProperty(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"right":"left",`${offsets[i]}px`);headerView.element.style.width=columnWidths[i]+"px";headerView.updateLayout(WebInspector.View.LayoutReason.Resize);}}
_noteRowsChanged()
{this._previousRevealedRowCount=NaN;this.needsLayout();}
_noteRowRemoved(dataGridNode)
{if(this._inline||this._variableHeightRows){
if(dataGridNode.element&&dataGridNode.element.parentNode)
dataGridNode.element.parentNode.removeChild(dataGridNode.element);return;}
this._noteRowsChanged();}
_noteScrollPositionChanged()
{this._cachedScrollTop=NaN;this.needsLayout();}
_updateVisibleRows()
{if(this._inline||this._variableHeightRows){
let nextElement=this.dataTableBodyElement.lastChild;for(let i=this._rows.length-1;i>=0;--i){let rowElement=this._rows[i].element;if(rowElement.nextSibling!==nextElement)
this.dataTableBodyElement.insertBefore(rowElement,nextElement);nextElement=rowElement;}
return;}
let rowHeight=this.rowHeight;let updateOffsetThreshold=rowHeight*5;let overflowPadding=updateOffsetThreshold*3;if(isNaN(this._cachedScrollTop))
this._cachedScrollTop=this._scrollContainerElement.scrollTop;if(isNaN(this._cachedScrollableOffsetHeight))
this._cachedScrollableOffsetHeight=this._scrollContainerElement.offsetHeight;let scrollTop=this._cachedScrollTop;let scrollableOffsetHeight=this._cachedScrollableOffsetHeight;let visibleRowCount=Math.ceil((scrollableOffsetHeight+(overflowPadding*2))/rowHeight);let currentTopMargin=this._topDataTableMarginHeight;let currentBottomMargin=this._bottomDataTableMarginHeight;let currentTableBottom=currentTopMargin+(visibleRowCount*rowHeight);let belowTopThreshold=!currentTopMargin||scrollTop>currentTopMargin+updateOffsetThreshold;let aboveBottomThreshold=!currentBottomMargin||scrollTop+scrollableOffsetHeight<currentTableBottom-updateOffsetThreshold;if(belowTopThreshold&&aboveBottomThreshold&&!isNaN(this._previousRevealedRowCount))
return;let revealedRows=this._rows.filter((row)=>row.revealed&&!row.hidden);this._previousRevealedRowCount=revealedRows.length;let topHiddenRowCount=Math.max(0,Math.floor((scrollTop-overflowPadding)/rowHeight));let bottomHiddenRowCount=Math.max(0,this._previousRevealedRowCount-topHiddenRowCount-visibleRowCount);let marginTop=topHiddenRowCount*rowHeight;let marginBottom=bottomHiddenRowCount*rowHeight;if(this._topDataTableMarginHeight!==marginTop){this._topDataTableMarginHeight=marginTop;this._topDataTableMarginElement.style.height=marginTop+"px";}
if(this._bottomDataTableMarginElement!==marginBottom){this._bottomDataTableMarginHeight=marginBottom;this._bottomDataTableMarginElement.style.height=marginBottom+"px";}
this._dataTableElement.classList.toggle("odd-first-zebra-stripe",!!(topHiddenRowCount%2));this.dataTableBodyElement.removeChildren();for(let i=topHiddenRowCount;i<topHiddenRowCount+visibleRowCount;++i){let rowDataGridNode=revealedRows[i];if(!rowDataGridNode)
continue;this.dataTableBodyElement.appendChild(rowDataGridNode.element);}
this.dataTableBodyElement.appendChild(this._fillerRowElement);}
addPlaceholderNode()
{if(this.placeholderNode)
this.placeholderNode.makeNormal();var emptyData={};for(var identifier of this.columns.keys())
emptyData[identifier]="";this.placeholderNode=new WebInspector.PlaceholderDataGridNode(emptyData);this.appendChild(this.placeholderNode);}
appendChild(child)
{this.insertChild(child,this.children.length);}
insertChild(child,index)
{if(!child)
return;if(child.parent===this)
return;if(child.parent)
child.parent.removeChild(child);this.children.splice(index,0,child);this.hasChildren=true;child.parent=this;child.dataGrid=this.dataGrid;child._recalculateSiblings(index);delete child._depth;delete child._revealed;delete child._attached;delete child._leftPadding;child._shouldRefreshChildren=true;var current=child.children[0];while(current){current.dataGrid=this.dataGrid;delete current._depth;delete current._revealed;delete current._attached;delete current._leftPadding;current._shouldRefreshChildren=true;current=current.traverseNextNode(false,child,true);}
if(this.expanded)
child._attach();if(!this.dataGrid.hasFilters())
return;this.dataGrid._applyFiltersToNodeAndDispatchEvent(child);}
removeChild(child)
{if(!child)
return;if(child.parent!==this)
return;child.deselect();child._detach();this.children.remove(child,true);if(child.previousSibling)
child.previousSibling.nextSibling=child.nextSibling;if(child.nextSibling)
child.nextSibling.previousSibling=child.previousSibling;child.dataGrid=null;child.parent=null;child.nextSibling=null;child.previousSibling=null;if(this.children.length<=0)
this.hasChildren=false;}
removeChildren()
{for(var i=0;i<this.children.length;++i){var child=this.children[i];child.deselect();child._detach();child.dataGrid=null;child.parent=null;child.nextSibling=null;child.previousSibling=null;}
this.children=[];this.hasChildren=false;}
removeChildrenRecursive()
{var childrenToRemove=this.children;var child=this.children[0];while(child){if(child.children.length)
childrenToRemove=childrenToRemove.concat(child.children);child=child.traverseNextNode(false,this,true);}
for(var i=0;i<childrenToRemove.length;++i){child=childrenToRemove[i];child.deselect();child._detach();child.children=[];child.dataGrid=null;child.parent=null;child.nextSibling=null;child.previousSibling=null;}
this.children=[];}
findNode(comparator,skipHidden,stayWithin,dontPopulate)
{let currentNode=this._rows[0];while(currentNode&&!currentNode.root){if(!currentNode.isPlaceholderNode&&!(skipHidden&&currentNode.hidden)){if(comparator(currentNode))
return currentNode;}
currentNode=currentNode.traverseNextNode(skipHidden,stayWithin,dontPopulate);}
return null;}
sortNodes(comparator)
{if(this._sortNodesRequestId)
return;this._sortNodesRequestId=window.requestAnimationFrame(this._sortNodesCallback.bind(this,comparator));}
sortNodesImmediately(comparator)
{this._sortNodesCallback(comparator);}
_sortNodesCallback(comparator)
{function comparatorWrapper(aNode,bNode)
{if(aNode.isPlaceholderNode)
return 1;if(bNode.isPlaceholderNode)
return-1;var reverseFactor=this.sortOrder!==WebInspector.DataGrid.SortOrder.Ascending?-1:1;return reverseFactor*comparator(aNode,bNode);}
this._sortNodesRequestId=undefined;if(this._editing){this._sortAfterEditingCallback=this.sortNodes.bind(this,comparator);return;}
this._rows.sort(comparatorWrapper.bind(this));this._noteRowsChanged();let previousSiblingNode=null;for(let node of this._rows){node.previousSibling=previousSiblingNode;if(previousSiblingNode)
previousSiblingNode.nextSibling=node;previousSiblingNode=node;}
if(previousSiblingNode)
previousSiblingNode.nextSibling=null;if(!this.parentView)
this.updateLayoutIfNeeded();}
_toggledSortOrder()
{return this._sortOrder!==WebInspector.DataGrid.SortOrder.Descending?WebInspector.DataGrid.SortOrder.Descending:WebInspector.DataGrid.SortOrder.Ascending;}
_selectSortColumnAndSetOrder(columnIdentifier,sortOrder)
{this.sortColumnIdentifier=columnIdentifier;this.sortOrder=sortOrder;}
_keyDown(event)
{if(!this.selectedNode||event.shiftKey||event.metaKey||event.ctrlKey||this._editing)
return;let isRTL=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL;var handled=false;var nextSelectedNode;if(event.keyIdentifier==="Up"&&!event.altKey){nextSelectedNode=this.selectedNode.traversePreviousNode(true);while(nextSelectedNode&&!nextSelectedNode.selectable)
nextSelectedNode=nextSelectedNode.traversePreviousNode(true);handled=nextSelectedNode?true:false;}else if(event.keyIdentifier==="Down"&&!event.altKey){nextSelectedNode=this.selectedNode.traverseNextNode(true);while(nextSelectedNode&&!nextSelectedNode.selectable)
nextSelectedNode=nextSelectedNode.traverseNextNode(true);handled=nextSelectedNode?true:false;}else if((!isRTL&&event.keyIdentifier==="Left")||(isRTL&&event.keyIdentifier==="Right")){if(this.selectedNode.expanded){if(event.altKey)
this.selectedNode.collapseRecursively();else
this.selectedNode.collapse();handled=true;}else if(this.selectedNode.parent&&!this.selectedNode.parent.root){handled=true;if(this.selectedNode.parent.selectable){nextSelectedNode=this.selectedNode.parent;handled=nextSelectedNode?true:false;}else if(this.selectedNode.parent)
this.selectedNode.parent.collapse();}}else if((!isRTL&&event.keyIdentifier==="Right")||(isRTL&&event.keyIdentifier==="Left")){if(!this.selectedNode.revealed){this.selectedNode.reveal();handled=true;}else if(this.selectedNode.hasChildren){handled=true;if(this.selectedNode.expanded){nextSelectedNode=this.selectedNode.children[0];handled=nextSelectedNode?true:false;}else{if(event.altKey)
this.selectedNode.expandRecursively();else
this.selectedNode.expand();}}}else if(event.keyCode===8||event.keyCode===46){if(this._deleteCallback){handled=true;this._deleteCallback(this.selectedNode);}}else if(isEnterKey(event)){if(this._editCallback){handled=true;this._startEditing(this.selectedNode._element.children[0]);}}
if(nextSelectedNode){nextSelectedNode.reveal();nextSelectedNode.select();}
if(handled){event.preventDefault();event.stopPropagation();}}
closed()
{}
expand()
{}
collapse()
{}
reveal()
{}
revealAndSelect()
{}
dataGridNodeFromNode(target)
{var rowElement=target.enclosingNodeOrSelfWithNodeName("tr");return rowElement&&rowElement._dataGridNode;}
dataGridNodeFromPoint(x,y)
{var node=this._dataTableElement.ownerDocument.elementFromPoint(x,y);var rowElement=node.enclosingNodeOrSelfWithNodeName("tr");return rowElement&&rowElement._dataGridNode;}
_headerCellClicked(event)
{let cell=event.target.enclosingNodeOrSelfWithNodeName("th");if(!cell||!cell.columnIdentifier||!cell.classList.contains(WebInspector.DataGrid.SortableColumnStyleClassName))
return;let sortOrder=this._sortColumnIdentifier===cell.columnIdentifier?this._toggledSortOrder():this.sortOrder;this._selectSortColumnAndSetOrder(cell.columnIdentifier,sortOrder);}
_mouseoverColumnCollapser(event)
{var cell=event.target.enclosingNodeOrSelfWithNodeName("th");if(!cell||!cell.collapsesGroup)
return;cell.classList.add("mouse-over-collapser");}
_mouseoutColumnCollapser(event)
{var cell=event.target.enclosingNodeOrSelfWithNodeName("th");if(!cell||!cell.collapsesGroup)
return;cell.classList.remove("mouse-over-collapser");}
_clickInColumnCollapser(event)
{var cell=event.target.enclosingNodeOrSelfWithNodeName("th");if(!cell||!cell.collapsesGroup)
return;this._collapseColumnGroupWithCell(cell);event.stopPropagation();event.preventDefault();}
collapseColumnGroup(columnGroup)
{var collapserColumnIdentifier=null;for(var[identifier,column]of this.columns){if(column["collapsesGroup"]===columnGroup){collapserColumnIdentifier=identifier;break;}}
if(!collapserColumnIdentifier)
return;var cell=this._headerTableCellElements.get(collapserColumnIdentifier);this._collapseColumnGroupWithCell(cell);}
_collapseColumnGroupWithCell(cell)
{var columnsWillCollapse=cell.classList.toggle("collapsed");this.willToggleColumnGroup(cell.collapsesGroup,columnsWillCollapse);for(var[identifier,column]of this.columns){if(column["group"]===cell.collapsesGroup)
this.setColumnVisible(identifier,!columnsWillCollapse);}
var collapserButton=cell.querySelector(".collapser-button");if(collapserButton)
collapserButton.title=columnsWillCollapse?this._collapserButtonExpandColumnsToolTip():this._collapserButtonCollapseColumnsToolTip();this.didToggleColumnGroup(cell.collapsesGroup,columnsWillCollapse);}
_collapserButtonCollapseColumnsToolTip()
{return WebInspector.UIString("Collapse columns");}
_collapserButtonExpandColumnsToolTip()
{return WebInspector.UIString("Expand columns");}
willToggleColumnGroup(columnGroup,willCollapse)
{}
didToggleColumnGroup(columnGroup,didCollapse)
{}
headerTableHeader(columnIdentifier)
{return this._headerTableCellElements.get(columnIdentifier);}
_mouseDownInDataTable(event)
{var gridNode=this.dataGridNodeFromNode(event.target);if(!gridNode||!gridNode.selectable)
return;if(gridNode.isEventWithinDisclosureTriangle(event))
return;if(event.metaKey){if(gridNode.selected)
gridNode.deselect();else
gridNode.select();}else
gridNode.select();}
_contextMenuInHeader(event)
{let contextMenu=WebInspector.ContextMenu.createFromEvent(event);if(this._hasCopyableData())
contextMenu.appendItem(WebInspector.UIString("Copy Table"),this._copyTable.bind(this));let headerCellElement=event.target.enclosingNodeOrSelfWithNodeName("th");if(!headerCellElement)
return;let columnIdentifier=headerCellElement.columnIdentifier;let column=this.columns.get(columnIdentifier);if(!column)
return;if(column.sortable){contextMenu.appendSeparator();if(this.sortColumnIdentifier!==columnIdentifier||this.sortOrder!==WebInspector.DataGrid.SortOrder.Ascending){contextMenu.appendItem(WebInspector.UIString("Sort Ascending"),()=>{this._selectSortColumnAndSetOrder(columnIdentifier,WebInspector.DataGrid.SortOrder.Ascending);});}
if(this.sortColumnIdentifier!==columnIdentifier||this.sortOrder!==WebInspector.DataGrid.SortOrder.Descending){contextMenu.appendItem(WebInspector.UIString("Sort Descending"),()=>{this._selectSortColumnAndSetOrder(columnIdentifier,WebInspector.DataGrid.SortOrder.Descending);});}}
if(this._columnChooserEnabled){let didAddSeparator=false;for(let[identifier,columnInfo]of this.columns){if(columnInfo.locked)
continue;if(!didAddSeparator){contextMenu.appendSeparator();didAddSeparator=true;}
contextMenu.appendCheckboxItem(columnInfo.title,()=>{this.setColumnVisible(identifier,!!columnInfo.hidden);},!columnInfo.hidden);}}}
_contextMenuInDataTable(event)
{let contextMenu=WebInspector.ContextMenu.createFromEvent(event);let gridNode=this.dataGridNodeFromNode(event.target);if(gridNode)
gridNode.appendContextMenuItems(contextMenu);if(this.dataGrid._refreshCallback&&(!gridNode||gridNode!==this.placeholderNode))
contextMenu.appendItem(WebInspector.UIString("Refresh"),this._refreshCallback.bind(this));if(gridNode){if(gridNode.selectable&&gridNode.copyable&&!gridNode.isEventWithinDisclosureTriangle(event)){contextMenu.appendItem(WebInspector.UIString("Copy Row"),this._copyRow.bind(this,event.target));contextMenu.appendItem(WebInspector.UIString("Copy Table"),this._copyTable.bind(this));if(this.dataGrid._editCallback){if(gridNode===this.placeholderNode)
contextMenu.appendItem(WebInspector.UIString("Add New"),this._startEditing.bind(this,event.target));else{let element=event.target.enclosingNodeOrSelfWithNodeName("td");let columnIdentifier=element.__columnIdentifier;let columnTitle=this.dataGrid.columns.get(columnIdentifier)["title"];contextMenu.appendItem(WebInspector.UIString("Edit “%s”").format(columnTitle),this._startEditing.bind(this,event.target));}}
if(this.dataGrid._deleteCallback&&gridNode!==this.placeholderNode)
contextMenu.appendItem(WebInspector.UIString("Delete"),this._deleteCallback.bind(this,gridNode));}
if(gridNode.children.some((child)=>child.hasChildren)||(gridNode.hasChildren&&!gridNode.children.length)){contextMenu.appendSeparator();contextMenu.appendItem(WebInspector.UIString("Expand All"),gridNode.expandRecursively.bind(gridNode));contextMenu.appendItem(WebInspector.UIString("Collapse All"),gridNode.collapseRecursively.bind(gridNode));}}}
_clickInDataTable(event)
{var gridNode=this.dataGridNodeFromNode(event.target);if(!gridNode||!gridNode.hasChildren)
return;if(!gridNode.isEventWithinDisclosureTriangle(event))
return;if(gridNode.expanded){if(event.altKey)
gridNode.collapseRecursively();else
gridNode.collapse();}else{if(event.altKey)
gridNode.expandRecursively();else
gridNode.expand();}}
textForDataGridNodeColumn(node,columnIdentifier)
{var data=node.data[columnIdentifier];return(data instanceof Node?data.textContent:data)||"";}
set copyTextDelimiter(value){this._copyTextDelimiter=value;}
_copyTextForDataGridNode(node)
{let fields=node.dataGrid.orderedColumns.map((identifier)=>this.textForDataGridNodeColumn(node,identifier));return fields.join(this._copyTextDelimiter);}
_copyTextForDataGridHeaders()
{let fields=this.orderedColumns.map((identifier)=>this.headerTableHeader(identifier).textContent);return fields.join(this._copyTextDelimiter);}
handleBeforeCopyEvent(event)
{if(this.selectedNode&&window.getSelection().isCollapsed)
event.preventDefault();}
handleCopyEvent(event)
{if(!this.selectedNode||!window.getSelection().isCollapsed)
return;var copyText=this._copyTextForDataGridNode(this.selectedNode);event.clipboardData.setData("text/plain",copyText);event.stopPropagation();event.preventDefault();}
_copyRow(target)
{var gridNode=this.dataGridNodeFromNode(target);if(!gridNode)
return;var copyText=this._copyTextForDataGridNode(gridNode);InspectorFrontendHost.copyText(copyText);}
_copyTable()
{let copyData=[];copyData.push(this._copyTextForDataGridHeaders());for(let gridNode of this.children){if(!gridNode.copyable)
continue;copyData.push(this._copyTextForDataGridNode(gridNode));}
InspectorFrontendHost.copyText(copyData.join("\n"));}
_hasCopyableData()
{let gridNode=this.children[0];return gridNode&&gridNode.selectable&&gridNode.copyable;}
get resizeMethod()
{if(!this._resizeMethod)
return WebInspector.DataGrid.ResizeMethod.Nearest;return this._resizeMethod;}
set resizeMethod(method)
{this._resizeMethod=method;}
resizerDragStarted(resizer)
{if(!resizer[WebInspector.DataGrid.NextColumnOrdinalSymbol])
return true;this._currentResizer=resizer;}
resizerDragging(resizer,positionDelta)
{if(resizer!==this._currentResizer)
return;let isRTL=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL;if(isRTL)
positionDelta*=-1;let dragPoint=0;if(isRTL)
dragPoint+=this.element.totalOffsetRight-resizer.initialPosition-positionDelta;else
dragPoint+=resizer.initialPosition-this.element.totalOffsetLeft-positionDelta;
var leftColumnIndex=resizer[WebInspector.DataGrid.PreviousColumnOrdinalSymbol];var rightColumnIndex=resizer[WebInspector.DataGrid.NextColumnOrdinalSymbol];var firstRowCells=this._headerTableBodyElement.rows[0].cells;let leadingEdgeOfPreviousColumn=0;for(let i=0;i<leftColumnIndex;++i)
leadingEdgeOfPreviousColumn+=firstRowCells[i].offsetWidth; if(this.resizeMethod===WebInspector.DataGrid.ResizeMethod.Last){rightColumnIndex=this.resizers.length;}else if(this.resizeMethod===WebInspector.DataGrid.ResizeMethod.First){leadingEdgeOfPreviousColumn+=firstRowCells[leftColumnIndex].offsetWidth-firstRowCells[0].offsetWidth;leftColumnIndex=0;}
let trailingEdgeOfNextColumn=leadingEdgeOfPreviousColumn+firstRowCells[leftColumnIndex].offsetWidth+firstRowCells[rightColumnIndex].offsetWidth;let leftMinimum=leadingEdgeOfPreviousColumn+WebInspector.DataGrid.ColumnResizePadding;let rightMaximum=trailingEdgeOfNextColumn-WebInspector.DataGrid.ColumnResizePadding;dragPoint=Number.constrain(dragPoint,leftMinimum,rightMaximum);resizer.element.style.setProperty(isRTL?"right":"left",`${dragPoint - this.CenterResizerOverBorderAdjustment}px`);let percentLeftColumn=(((dragPoint-leadingEdgeOfPreviousColumn)/this._dataTableElement.offsetWidth)*100)+"%";this._headerTableColumnGroupElement.children[leftColumnIndex].style.width=percentLeftColumn;this._dataTableColumnGroupElement.children[leftColumnIndex].style.width=percentLeftColumn;let percentRightColumn=(((trailingEdgeOfNextColumn-dragPoint)/this._dataTableElement.offsetWidth)*100)+"%";this._headerTableColumnGroupElement.children[rightColumnIndex].style.width=percentRightColumn;this._dataTableColumnGroupElement.children[rightColumnIndex].style.width=percentRightColumn;this._positionResizerElements();this._positionHeaderViews();const skipHidden=true;const dontPopulate=true;let leftColumnIdentifier=this.orderedColumns[leftColumnIndex];let rightColumnIdentifier=this.orderedColumns[rightColumnIndex];let child=this.children[0];while(child){child.didResizeColumn(leftColumnIdentifier);child.didResizeColumn(rightColumnIdentifier);child=child.traverseNextNode(skipHidden,this,dontPopulate);}
event.preventDefault();}
resizerDragEnded(resizer)
{if(resizer!==this._currentResizer)
return;this._currentResizer=null;}
_updateFilter()
{if(this._scheduledFilterUpdateIdentifier){cancelAnimationFrame(this._scheduledFilterUpdateIdentifier);this._scheduledFilterUpdateIdentifier=undefined;}
if(!this._rows.length)
return;this._textFilterRegex=simpleGlobStringToRegExp(this._filterText,"i");if(this._applyFilterToNodesTask&&this._applyFilterToNodesTask.processing)
this._applyFilterToNodesTask.cancel();function*createIteratorForNodesToBeFiltered()
{let dontPopulate=!this.hasFilters();let currentNode=this._rows[0];while(currentNode&&!currentNode.root){yield currentNode;currentNode=currentNode.traverseNextNode(false,null,dontPopulate);}}
let items=createIteratorForNodesToBeFiltered.call(this);this._applyFilterToNodesTask=new WebInspector.YieldableTask(this,items,{workInterval:100});this._filterDidModifyNodeWhileProcessingItems=false;this._applyFilterToNodesTask.start();}
yieldableTaskWillProcessItem(task,node)
{let nodeWasModified=this._applyFiltersToNodeAndDispatchEvent(node);if(nodeWasModified)
this._filterDidModifyNodeWhileProcessingItems=true;}
yieldableTaskDidYield(task,processedItems,elapsedTime)
{if(!this._filterDidModifyNodeWhileProcessingItems)
return;this._filterDidModifyNodeWhileProcessingItems=false;this.dispatchEventToListeners(WebInspector.DataGrid.Event.FilterDidChange);}
yieldableTaskDidFinish(task)
{this._applyFilterToNodesTask=null;}};WebInspector.DataGrid.Event={SortChanged:"datagrid-sort-changed",SelectedNodeChanged:"datagrid-selected-node-changed",ExpandedNode:"datagrid-expanded-node",CollapsedNode:"datagrid-collapsed-node",FilterDidChange:"datagrid-filter-did-change",NodeWasFiltered:"datagrid-node-was-filtered"};WebInspector.DataGrid.ResizeMethod={Nearest:"nearest",First:"first",Last:"last"};WebInspector.DataGrid.SortOrder={Indeterminate:"data-grid-sort-order-indeterminate",Ascending:"data-grid-sort-order-ascending",Descending:"data-grid-sort-order-descending"};WebInspector.DataGrid.PreviousColumnOrdinalSymbol=Symbol("previous-column-ordinal");WebInspector.DataGrid.NextColumnOrdinalSymbol=Symbol("next-column-ordinal");WebInspector.DataGrid.WasExpandedDuringFilteringSymbol=Symbol("was-expanded-during-filtering");WebInspector.DataGrid.ColumnResizePadding=10;WebInspector.DataGrid.CenterResizerOverBorderAdjustment=3;WebInspector.DataGrid.SortColumnAscendingStyleClassName="sort-ascending";WebInspector.DataGrid.SortColumnDescendingStyleClassName="sort-descending";WebInspector.DataGrid.SortableColumnStyleClassName="sortable";WebInspector.DataGridNode=class DataGridNode extends WebInspector.Object
{constructor(data,hasChildren)
{super();this._expanded=false;this._hidden=false;this._selected=false;this._copyable=true;this._shouldRefreshChildren=true;this._data=data||{};this.hasChildren=hasChildren||false;this.children=[];this.dataGrid=null;this.parent=null;this.previousSibling=null;this.nextSibling=null;this.disclosureToggleWidth=10;}
get hidden()
{return this._hidden;}
set hidden(x)
{x=!!x;if(this._hidden===x)
return;this._hidden=x;if(this._element)
this._element.classList.toggle("hidden",this._hidden);if(this.dataGrid)
this.dataGrid._noteRowsChanged();}
get selectable()
{return this._element&&!this._hidden;}
get copyable()
{return this._copyable;}
set copyable(x)
{this._copyable=x;}
get element()
{if(this._element)
return this._element;if(!this.dataGrid)
return null;this._element=document.createElement("tr");this._element._dataGridNode=this;if(this.hasChildren)
this._element.classList.add("parent");if(this.expanded)
this._element.classList.add("expanded");if(this.selected)
this._element.classList.add("selected");if(this.revealed)
this._element.classList.add("revealed");if(this._hidden)
this._element.classList.add("hidden");this.createCells();return this._element;}
createCells()
{for(var columnIdentifier of this.dataGrid.orderedColumns)
this._element.appendChild(this.createCell(columnIdentifier));}
refreshIfNeeded()
{if(!this._needsRefresh)
return;this._needsRefresh=false;this.refresh();}
needsRefresh()
{this._needsRefresh=true;if(!this._revealed)
return;if(this._scheduledRefreshIdentifier)
return;this._scheduledRefreshIdentifier=requestAnimationFrame(this.refresh.bind(this));}
get data()
{return this._data;}
set data(x)
{x=x||{};if(Object.shallowEqual(this._data,x))
return;this._data=x;this.needsRefresh();}
get filterableData()
{if(this._cachedFilterableData)
return this._cachedFilterableData;this._cachedFilterableData=[];for(let column of this.dataGrid.columns.values()){if(column.hidden)
continue;let value=this.filterableDataForColumn(column.columnIdentifier);if(!value)
continue;if(!(value instanceof Array))
value=[value];if(!value.length)
continue;this._cachedFilterableData=this._cachedFilterableData.concat(value);}
return this._cachedFilterableData;}
get revealed()
{if("_revealed"in this)
return this._revealed;var currentAncestor=this.parent;while(currentAncestor&&!currentAncestor.root){if(!currentAncestor.expanded){this._revealed=false;return false;}
currentAncestor=currentAncestor.parent;}
this._revealed=true;return true;}
set hasChildren(x)
{if(this._hasChildren===x)
return;this._hasChildren=x;if(!this._element)
return;if(this._hasChildren){this._element.classList.add("parent");if(this.expanded)
this._element.classList.add("expanded");}else
this._element.classList.remove("parent","expanded");}
get hasChildren()
{return this._hasChildren;}
set revealed(x)
{if(this._revealed===x)
return;this._revealed=x;if(this._element){if(this._revealed)
this._element.classList.add("revealed");else
this._element.classList.remove("revealed");}
this.refreshIfNeeded();for(var i=0;i<this.children.length;++i)
this.children[i].revealed=x&&this.expanded;}
get depth()
{if("_depth"in this)
return this._depth;if(this.parent&&!this.parent.root)
this._depth=this.parent.depth+1;else
this._depth=0;return this._depth;}
get indentPadding()
{if(typeof this._indentPadding==="number")
return this._indentPadding;this._indentPadding=this.depth*this.dataGrid.indentWidth;return this._indentPadding;}
get shouldRefreshChildren()
{return this._shouldRefreshChildren;}
set shouldRefreshChildren(x)
{this._shouldRefreshChildren=x;if(x&&this.expanded)
this.expand();}
get selected()
{return this._selected;}
set selected(x)
{if(x)
this.select();else
this.deselect();}
get expanded()
{return this._expanded;}
set expanded(x)
{if(x)
this.expand();else
this.collapse();}
hasAncestor(ancestor)
{if(!ancestor)
return false;let currentAncestor=this.parent;while(currentAncestor){if(ancestor===currentAncestor)
return true;currentAncestor=currentAncestor.parent;}
return false;}
refresh()
{if(!this._element||!this.dataGrid)
return;if(this._scheduledRefreshIdentifier){cancelAnimationFrame(this._scheduledRefreshIdentifier);this._scheduledRefreshIdentifier=undefined;}
this._cachedFilterableData=null;this._needsRefresh=false;this._element.removeChildren();this.createCells();}
refreshRecursively()
{this.refresh();this.forEachChildInSubtree((node)=>node.refresh());}
updateLayout()
{}
createCell(columnIdentifier)
{var cellElement=document.createElement("td");cellElement.className=columnIdentifier+"-column";cellElement.__columnIdentifier=columnIdentifier;var div=cellElement.createChild("div","cell-content");var content=this.createCellContent(columnIdentifier,cellElement);div.append(content);let column=this.dataGrid.columns.get(columnIdentifier);if(column){if(column["aligned"])
cellElement.classList.add(column["aligned"]);if(column["group"])
cellElement.classList.add("column-group-"+column["group"]);if(column["icon"]){let iconElement=document.createElement("div");iconElement.classList.add("icon");div.insertBefore(iconElement,div.firstChild);}}
if(columnIdentifier===this.dataGrid.disclosureColumnIdentifier){cellElement.classList.add("disclosure");if(this.indentPadding){if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL)
cellElement.style.setProperty("padding-right",`${this.indentPadding}px`);else
cellElement.style.setProperty("padding-left",`${this.indentPadding}px`);}}
return cellElement;}
createCellContent(columnIdentifier)
{if(!(columnIdentifier in this.data))
return zeroWidthSpace;let data=this.data[columnIdentifier];return(typeof data==="number")?data.maxDecimals(2).toLocaleString():data;}
elementWithColumnIdentifier(columnIdentifier)
{if(!this.dataGrid)
return null;let index=this.dataGrid.orderedColumns.indexOf(columnIdentifier);if(index===-1)
return null;return this.element.children[index];}
appendChild(){return WebInspector.DataGrid.prototype.appendChild.apply(this,arguments);}
insertChild(){return WebInspector.DataGrid.prototype.insertChild.apply(this,arguments);}
removeChild(){return WebInspector.DataGrid.prototype.removeChild.apply(this,arguments);}
removeChildren(){return WebInspector.DataGrid.prototype.removeChildren.apply(this,arguments);}
removeChildrenRecursive(){return WebInspector.DataGrid.prototype.removeChildrenRecursive.apply(this,arguments);}
_recalculateSiblings(myIndex)
{if(!this.parent)
return;var previousChild=myIndex>0?this.parent.children[myIndex-1]:null;if(previousChild){previousChild.nextSibling=this;this.previousSibling=previousChild;}else
this.previousSibling=null;var nextChild=this.parent.children[myIndex+1];if(nextChild){nextChild.previousSibling=this;this.nextSibling=nextChild;}else
this.nextSibling=null;}
collapse()
{if(this._element)
this._element.classList.remove("expanded");this._expanded=false;for(var i=0;i<this.children.length;++i)
this.children[i].revealed=false;this.dispatchEventToListeners("collapsed");if(this.dataGrid){this.dataGrid.dispatchEventToListeners(WebInspector.DataGrid.Event.CollapsedNode,{dataGridNode:this});this.dataGrid._noteRowsChanged();}}
collapseRecursively()
{var item=this;while(item){if(item.expanded)
item.collapse();item=item.traverseNextNode(false,this,true);}}
expand()
{if(!this.hasChildren||this.expanded)
return;if(this.revealed&&!this._shouldRefreshChildren)
for(var i=0;i<this.children.length;++i)
this.children[i].revealed=true;if(this._shouldRefreshChildren){for(var i=0;i<this.children.length;++i)
this.children[i]._detach();this.dispatchEventToListeners("populate");if(this._attached){for(var i=0;i<this.children.length;++i){var child=this.children[i];if(this.revealed)
child.revealed=true;child._attach();}}
this._shouldRefreshChildren=false;}
if(this._element)
this._element.classList.add("expanded");this._expanded=true;this.dispatchEventToListeners("expanded");if(this.dataGrid){this.dataGrid.dispatchEventToListeners(WebInspector.DataGrid.Event.ExpandedNode,{dataGridNode:this});this.dataGrid._noteRowsChanged();}}
expandRecursively()
{var item=this;while(item){item.expand();item=item.traverseNextNode(false,this);}}
forEachImmediateChild(callback)
{for(let node of this.children)
callback(node);}
forEachChildInSubtree(callback)
{let node=this.traverseNextNode(false,this,true);while(node){callback(node);node=node.traverseNextNode(false,this,true);}}
isInSubtreeOfNode(baseNode)
{let node=baseNode;while(node){if(node===this)
return true;node=node.traverseNextNode(false,baseNode,true);}
return false;}
reveal()
{var currentAncestor=this.parent;while(currentAncestor&&!currentAncestor.root){if(!currentAncestor.expanded)
currentAncestor.expand();currentAncestor=currentAncestor.parent;}
this.element.scrollIntoViewIfNeeded(false);this.dispatchEventToListeners("revealed");}
select(suppressSelectedEvent)
{if(!this.dataGrid||!this.selectable||this.selected)
return;let oldSelectedNode=this.dataGrid.selectedNode;if(oldSelectedNode)
oldSelectedNode.deselect(true);this._selected=true;this.dataGrid.selectedNode=this;if(this._element)
this._element.classList.add("selected");if(!suppressSelectedEvent)
this.dataGrid.dispatchEventToListeners(WebInspector.DataGrid.Event.SelectedNodeChanged,{oldSelectedNode});}
revealAndSelect()
{this.reveal();this.select();}
deselect(suppressDeselectedEvent)
{if(!this.dataGrid||this.dataGrid.selectedNode!==this||!this.selected)
return;this._selected=false;this.dataGrid.selectedNode=null;if(this._element)
this._element.classList.remove("selected");if(!suppressDeselectedEvent)
this.dataGrid.dispatchEventToListeners(WebInspector.DataGrid.Event.SelectedNodeChanged,{oldSelectedNode:this});}
traverseNextNode(skipHidden,stayWithin,dontPopulate,info)
{if(!dontPopulate&&this.hasChildren)
this.dispatchEventToListeners("populate");if(info)
info.depthChange=0;var node=(!skipHidden||this.revealed)?this.children[0]:null;if(node&&(!skipHidden||this.expanded)){if(info)
info.depthChange=1;return node;}
if(this===stayWithin)
return null;node=(!skipHidden||this.revealed)?this.nextSibling:null;if(node)
return node;node=this;while(node&&!node.root&&!((!skipHidden||node.revealed)?node.nextSibling:null)&&node.parent!==stayWithin){if(info)
info.depthChange-=1;node=node.parent;}
if(!node)
return null;return(!skipHidden||node.revealed)?node.nextSibling:null;}
traversePreviousNode(skipHidden,dontPopulate)
{var node=(!skipHidden||this.revealed)?this.previousSibling:null;if(!dontPopulate&&node&&node.hasChildren)
node.dispatchEventToListeners("populate");while(node&&((!skipHidden||(node.revealed&&node.expanded))?node.children.lastValue:null)){if(!dontPopulate&&node.hasChildren)
node.dispatchEventToListeners("populate");node=((!skipHidden||(node.revealed&&node.expanded))?node.children.lastValue:null);}
if(node)
return node;if(!this.parent||this.parent.root)
return null;return this.parent;}
isEventWithinDisclosureTriangle(event)
{if(!this.hasChildren)
return false;let cell=event.target.enclosingNodeOrSelfWithNodeName("td");if(!cell||!cell.classList.contains("disclosure"))
return false;let computedStyle=window.getComputedStyle(cell);let start=0;if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL)
start+=cell.totalOffsetRight-computedStyle.getPropertyCSSValue("padding-right").getFloatValue(CSSPrimitiveValue.CSS_PX)-this.disclosureToggleWidth;else
start+=cell.totalOffsetLeft+computedStyle.getPropertyCSSValue("padding-left").getFloatValue(CSSPrimitiveValue.CSS_PX);return event.pageX>=start&&event.pageX<=start+this.disclosureToggleWidth;}
_attach()
{if(!this.dataGrid||this._attached)
return;this._attached=true;let insertionIndex=-1;if(!this.isPlaceholderNode){var previousGridNode=this.traversePreviousNode(true,true);insertionIndex=this.dataGrid._rows.indexOf(previousGridNode);if(insertionIndex===-1)
insertionIndex=0;else
insertionIndex++;}
if(insertionIndex===-1)
this.dataGrid._rows.push(this);else
this.dataGrid._rows.insertAtIndex(this,insertionIndex);this.dataGrid._noteRowsChanged();if(this.expanded){for(var i=0;i<this.children.length;++i)
this.children[i]._attach();}}
_detach()
{if(!this._attached)
return;this._attached=false;this.dataGrid._rows.remove(this,true);this.dataGrid._noteRowRemoved(this);for(var i=0;i<this.children.length;++i)
this.children[i]._detach();}
savePosition()
{if(this._savedPosition)
return;if(!this.parent)
return;this._savedPosition={parent:this.parent,index:this.parent.children.indexOf(this)};}
restorePosition()
{if(!this._savedPosition)
return;if(this.parent!==this._savedPosition.parent)
this._savedPosition.parent.insertChild(this,this._savedPosition.index);this._savedPosition=null;}
appendContextMenuItems(contextMenu)
{ return null;}
filterableDataForColumn(columnIdentifier)
{let value=this.data[columnIdentifier];return typeof value==="string"?value:null;}
didResizeColumn(columnIdentifier)
{}};WebInspector.PlaceholderDataGridNode=class PlaceholderDataGridNode extends WebInspector.DataGridNode
{constructor(data)
{super(data,false);this.isPlaceholderNode=true;}
makeNormal()
{this.isPlaceholderNode=false;}};WebInspector.DetailsSectionRow=class DetailsSectionRow extends WebInspector.Object
{constructor(emptyMessage)
{super();this._element=document.createElement("div");this._element.className="row";this._emptyMessage=emptyMessage||"";}
get element()
{return this._element;}
get emptyMessage()
{return this._emptyMessage;}
set emptyMessage(emptyMessage)
{this._emptyMessage=emptyMessage||"";if(!this._element.childNodes.length)
this.showEmptyMessage();}
showEmptyMessage()
{this.element.classList.add(WebInspector.DetailsSectionRow.EmptyStyleClassName);if(this._emptyMessage instanceof Node){this.element.removeChildren();this.element.appendChild(this._emptyMessage);}else
this.element.textContent=this._emptyMessage;}
hideEmptyMessage()
{this.element.classList.remove(WebInspector.DetailsSectionRow.EmptyStyleClassName);this.element.removeChildren();}};WebInspector.DetailsSectionRow.EmptyStyleClassName="empty";WebInspector.Dialog=class Dialog extends WebInspector.View
{constructor(delegate)
{super();this._delegate=delegate;this._dismissing=false;this._representedObject=null;this._cookie=null;this._visible=false;}
get visible(){return this._visible;}
get delegate(){return this._delegate;}
get representedObject(){return this._representedObject;}
get cookie(){return this._cookie;}
present(parentElement)
{parentElement.appendChild(this.element);this._visible=true;this.didPresentDialog();}
dismiss(representedObject,cookie)
{if(this._dismissing)
return;let parent=this.element.parentNode;if(!parent)
return;this._dismissing=true;this._representedObject=representedObject||null;this._cookie=cookie||null;this._visible=false;this.element.remove();if(this._delegate&&typeof this._delegate.dialogWasDismissed==="function")
this._delegate.dialogWasDismissed(this);this._dismissing=false;this.didDismissDialog();}
didDismissDialog()
{}
didPresetDialog()
{}
representedObjectIsValid(value)
{if(this.delegate&&typeof this.delegate.isDialogRepresentedObjectValid==="function")
return this.delegate.isDialogRepresentedObjectValid(this,value);return true;}};WebInspector.HierarchicalPathComponent=class HierarchicalPathComponent extends WebInspector.Object
{constructor(displayName,styleClassNames,representedObject,textOnly,showSelectorArrows)
{super();this._representedObject=representedObject||null;this._element=document.createElement("div");this._element.className="hierarchical-path-component";if(!Array.isArray(styleClassNames))
styleClassNames=[styleClassNames];this._element.classList.add(...styleClassNames);if(!textOnly){this._iconElement=document.createElement("img");this._iconElement.className="icon";this._element.appendChild(this._iconElement);}else
this._element.classList.add("text-only");this._titleElement=document.createElement("div");this._titleElement.className="title";this._titleElement.setAttribute("dir","auto");this._element.appendChild(this._titleElement);this._titleContentElement=document.createElement("div");this._titleContentElement.className="content";this._titleElement.appendChild(this._titleContentElement);this._separatorElement=document.createElement("div");this._separatorElement.className="separator";this._element.appendChild(this._separatorElement);this._selectElement=document.createElement("select");this._selectElement.setAttribute("dir","auto");this._selectElement.addEventListener("mouseover",this._selectElementMouseOver.bind(this));this._selectElement.addEventListener("mouseout",this._selectElementMouseOut.bind(this));this._selectElement.addEventListener("mousedown",this._selectElementMouseDown.bind(this));this._selectElement.addEventListener("mouseup",this._selectElementMouseUp.bind(this));this._selectElement.addEventListener("change",this._selectElementSelectionChanged.bind(this));this._element.appendChild(this._selectElement);this._previousSibling=null;this._nextSibling=null;this._truncatedDisplayNameLength=0;this._collapsed=false;this._hidden=false;this._selectorArrows=false;this.displayName=displayName;this.selectorArrows=showSelectorArrows;}
get selectedPathComponent()
{let selectedOption=this._selectElement[this._selectElement.selectedIndex];if(!selectedOption&&this._selectElement.options.length===1)
selectedOption=this._selectElement.options[0];return selectedOption&&selectedOption._pathComponent||null;}
get element(){return this._element;}
get representedObject(){return this._representedObject;}
get displayName()
{return this._displayName;}
set displayName(newDisplayName)
{if(newDisplayName===this._displayName)
return;this._displayName=newDisplayName;this._updateElementTitleAndText();}
get truncatedDisplayNameLength()
{return this._truncatedDisplayNameLength;}
set truncatedDisplayNameLength(truncatedDisplayNameLength)
{truncatedDisplayNameLength=truncatedDisplayNameLength||0;if(truncatedDisplayNameLength===this._truncatedDisplayNameLength)
return;this._truncatedDisplayNameLength=truncatedDisplayNameLength;this._updateElementTitleAndText();}
get minimumWidth()
{if(this._collapsed)
return WebInspector.HierarchicalPathComponent.MinimumWidthCollapsed;if(this._selectorArrows)
return WebInspector.HierarchicalPathComponent.MinimumWidth+WebInspector.HierarchicalPathComponent.SelectorArrowsWidth;return WebInspector.HierarchicalPathComponent.MinimumWidth;}
get forcedWidth()
{let maxWidth=this._element.style.getProperty("width");if(typeof maxWidth==="string")
return parseInt(maxWidth);return null;}
set forcedWidth(width)
{if(typeof width==="number"){let minimumWidthForOneCharacterTruncatedTitle=WebInspector.HierarchicalPathComponent.MinimumWidthForOneCharacterTruncatedTitle;if(this.selectorArrows)
minimumWidthForOneCharacterTruncatedTitle+=WebInspector.HierarchicalPathComponent.SelectorArrowsWidth;
if(width<minimumWidthForOneCharacterTruncatedTitle)
width=0;
this._element.style.setProperty("width",Math.max(1,width)+"px");}else
this._element.style.removeProperty("width");}
get hidden()
{return this._hidden;}
set hidden(flag)
{if(this._hidden===flag)
return;this._hidden=flag;this._element.classList.toggle("hidden",this._hidden);}
get collapsed()
{return this._collapsed;}
set collapsed(flag)
{if(this._collapsed===flag)
return;this._collapsed=flag;this._element.classList.toggle("collapsed",this._collapsed);}
get selectorArrows()
{return this._selectorArrows;}
set selectorArrows(flag)
{if(this._selectorArrows===flag)
return;this._selectorArrows=flag;if(this._selectorArrows){this._selectorArrowsElement=document.createElement("img");this._selectorArrowsElement.className="selector-arrows";this._element.insertBefore(this._selectorArrowsElement,this._separatorElement);}else if(this._selectorArrowsElement){this._selectorArrowsElement.remove();this._selectorArrowsElement=null;}
this._element.classList.toggle("show-selector-arrows",!!this._selectorArrows);}
get previousSibling(){return this._previousSibling;}
set previousSibling(newSlibling){this._previousSibling=newSlibling||null;}
get nextSibling(){return this._nextSibling;}
set nextSibling(newSlibling){this._nextSibling=newSlibling||null;}
_updateElementTitleAndText()
{let truncatedDisplayName=this._displayName;if(this._truncatedDisplayNameLength&&truncatedDisplayName.length>this._truncatedDisplayNameLength)
truncatedDisplayName=truncatedDisplayName.substring(0,this._truncatedDisplayNameLength)+ellipsis;this._element.title=this._displayName;this._titleContentElement.textContent=truncatedDisplayName;}
_updateSelectElement()
{this._selectElement.removeChildren();function createOption(component)
{let optionElement=document.createElement("option");let maxPopupMenuLength=130; optionElement.textContent=component.displayName.length<=maxPopupMenuLength?component.displayName:component.displayName.substring(0,maxPopupMenuLength)+ellipsis;optionElement._pathComponent=component;return optionElement;}
let previousSiblingCount=0;let sibling=this.previousSibling;while(sibling){this._selectElement.insertBefore(createOption(sibling),this._selectElement.firstChild);sibling=sibling.previousSibling;++previousSiblingCount;}
this._selectElement.appendChild(createOption(this));sibling=this.nextSibling;while(sibling){this._selectElement.appendChild(createOption(sibling));sibling=sibling.nextSibling;}
if(this._selectElement.options.length===1)
this._selectElement.selectedIndex=-1;else
this._selectElement.selectedIndex=previousSiblingCount;}
_selectElementMouseOver(event)
{if(typeof this.mouseOver==="function")
this.mouseOver();}
_selectElementMouseOut(event)
{if(typeof this.mouseOut==="function")
this.mouseOut();}
_selectElementMouseDown(event)
{this._updateSelectElement();}
_selectElementMouseUp(event)
{this.dispatchEventToListeners(WebInspector.HierarchicalPathComponent.Event.Clicked,{pathComponent:this.selectedPathComponent});}
_selectElementSelectionChanged(event)
{this.dispatchEventToListeners(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,{pathComponent:this.selectedPathComponent});}};WebInspector.HierarchicalPathComponent.MinimumWidth=32;WebInspector.HierarchicalPathComponent.MinimumWidthCollapsed=24;WebInspector.HierarchicalPathComponent.MinimumWidthForOneCharacterTruncatedTitle=54;WebInspector.HierarchicalPathComponent.SelectorArrowsWidth=12;WebInspector.HierarchicalPathComponent.Event={SiblingWasSelected:"hierarchical-path-component-sibling-was-selected",Clicked:"hierarchical-path-component-clicked"};WebInspector.NavigationItem=class NavigationItem extends WebInspector.Object
{constructor(identifier,role,label)
{super();this._identifier=identifier||null;this._element=document.createElement("div");this._hidden=false;this._parentNavigationBar=null;if(role)
this._element.setAttribute("role",role);if(label)
this._element.setAttribute("aria-label",label);this._element.classList.add(...this._classNames);this._element.navigationItem=this;}
get identifier(){return this._identifier;}
get element(){return this._element;}
get minimumWidth(){return this._element.realOffsetWidth;}
get parentNavigationBar(){return this._parentNavigationBar;}
updateLayout(expandOnly)
{}
get hidden()
{return this._hidden;}
set hidden(flag)
{if(this._hidden===flag)
return;this._hidden=flag;this._element.classList.toggle("hidden",flag);if(this._parentNavigationBar)
this._parentNavigationBar.needsLayout();}
get _classNames()
{var classNames=["item"];if(this._identifier)
classNames.push(this._identifier);if(this.additionalClassNames instanceof Array)
classNames=classNames.concat(this.additionalClassNames);return classNames;}};WebInspector.Popover=class Popover extends WebInspector.Object
{constructor(delegate)
{super();this.delegate=delegate;this._edge=null;this._frame=new WebInspector.Rect;this._content=null;this._targetFrame=new WebInspector.Rect;this._anchorPoint=new WebInspector.Point;this._preferredEdges=null;this._resizeHandler=null;this._contentNeedsUpdate=false;this._dismissing=false;this._element=document.createElement("div");this._element.className="popover";this._element.addEventListener("transitionend",this,true);this._container=this._element.appendChild(document.createElement("div"));this._container.className="container";}
get element()
{return this._element;}
get frame()
{return this._frame;}
get visible()
{return this._element.parentNode===document.body&&!this._element.classList.contains(WebInspector.Popover.FadeOutClassName);}
set frame(frame)
{this._element.style.left=frame.minX()+"px";this._element.style.top=frame.minY()+"px";this._element.style.width=frame.size.width+"px";this._element.style.height=frame.size.height+"px";this._element.style.backgroundSize=frame.size.width+"px "+frame.size.height+"px";this._frame=frame;}
set content(content)
{if(content===this._content)
return;this._content=content;this._contentNeedsUpdate=true;if(this.visible)
this._update(true);}
set windowResizeHandler(resizeHandler)
{this._resizeHandler=resizeHandler;}
update(shouldAnimate=true)
{if(!this.visible)
return;var previouslyFocusedElement=document.activeElement;this._contentNeedsUpdate=true;this._update(shouldAnimate);if(previouslyFocusedElement)
previouslyFocusedElement.focus();}
present(targetFrame,preferredEdges)
{this._targetFrame=targetFrame;this._preferredEdges=preferredEdges;if(!this._content)
return;this._addListenersIfNeeded();this._update();}
presentNewContentWithFrame(content,targetFrame,preferredEdges)
{this._content=content;this._contentNeedsUpdate=true;this._targetFrame=targetFrame;this._preferredEdges=preferredEdges;this._addListenersIfNeeded();var shouldAnimate=this.visible;this._update(shouldAnimate);}
dismiss()
{if(this._dismissing||this._element.parentNode!==document.body)
return;this._dismissing=true;this._isListeningForPopoverEvents=false;window.removeEventListener("mousedown",this,true);window.removeEventListener("scroll",this,true);window.removeEventListener("resize",this,true);window.removeEventListener("keypress",this,true);WebInspector.quickConsole.keyboardShortcutDisabled=false;this._element.classList.add(WebInspector.Popover.FadeOutClassName);if(this.delegate&&typeof this.delegate.willDismissPopover==="function")
this.delegate.willDismissPopover(this);}
handleEvent(event)
{switch(event.type){case"mousedown":case"scroll":if(!this._element.contains(event.target)&&!event.target.enclosingNodeOrSelfWithClass(WebInspector.Popover.IgnoreAutoDismissClassName)&&!event[WebInspector.Popover.EventPreventDismissSymbol]){this.dismiss();}
break;case"resize":if(this._resizeHandler)
this._resizeHandler();break;case"keypress":if(event.keyCode===WebInspector.KeyboardShortcut.Key.Escape.keyCode)
this.dismiss();break;case"transitionend":if(event.target===this._element){document.body.removeChild(this._element);this._element.classList.remove(WebInspector.Popover.FadeOutClassName);this._container.textContent="";if(this.delegate&&typeof this.delegate.didDismissPopover==="function")
this.delegate.didDismissPopover(this);this._dismissing=false;break;}
break;}}
_update(shouldAnimate)
{if(shouldAnimate)
var previousEdge=this._edge;var targetFrame=this._targetFrame;var preferredEdges=this._preferredEdges;
if(this._element.parentNode!==document.body)
document.body.appendChild(this._element);else
this._element.classList.remove(WebInspector.Popover.FadeOutClassName);this._dismissing=false;if(this._contentNeedsUpdate){this._element.style.removeProperty("left");this._element.style.removeProperty("top");this._element.style.removeProperty("width");this._element.style.removeProperty("height");if(this._edge!==null)
this._element.classList.remove(this._cssClassNameForEdge());this._container.replaceWith(this._content);var popoverBounds=this._element.getBoundingClientRect();this._preferredSize=new WebInspector.Size(Math.ceil(popoverBounds.width),Math.ceil(popoverBounds.height));}
var titleBarOffset=WebInspector.Platform.name==="mac"&&WebInspector.Platform.version.release>=10?22:0;var containerFrame=new WebInspector.Rect(0,titleBarOffset,window.innerWidth,window.innerHeight-titleBarOffset);containerFrame=containerFrame.inset(WebInspector.Popover.ShadowEdgeInsets);var metrics=new Array(preferredEdges.length);for(var edgeName in WebInspector.RectEdge){var edge=WebInspector.RectEdge[edgeName];var item={edge,metrics:this._bestMetricsForEdge(this._preferredSize,targetFrame,containerFrame,edge)};var preferredIndex=preferredEdges.indexOf(edge);if(preferredIndex!==-1)
metrics[preferredIndex]=item;else
metrics.push(item);}
function area(size)
{return size.width*size.height;}
var bestEdge=metrics[0].edge;var bestMetrics=metrics[0].metrics;for(var i=1;i<metrics.length;i++){var itemMetrics=metrics[i].metrics;if(area(itemMetrics.contentSize)>area(bestMetrics.contentSize)){bestEdge=metrics[i].edge;bestMetrics=itemMetrics;}}
var anchorPoint;var bestFrame=bestMetrics.frame.round();this._edge=bestEdge;if(bestFrame===WebInspector.Rect.ZERO_RECT){this.dismiss();}else{switch(bestEdge){case WebInspector.RectEdge.MIN_X:anchorPoint=new WebInspector.Point(bestFrame.size.width-WebInspector.Popover.ShadowPadding,targetFrame.midY()-bestFrame.minY());break;case WebInspector.RectEdge.MAX_X:anchorPoint=new WebInspector.Point(WebInspector.Popover.ShadowPadding,targetFrame.midY()-bestFrame.minY());break;case WebInspector.RectEdge.MIN_Y:anchorPoint=new WebInspector.Point(targetFrame.midX()-bestFrame.minX(),bestFrame.size.height-WebInspector.Popover.ShadowPadding);break;case WebInspector.RectEdge.MAX_Y:anchorPoint=new WebInspector.Point(targetFrame.midX()-bestFrame.minX(),WebInspector.Popover.ShadowPadding);break;}
this._element.classList.add(this._cssClassNameForEdge());if(shouldAnimate&&this._edge===previousEdge)
this._animateFrame(bestFrame,anchorPoint);else{this.frame=bestFrame;this._setAnchorPoint(anchorPoint);this._drawBackground();}
if(this._preferredSize.width<WebInspector.Popover.MinWidth||this._preferredSize.height<WebInspector.Popover.MinHeight)
this._container.classList.add("center");else
this._container.classList.remove("center");}
if(this._contentNeedsUpdate){this._container.textContent="";this._content.replaceWith(this._container);this._container.appendChild(this._content);}
this._contentNeedsUpdate=false;}
_cssClassNameForEdge()
{switch(this._edge){case WebInspector.RectEdge.MIN_X:return"arrow-right";case WebInspector.RectEdge.MAX_X:return"arrow-left";case WebInspector.RectEdge.MIN_Y:return"arrow-down";case WebInspector.RectEdge.MAX_Y:return"arrow-up";}
console.error("Unknown edge.");return"arrow-up";}
_setAnchorPoint(anchorPoint)
{anchorPoint.x=Math.floor(anchorPoint.x);anchorPoint.y=Math.floor(anchorPoint.y);this._anchorPoint=anchorPoint;}
_animateFrame(toFrame,toAnchor)
{var startTime=Date.now();var duration=350;var epsilon=1/(200*duration);var spline=new WebInspector.CubicBezier(0.25,0.1,0.25,1);var fromFrame=this._frame.copy();var fromAnchor=this._anchorPoint.copy();function animatedValue(from,to,progress)
{return from+(to-from)*progress;}
function drawBackground()
{var progress=spline.solve(Math.min((Date.now()-startTime)/duration,1),epsilon);this.frame=new WebInspector.Rect(animatedValue(fromFrame.minX(),toFrame.minX(),progress),animatedValue(fromFrame.minY(),toFrame.minY(),progress),animatedValue(fromFrame.size.width,toFrame.size.width,progress),animatedValue(fromFrame.size.height,toFrame.size.height,progress)).round();this._setAnchorPoint(new WebInspector.Point(animatedValue(fromAnchor.x,toAnchor.x,progress),animatedValue(fromAnchor.y,toAnchor.y,progress)));this._drawBackground();if(progress<1)
requestAnimationFrame(drawBackground.bind(this));}
drawBackground.call(this);}
_drawBackground()
{var scaleFactor=window.devicePixelRatio;var width=this._frame.size.width;var height=this._frame.size.height;var scaledWidth=width*scaleFactor;var scaledHeight=height*scaleFactor;
var scratchCanvas=document.createElement("canvas");scratchCanvas.width=scaledWidth;scratchCanvas.height=scaledHeight;var ctx=scratchCanvas.getContext("2d");ctx.scale(scaleFactor,scaleFactor);
var bounds;var arrowHeight=WebInspector.Popover.AnchorSize.height;switch(this._edge){case WebInspector.RectEdge.MIN_X:bounds=new WebInspector.Rect(0,0,width-arrowHeight,height);break;case WebInspector.RectEdge.MAX_X:bounds=new WebInspector.Rect(arrowHeight,0,width-arrowHeight,height);break;case WebInspector.RectEdge.MIN_Y:bounds=new WebInspector.Rect(0,0,width,height-arrowHeight);break;case WebInspector.RectEdge.MAX_Y:bounds=new WebInspector.Rect(0,arrowHeight,width,height-arrowHeight);break;}
bounds=bounds.inset(WebInspector.Popover.ShadowEdgeInsets);ctx.fillStyle="black";this._drawFrame(ctx,bounds,this._edge,this._anchorPoint);ctx.clip();var fillGradient=ctx.createLinearGradient(0,0,0,height);fillGradient.addColorStop(0,"rgba(255, 255, 255, 0.95)");fillGradient.addColorStop(1,"rgba(235, 235, 235, 0.95)");ctx.fillStyle=fillGradient;ctx.fillRect(0,0,width,height);ctx.strokeStyle="rgba(0, 0, 0, 0.25)";ctx.lineWidth=2;this._drawFrame(ctx,bounds,this._edge,this._anchorPoint);ctx.stroke();let finalContext=document.getCSSCanvasContext("2d","popover",scaledWidth,scaledHeight);finalContext.clearRect(0,0,scaledWidth,scaledHeight);finalContext.shadowOffsetX=1;finalContext.shadowOffsetY=1;finalContext.shadowBlur=5;finalContext.shadowColor="rgba(0, 0, 0, 0.5)";finalContext.drawImage(scratchCanvas,0,0,scaledWidth,scaledHeight);}
_bestMetricsForEdge(preferredSize,targetFrame,containerFrame,edge)
{var x,y;var width=preferredSize.width+(WebInspector.Popover.ShadowPadding*2)+(WebInspector.Popover.ContentPadding*2);var height=preferredSize.height+(WebInspector.Popover.ShadowPadding*2)+(WebInspector.Popover.ContentPadding*2);var arrowLength=WebInspector.Popover.AnchorSize.height;switch(edge){case WebInspector.RectEdge.MIN_X:width+=arrowLength;x=targetFrame.origin.x-width+WebInspector.Popover.ShadowPadding;y=targetFrame.origin.y-(height-targetFrame.size.height)/2;break;case WebInspector.RectEdge.MAX_X:width+=arrowLength;x=targetFrame.origin.x+targetFrame.size.width-WebInspector.Popover.ShadowPadding;y=targetFrame.origin.y-(height-targetFrame.size.height)/2;break;case WebInspector.RectEdge.MIN_Y:height+=arrowLength;x=targetFrame.origin.x-(width-targetFrame.size.width)/2;y=targetFrame.origin.y-height+WebInspector.Popover.ShadowPadding;break;case WebInspector.RectEdge.MAX_Y:height+=arrowLength;x=targetFrame.origin.x-(width-targetFrame.size.width)/2;y=targetFrame.origin.y+targetFrame.size.height-WebInspector.Popover.ShadowPadding;break;}
if(edge===WebInspector.RectEdge.MIN_X||edge===WebInspector.RectEdge.MAX_X){if(y<containerFrame.minY())
y=containerFrame.minY();if(y+height>containerFrame.maxY())
y=containerFrame.maxY()-height;}else{if(x<containerFrame.minX())
x=containerFrame.minX();if(x+width>containerFrame.maxX())
x=containerFrame.maxX()-width;}
var preferredFrame=new WebInspector.Rect(x,y,width,height);var bestFrame=preferredFrame.intersectionWithRect(containerFrame);width=bestFrame.size.width-(WebInspector.Popover.ShadowPadding*2);height=bestFrame.size.height-(WebInspector.Popover.ShadowPadding*2);switch(edge){case WebInspector.RectEdge.MIN_X:case WebInspector.RectEdge.MAX_X:width-=arrowLength;break;case WebInspector.RectEdge.MIN_Y:case WebInspector.RectEdge.MAX_Y:height-=arrowLength;break;}
return{frame:bestFrame,contentSize:new WebInspector.Size(width,height)};}
_drawFrame(ctx,bounds,anchorEdge)
{let cornerRadius=WebInspector.Popover.CornerRadius;let arrowHalfLength=WebInspector.Popover.AnchorSize.width*0.5;let anchorPoint=this._anchorPoint;let arrowPadding=cornerRadius+arrowHalfLength;if(anchorEdge===WebInspector.RectEdge.MIN_Y||anchorEdge===WebInspector.RectEdge.MAX_Y)
anchorPoint.x=Number.constrain(anchorPoint.x,bounds.minX()+arrowPadding,bounds.maxX()-arrowPadding);else
anchorPoint.y=Number.constrain(anchorPoint.y,bounds.minY()+arrowPadding,bounds.maxY()-arrowPadding);ctx.beginPath();switch(anchorEdge){case WebInspector.RectEdge.MIN_X:ctx.moveTo(bounds.maxX(),bounds.minY()+cornerRadius);ctx.lineTo(bounds.maxX(),anchorPoint.y-arrowHalfLength);ctx.lineTo(anchorPoint.x,anchorPoint.y);ctx.lineTo(bounds.maxX(),anchorPoint.y+arrowHalfLength);ctx.arcTo(bounds.maxX(),bounds.maxY(),bounds.minX(),bounds.maxY(),cornerRadius);ctx.arcTo(bounds.minX(),bounds.maxY(),bounds.minX(),bounds.minY(),cornerRadius);ctx.arcTo(bounds.minX(),bounds.minY(),bounds.maxX(),bounds.minY(),cornerRadius);ctx.arcTo(bounds.maxX(),bounds.minY(),bounds.maxX(),bounds.maxY(),cornerRadius);break;case WebInspector.RectEdge.MAX_X:ctx.moveTo(bounds.minX(),bounds.maxY()-cornerRadius);ctx.lineTo(bounds.minX(),anchorPoint.y+arrowHalfLength);ctx.lineTo(anchorPoint.x,anchorPoint.y);ctx.lineTo(bounds.minX(),anchorPoint.y-arrowHalfLength);ctx.arcTo(bounds.minX(),bounds.minY(),bounds.maxX(),bounds.minY(),cornerRadius);ctx.arcTo(bounds.maxX(),bounds.minY(),bounds.maxX(),bounds.maxY(),cornerRadius);ctx.arcTo(bounds.maxX(),bounds.maxY(),bounds.minX(),bounds.maxY(),cornerRadius);ctx.arcTo(bounds.minX(),bounds.maxY(),bounds.minX(),bounds.minY(),cornerRadius);break;case WebInspector.RectEdge.MIN_Y:ctx.moveTo(bounds.maxX()-cornerRadius,bounds.maxY());ctx.lineTo(anchorPoint.x+arrowHalfLength,bounds.maxY());ctx.lineTo(anchorPoint.x,anchorPoint.y);ctx.lineTo(anchorPoint.x-arrowHalfLength,bounds.maxY());ctx.arcTo(bounds.minX(),bounds.maxY(),bounds.minX(),bounds.minY(),cornerRadius);ctx.arcTo(bounds.minX(),bounds.minY(),bounds.maxX(),bounds.minY(),cornerRadius);ctx.arcTo(bounds.maxX(),bounds.minY(),bounds.maxX(),bounds.maxY(),cornerRadius);ctx.arcTo(bounds.maxX(),bounds.maxY(),bounds.minX(),bounds.maxY(),cornerRadius);break;case WebInspector.RectEdge.MAX_Y:ctx.moveTo(bounds.minX()+cornerRadius,bounds.minY());ctx.lineTo(anchorPoint.x-arrowHalfLength,bounds.minY());ctx.lineTo(anchorPoint.x,anchorPoint.y);ctx.lineTo(anchorPoint.x+arrowHalfLength,bounds.minY());ctx.arcTo(bounds.maxX(),bounds.minY(),bounds.maxX(),bounds.maxY(),cornerRadius);ctx.arcTo(bounds.maxX(),bounds.maxY(),bounds.minX(),bounds.maxY(),cornerRadius);ctx.arcTo(bounds.minX(),bounds.maxY(),bounds.minX(),bounds.minY(),cornerRadius);ctx.arcTo(bounds.minX(),bounds.minY(),bounds.maxX(),bounds.minY(),cornerRadius);break;}
ctx.closePath();}
_addListenersIfNeeded()
{if(!this._isListeningForPopoverEvents){this._isListeningForPopoverEvents=true;window.addEventListener("mousedown",this,true);window.addEventListener("scroll",this,true);window.addEventListener("resize",this,true);window.addEventListener("keypress",this,true);WebInspector.quickConsole.keyboardShortcutDisabled=true;}}};WebInspector.Popover.FadeOutClassName="fade-out";WebInspector.Popover.CornerRadius=5;WebInspector.Popover.MinWidth=40;WebInspector.Popover.MinHeight=40;WebInspector.Popover.ShadowPadding=5;WebInspector.Popover.ContentPadding=5;WebInspector.Popover.AnchorSize=new WebInspector.Size(22,11);WebInspector.Popover.ShadowEdgeInsets=new WebInspector.EdgeInsets(WebInspector.Popover.ShadowPadding);WebInspector.Popover.IgnoreAutoDismissClassName="popover-ignore-auto-dismiss";WebInspector.Popover.EventPreventDismissSymbol=Symbol("popover-event-prevent-dismiss");WebInspector.SidebarPanel=class SidebarPanel extends WebInspector.View
{constructor(identifier,displayName)
{super();this._identifier=identifier;this._displayName=displayName;this._selected=false;this._savedScrollPosition=0;this.element.classList.add("panel",identifier);this.element.setAttribute("role","group");this.element.setAttribute("aria-label",displayName);this._contentView=new WebInspector.View;this._contentView.element.classList.add("content");this.addSubview(this._contentView);}
get identifier()
{return this._identifier;}
get contentView()
{return this._contentView;}
get displayName()
{return this._displayName;}
get visible()
{return this.selected&&this.parentSidebar&&!this.parentSidebar.collapsed;}
get selected()
{return this._selected;}
set selected(flag)
{if(flag===this._selected)
return;this._selected=flag||false;this.element.classList.toggle("selected",this._selected);}
get parentSidebar()
{return this.parentView;}
get minimumWidth()
{return 0;}
show()
{if(!this.parentSidebar)
return;this.parentSidebar.collapsed=false;this.parentSidebar.selectedSidebarPanel=this;}
hide()
{if(!this.parentSidebar)
return;this.parentSidebar.collapsed=true;this.parentSidebar.selectedSidebarPanel=null;}
added()
{}
removed()
{}
shown()
{this._contentView.element.scrollTop=this._savedScrollPosition;this.updateLayoutIfNeeded();}
hidden()
{this._savedScrollPosition=this._contentView.element.scrollTop;}
visibilityDidChange()
{}};WebInspector.StyleDetailsPanel=class StyleDetailsPanel extends WebInspector.View
{constructor(delegate,className,identifier,label)
{super();this._delegate=delegate||null;this.element.classList.add(className,"offset-sections");this._navigationInfo={identifier,label};this._nodeStyles=null;this._visible=false;}
get navigationInfo()
{return this._navigationInfo;}
get nodeStyles()
{return this._nodeStyles;}
shown()
{if(this._visible)
return;this._visible=true;this._refreshNodeStyles();this.updateLayoutIfNeeded();}
hidden()
{this._visible=false;this.cancelLayout();}
markAsNeedsRefresh(domNode)
{if(!domNode)
return;if(!this._nodeStyles||this._nodeStyles.node!==domNode){if(this._nodeStyles){this._nodeStyles.removeEventListener(WebInspector.DOMNodeStyles.Event.Refreshed,this.nodeStylesRefreshed,this);this._nodeStyles.removeEventListener(WebInspector.DOMNodeStyles.Event.NeedsRefresh,this._nodeStylesNeedsRefreshed,this);}
this._nodeStyles=WebInspector.cssStyleManager.stylesForNode(domNode);if(!this._nodeStyles)
return;this._nodeStyles.addEventListener(WebInspector.DOMNodeStyles.Event.Refreshed,this.nodeStylesRefreshed,this);this._nodeStyles.addEventListener(WebInspector.DOMNodeStyles.Event.NeedsRefresh,this._nodeStylesNeedsRefreshed,this);this._forceSignificantChange=true;}
if(this._visible)
this._refreshNodeStyles();}
refresh(significantChange)
{this.dispatchEventToListeners(WebInspector.StyleDetailsPanel.Event.Refreshed);}
nodeStylesRefreshed(event)
{if(this._visible)
this._refreshPreservingScrollPosition(event.data.significantChange);}
get _initialScrollOffset()
{if(!WebInspector.cssStyleManager.canForcePseudoClasses())
return 0;return this.nodeStyles.node.enabledPseudoClasses.length?0:WebInspector.CSSStyleDetailsSidebarPanel.NoForcedPseudoClassesScrollOffset;}
_refreshNodeStyles()
{if(!this._nodeStyles)
return;this._nodeStyles.refresh();}
_refreshPreservingScrollPosition(significantChange)
{significantChange=this._forceSignificantChange||significantChange||false;var previousScrollTop=this._initialScrollOffset;if(this.element.parentNode&&this._previousRefreshNodeIdentifier===this._nodeStyles.node.id)
previousScrollTop=this.element.parentNode.scrollTop;this.refresh(significantChange);this._previousRefreshNodeIdentifier=this._nodeStyles.node.id;if(this.element.parentNode)
this.element.parentNode.scrollTop=previousScrollTop;this._forceSignificantChange=false;}
_nodeStylesNeedsRefreshed(event)
{if(this._visible)
this._refreshNodeStyles();}};WebInspector.StyleDetailsPanel.Event={Refreshed:"style-details-panel-refreshed"};WebInspector.TabBar=class TabBar extends WebInspector.View
{constructor(element,tabBarItems)
{super(element);this.element.classList.add("tab-bar");this.element.setAttribute("role","tablist");this.element.addEventListener("mousedown",this._handleMouseDown.bind(this));this.element.addEventListener("click",this._handleClick.bind(this));this.element.addEventListener("mouseleave",this._handleMouseLeave.bind(this));this.element.createChild("div","top-border");this._tabBarItems=[];if(tabBarItems){for(let tabBarItem in tabBarItems)
this.addTabBarItem(tabBarItem);}
this.addTabBarItem(WebInspector.settingsTabContentView.tabBarItem,{suppressAnimations:true});this._newTabTabBarItem=new WebInspector.PinnedTabBarItem("Images/NewTabPlus.svg",WebInspector.UIString("Create a new tab"));this._newTabTabBarItem.element.addEventListener("mouseenter",this._handleNewTabMouseEnter.bind(this));this._newTabTabBarItem.element.addEventListener("click",this._handleNewTabClick.bind(this));this.addTabBarItem(this._newTabTabBarItem,{suppressAnimations:true});}
get newTabTabBarItem(){return this._newTabTabBarItem;}
updateNewTabTabBarItemState()
{let newTabExists=!WebInspector.isNewTabWithTypeAllowed(WebInspector.NewTabContentView.Type);this._newTabTabBarItem.disabled=newTabExists;}
addTabBarItem(tabBarItem,options={})
{return this.insertTabBarItem(tabBarItem,this._tabBarItems.length,options);}
insertTabBarItem(tabBarItem,index,options={})
{if(!(tabBarItem instanceof WebInspector.TabBarItem))
return null;if(tabBarItem.parentTabBar===this)
return null;if(this._tabAnimatedClosedSinceMouseEnter){this._finishExpandingTabsAfterClose().then(()=>{this.insertTabBarItem(tabBarItem,index,options);});return null;}
if(tabBarItem.parentTabBar)
tabBarItem.parentTabBar.removeTabBarItem(tabBarItem);tabBarItem.parentTabBar=this;index=Number.constrain(index,0,this.normalTabCount);if(this.element.classList.contains("animating")){requestAnimationFrame(removeStyles.bind(this));options.suppressAnimations=true;}
var beforeTabSizesAndPositions;if(!options.suppressAnimations)
beforeTabSizesAndPositions=this._recordTabBarItemSizesAndPositions();this._tabBarItems.splice(index,0,tabBarItem);var nextSibling=this._tabBarItems[index+1];let nextSiblingElement=nextSibling?nextSibling.element:this._tabBarItems.lastValue.element;if(this.element.isAncestor(nextSiblingElement))
this.element.insertBefore(tabBarItem.element,nextSiblingElement);else
this.element.appendChild(tabBarItem.element);this.element.classList.toggle("single-tab",!this._hasMoreThanOneNormalTab());tabBarItem.element.style.left=null;tabBarItem.element.style.width=null;function animateTabs()
{this.element.classList.add("animating");this.element.classList.add("inserting-tab");this._applyTabBarItemSizesAndPositions(afterTabSizesAndPositions);this.element.addEventListener("webkitTransitionEnd",removeStylesListener);}
function removeStyles()
{this.element.classList.remove("static-layout");this.element.classList.remove("animating");this.element.classList.remove("inserting-tab");tabBarItem.element.classList.remove("being-inserted");this._clearTabBarItemSizesAndPositions();this.element.removeEventListener("webkitTransitionEnd",removeStylesListener);}
if(!options.suppressAnimations){var afterTabSizesAndPositions=this._recordTabBarItemSizesAndPositions();this.updateLayout();let tabBarItems=this._tabBarItemsFromLeftToRight();let previousTabBarItem=tabBarItems[tabBarItems.indexOf(tabBarItem)-1]||null;let previousTabBarItemSizeAndPosition=previousTabBarItem?beforeTabSizesAndPositions.get(previousTabBarItem):null;if(previousTabBarItemSizeAndPosition)
beforeTabSizesAndPositions.set(tabBarItem,{left:previousTabBarItemSizeAndPosition.left+previousTabBarItemSizeAndPosition.width,width:0});else
beforeTabSizesAndPositions.set(tabBarItem,{left:0,width:0});this.element.classList.add("static-layout");tabBarItem.element.classList.add("being-inserted");this._applyTabBarItemSizesAndPositions(beforeTabSizesAndPositions);var removeStylesListener=removeStyles.bind(this);requestAnimationFrame(animateTabs.bind(this));}else
this.needsLayout();if(!(tabBarItem instanceof WebInspector.PinnedTabBarItem))
this.updateNewTabTabBarItemState();this.dispatchEventToListeners(WebInspector.TabBar.Event.TabBarItemAdded,{tabBarItem});return tabBarItem;}
removeTabBarItem(tabBarItemOrIndex,options={})
{let tabBarItem=this._findTabBarItem(tabBarItemOrIndex);if(!tabBarItem||tabBarItem instanceof WebInspector.PinnedTabBarItem)
return null;tabBarItem.parentTabBar=null;if(this._selectedTabBarItem===tabBarItem){var index=this._tabBarItems.indexOf(tabBarItem);var nextTabBarItem=this._tabBarItems[index+1];if(!nextTabBarItem||nextTabBarItem instanceof WebInspector.PinnedTabBarItem)
nextTabBarItem=this._tabBarItems[index-1];this.selectedTabBarItem=nextTabBarItem;}
if(this.element.classList.contains("animating")){requestAnimationFrame(removeStyles.bind(this));options.suppressAnimations=true;}
var beforeTabSizesAndPositions;if(!options.suppressAnimations)
beforeTabSizesAndPositions=this._recordTabBarItemSizesAndPositions();let wasLastNormalTab=this._tabBarItems.indexOf(tabBarItem)===this.normalTabCount-1;this._tabBarItems.remove(tabBarItem);tabBarItem.element.remove();var hasMoreThanOneNormalTab=this._hasMoreThanOneNormalTab();this.element.classList.toggle("single-tab",!hasMoreThanOneNormalTab);const shouldOpenDefaultTab=!tabBarItem.isDefaultTab&&!this.normalTabCount;if(shouldOpenDefaultTab)
options.suppressAnimations=true;if(!hasMoreThanOneNormalTab||wasLastNormalTab||!options.suppressExpansion){if(!options.suppressAnimations){this._tabAnimatedClosedSinceMouseEnter=true;this._finishExpandingTabsAfterClose(beforeTabSizesAndPositions);}else
this.needsLayout();this.updateNewTabTabBarItemState();this.dispatchEventToListeners(WebInspector.TabBar.Event.TabBarItemRemoved,{tabBarItem});if(shouldOpenDefaultTab)
this._openDefaultTab();return tabBarItem;}
var lastNormalTabBarItem;function animateTabs()
{this.element.classList.add("animating");this.element.classList.add("closing-tab");
let extraSpaceBetweenNormalAndPinnedTabs=0;if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL){extraSpaceBetweenNormalAndPinnedTabs=this.element.getBoundingClientRect().width;for(let currentTabBarItem of this._tabBarItemsFromLeftToRight())
extraSpaceBetweenNormalAndPinnedTabs-=currentTabBarItem.element.getBoundingClientRect().width;}
let left=0;for(let currentTabBarItem of this._tabBarItemsFromLeftToRight()){let sizeAndPosition=beforeTabSizesAndPositions.get(currentTabBarItem);if(!(currentTabBarItem instanceof WebInspector.PinnedTabBarItem)){currentTabBarItem.element.style.left=extraSpaceBetweenNormalAndPinnedTabs+left+"px";left+=sizeAndPosition.width;lastNormalTabBarItem=currentTabBarItem;}else
left=sizeAndPosition.left+sizeAndPosition.width;}
if(this._selectedTabBarItem)
this._selectedTabBarItem.element.style.width=(parseFloat(this._selectedTabBarItem.element.style.width)+1)+"px";if(lastNormalTabBarItem!==this._selectedTabBarItem)
lastNormalTabBarItem.element.style.width=(parseFloat(lastNormalTabBarItem.element.style.width)+1)+"px";this.element.addEventListener("webkitTransitionEnd",removeStylesListener);}
function removeStyles()
{if(this._selectedTabBarItem&&this._selectedTabBarItem!==lastNormalTabBarItem)
this._selectedTabBarItem.element.style.width=(parseFloat(this._selectedTabBarItem.element.style.width)-1)+"px";this.element.classList.remove("animating");this.element.classList.remove("closing-tab");this.updateLayout();this.element.removeEventListener("webkitTransitionEnd",removeStylesListener);}
if(!options.suppressAnimations){this.element.classList.add("static-layout");this._tabAnimatedClosedSinceMouseEnter=true;this._applyTabBarItemSizesAndPositions(beforeTabSizesAndPositions);var removeStylesListener=removeStyles.bind(this);requestAnimationFrame(animateTabs.bind(this));}else
this.needsLayout();this.updateNewTabTabBarItemState();this.dispatchEventToListeners(WebInspector.TabBar.Event.TabBarItemRemoved,{tabBarItem});if(shouldOpenDefaultTab)
this._openDefaultTab();return tabBarItem;}
selectPreviousTab()
{if(this._tabBarItems.length<=1)
return;var startIndex=this._tabBarItems.indexOf(this._selectedTabBarItem);var newIndex=startIndex;do{if(newIndex===0)
newIndex=this._tabBarItems.length-1;else
newIndex--;if(!(this._tabBarItems[newIndex]instanceof WebInspector.PinnedTabBarItem))
break;}while(newIndex!==startIndex);if(newIndex===startIndex)
return;this.selectedTabBarItem=this._tabBarItems[newIndex];}
selectNextTab()
{if(this._tabBarItems.length<=1)
return;var startIndex=this._tabBarItems.indexOf(this._selectedTabBarItem);var newIndex=startIndex;do{if(newIndex===this._tabBarItems.length-1)
newIndex=0;else
newIndex++;if(!(this._tabBarItems[newIndex]instanceof WebInspector.PinnedTabBarItem))
break;}while(newIndex!==startIndex);if(newIndex===startIndex)
return;this.selectedTabBarItem=this._tabBarItems[newIndex];}
get selectedTabBarItem()
{return this._selectedTabBarItem;}
set selectedTabBarItem(tabBarItemOrIndex)
{let tabBarItem=this._findTabBarItem(tabBarItemOrIndex);if(tabBarItem===this._newTabTabBarItem){tabBarItem=this._tabBarItems[this.normalTabCount-1];}
if(this._selectedTabBarItem===tabBarItem)
return;if(this._selectedTabBarItem)
this._selectedTabBarItem.selected=false;this._selectedTabBarItem=tabBarItem||null;if(this._selectedTabBarItem)
this._selectedTabBarItem.selected=true;this.dispatchEventToListeners(WebInspector.TabBar.Event.TabBarItemSelected);}
get tabBarItems()
{return this._tabBarItems;}
get normalTabCount()
{return this._tabBarItems.filter((item)=>!(item instanceof WebInspector.PinnedTabBarItem)).length;}
layout()
{if(this.element.classList.contains("static-layout"))
return;this.element.classList.remove("hide-titles");this.element.classList.remove("collapsed");let firstNormalTabItem=null;for(let tabItem of this._tabBarItems){if(tabItem instanceof WebInspector.PinnedTabBarItem)
continue;firstNormalTabItem=tabItem;break;}
if(!firstNormalTabItem)
return;if(firstNormalTabItem.element.offsetWidth>=120)
return;this.element.classList.add("collapsed");if(firstNormalTabItem.element.offsetWidth>=75)
return;this.element.classList.add("hide-titles");}
_tabBarItemsFromLeftToRight()
{return WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.LTR?this._tabBarItems:this._tabBarItems.slice().reverse();}
_findTabBarItem(tabBarItemOrIndex)
{if(typeof tabBarItemOrIndex==="number")
return this._tabBarItems[tabBarItemOrIndex]||null;if(tabBarItemOrIndex instanceof WebInspector.TabBarItem){if(this._tabBarItems.includes(tabBarItemOrIndex))
return tabBarItemOrIndex;}
return null;}
_hasMoreThanOneNormalTab()
{let normalTabCount=0;for(let tabBarItem of this._tabBarItems){if(tabBarItem instanceof WebInspector.PinnedTabBarItem)
continue;++normalTabCount;if(normalTabCount>=2)
return true;}
return false;}
_openDefaultTab()
{this.dispatchEventToListeners(WebInspector.TabBar.Event.OpenDefaultTab);}
_recordTabBarItemSizesAndPositions()
{var tabBarItemSizesAndPositions=new Map;const barRect=this.element.getBoundingClientRect();for(var tabBarItem of this._tabBarItems){var boundingRect=tabBarItem.element.getBoundingClientRect();tabBarItemSizesAndPositions.set(tabBarItem,{left:boundingRect.left-barRect.left,width:boundingRect.width});}
return tabBarItemSizesAndPositions;}
_applyTabBarItemSizesAndPositions(tabBarItemSizesAndPositions,skipTabBarItem)
{for(var[tabBarItem,sizeAndPosition]of tabBarItemSizesAndPositions){if(skipTabBarItem&&tabBarItem===skipTabBarItem)
continue;tabBarItem.element.style.left=sizeAndPosition.left+"px";tabBarItem.element.style.width=sizeAndPosition.width+"px";}}
_clearTabBarItemSizesAndPositions(skipTabBarItem)
{for(var tabBarItem of this._tabBarItems){if(skipTabBarItem&&tabBarItem===skipTabBarItem)
continue;tabBarItem.element.style.left=null;tabBarItem.element.style.width=null;}}
_finishExpandingTabsAfterClose(beforeTabSizesAndPositions)
{return new Promise(function(resolve,reject){this._tabAnimatedClosedSinceMouseEnter=false;if(!beforeTabSizesAndPositions)
beforeTabSizesAndPositions=this._recordTabBarItemSizesAndPositions();this.element.classList.remove("static-layout");this._clearTabBarItemSizesAndPositions();var afterTabSizesAndPositions=this._recordTabBarItemSizesAndPositions();this._applyTabBarItemSizesAndPositions(beforeTabSizesAndPositions);this.element.classList.add("static-layout");function animateTabs()
{this.element.classList.add("static-layout");this.element.classList.add("animating");this.element.classList.add("expanding-tabs");this._applyTabBarItemSizesAndPositions(afterTabSizesAndPositions);this.element.addEventListener("webkitTransitionEnd",removeStylesListener);}
function removeStyles()
{this.element.classList.remove("static-layout");this.element.classList.remove("animating");this.element.classList.remove("expanding-tabs");this._clearTabBarItemSizesAndPositions();this.updateLayout();this.element.removeEventListener("webkitTransitionEnd",removeStylesListener);resolve();}
var removeStylesListener=removeStyles.bind(this);requestAnimationFrame(animateTabs.bind(this));}.bind(this));}
_handleMouseDown(event)
{if(event.button!==0||event.ctrlKey)
return;let itemElement=event.target.enclosingNodeOrSelfWithClass(WebInspector.TabBarItem.StyleClassName);if(!itemElement)
return;let tabBarItem=itemElement[WebInspector.TabBarItem.ElementReferenceSymbol];if(!tabBarItem)
return;if(tabBarItem.disabled)
return;if(tabBarItem===this._newTabTabBarItem)
return;let closeButtonElement=event.target.enclosingNodeOrSelfWithClass(WebInspector.TabBarItem.CloseButtonStyleClassName);if(closeButtonElement)
return;this.selectedTabBarItem=tabBarItem;if(tabBarItem instanceof WebInspector.PinnedTabBarItem||!this._hasMoreThanOneNormalTab())
return;this._firstNormalTabItemIndex=0;for(let i=0;i<this._tabBarItems.length;++i){if(this._tabBarItems[i]instanceof WebInspector.PinnedTabBarItem)
continue;this._firstNormalTabItemIndex=i;break;}
this._mouseIsDown=true;this._mouseMovedEventListener=this._handleMouseMoved.bind(this);this._mouseUpEventListener=this._handleMouseUp.bind(this);document.addEventListener("mousemove",this._mouseMovedEventListener,true);document.addEventListener("mouseup",this._mouseUpEventListener,true);event.preventDefault();event.stopPropagation();}
_handleClick(event)
{var itemElement=event.target.enclosingNodeOrSelfWithClass(WebInspector.TabBarItem.StyleClassName);if(!itemElement)
return;var tabBarItem=itemElement[WebInspector.TabBarItem.ElementReferenceSymbol];if(!tabBarItem)
return;if(tabBarItem.disabled)
return;const clickedMiddleButton=event.button===1;var closeButtonElement=event.target.enclosingNodeOrSelfWithClass(WebInspector.TabBarItem.CloseButtonStyleClassName);if(closeButtonElement||clickedMiddleButton){if(tabBarItem.isDefaultTab&&this.element.classList.contains("single-tab"))
return;if(!event.altKey){this.removeTabBarItem(tabBarItem,{suppressExpansion:true});return;}
for(let i=this._tabBarItems.length-1;i>=0;--i){let item=this._tabBarItems[i];if(item===tabBarItem||item instanceof WebInspector.PinnedTabBarItem)
continue;this.removeTabBarItem(item);}}}
_handleMouseMoved(event)
{if(!this._mouseIsDown)
return;if(!this._selectedTabBarItem)
return;event.preventDefault();event.stopPropagation();if(!this.element.classList.contains("static-layout")){this._applyTabBarItemSizesAndPositions(this._recordTabBarItemSizesAndPositions());this.element.classList.add("static-layout");this.element.classList.add("dragging-tab");}
if(this._mouseOffset===undefined)
this._mouseOffset=event.pageX-this._selectedTabBarItem.element.totalOffsetLeft;var tabBarMouseOffset=event.pageX-this.element.totalOffsetLeft;var newLeft=tabBarMouseOffset-this._mouseOffset;this._selectedTabBarItem.element.style.left=newLeft+"px";var selectedTabMidX=newLeft+(this._selectedTabBarItem.element.realOffsetWidth/2);var currentIndex=this._tabBarItems.indexOf(this._selectedTabBarItem);var newIndex=currentIndex;for(let tabBarItem of this._tabBarItems){if(tabBarItem===this._selectedTabBarItem)
continue;var tabBarItemRect=tabBarItem.element.getBoundingClientRect();if(selectedTabMidX<tabBarItemRect.left||selectedTabMidX>tabBarItemRect.right)
continue;newIndex=this._tabBarItems.indexOf(tabBarItem);break;}
newIndex=Number.constrain(newIndex,this._firstNormalTabItemIndex,this.normalTabCount-1);if(currentIndex===newIndex)
return;this._tabBarItems.splice(currentIndex,1);this._tabBarItems.splice(newIndex,0,this._selectedTabBarItem);let nextSibling=this._tabBarItems[newIndex+1];let nextSiblingElement=nextSibling?nextSibling.element:this._newTabTabBarItem.element;this.element.insertBefore(this._selectedTabBarItem.element,nextSiblingElement);let left=0;for(let tabBarItem of this._tabBarItemsFromLeftToRight()){if(tabBarItem!==this._selectedTabBarItem&&tabBarItem!==this._newTabTabBarItem&&parseFloat(tabBarItem.element.style.left)!==left)
tabBarItem.element.style.left=left+"px";left+=parseFloat(tabBarItem.element.style.width);}}
_handleMouseUp(event)
{if(!this._mouseIsDown)
return;this.element.classList.remove("dragging-tab");if(!this._tabAnimatedClosedSinceMouseEnter){this.element.classList.remove("static-layout");this._clearTabBarItemSizesAndPositions();}else{let left=0;for(let tabBarItem of this._tabBarItemsFromLeftToRight()){if(tabBarItem===this._selectedTabBarItem)
tabBarItem.element.style.left=left+"px";left+=parseFloat(tabBarItem.element.style.width);}}
this._mouseIsDown=false;this._mouseOffset=undefined;document.removeEventListener("mousemove",this._mouseMovedEventListener,true);document.removeEventListener("mouseup",this._mouseUpEventListener,true);this._mouseMovedEventListener=null;this._mouseUpEventListener=null;event.preventDefault();event.stopPropagation();this.dispatchEventToListeners(WebInspector.TabBar.Event.TabBarItemsReordered);}
_handleMouseLeave(event)
{if(this._mouseIsDown||!this._tabAnimatedClosedSinceMouseEnter||!this.element.classList.contains("static-layout")||this.element.classList.contains("animating"))
return;const barRect=this.element.getBoundingClientRect();const newTabItemRect=this._newTabTabBarItem.element.getBoundingClientRect();if(event.pageY>barRect.top&&event.pageY<barRect.bottom&&event.pageX>barRect.left&&event.pageX<(newTabItemRect?newTabItemRect.right:barRect.right))
return;this._finishExpandingTabsAfterClose();}
_handleNewTabClick(event)
{WebInspector.showNewTabTab();}
_handleNewTabMouseEnter(event)
{if(!this._tabAnimatedClosedSinceMouseEnter||!this.element.classList.contains("static-layout")||this.element.classList.contains("animating"))
return;this._finishExpandingTabsAfterClose();}};WebInspector.TabBar.Event={TabBarItemSelected:"tab-bar-tab-bar-item-selected",TabBarItemAdded:"tab-bar-tab-bar-item-added",TabBarItemRemoved:"tab-bar-tab-bar-item-removed",TabBarItemsReordered:"tab-bar-tab-bar-items-reordered",OpenDefaultTab:"tab-bar-open-default-tab"};WebInspector.TabBarItem=class TabBarItem extends WebInspector.Object
{constructor(image,title,representedObject)
{super();this._parentTabBar=null;this._element=document.createElement("div");this._element.classList.add(WebInspector.TabBarItem.StyleClassName);this._element.setAttribute("role","tab");this._element.tabIndex=0;this._element[WebInspector.TabBarItem.ElementReferenceSymbol]=this;this._element.createChild("div","flex-space");this._iconElement=document.createElement("img");this._iconElement.classList.add("icon");this._element.appendChild(this._iconElement);this._element.createChild("div","flex-space");this.title=title;this.image=image;this.representedObject=representedObject;}
get element(){return this._element;}
get representedObject(){return this._representedObject;}
set representedObject(representedObject){this._representedObject=representedObject||null;}
get parentTabBar(){return this._parentTabBar;}
set parentTabBar(tabBar){this._parentTabBar=tabBar||null;}
get selected()
{return this._element.classList.contains("selected");}
set selected(selected)
{this._element.classList.toggle("selected",selected);if(selected)
this._element.setAttribute("aria-selected","true");else
this._element.removeAttribute("aria-selected");}
get disabled()
{return this._element.classList.contains("disabled");}
set disabled(disabled)
{this._element.classList.toggle("disabled",disabled);}
get isDefaultTab()
{return this._element.classList.contains("default-tab");}
set isDefaultTab(isDefaultTab)
{this._element.classList.toggle("default-tab",isDefaultTab);}
get image(){return this._iconElement.src;}
set image(url){this._iconElement.src=url||"";}
get title(){return this._element.title||"";}
set title(title){this._element.title=title||"";}};WebInspector.TabBarItem.StyleClassName="item";WebInspector.TabBarItem.CloseButtonStyleClassName="close";WebInspector.TabBarItem.ElementReferenceSymbol=Symbol("tab-bar-item");WebInspector.TabBrowser=class TabBrowser extends WebInspector.View
{constructor(element,tabBar,navigationSidebar,detailsSidebar)
{super(element);this.element.classList.add("tab-browser");this._tabBar=tabBar;this._navigationSidebar=navigationSidebar||null;this._detailsSidebar=detailsSidebar||null;if(this._navigationSidebar){this._navigationSidebar.addEventListener(WebInspector.Sidebar.Event.CollapsedStateDidChange,this._sidebarCollapsedStateDidChange,this);this._navigationSidebar.addEventListener(WebInspector.Sidebar.Event.WidthDidChange,this._sidebarWidthDidChange,this);}
if(this._detailsSidebar){this._detailsSidebar.addEventListener(WebInspector.Sidebar.Event.CollapsedStateDidChange,this._sidebarCollapsedStateDidChange,this);this._detailsSidebar.addEventListener(WebInspector.Sidebar.Event.SidebarPanelSelected,this._sidebarPanelSelected,this);this._detailsSidebar.addEventListener(WebInspector.Sidebar.Event.WidthDidChange,this._sidebarWidthDidChange,this);}
this._contentViewContainer=new WebInspector.ContentViewContainer;this.addSubview(this._contentViewContainer);let showNextTab=()=>{this._showNextTab();};let showPreviousTab=()=>{this._showPreviousTab();};let isRTL=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL;let nextKey1=isRTL?WebInspector.KeyboardShortcut.Key.LeftCurlyBrace:WebInspector.KeyboardShortcut.Key.RightCurlyBrace;let previousKey1=isRTL?WebInspector.KeyboardShortcut.Key.RightCurlyBrace:WebInspector.KeyboardShortcut.Key.LeftCurlyBrace;this._showNextTabKeyboardShortcut1=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,nextKey1,showNextTab);this._showPreviousTabKeyboardShortcut1=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,previousKey1,showPreviousTab);let nextModifier2=isRTL?WebInspector.KeyboardShortcut.Modifier.Shift:0;let previousModifier2=isRTL?0:WebInspector.KeyboardShortcut.Modifier.Shift;this._showNextTabKeyboardShortcut2=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.Control|nextModifier2,WebInspector.KeyboardShortcut.Key.Tab,showNextTab);this._showPreviousTabKeyboardShortcut2=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.Control|previousModifier2,WebInspector.KeyboardShortcut.Key.Tab,showPreviousTab);let previousTabKey=isRTL?WebInspector.KeyboardShortcut.Key.Right:WebInspector.KeyboardShortcut.Key.Left;let nextTabKey=isRTL?WebInspector.KeyboardShortcut.Key.Left:WebInspector.KeyboardShortcut.Key.Right;this._previousTabKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,previousTabKey,this._showPreviousTabCheckingForEditableField.bind(this));this._previousTabKeyboardShortcut.implicitlyPreventsDefault=false;this._nextTabKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,nextTabKey,this._showNextTabCheckingForEditableField.bind(this));this._nextTabKeyboardShortcut.implicitlyPreventsDefault=false;this._tabBar.addEventListener(WebInspector.TabBar.Event.TabBarItemSelected,this._tabBarItemSelected,this);this._tabBar.addEventListener(WebInspector.TabBar.Event.TabBarItemAdded,this._tabBarItemAdded,this);this._tabBar.addEventListener(WebInspector.TabBar.Event.TabBarItemRemoved,this._tabBarItemRemoved,this);this._tabBar.newTabTabBarItem.addEventListener(WebInspector.PinnedTabBarItem.Event.ContextMenu,this._handleNewTabContextMenu,this);this._recentTabContentViews=[];this._closedTabClasses=new Set;}
get tabBar()
{return this._tabBar;}
get navigationSidebar()
{return this._navigationSidebar;}
get detailsSidebar()
{return this._detailsSidebar;}
get selectedTabContentView()
{return this._contentViewContainer.currentContentView;}
bestTabContentViewForClass(constructor)
{for(var tabContentView of this._recentTabContentViews){if(tabContentView instanceof constructor)
return tabContentView;}
return null;}
bestTabContentViewForRepresentedObject(representedObject,options={})
{for(var tabContentView of this._recentTabContentViews){if(options.ignoreSearchTab&&tabContentView instanceof WebInspector.SearchTabContentView)
continue;if(options.ignoreNetworkTab&&tabContentView instanceof WebInspector.NetworkTabContentView)
continue;if(tabContentView.canShowRepresentedObject(representedObject))
return tabContentView;}
return null;}
addTabForContentView(tabContentView,options={})
{if(!(tabContentView instanceof WebInspector.TabContentView))
return false;let tabBarItem=tabContentView.tabBarItem;if(!(tabBarItem instanceof WebInspector.TabBarItem))
return false;if(tabBarItem.representedObject!==tabContentView)
tabBarItem.representedObject=tabContentView;tabContentView.parentTabBrowser=this;if(tabBarItem.parentTabBar===this._tabBar)
return true;
if(this._recentTabContentViews.length&&this.selectedTabContentView)
this._recentTabContentViews.splice(1,0,tabContentView);else
this._recentTabContentViews.push(tabContentView);if(typeof options.insertionIndex==="number")
this._tabBar.insertTabBarItem(tabBarItem,options.insertionIndex,options);else
this._tabBar.addTabBarItem(tabBarItem,options);return true;}
showTabForContentView(tabContentView,options={})
{if(!this.addTabForContentView(tabContentView,options))
return false;if(!options.suppressSelection)
this._tabBar.selectedTabBarItem=tabContentView.tabBarItem;
this.needsLayout();return true;}
closeTabForContentView(tabContentView,options={})
{if(!(tabContentView instanceof WebInspector.TabContentView))
return false;if(!(tabContentView.tabBarItem instanceof WebInspector.TabBarItem))
return false;if(tabContentView.tabBarItem.parentTabBar!==this._tabBar)
return false;this._tabBar.removeTabBarItem(tabContentView.tabBarItem,options);return true;}
layout()
{if(this.layoutReason!==WebInspector.View.LayoutReason.Resize)
return;for(let tabContentView of this._recentTabContentViews)
tabContentView[WebInspector.TabBrowser.NeedsResizeLayoutSymbol]=tabContentView!==this.selectedTabContentView;}
_tabBarItemSelected(event)
{let tabContentView=this._tabBar.selectedTabBarItem?this._tabBar.selectedTabBarItem.representedObject:null;if(tabContentView){let isSettingsTab=tabContentView instanceof WebInspector.SettingsTabContentView;if(!isSettingsTab){this._recentTabContentViews.remove(tabContentView);this._recentTabContentViews.unshift(tabContentView);}
this._contentViewContainer.showContentView(tabContentView);}else{this._contentViewContainer.closeAllContentViews();}
this._showNavigationSidebarPanelForTabContentView(tabContentView);this._showDetailsSidebarPanelsForTabContentView(tabContentView);if(tabContentView&&tabContentView[WebInspector.TabBrowser.NeedsResizeLayoutSymbol]){tabContentView[WebInspector.TabBrowser.NeedsResizeLayoutSymbol]=false;tabContentView.updateLayout(WebInspector.View.LayoutReason.Resize);}
this.dispatchEventToListeners(WebInspector.TabBrowser.Event.SelectedTabContentViewDidChange);}
_tabBarItemAdded(event)
{let tabContentView=event.data.tabBarItem.representedObject;if(!tabContentView)
return;this._closedTabClasses.delete(tabContentView.constructor);}
_tabBarItemRemoved(event)
{let tabContentView=event.data.tabBarItem.representedObject;if(!tabContentView)
return;this._recentTabContentViews.remove(tabContentView);if(!tabContentView.constructor.isEphemeral())
this._closedTabClasses.add(tabContentView.constructor);this._contentViewContainer.closeContentView(tabContentView);tabContentView.parentTabBrowser=null;}
_handleNewTabContextMenu(event)
{
let closedTabClasses=Array.from(this._closedTabClasses).reverse();let allTabClasses=Array.from(WebInspector.knownTabClasses());let tabClassesToDisplay=closedTabClasses.concat(allTabClasses.filter((tabClass)=>{if(closedTabClasses.includes(tabClass))
return false;if(tabClass.isEphemeral())
return false;return WebInspector.isNewTabWithTypeAllowed(tabClass.Type);}));if(!tabClassesToDisplay.length)
return;let contextMenu=event.data.contextMenu;contextMenu.appendItem(WebInspector.UIString("Recently Closed Tabs"),null,true);for(let tabClass of tabClassesToDisplay){contextMenu.appendItem(tabClass.tabInfo().title,()=>{WebInspector.createNewTabWithType(tabClass.Type,{shouldShowNewTab:true});});}}
_sidebarPanelSelected(event)
{if(this._ignoreSidebarEvents)
return;var tabContentView=this.selectedTabContentView;if(!tabContentView)
return;if(tabContentView.managesDetailsSidebarPanels)
return;var selectedSidebarPanel=this._detailsSidebar.selectedSidebarPanel;tabContentView.detailsSidebarSelectedPanelSetting.value=selectedSidebarPanel?selectedSidebarPanel.identifier:null;}
_sidebarCollapsedStateDidChange(event)
{if(this._ignoreSidebarEvents)
return;var tabContentView=this.selectedTabContentView;if(!tabContentView)
return;if(event.target===this._navigationSidebar)
tabContentView.navigationSidebarCollapsedSetting.value=this._navigationSidebar.collapsed;else if(event.target===this._detailsSidebar&&!tabContentView.managesDetailsSidebarPanels)
tabContentView.detailsSidebarCollapsedSetting.value=this._detailsSidebar.collapsed;}
_sidebarWidthDidChange(event)
{if(this._ignoreSidebarEvents||!event.data)
return;let tabContentView=this.selectedTabContentView;if(!tabContentView)
return;switch(event.target){case this._navigationSidebar:tabContentView.navigationSidebarWidthSetting.value=event.data.newWidth;break;case this._detailsSidebar:tabContentView.detailsSidebarWidthSetting.value=event.data.newWidth;break;}}
_showNavigationSidebarPanelForTabContentView(tabContentView)
{if(!this._navigationSidebar)
return;this._ignoreSidebarEvents=true;this._navigationSidebar.removeSidebarPanel(0);if(!tabContentView){this._ignoreSidebarEvents=false;return;}
if(tabContentView.navigationSidebarWidthSetting.value)
this._navigationSidebar.width=tabContentView.navigationSidebarWidthSetting.value;var navigationSidebarPanel=tabContentView.navigationSidebarPanel;if(!navigationSidebarPanel){this._navigationSidebar.collapsed=true;this._ignoreSidebarEvents=false;return;}
this._navigationSidebar.addSidebarPanel(navigationSidebarPanel);this._navigationSidebar.selectedSidebarPanel=navigationSidebarPanel;this._navigationSidebar.collapsed=tabContentView.navigationSidebarCollapsedSetting.value;this._ignoreSidebarEvents=false;}
_showDetailsSidebarPanelsForTabContentView(tabContentView)
{if(!this._detailsSidebar)
return;this._ignoreSidebarEvents=true;for(var i=this._detailsSidebar.sidebarPanels.length-1;i>=0;--i)
this._detailsSidebar.removeSidebarPanel(i);if(!tabContentView){this._ignoreSidebarEvents=false;return;}
if(tabContentView.detailsSidebarWidthSetting.value)
this._detailsSidebar.width=tabContentView.detailsSidebarWidthSetting.value;if(tabContentView.managesDetailsSidebarPanels){tabContentView.showDetailsSidebarPanels();this._ignoreSidebarEvents=false;return;}
var detailsSidebarPanels=tabContentView.detailsSidebarPanels;if(!detailsSidebarPanels){this._detailsSidebar.collapsed=true;this._ignoreSidebarEvents=false;return;}
for(var detailsSidebarPanel of detailsSidebarPanels)
this._detailsSidebar.addSidebarPanel(detailsSidebarPanel);this._detailsSidebar.selectedSidebarPanel=tabContentView.detailsSidebarSelectedPanelSetting.value||detailsSidebarPanels[0];this._detailsSidebar.collapsed=tabContentView.detailsSidebarCollapsedSetting.value||!detailsSidebarPanels.length;this._ignoreSidebarEvents=false;}
_showPreviousTab(event)
{this._tabBar.selectPreviousTab();}
_showNextTab(event)
{this._tabBar.selectNextTab();}
_showNextTabCheckingForEditableField(event)
{if(WebInspector.isEventTargetAnEditableField(event))
return;this._showNextTab(event);event.preventDefault();}
_showPreviousTabCheckingForEditableField(event)
{if(WebInspector.isEventTargetAnEditableField(event))
return;this._showPreviousTab(event);event.preventDefault();}};WebInspector.TabBrowser.NeedsResizeLayoutSymbol=Symbol("needs-resize-layout");WebInspector.TabBrowser.Event={SelectedTabContentViewDidChange:"tab-browser-selected-tab-content-view-did-change"};WebInspector.TextEditor=class TextEditor extends WebInspector.View
{constructor(element,mimeType,delegate)
{super(element);this.element.classList.add("text-editor",WebInspector.SyntaxHighlightedStyleClassName);this._codeMirror=WebInspector.CodeMirrorEditor.create(this.element,{readOnly:true,indentWithTabs:WebInspector.settings.indentWithTabs.value,indentUnit:WebInspector.settings.indentUnit.value,tabSize:WebInspector.settings.tabSize.value,lineNumbers:true,lineWrapping:WebInspector.settings.enableLineWrapping.value,matchBrackets:true,autoCloseBrackets:true,showWhitespaceCharacters:WebInspector.settings.showWhitespaceCharacters.value,styleSelectedText:true,});WebInspector.settings.indentWithTabs.addEventListener(WebInspector.Setting.Event.Changed,(event)=>{this._codeMirror.setOption("indentWithTabs",WebInspector.settings.indentWithTabs.value);});WebInspector.settings.indentUnit.addEventListener(WebInspector.Setting.Event.Changed,(event)=>{this._codeMirror.setOption("indentUnit",WebInspector.settings.indentUnit.value);});WebInspector.settings.tabSize.addEventListener(WebInspector.Setting.Event.Changed,(event)=>{this._codeMirror.setOption("tabSize",WebInspector.settings.tabSize.value);});WebInspector.settings.enableLineWrapping.addEventListener(WebInspector.Setting.Event.Changed,(event)=>{this._codeMirror.setOption("lineWrapping",WebInspector.settings.enableLineWrapping.value);});WebInspector.settings.showWhitespaceCharacters.addEventListener(WebInspector.Setting.Event.Changed,(event)=>{this._codeMirror.setOption("showWhitespaceCharacters",WebInspector.settings.showWhitespaceCharacters.value);});this._codeMirror.on("change",this._contentChanged.bind(this));this._codeMirror.on("gutterClick",this._gutterMouseDown.bind(this));this._codeMirror.on("gutterContextMenu",this._gutterContextMenu.bind(this));this._codeMirror.getScrollerElement().addEventListener("click",this._openClickedLinks.bind(this),true);this._completionController=new WebInspector.CodeMirrorCompletionController(this._codeMirror,this);this._tokenTrackingController=new WebInspector.CodeMirrorTokenTrackingController(this._codeMirror,this);this._initialStringNotSet=true;this.mimeType=mimeType;this._breakpoints={};this._executionLineNumber=NaN;this._executionColumnNumber=NaN;this._executionLineHandle=null;this._executionMultilineHandles=[];this._executionRangeHighlightMarker=null;this._searchQuery=null;this._searchResults=[];this._currentSearchResultIndex=-1;this._ignoreCodeMirrorContentDidChangeEvent=0;this._formatted=false;this._formattingPromise=null;this._formatterSourceMap=null;this._deferReveal=false;this._delegate=delegate||null;}
get visible()
{return this._visible;}
get string()
{return this._codeMirror.getValue();}
set string(newString)
{function update()
{if(this._initialStringNotSet)
this._codeMirror.removeLineClass(0,"wrap");if(this._codeMirror.getValue()!==newString){this._codeMirror.setValue(newString);}else{this.layout();}
if(this._initialStringNotSet){this._codeMirror.clearHistory();this._codeMirror.markClean();this._initialStringNotSet=false;}
this._updateExecutionLine();this._updateExecutionRangeHighlight();for(var lineNumber in this._breakpoints)
this._setBreakpointStylesOnLine(lineNumber);this._revealPendingPositionIfPossible();}
this._ignoreCodeMirrorContentDidChangeEvent++;this._codeMirror.operation(update.bind(this));this._ignoreCodeMirrorContentDidChangeEvent--;}
get readOnly()
{return this._codeMirror.getOption("readOnly")||false;}
set readOnly(readOnly)
{this._codeMirror.setOption("readOnly",readOnly);}
get formatted()
{return this._formatted;}
get hasModified()
{let historySize=this._codeMirror.historySize().undo;if(this._formatted)
historySize--;return historySize>0;}
updateFormattedState(formatted)
{return this._format(formatted).catch(handlePromiseException);}
hasFormatter()
{let mode=this._codeMirror.getMode().name;return mode==="javascript"||mode==="css";}
canBeFormatted()
{return this.hasFormatter();}
canShowTypeAnnotations()
{return false;}
canShowCoverageHints()
{return false;}
get selectedTextRange()
{var start=this._codeMirror.getCursor(true);var end=this._codeMirror.getCursor(false);return this._textRangeFromCodeMirrorPosition(start,end);}
set selectedTextRange(textRange)
{var position=this._codeMirrorPositionFromTextRange(textRange);this._codeMirror.setSelection(position.start,position.end);}
get mimeType()
{return this._mimeType;}
set mimeType(newMIMEType)
{newMIMEType=parseMIMEType(newMIMEType).type;this._mimeType=newMIMEType;this._codeMirror.setOption("mode",{name:newMIMEType,globalVars:true});}
get executionLineNumber()
{return this._executionLineNumber;}
get executionColumnNumber()
{return this._executionColumnNumber;}
get formatterSourceMap()
{return this._formatterSourceMap;}
get tokenTrackingController()
{return this._tokenTrackingController;}
get delegate()
{return this._delegate;}
set delegate(newDelegate)
{this._delegate=newDelegate||null;}
get numberOfSearchResults()
{return this._searchResults.length;}
get currentSearchQuery()
{return this._searchQuery;}
set automaticallyRevealFirstSearchResult(reveal)
{this._automaticallyRevealFirstSearchResult=reveal;if(this._automaticallyRevealFirstSearchResult&&this._searchResults.length>0){if(this._currentSearchResultIndex===-1)
this._revealFirstSearchResultAfterCursor();}}
set deferReveal(defer)
{this._deferReveal=defer;}
performSearch(query)
{if(this._searchQuery===query)
return;this.searchCleared();this._searchQuery=query;if(typeof this.customPerformSearch==="function"&&!this.formatted){if(this.customPerformSearch(query))
return;}
var queryRegex=new RegExp(query.escapeForRegExp(),"gi");var searchCursor=this._codeMirror.getSearchCursor(queryRegex,{line:0,ch:0},false);var boundBatchSearch=batchSearch.bind(this);var numberOfSearchResultsDidChangeTimeout=null;function reportNumberOfSearchResultsDidChange()
{if(numberOfSearchResultsDidChangeTimeout){clearTimeout(numberOfSearchResultsDidChangeTimeout);numberOfSearchResultsDidChangeTimeout=null;}
this.dispatchEventToListeners(WebInspector.TextEditor.Event.NumberOfSearchResultsDidChange);}
function batchSearch()
{if(this._searchQuery!==query)
return;var newSearchResults=[];var foundResult=false;for(var i=0;i<WebInspector.TextEditor.NumberOfFindsPerSearchBatch&&(foundResult=searchCursor.findNext());++i){var textRange=this._textRangeFromCodeMirrorPosition(searchCursor.from(),searchCursor.to());newSearchResults.push(textRange);}
this.addSearchResults(newSearchResults);if(!numberOfSearchResultsDidChangeTimeout)
numberOfSearchResultsDidChangeTimeout=setTimeout(reportNumberOfSearchResultsDidChange.bind(this),500);if(foundResult){setTimeout(boundBatchSearch,50);}else{reportNumberOfSearchResultsDidChange.call(this);}}
boundBatchSearch();}
setExecutionLineAndColumn(lineNumber,columnNumber)
{if(!this._executionLineHandle&&isNaN(lineNumber))
return;this._executionLineNumber=lineNumber;this._executionColumnNumber=columnNumber;if(!this._initialStringNotSet){this._updateExecutionLine();this._updateExecutionRangeHighlight();}
this.dispatchEventToListeners(WebInspector.TextEditor.Event.ExecutionLineNumberDidChange);}
addSearchResults(textRanges)
{if(!textRanges||!textRanges.length)
return;function markRanges()
{for(var i=0;i<textRanges.length;++i){var position=this._codeMirrorPositionFromTextRange(textRanges[i]);var mark=this._codeMirror.markText(position.start,position.end,{className:WebInspector.TextEditor.SearchResultStyleClassName});this._searchResults.push(mark);}
if(this._automaticallyRevealFirstSearchResult){if(this._currentSearchResultIndex===-1)
this._revealFirstSearchResultAfterCursor();}}
this._codeMirror.operation(markRanges.bind(this));}
searchCleared()
{function clearResults(){for(var i=0;i<this._searchResults.length;++i)
this._searchResults[i].clear();}
this._codeMirror.operation(clearResults.bind(this));this._searchQuery=null;this._searchResults=[];this._currentSearchResultIndex=-1;}
searchQueryWithSelection()
{if(!this._codeMirror.somethingSelected())
return null;return this._codeMirror.getSelection();}
revealPreviousSearchResult(changeFocus)
{if(!this._searchResults.length)
return;if(this._currentSearchResultIndex===-1||this._cursorDoesNotMatchLastRevealedSearchResult()){this._revealFirstSearchResultBeforeCursor(changeFocus);return;}
if(this._currentSearchResultIndex>0)
--this._currentSearchResultIndex;else
this._currentSearchResultIndex=this._searchResults.length-1;this._revealSearchResult(this._searchResults[this._currentSearchResultIndex],changeFocus,-1);}
revealNextSearchResult(changeFocus)
{if(!this._searchResults.length)
return;if(this._currentSearchResultIndex===-1||this._cursorDoesNotMatchLastRevealedSearchResult()){this._revealFirstSearchResultAfterCursor(changeFocus);return;}
if(this._currentSearchResultIndex+1<this._searchResults.length)
++this._currentSearchResultIndex;else
this._currentSearchResultIndex=0;this._revealSearchResult(this._searchResults[this._currentSearchResultIndex],changeFocus,1);}
line(lineNumber)
{return this._codeMirror.getLine(lineNumber);}
getTextInRange(startPosition,endPosition)
{return this._codeMirror.getRange(startPosition,endPosition);}
addStyleToTextRange(startPosition,endPosition,styleClassName)
{endPosition.ch+=1;return this._codeMirror.getDoc().markText(startPosition,endPosition,{className:styleClassName,inclusiveLeft:true,inclusiveRight:true});}
revealPosition(position,textRangeToSelect,forceUnformatted,noHighlight)
{if(!(position instanceof WebInspector.SourceCodePosition))
return;if(!this._visible||this._initialStringNotSet||this._deferReveal){this._positionToReveal=position;this._textRangeToSelect=textRangeToSelect;this._forceUnformatted=forceUnformatted;return;}
delete this._positionToReveal;delete this._textRangeToSelect;delete this._forceUnformatted;if(this._formatted&&forceUnformatted){this.updateFormattedState(false).then(()=>{setTimeout(this.revealPosition.bind(this),0,position,textRangeToSelect);});return;}
let line=Number.constrain(position.lineNumber,0,this._codeMirror.lineCount()-1);let lineHandle=this._codeMirror.getLineHandle(line);if(!textRangeToSelect){let column=Number.constrain(position.columnNumber,0,this._codeMirror.getLine(line).length-1);textRangeToSelect=new WebInspector.TextRange(line,column,line,column);}
function removeStyleClass()
{this._codeMirror.removeLineClass(lineHandle,"wrap",WebInspector.TextEditor.HighlightedStyleClassName);}
function revealAndHighlightLine()
{var position=this._codeMirrorPositionFromTextRange(textRangeToSelect);if(!this._isPositionVisible(position.start))
this._scrollIntoViewCentered(position.start);this.selectedTextRange=textRangeToSelect;if(noHighlight)
return;if(WebInspector.debuggerManager.paused&&line===this._executionLineNumber)
return;this._codeMirror.addLineClass(lineHandle,"wrap",WebInspector.TextEditor.HighlightedStyleClassName);
setTimeout(removeStyleClass.bind(this),WebInspector.TextEditor.HighlightAnimationDuration);}
this._codeMirror.operation(revealAndHighlightLine.bind(this));}
shown()
{this._visible=true;this._codeMirror.refresh();
this._revealPendingPositionIfPossible();}
hidden()
{this._visible=false;}
close()
{WebInspector.settings.indentWithTabs.removeEventListener(null,null,this);WebInspector.settings.indentUnit.removeEventListener(null,null,this);WebInspector.settings.tabSize.removeEventListener(null,null,this);WebInspector.settings.enableLineWrapping.removeEventListener(null,null,this);WebInspector.settings.showWhitespaceCharacters.removeEventListener(null,null,this);}
setBreakpointInfoForLineAndColumn(lineNumber,columnNumber,breakpointInfo)
{if(this._ignoreSetBreakpointInfoCalls)
return;if(breakpointInfo)
this._addBreakpointToLineAndColumnWithInfo(lineNumber,columnNumber,breakpointInfo);else
this._removeBreakpointFromLineAndColumn(lineNumber,columnNumber);}
updateBreakpointLineAndColumn(oldLineNumber,oldColumnNumber,newLineNumber,newColumnNumber)
{if(!this._breakpoints[oldLineNumber])
return;if(!this._breakpoints[oldLineNumber][oldColumnNumber])
return;var breakpointInfo=this._breakpoints[oldLineNumber][oldColumnNumber];this._removeBreakpointFromLineAndColumn(oldLineNumber,oldColumnNumber);this._addBreakpointToLineAndColumnWithInfo(newLineNumber,newColumnNumber,breakpointInfo);}
addStyleClassToLine(lineNumber,styleClassName)
{var lineHandle=this._codeMirror.getLineHandle(lineNumber);if(!lineHandle)
return null;return this._codeMirror.addLineClass(lineHandle,"wrap",styleClassName);}
removeStyleClassFromLine(lineNumber,styleClassName)
{var lineHandle=this._codeMirror.getLineHandle(lineNumber);if(!lineHandle)
return null;return this._codeMirror.removeLineClass(lineHandle,"wrap",styleClassName);}
toggleStyleClassForLine(lineNumber,styleClassName)
{var lineHandle=this._codeMirror.getLineHandle(lineNumber);if(!lineHandle)
return false;return this._codeMirror.toggleLineClass(lineHandle,"wrap",styleClassName);}
createWidgetForLine(lineNumber)
{var lineHandle=this._codeMirror.getLineHandle(lineNumber);if(!lineHandle)
return null;var widgetElement=document.createElement("div");var lineWidget=this._codeMirror.addLineWidget(lineHandle,widgetElement,{coverGutter:false,noHScroll:true});return new WebInspector.LineWidget(lineWidget,widgetElement);}
get lineCount()
{return this._codeMirror.lineCount();}
focus()
{this._codeMirror.focus();}
contentDidChange(replacedRanges,newRanges)
{}
rectsForRange(range)
{return this._codeMirror.rectsForRange(range);}
get markers()
{return this._codeMirror.getAllMarks().map(WebInspector.TextMarker.textMarkerForCodeMirrorTextMarker);}
markersAtPosition(position)
{return this._codeMirror.findMarksAt(position).map(WebInspector.TextMarker.textMarkerForCodeMirrorTextMarker);}
createColorMarkers(range)
{return createCodeMirrorColorTextMarkers(this._codeMirror,range);}
createGradientMarkers(range)
{return createCodeMirrorGradientTextMarkers(this._codeMirror,range);}
createCubicBezierMarkers(range)
{return createCodeMirrorCubicBezierTextMarkers(this._codeMirror,range);}
createSpringMarkers(range)
{return createCodeMirrorSpringTextMarkers(this._codeMirror,range);}
editingControllerForMarker(editableMarker)
{switch(editableMarker.type){case WebInspector.TextMarker.Type.Color:return new WebInspector.CodeMirrorColorEditingController(this._codeMirror,editableMarker);case WebInspector.TextMarker.Type.Gradient:return new WebInspector.CodeMirrorGradientEditingController(this._codeMirror,editableMarker);case WebInspector.TextMarker.Type.CubicBezier:return new WebInspector.CodeMirrorBezierEditingController(this._codeMirror,editableMarker);case WebInspector.TextMarker.Type.Spring:return new WebInspector.CodeMirrorSpringEditingController(this._codeMirror,editableMarker);default:return new WebInspector.CodeMirrorEditingController(this._codeMirror,editableMarker);}}
visibleRangeOffsets()
{var startOffset=null;var endOffset=null;var visibleRange=this._codeMirror.getViewport();if(this._formatterSourceMap){startOffset=this._formatterSourceMap.formattedToOriginalOffset(Math.max(visibleRange.from-1,0),0);endOffset=this._formatterSourceMap.formattedToOriginalOffset(visibleRange.to-1,0);}else{startOffset=this._codeMirror.getDoc().indexFromPos({line:visibleRange.from,ch:0});endOffset=this._codeMirror.getDoc().indexFromPos({line:visibleRange.to,ch:0});}
return{startOffset,endOffset};}
originalOffsetToCurrentPosition(offset)
{var position=null;if(this._formatterSourceMap){var location=this._formatterSourceMap.originalPositionToFormatted(offset);position={line:location.lineNumber,ch:location.columnNumber};}else
position=this._codeMirror.getDoc().posFromIndex(offset);return position;}
currentOffsetToCurrentPosition(offset)
{return this._codeMirror.getDoc().posFromIndex(offset);}
currentPositionToOriginalOffset(position)
{let offset=null;if(this._formatterSourceMap)
offset=this._formatterSourceMap.formattedToOriginalOffset(position.line,position.ch);else
offset=this._codeMirror.getDoc().indexFromPos(position);return offset;}
currentPositionToOriginalPosition(position)
{if(!this._formatterSourceMap)
return position;let location=this._formatterSourceMap.formattedToOriginal(position.line,position.ch);return{line:location.lineNumber,ch:location.columnNumber};}
currentPositionToCurrentOffset(position)
{return this._codeMirror.getDoc().indexFromPos(position);}
setInlineWidget(position,inlineElement)
{return this._codeMirror.setUniqueBookmark(position,{widget:inlineElement});}
addScrollHandler(handler)
{this._codeMirror.on("scroll",handler);}
removeScrollHandler(handler)
{this._codeMirror.off("scroll",handler);}
layout()
{
if(this._visible)
this._codeMirror.refresh();}
_format(formatted)
{if(this._formatted===formatted)
return Promise.resolve(this._formatted);if(formatted&&!this.canBeFormatted())
return Promise.resolve(this._formatted);if(this._formattingPromise)
return this._formattingPromise;this._ignoreCodeMirrorContentDidChangeEvent++;this._formattingPromise=this.prettyPrint(formatted).then(()=>{this._ignoreCodeMirrorContentDidChangeEvent--;this._formattingPromise=null;let originalFormatted=this._formatted;this._formatted=!!this._formatterSourceMap;if(this._formatted!==originalFormatted)
this.dispatchEventToListeners(WebInspector.TextEditor.Event.FormattingDidChange);return this._formatted;});return this._formattingPromise;}
prettyPrint(pretty)
{return new Promise((resolve,reject)=>{let beforePrettyPrintState={selectionAnchor:this._codeMirror.getCursor("anchor"),selectionHead:this._codeMirror.getCursor("head"),};if(!pretty)
this._undoFormatting(beforePrettyPrintState,resolve);else if(this._canUseFormatterWorker())
this._startWorkerPrettyPrint(beforePrettyPrintState,resolve);else
this._startCodeMirrorPrettyPrint(beforePrettyPrintState,resolve);});}
_canUseFormatterWorker()
{return this._codeMirror.getMode().name==="javascript";}
_startWorkerPrettyPrint(beforePrettyPrintState,callback)
{let sourceText=this._codeMirror.getValue();let indentString=WebInspector.indentString();const includeSourceMapData=true;let sourceType=this._delegate?this._delegate.textEditorScriptSourceType(this):WebInspector.Script.SourceType.Program;const isModule=sourceType===WebInspector.Script.SourceType.Module;let workerProxy=WebInspector.FormatterWorkerProxy.singleton();workerProxy.formatJavaScript(sourceText,isModule,indentString,includeSourceMapData,({formattedText,sourceMapData})=>{if(formattedText===null){callback();return;}
this._finishPrettyPrint(beforePrettyPrintState,formattedText,sourceMapData,callback);});}
_startCodeMirrorPrettyPrint(beforePrettyPrintState,callback)
{let indentString=WebInspector.indentString();let start={line:0,ch:0};let end={line:this._codeMirror.lineCount()-1};let builder=new FormatterContentBuilder(indentString);let formatter=new WebInspector.Formatter(this._codeMirror,builder);formatter.format(start,end);let formattedText=builder.formattedContent;let sourceMapData=builder.sourceMapData;this._finishPrettyPrint(beforePrettyPrintState,formattedText,sourceMapData,callback);}
_finishPrettyPrint(beforePrettyPrintState,formattedText,sourceMapData,callback)
{this._codeMirror.operation(()=>{this._formatterSourceMap=WebInspector.FormatterSourceMap.fromSourceMapData(sourceMapData);this._codeMirror.setValue(formattedText);this._updateAfterFormatting(true,beforePrettyPrintState);});callback();}
_undoFormatting(beforePrettyPrintState,callback)
{this._codeMirror.operation(()=>{this._codeMirror.undo();this._updateAfterFormatting(false,beforePrettyPrintState);});callback();}
_updateAfterFormatting(pretty,beforePrettyPrintState)
{let oldSelectionAnchor=beforePrettyPrintState.selectionAnchor;let oldSelectionHead=beforePrettyPrintState.selectionHead;let newSelectionAnchor,newSelectionHead;let newExecutionLocation=null;if(pretty){if(this._positionToReveal){let newRevealPosition=this._formatterSourceMap.originalToFormatted(this._positionToReveal.lineNumber,this._positionToReveal.columnNumber);this._positionToReveal=new WebInspector.SourceCodePosition(newRevealPosition.lineNumber,newRevealPosition.columnNumber);}
if(this._textRangeToSelect){let mappedRevealSelectionStart=this._formatterSourceMap.originalToFormatted(this._textRangeToSelect.startLine,this._textRangeToSelect.startColumn);let mappedRevealSelectionEnd=this._formatterSourceMap.originalToFormatted(this._textRangeToSelect.endLine,this._textRangeToSelect.endColumn);this._textRangeToSelect=new WebInspector.TextRange(mappedRevealSelectionStart.lineNumber,mappedRevealSelectionStart.columnNumber,mappedRevealSelectionEnd.lineNumber,mappedRevealSelectionEnd.columnNumber);}
if(!isNaN(this._executionLineNumber)){newExecutionLocation=this._formatterSourceMap.originalToFormatted(this._executionLineNumber,this._executionColumnNumber);}
let mappedAnchorLocation=this._formatterSourceMap.originalToFormatted(oldSelectionAnchor.line,oldSelectionAnchor.ch);let mappedHeadLocation=this._formatterSourceMap.originalToFormatted(oldSelectionHead.line,oldSelectionHead.ch);newSelectionAnchor={line:mappedAnchorLocation.lineNumber,ch:mappedAnchorLocation.columnNumber};newSelectionHead={line:mappedHeadLocation.lineNumber,ch:mappedHeadLocation.columnNumber};}else{if(this._positionToReveal){let newRevealPosition=this._formatterSourceMap.formattedToOriginal(this._positionToReveal.lineNumber,this._positionToReveal.columnNumber);this._positionToReveal=new WebInspector.SourceCodePosition(newRevealPosition.lineNumber,newRevealPosition.columnNumber);}
if(this._textRangeToSelect){let mappedRevealSelectionStart=this._formatterSourceMap.formattedToOriginal(this._textRangeToSelect.startLine,this._textRangeToSelect.startColumn);let mappedRevealSelectionEnd=this._formatterSourceMap.formattedToOriginal(this._textRangeToSelect.endLine,this._textRangeToSelect.endColumn);this._textRangeToSelect=new WebInspector.TextRange(mappedRevealSelectionStart.lineNumber,mappedRevealSelectionStart.columnNumber,mappedRevealSelectionEnd.lineNumber,mappedRevealSelectionEnd.columnNumber);}
if(!isNaN(this._executionLineNumber)){newExecutionLocation=this._formatterSourceMap.formattedToOriginal(this._executionLineNumber,this._executionColumnNumber);}
let mappedAnchorLocation=this._formatterSourceMap.formattedToOriginal(oldSelectionAnchor.line,oldSelectionAnchor.ch);let mappedHeadLocation=this._formatterSourceMap.formattedToOriginal(oldSelectionHead.line,oldSelectionHead.ch);newSelectionAnchor={line:mappedAnchorLocation.lineNumber,ch:mappedAnchorLocation.columnNumber};newSelectionHead={line:mappedHeadLocation.lineNumber,ch:mappedHeadLocation.columnNumber};this._formatterSourceMap=null;}
this._scrollIntoViewCentered(newSelectionAnchor);this._codeMirror.setSelection(newSelectionAnchor,newSelectionHead);if(newExecutionLocation){this._executionLineHandle=null;this._executionMultilineHandles=[];this.setExecutionLineAndColumn(newExecutionLocation.lineNumber,newExecutionLocation.columnNumber);}
if(this.currentSearchQuery){let searchQuery=this.currentSearchQuery;this.searchCleared();setTimeout(()=>{this.performSearch(searchQuery);},0);}
if(this._delegate&&typeof this._delegate.textEditorUpdatedFormatting==="function")
this._delegate.textEditorUpdatedFormatting(this);}
hasEdits()
{return!this._codeMirror.isClean();}
_contentChanged(codeMirror,change)
{if(this._ignoreCodeMirrorContentDidChangeEvent>0)
return;var replacedRanges=[];var newRanges=[];while(change){replacedRanges.push(new WebInspector.TextRange(change.from.line,change.from.ch,change.to.line,change.to.ch));newRanges.push(new WebInspector.TextRange(change.from.line,change.from.ch,change.from.line+change.text.length-1,change.text.length===1?change.from.ch+change.text[0].length:change.text.lastValue.length));change=change.next;}
this.contentDidChange(replacedRanges,newRanges);if(this._formatted){this._formatterSourceMap=null;this._formatted=false;if(this._delegate&&typeof this._delegate.textEditorUpdatedFormatting==="function")
this._delegate.textEditorUpdatedFormatting(this);this.dispatchEventToListeners(WebInspector.TextEditor.Event.FormattingDidChange);}
this.dispatchEventToListeners(WebInspector.TextEditor.Event.ContentDidChange);}
_textRangeFromCodeMirrorPosition(start,end)
{return new WebInspector.TextRange(start.line,start.ch,end.line,end.ch);}
_codeMirrorPositionFromTextRange(textRange)
{var start={line:textRange.startLine,ch:textRange.startColumn};var end={line:textRange.endLine,ch:textRange.endColumn};return{start,end};}
_revealPendingPositionIfPossible()
{if(!this._positionToReveal)
return;if(!this._visible)
return;this.revealPosition(this._positionToReveal,this._textRangeToSelect,this._forceUnformatted);}
_revealSearchResult(result,changeFocus,directionInCaseOfRevalidation)
{var position=result.find();if(!position){this._revalidateSearchResults(directionInCaseOfRevalidation);return;}
if(!this._isPositionVisible(position.from))
this._scrollIntoViewCentered(position.from);this.selectedTextRange=this._textRangeFromCodeMirrorPosition(position.from,position.to);this._automaticallyRevealFirstSearchResult=false;if(changeFocus)
this._codeMirror.focus();
if(this._bouncyHighlightElement)
this._bouncyHighlightElement.remove();this._bouncyHighlightElement=document.createElement("div");this._bouncyHighlightElement.className=WebInspector.TextEditor.BouncyHighlightStyleClassName;var textContent=this._codeMirror.getSelection();var coordinates=this._codeMirror.cursorCoords(true,"page");let textEditorRect=this.element.getBoundingClientRect();coordinates.top-=textEditorRect.top;coordinates.left-=textEditorRect.left;this._bouncyHighlightElement.textContent=textContent;this._bouncyHighlightElement.style.top=coordinates.top+"px";this._bouncyHighlightElement.style.left=coordinates.left+"px";this.element.appendChild(this._bouncyHighlightElement);let scrollHandler=()=>{if(this._bouncyHighlightElement)
this._bouncyHighlightElement.remove();};this.addScrollHandler(scrollHandler);function animationEnded()
{if(!this._bouncyHighlightElement)
return;this._bouncyHighlightElement.remove();delete this._bouncyHighlightElement;this.removeScrollHandler(scrollHandler);}
this._bouncyHighlightElement.addEventListener("animationend",animationEnded.bind(this));}
_binarySearchInsertionIndexInSearchResults(object,comparator)
{
var array=this._searchResults;var first=0;var last=array.length-1;while(first<=last){var mid=(first+last)>>1;var c=comparator(object,array[mid]);if(c===null)
return null;if(c>0)
first=mid+1;else if(c<0)
last=mid-1;else
return mid;}
return first-1;}
_revealFirstSearchResultBeforeCursor(changeFocus)
{var currentCursorPosition=this._codeMirror.getCursor("start");if(currentCursorPosition.line===0&&currentCursorPosition.ch===0){this._currentSearchResultIndex=this._searchResults.length-1;this._revealSearchResult(this._searchResults[this._currentSearchResultIndex],changeFocus,-1);return;}
var index=this._binarySearchInsertionIndexInSearchResults(currentCursorPosition,function(current,searchResult){var searchResultMarker=searchResult.find();if(!searchResultMarker)
return null;return WebInspector.compareCodeMirrorPositions(current,searchResultMarker.from);});if(index===null){this._revalidateSearchResults(-1);return;}
this._currentSearchResultIndex=index;this._revealSearchResult(this._searchResults[this._currentSearchResultIndex],changeFocus);}
_revealFirstSearchResultAfterCursor(changeFocus)
{var currentCursorPosition=this._codeMirror.getCursor("start");if(currentCursorPosition.line===0&&currentCursorPosition.ch===0){this._currentSearchResultIndex=0;this._revealSearchResult(this._searchResults[this._currentSearchResultIndex],changeFocus,1);return;}
var index=this._binarySearchInsertionIndexInSearchResults(currentCursorPosition,function(current,searchResult){var searchResultMarker=searchResult.find();if(!searchResultMarker)
return null;return WebInspector.compareCodeMirrorPositions(current,searchResultMarker.from);});if(index===null){this._revalidateSearchResults(1);return;}
if(index+1<this._searchResults.length)
++index;else
index=0;this._currentSearchResultIndex=index;this._revealSearchResult(this._searchResults[this._currentSearchResultIndex],changeFocus);}
_cursorDoesNotMatchLastRevealedSearchResult()
{var lastRevealedSearchResultMarker=this._searchResults[this._currentSearchResultIndex].find();if(!lastRevealedSearchResultMarker)
return true;var currentCursorPosition=this._codeMirror.getCursor("start");var lastRevealedSearchResultPosition=lastRevealedSearchResultMarker.from;return WebInspector.compareCodeMirrorPositions(currentCursorPosition,lastRevealedSearchResultPosition)!==0;}
_revalidateSearchResults(direction)
{this._currentSearchResultIndex=-1;var updatedSearchResults=[];for(var i=0;i<this._searchResults.length;++i){if(this._searchResults[i].find())
updatedSearchResults.push(this._searchResults[i]);}
this._searchResults=updatedSearchResults;this.dispatchEventToListeners(WebInspector.TextEditor.Event.NumberOfSearchResultsDidChange);if(this._searchResults.length){if(direction>0)
this._revealFirstSearchResultAfterCursor();else
this._revealFirstSearchResultBeforeCursor();}}
_clearMultilineExecutionLineHighlights()
{if(this._executionMultilineHandles.length){for(let lineHandle of this._executionMultilineHandles)
this._codeMirror.removeLineClass(lineHandle,"wrap",WebInspector.TextEditor.ExecutionLineStyleClassName);this._executionMultilineHandles=[];}}
_updateExecutionLine()
{this._codeMirror.operation(()=>{if(this._executionLineHandle){this._codeMirror.removeLineClass(this._executionLineHandle,"wrap",WebInspector.TextEditor.ExecutionLineStyleClassName);this._codeMirror.removeLineClass(this._executionLineHandle,"wrap","primary");}
this._clearMultilineExecutionLineHighlights();this._executionLineHandle=!isNaN(this._executionLineNumber)?this._codeMirror.getLineHandle(this._executionLineNumber):null;if(this._executionLineHandle){this._codeMirror.addLineClass(this._executionLineHandle,"wrap",WebInspector.TextEditor.ExecutionLineStyleClassName);this._codeMirror.addLineClass(this._executionLineHandle,"wrap","primary");this._codeMirror.removeLineClass(this._executionLineHandle,"wrap",WebInspector.TextEditor.HighlightedStyleClassName);}});}
_updateExecutionRangeHighlight()
{if(this._executionRangeHighlightMarker){this._executionRangeHighlightMarker.clear();this._executionRangeHighlightMarker=null;}
if(isNaN(this._executionLineNumber))
return;let currentPosition={line:this._executionLineNumber,ch:this._executionColumnNumber};let originalOffset=this.currentPositionToOriginalOffset(currentPosition);let originalCodeMirrorPosition=this.currentPositionToOriginalPosition(currentPosition);let originalPosition=new WebInspector.SourceCodePosition(originalCodeMirrorPosition.line,originalCodeMirrorPosition.ch);let characterAtOffset=this._codeMirror.getRange(currentPosition,{line:this._executionLineNumber,ch:this._executionColumnNumber+1});this._delegate.textEditorExecutionHighlightRange(originalOffset,originalPosition,characterAtOffset,(range)=>{let start,end;if(!range){start={line:this._executionLineNumber,ch:this._executionColumnNumber};end={line:this._executionLineNumber};}else{start=this.originalOffsetToCurrentPosition(range[0]);end=this.originalOffsetToCurrentPosition(range[1]);}
if(this._executionRangeHighlightMarker){this._executionRangeHighlightMarker.clear();this._executionRangeHighlightMarker=null;}
let text=this._codeMirror.getRange(start,end);let trailingWhitespace=text.match(/\s+$/);if(trailingWhitespace)
end.ch=Math.max(0,end.ch-trailingWhitespace[0].length);this._clearMultilineExecutionLineHighlights();if(start.line!==end.line){for(let line=start.line;line<end.line;++line){let lineHandle=this._codeMirror.getLineHandle(line);this._codeMirror.addLineClass(lineHandle,"wrap",WebInspector.TextEditor.ExecutionLineStyleClassName);this._executionMultilineHandles.push(lineHandle);}}
this._executionRangeHighlightMarker=this._codeMirror.markText(start,end,{className:"execution-range-highlight"});});}
_setBreakpointStylesOnLine(lineNumber)
{var columnBreakpoints=this._breakpoints[lineNumber];if(!columnBreakpoints)
return;var allDisabled=true;var allResolved=true;var allAutoContinue=true;var multiple=Object.keys(columnBreakpoints).length>1;for(var columnNumber in columnBreakpoints){var breakpointInfo=columnBreakpoints[columnNumber];if(!breakpointInfo.disabled)
allDisabled=false;if(!breakpointInfo.resolved)
allResolved=false;if(!breakpointInfo.autoContinue)
allAutoContinue=false;}
allResolved=allResolved&&WebInspector.debuggerManager.breakpointsEnabled;function updateStyles()
{var lineHandle=this._codeMirror.getLineHandle(lineNumber);if(!lineHandle)
return;this._codeMirror.addLineClass(lineHandle,"wrap",WebInspector.TextEditor.HasBreakpointStyleClassName);if(allResolved)
this._codeMirror.addLineClass(lineHandle,"wrap",WebInspector.TextEditor.BreakpointResolvedStyleClassName);else
this._codeMirror.removeLineClass(lineHandle,"wrap",WebInspector.TextEditor.BreakpointResolvedStyleClassName);if(allDisabled)
this._codeMirror.addLineClass(lineHandle,"wrap",WebInspector.TextEditor.BreakpointDisabledStyleClassName);else
this._codeMirror.removeLineClass(lineHandle,"wrap",WebInspector.TextEditor.BreakpointDisabledStyleClassName);if(allAutoContinue)
this._codeMirror.addLineClass(lineHandle,"wrap",WebInspector.TextEditor.BreakpointAutoContinueStyleClassName);else
this._codeMirror.removeLineClass(lineHandle,"wrap",WebInspector.TextEditor.BreakpointAutoContinueStyleClassName);if(multiple)
this._codeMirror.addLineClass(lineHandle,"wrap",WebInspector.TextEditor.MultipleBreakpointsStyleClassName);else
this._codeMirror.removeLineClass(lineHandle,"wrap",WebInspector.TextEditor.MultipleBreakpointsStyleClassName);}
this._codeMirror.operation(updateStyles.bind(this));}
_addBreakpointToLineAndColumnWithInfo(lineNumber,columnNumber,breakpointInfo)
{if(!this._breakpoints[lineNumber])
this._breakpoints[lineNumber]={};this._breakpoints[lineNumber][columnNumber]=breakpointInfo;this._setBreakpointStylesOnLine(lineNumber);}
_removeBreakpointFromLineAndColumn(lineNumber,columnNumber)
{delete this._breakpoints[lineNumber][columnNumber];if(!isEmptyObject(this._breakpoints[lineNumber])){this._setBreakpointStylesOnLine(lineNumber);return;}
delete this._breakpoints[lineNumber];function updateStyles()
{var lineHandle=this._codeMirror.getLineHandle(lineNumber);if(!lineHandle)
return;this._codeMirror.removeLineClass(lineHandle,"wrap",WebInspector.TextEditor.HasBreakpointStyleClassName);this._codeMirror.removeLineClass(lineHandle,"wrap",WebInspector.TextEditor.BreakpointResolvedStyleClassName);this._codeMirror.removeLineClass(lineHandle,"wrap",WebInspector.TextEditor.BreakpointDisabledStyleClassName);this._codeMirror.removeLineClass(lineHandle,"wrap",WebInspector.TextEditor.BreakpointAutoContinueStyleClassName);this._codeMirror.removeLineClass(lineHandle,"wrap",WebInspector.TextEditor.MultipleBreakpointsStyleClassName);}
this._codeMirror.operation(updateStyles.bind(this));}
_allColumnBreakpointInfoForLine(lineNumber)
{return this._breakpoints[lineNumber];}
_setColumnBreakpointInfoForLine(lineNumber,columnBreakpointInfo)
{this._breakpoints[lineNumber]=columnBreakpointInfo;this._setBreakpointStylesOnLine(lineNumber);}
_gutterMouseDown(codeMirror,lineNumber,gutterElement,event)
{if(event.button!==0||event.ctrlKey)
return;if(!this._codeMirror.hasLineClass(lineNumber,"wrap",WebInspector.TextEditor.HasBreakpointStyleClassName)){if(this._delegate&&typeof this._delegate.textEditorBreakpointAdded==="function"){var data=this._delegate.textEditorBreakpointAdded(this,lineNumber,0);if(data){var breakpointInfo=data.breakpointInfo;if(breakpointInfo)
this._addBreakpointToLineAndColumnWithInfo(data.lineNumber,data.columnNumber,breakpointInfo);}}
return;}
if(this._codeMirror.hasLineClass(lineNumber,"wrap",WebInspector.TextEditor.MultipleBreakpointsStyleClassName)){return;}
var columnNumber=Object.keys(this._breakpoints[lineNumber])[0];this._draggingBreakpointInfo=this._breakpoints[lineNumber][columnNumber];this._lineNumberWithMousedDownBreakpoint=lineNumber;this._lineNumberWithDraggedBreakpoint=lineNumber;this._columnNumberWithMousedDownBreakpoint=columnNumber;this._columnNumberWithDraggedBreakpoint=columnNumber;this._documentMouseMovedEventListener=this._documentMouseMoved.bind(this);this._documentMouseUpEventListener=this._documentMouseUp.bind(this);document.addEventListener("mousemove",this._documentMouseMovedEventListener,true);document.addEventListener("mouseup",this._documentMouseUpEventListener,true);}
_gutterContextMenu(codeMirror,lineNumber,gutterElement,event)
{if(this._delegate&&typeof this._delegate.textEditorGutterContextMenu==="function"){var breakpoints=[];for(var columnNumber in this._breakpoints[lineNumber])
breakpoints.push({lineNumber,columnNumber});this._delegate.textEditorGutterContextMenu(this,lineNumber,0,breakpoints,event);}}
_documentMouseMoved(event)
{if(!("_lineNumberWithMousedDownBreakpoint"in this))
return;event.preventDefault();var lineNumber;var position=this._codeMirror.coordsChar({left:event.pageX,top:event.pageY});
var gutterBounds=this._codeMirror.getGutterElement().getBoundingClientRect();if(event.pageX<gutterBounds.left||event.pageX>gutterBounds.right||event.pageY<gutterBounds.top||event.pageY>gutterBounds.bottom)
position=null;if(position&&"line"in position)
lineNumber=position.line;
if(lineNumber===this._lineNumberWithDraggedBreakpoint)
return;
this._mouseDragged=true;if("_lineNumberWithDraggedBreakpoint"in this){
if(this._previousColumnBreakpointInfo)
this._setColumnBreakpointInfoForLine(this._lineNumberWithDraggedBreakpoint,this._previousColumnBreakpointInfo);else
this._removeBreakpointFromLineAndColumn(this._lineNumberWithDraggedBreakpoint,this._columnNumberWithDraggedBreakpoint);delete this._previousColumnBreakpointInfo;delete this._lineNumberWithDraggedBreakpoint;delete this._columnNumberWithDraggedBreakpoint;}
if(lineNumber!==undefined){var newColumnBreakpoints={};var columnNumber=(lineNumber===this._lineNumberWithMousedDownBreakpoint?this._columnNumberWithDraggedBreakpoint:0);newColumnBreakpoints[columnNumber]=this._draggingBreakpointInfo;this._previousColumnBreakpointInfo=this._allColumnBreakpointInfoForLine(lineNumber);this._setColumnBreakpointInfoForLine(lineNumber,newColumnBreakpoints);this._lineNumberWithDraggedBreakpoint=lineNumber;this._columnNumberWithDraggedBreakpoint=columnNumber;}}
_documentMouseUp(event)
{if(!("_lineNumberWithMousedDownBreakpoint"in this))
return;event.preventDefault();document.removeEventListener("mousemove",this._documentMouseMovedEventListener,true);document.removeEventListener("mouseup",this._documentMouseUpEventListener,true);var delegateImplementsBreakpointClicked=this._delegate&&typeof this._delegate.textEditorBreakpointClicked==="function";var delegateImplementsBreakpointRemoved=this._delegate&&typeof this._delegate.textEditorBreakpointRemoved==="function";var delegateImplementsBreakpointMoved=this._delegate&&typeof this._delegate.textEditorBreakpointMoved==="function";if(this._mouseDragged){if(!("_lineNumberWithDraggedBreakpoint"in this)){if(delegateImplementsBreakpointRemoved){this._ignoreSetBreakpointInfoCalls=true;this._delegate.textEditorBreakpointRemoved(this,this._lineNumberWithMousedDownBreakpoint,this._columnNumberWithMousedDownBreakpoint);delete this._ignoreSetBreakpointInfoCalls;}}else if(this._lineNumberWithMousedDownBreakpoint!==this._lineNumberWithDraggedBreakpoint){
if(this._previousColumnBreakpointInfo&&delegateImplementsBreakpointRemoved){this._ignoreSetBreakpointInfoCalls=true;for(var columnNumber in this._previousColumnBreakpointInfo)
this._delegate.textEditorBreakpointRemoved(this,this._lineNumberWithDraggedBreakpoint,columnNumber);delete this._ignoreSetBreakpointInfoCalls;}
if(delegateImplementsBreakpointMoved){this._ignoreSetBreakpointInfoCalls=true;this._delegate.textEditorBreakpointMoved(this,this._lineNumberWithMousedDownBreakpoint,this._columnNumberWithMousedDownBreakpoint,this._lineNumberWithDraggedBreakpoint,this._columnNumberWithDraggedBreakpoint);delete this._ignoreSetBreakpointInfoCalls;}}}else{if(this._lineNumberWithMousedDownBreakpoint in this._breakpoints&&this._columnNumberWithMousedDownBreakpoint in this._breakpoints[this._lineNumberWithMousedDownBreakpoint]&&delegateImplementsBreakpointClicked)
this._delegate.textEditorBreakpointClicked(this,this._lineNumberWithMousedDownBreakpoint,this._columnNumberWithMousedDownBreakpoint);}
delete this._documentMouseMovedEventListener;delete this._documentMouseUpEventListener;delete this._lineNumberWithMousedDownBreakpoint;delete this._lineNumberWithDraggedBreakpoint;delete this._columnNumberWithMousedDownBreakpoint;delete this._columnNumberWithDraggedBreakpoint;delete this._previousColumnBreakpointInfo;delete this._mouseDragged;}
_openClickedLinks(event)
{var position=this._codeMirror.coordsChar({left:event.pageX,top:event.pageY});var tokenInfo=this._codeMirror.getTokenAt(position);if(!tokenInfo||!tokenInfo.type||!tokenInfo.string)
return;if(!/\blink\b/.test(tokenInfo.type))
return;var url=tokenInfo.string;var baseURL="";if(this._delegate&&typeof this._delegate.textEditorBaseURL==="function")
baseURL=this._delegate.textEditorBaseURL(this);WebInspector.openURL(absoluteURL(url,baseURL));event.preventDefault();event.stopPropagation();}
_isPositionVisible(position)
{var scrollInfo=this._codeMirror.getScrollInfo();var visibleRangeStart=scrollInfo.top;var visibleRangeEnd=visibleRangeStart+scrollInfo.clientHeight;var coords=this._codeMirror.charCoords(position,"local");return coords.top>=visibleRangeStart&&coords.bottom<=visibleRangeEnd;}
_scrollIntoViewCentered(position)
{var scrollInfo=this._codeMirror.getScrollInfo();var lineHeight=Math.ceil(this._codeMirror.defaultTextHeight());var margin=Math.floor((scrollInfo.clientHeight-lineHeight)/2);this._codeMirror.scrollIntoView(position,margin);}};WebInspector.TextEditor.HighlightedStyleClassName="highlighted";WebInspector.TextEditor.SearchResultStyleClassName="search-result";WebInspector.TextEditor.HasBreakpointStyleClassName="has-breakpoint";WebInspector.TextEditor.BreakpointResolvedStyleClassName="breakpoint-resolved";WebInspector.TextEditor.BreakpointAutoContinueStyleClassName="breakpoint-auto-continue";WebInspector.TextEditor.BreakpointDisabledStyleClassName="breakpoint-disabled";WebInspector.TextEditor.MultipleBreakpointsStyleClassName="multiple-breakpoints";WebInspector.TextEditor.ExecutionLineStyleClassName="execution-line";WebInspector.TextEditor.BouncyHighlightStyleClassName="bouncy-highlight";WebInspector.TextEditor.NumberOfFindsPerSearchBatch=10;WebInspector.TextEditor.HighlightAnimationDuration=2000;WebInspector.TextEditor.Event={ExecutionLineNumberDidChange:"text-editor-execution-line-number-did-change",NumberOfSearchResultsDidChange:"text-editor-number-of-search-results-did-change",ContentDidChange:"text-editor-content-did-change",FormattingDidChange:"text-editor-formatting-did-change"};WebInspector.TimelineOverviewGraph=class TimelineOverviewGraph extends WebInspector.View
{constructor(timelineOverview)
{super();this.element.classList.add("timeline-overview-graph");this._zeroTime=0;this._startTime=0;this._endTime=5;this._currentTime=0;this._timelineOverview=timelineOverview;this._selectedRecord=null;this._selectedRecordChanged=false;this._scheduledSelectedRecordLayoutUpdateIdentifier=undefined;this._selected=false;this._visible=true;}
static createForTimeline(timeline,timelineOverview)
{var timelineType=timeline.type;if(timelineType===WebInspector.TimelineRecord.Type.Network)
return new WebInspector.NetworkTimelineOverviewGraph(timeline,timelineOverview);if(timelineType===WebInspector.TimelineRecord.Type.Layout)
return new WebInspector.LayoutTimelineOverviewGraph(timeline,timelineOverview);if(timelineType===WebInspector.TimelineRecord.Type.Script)
return new WebInspector.ScriptTimelineOverviewGraph(timeline,timelineOverview);if(timelineType===WebInspector.TimelineRecord.Type.RenderingFrame)
return new WebInspector.RenderingFrameTimelineOverviewGraph(timeline,timelineOverview);if(timelineType===WebInspector.TimelineRecord.Type.Memory)
return new WebInspector.MemoryTimelineOverviewGraph(timeline,timelineOverview);if(timelineType===WebInspector.TimelineRecord.Type.HeapAllocations)
return new WebInspector.HeapAllocationsTimelineOverviewGraph(timeline,timelineOverview);throw new Error("Can't make a graph for an unknown timeline.");}
get zeroTime()
{return this._zeroTime;}
set zeroTime(x)
{x=x||0;if(this._zeroTime===x)
return;this._zeroTime=x;this.needsLayout();}
get startTime()
{return this._startTime;}
set startTime(x)
{x=x||0;if(this._startTime===x)
return;this._startTime=x;this.needsLayout();}
get endTime()
{return this._endTime;}
set endTime(x)
{x=x||0;if(this._endTime===x)
return;this._endTime=x;this.needsLayout();}
get currentTime()
{return this._currentTime;}
set currentTime(x)
{x=x||0;if(this._currentTime===x)
return;let oldCurrentTime=this._currentTime;this._currentTime=x;if((this._startTime<=oldCurrentTime&&oldCurrentTime<=this._endTime)||(this._startTime<=this._currentTime&&this._currentTime<=this._endTime))
this.needsLayout();}
get timelineOverview()
{return this._timelineOverview;}
get secondsPerPixel(){return this._timelineOverview.secondsPerPixel;}
get visible()
{return this._visible;}
get selectedRecord()
{return this._selectedRecord;}
set selectedRecord(x)
{if(this._selectedRecord===x)
return;this._selectedRecord=x;this._selectedRecordChanged=true;this._needsSelectedRecordLayout();}
get height()
{return 36;}
get selected(){return this._selected;}
set selected(x)
{if(this._selected===x)
return;this._selected=x;this.element.classList.toggle("selected",this._selected);}
shown()
{if(this._visible)
return;this._visible=true;this.element.classList.toggle("hidden",!this._visible);this.updateLayout();}
hidden()
{if(!this._visible)
return;this._visible=false;this.element.classList.toggle("hidden",!this._visible);}
reset()
{}
recordWasFiltered(record,filtered)
{}
needsLayout()
{if(!this._visible)
return;super.needsLayout();}
updateSelectedRecord()
{}
_needsSelectedRecordLayout()
{if(this.layoutPending)
return;if(this._scheduledSelectedRecordLayoutUpdateIdentifier)
return;this._scheduledSelectedRecordLayoutUpdateIdentifier=requestAnimationFrame(()=>{this._scheduledSelectedRecordLayoutUpdateIdentifier=undefined;this.updateSelectedRecord();this.dispatchEventToListeners(WebInspector.TimelineOverviewGraph.Event.RecordSelected,{record:this.selectedRecord});});}};WebInspector.TimelineOverviewGraph.Event={RecordSelected:"timeline-overview-graph-record-selected"};WebInspector.TimelineView=class TimelineView extends WebInspector.ContentView
{constructor(representedObject)
{super(representedObject);this.element.classList.add("timeline-view");this._zeroTime=0;this._startTime=0;this._endTime=5;this._currentTime=0;}
get scrollableElements()
{if(!this._timelineDataGrid)
return[];return[this._timelineDataGrid.scrollContainer];}
get showsLiveRecordingData()
{return true;}
get showsFilterBar()
{return true;}
get navigationItems()
{return this._scopeBar?[this._scopeBar]:[];}
get selectionPathComponents()
{return null;}
get zeroTime()
{return this._zeroTime;}
set zeroTime(x)
{x=x||0;if(this._zeroTime===x)
return;this._zeroTime=x;this._timesDidChange();}
get startTime()
{return this._startTime;}
set startTime(x)
{x=x||0;if(this._startTime===x)
return;this._startTime=x;this._timesDidChange();this._scheduleFilterDidChange();}
get endTime()
{return this._endTime;}
set endTime(x)
{x=x||0;if(this._endTime===x)
return;this._endTime=x;this._timesDidChange();this._scheduleFilterDidChange();}
get currentTime()
{return this._currentTime;}
set currentTime(x)
{x=x||0;if(this._currentTime===x)
return;let oldCurrentTime=this._currentTime;this._currentTime=x;function checkIfLayoutIsNeeded(currentTime)
{const wiggleTime=0.05; return this._startTime-wiggleTime<=currentTime&&currentTime<=this._endTime+wiggleTime;}
if(checkIfLayoutIsNeeded.call(this,oldCurrentTime)||checkIfLayoutIsNeeded.call(this,this._currentTime))
this._timesDidChange();}
get filterStartTime()
{return this.startTime;}
get filterEndTime()
{return this.endTime;}
setupDataGrid(dataGrid)
{if(this._timelineDataGrid){this._timelineDataGrid.filterDelegate=null;this._timelineDataGrid.removeEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged,this._timelineDataGridSelectedNodeChanged,this);this._timelineDataGrid.removeEventListener(WebInspector.DataGrid.Event.NodeWasFiltered,this._timelineDataGridNodeWasFiltered,this);this._timelineDataGrid.removeEventListener(WebInspector.DataGrid.Event.FilterDidChange,this.filterDidChange,this);}
this._timelineDataGrid=dataGrid;this._timelineDataGrid.filterDelegate=this;this._timelineDataGrid.addEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged,this._timelineDataGridSelectedNodeChanged,this);this._timelineDataGrid.addEventListener(WebInspector.DataGrid.Event.NodeWasFiltered,this._timelineDataGridNodeWasFiltered,this);this._timelineDataGrid.addEventListener(WebInspector.DataGrid.Event.FilterDidChange,this.filterDidChange,this);}
selectRecord(record)
{if(!this._timelineDataGrid)
return;let selectedDataGridNode=this._timelineDataGrid.selectedNode;if(!record){if(selectedDataGridNode)
selectedDataGridNode.deselect();return;}
let dataGridNode=this._timelineDataGrid.findNode((node)=>node.record===record);if(!dataGridNode||dataGridNode.selected)
return;if(selectedDataGridNode&&selectedDataGridNode.hasAncestor(dataGridNode))
return;dataGridNode.revealAndSelect();}
reset()
{}
updateFilter(filters)
{if(!this._timelineDataGrid)
return;this._timelineDataGrid.filterText=filters?filters.text:"";}
matchDataGridNodeAgainstCustomFilters(node)
{return true;}
needsLayout()
{if(!this.visible)
return;super.needsLayout();}
dataGridMatchNodeAgainstCustomFilters(node)
{if(!this.matchDataGridNodeAgainstCustomFilters(node))
return false;let startTime=this.filterStartTime;let endTime=this.filterEndTime;let currentTime=this.currentTime;function checkTimeBounds(itemStartTime,itemEndTime)
{itemStartTime=itemStartTime||currentTime;itemEndTime=itemEndTime||currentTime;return startTime<=itemEndTime&&itemStartTime<=endTime;}
if(node instanceof WebInspector.ResourceTimelineDataGridNode){let resource=node.resource;return checkTimeBounds(resource.requestSentTimestamp,resource.finishedOrFailedTimestamp);}
if(node instanceof WebInspector.SourceCodeTimelineTimelineDataGridNode){let sourceCodeTimeline=node.sourceCodeTimeline;if(!checkTimeBounds(sourceCodeTimeline.startTime,sourceCodeTimeline.endTime))
return false;for(let record of sourceCodeTimeline.records){if(checkTimeBounds(record.startTime,record.endTime))
return true;}
return false;}
if(node instanceof WebInspector.ProfileNodeDataGridNode){let profileNode=node.profileNode;if(checkTimeBounds(profileNode.startTime,profileNode.endTime))
return true;return false;}
if(node instanceof WebInspector.TimelineDataGridNode){let record=node.record;return checkTimeBounds(record.startTime,record.endTime);}
if(node instanceof WebInspector.ProfileDataGridNode)
return node.callingContextTreeNode.hasStackTraceInTimeRange(startTime,endTime);console.error("Unknown DataGridNode, can't filter by time.");return true;}
userSelectedRecordFromOverview(timelineRecord)
{}
filterDidChange()
{}
_timelineDataGridSelectedNodeChanged(event)
{this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);}
_timelineDataGridNodeWasFiltered(event)
{let node=event.data.node;if(!(node instanceof WebInspector.TimelineDataGridNode))
return;this.dispatchEventToListeners(WebInspector.TimelineView.Event.RecordWasFiltered,{record:node.record,filtered:node.hidden});}
_timesDidChange()
{if(!WebInspector.timelineManager.isCapturing()||this.showsLiveRecordingData)
this.needsLayout();}
_scheduleFilterDidChange()
{if(!this._timelineDataGrid||this._updateFilterTimeout)
return;this._updateFilterTimeout=setTimeout(()=>{this._updateFilterTimeout=undefined;this._timelineDataGrid.filterDidChange();},0);}};WebInspector.TimelineView.Event={RecordWasFiltered:"record-was-filtered"};WebInspector.TreeElement=class TreeElement extends WebInspector.Object
{constructor(title,representedObject,hasChildren)
{super();this._title=title;this.representedObject=(representedObject||{});if(this.representedObject.__treeElementIdentifier)
this.identifier=this.representedObject.__treeElementIdentifier;else{this.identifier=WebInspector.TreeOutline._knownTreeElementNextIdentifier++;this.representedObject.__treeElementIdentifier=this.identifier;}
this._hidden=false;this._selectable=true;this.expanded=false;this.selected=false;this.hasChildren=hasChildren;this.children=[];this.treeOutline=null;this.parent=null;this.previousSibling=null;this.nextSibling=null;this._listItemNode=null;}
appendChild(){return WebInspector.TreeOutline.prototype.appendChild.apply(this,arguments);}
insertChild(){return WebInspector.TreeOutline.prototype.insertChild.apply(this,arguments);}
removeChild(){return WebInspector.TreeOutline.prototype.removeChild.apply(this,arguments);}
removeChildAtIndex(){return WebInspector.TreeOutline.prototype.removeChildAtIndex.apply(this,arguments);}
removeChildren(){return WebInspector.TreeOutline.prototype.removeChildren.apply(this,arguments);}
removeChildrenRecursive(){return WebInspector.TreeOutline.prototype.removeChildrenRecursive.apply(this,arguments);}
selfOrDescendant(){return WebInspector.TreeOutline.prototype.selfOrDescendant.apply(this,arguments);}
get arrowToggleWidth()
{return 10;}
get selectable()
{if(this._hidden)
return false;return this._selectable;}
set selectable(x)
{this._selectable=x;}
get listItemElement()
{return this._listItemNode;}
get title()
{return this._title;}
set title(x)
{this._title=x;this._setListItemNodeContent();this.didChange();}
get titleHTML()
{return this._titleHTML;}
set titleHTML(x)
{this._titleHTML=x;this._setListItemNodeContent();this.didChange();}
get tooltip()
{return this._tooltip;}
set tooltip(x)
{this._tooltip=x;if(this._listItemNode)
this._listItemNode.title=x?x:"";}
get hasChildren()
{return this._hasChildren;}
set hasChildren(x)
{if(this._hasChildren===x)
return;this._hasChildren=x;if(!this._listItemNode)
return;if(x)
this._listItemNode.classList.add("parent");else{this._listItemNode.classList.remove("parent");this.collapse();}
this.didChange();}
get hidden()
{return this._hidden;}
set hidden(x)
{if(this._hidden===x)
return;this._hidden=x;if(this._listItemNode)
this._listItemNode.hidden=this._hidden;if(this._childrenListNode)
this._childrenListNode.hidden=this._hidden;if(this.treeOutline)
this.treeOutline.dispatchEventToListeners(WebInspector.TreeOutline.Event.ElementVisibilityDidChange,{element:this});}
get shouldRefreshChildren()
{return this._shouldRefreshChildren;}
set shouldRefreshChildren(x)
{this._shouldRefreshChildren=x;if(x&&this.expanded)
this.expand();}
_fireDidChange()
{if(this.treeOutline)
this.treeOutline._treeElementDidChange(this);}
didChange()
{if(!this.treeOutline)
return;this.onNextFrame._fireDidChange();}
_setListItemNodeContent()
{if(!this._listItemNode)
return;if(!this._titleHTML&&!this._title)
this._listItemNode.removeChildren();else if(typeof this._titleHTML==="string")
this._listItemNode.innerHTML=this._titleHTML;else if(typeof this._title==="string")
this._listItemNode.textContent=this._title;else{this._listItemNode.removeChildren();if(this._title.parentNode)
this._title.parentNode.removeChild(this._title);this._listItemNode.appendChild(this._title);}}
_attach()
{if(!this._listItemNode||this.parent._shouldRefreshChildren){if(this._listItemNode&&this._listItemNode.parentNode)
this._listItemNode.parentNode.removeChild(this._listItemNode);this._listItemNode=this.treeOutline._childrenListNode.ownerDocument.createElement("li");this._listItemNode.treeElement=this;this._setListItemNodeContent();this._listItemNode.title=this._tooltip?this._tooltip:"";this._listItemNode.hidden=this.hidden;if(this.hasChildren)
this._listItemNode.classList.add("parent");if(this.expanded)
this._listItemNode.classList.add("expanded");if(this.selected)
this._listItemNode.classList.add("selected");this._listItemNode.addEventListener("mousedown",WebInspector.TreeElement.treeElementMouseDown);this._listItemNode.addEventListener("click",WebInspector.TreeElement.treeElementToggled);this._listItemNode.addEventListener("dblclick",WebInspector.TreeElement.treeElementDoubleClicked);if(this.onattach)
this.onattach(this);}
var nextSibling=null;if(this.nextSibling&&this.nextSibling._listItemNode&&this.nextSibling._listItemNode.parentNode===this.parent._childrenListNode)
nextSibling=this.nextSibling._listItemNode;this.parent._childrenListNode.insertBefore(this._listItemNode,nextSibling);if(this._childrenListNode)
this.parent._childrenListNode.insertBefore(this._childrenListNode,this._listItemNode.nextSibling);if(this.selected)
this.select();if(this.expanded)
this.expand();}
_detach()
{if(this.ondetach)
this.ondetach(this);if(this._listItemNode&&this._listItemNode.parentNode)
this._listItemNode.parentNode.removeChild(this._listItemNode);if(this._childrenListNode&&this._childrenListNode.parentNode)
this._childrenListNode.parentNode.removeChild(this._childrenListNode);}
static treeElementMouseDown(event)
{var element=event.currentTarget;if(!element||!element.treeElement||!element.treeElement.selectable)
return;if(element.treeElement.isEventWithinDisclosureTriangle(event)){event.preventDefault();return;}
element.treeElement.selectOnMouseDown(event);}
static treeElementToggled(event)
{var element=event.currentTarget;if(!element||!element.treeElement)
return;var toggleOnClick=element.treeElement.toggleOnClick&&!element.treeElement.selectable;var isInTriangle=element.treeElement.isEventWithinDisclosureTriangle(event);if(!toggleOnClick&&!isInTriangle)
return;if(element.treeElement.expanded){if(event.altKey)
element.treeElement.collapseRecursively();else
element.treeElement.collapse();}else{if(event.altKey)
element.treeElement.expandRecursively();else
element.treeElement.expand();}
event.stopPropagation();}
static treeElementDoubleClicked(event)
{var element=event.currentTarget;if(!element||!element.treeElement)
return;if(element.treeElement.isEventWithinDisclosureTriangle(event))
return;if(element.treeElement.dispatchEventToListeners(WebInspector.TreeElement.Event.DoubleClick))
return;if(element.treeElement.ondblclick)
element.treeElement.ondblclick.call(element.treeElement,event);else if(element.treeElement.hasChildren&&!element.treeElement.expanded)
element.treeElement.expand();}
collapse()
{if(this._listItemNode)
this._listItemNode.classList.remove("expanded");if(this._childrenListNode)
this._childrenListNode.classList.remove("expanded");this.expanded=false;if(this.treeOutline)
this.treeOutline._treeElementsExpandedState[this.identifier]=false;if(this.oncollapse)
this.oncollapse(this);if(this.treeOutline)
this.treeOutline.dispatchEventToListeners(WebInspector.TreeOutline.Event.ElementDisclosureDidChanged,{element:this});}
collapseRecursively()
{var item=this;while(item){if(item.expanded)
item.collapse();item=item.traverseNextTreeElement(false,this,true);}}
expand()
{if(this.expanded&&!this._shouldRefreshChildren&&this._childrenListNode)
return;
this.expanded=true;if(this.treeOutline)
this.treeOutline._treeElementsExpandedState[this.identifier]=true;if(!this.hasChildren)
return;if(this.treeOutline&&(!this._childrenListNode||this._shouldRefreshChildren)){if(this._childrenListNode&&this._childrenListNode.parentNode)
this._childrenListNode.parentNode.removeChild(this._childrenListNode);this._childrenListNode=this.treeOutline._childrenListNode.ownerDocument.createElement("ol");this._childrenListNode.parentTreeElement=this;this._childrenListNode.classList.add("children");this._childrenListNode.hidden=this.hidden;this.onpopulate();
this.expanded=true;for(var i=0;i<this.children.length;++i)
this.children[i]._attach();this._shouldRefreshChildren=false;}
if(this._listItemNode){this._listItemNode.classList.add("expanded");if(this._childrenListNode&&this._childrenListNode.parentNode!==this._listItemNode.parentNode)
this.parent._childrenListNode.insertBefore(this._childrenListNode,this._listItemNode.nextSibling);}
if(this._childrenListNode)
this._childrenListNode.classList.add("expanded");if(this.onexpand)
this.onexpand(this);if(this.treeOutline)
this.treeOutline.dispatchEventToListeners(WebInspector.TreeOutline.Event.ElementDisclosureDidChanged,{element:this});}
expandRecursively(maxDepth)
{var item=this;var info={};var depth=0;
if(maxDepth===undefined)
maxDepth=3;while(item){if(depth<maxDepth)
item.expand();item=item.traverseNextTreeElement(false,this,(depth>=maxDepth),info);depth+=info.depthChange;}}
hasAncestor(ancestor)
{if(!ancestor)
return false;var currentNode=this.parent;while(currentNode){if(ancestor===currentNode)
return true;currentNode=currentNode.parent;}
return false;}
reveal()
{var currentAncestor=this.parent;while(currentAncestor&&!currentAncestor.root){if(!currentAncestor.expanded)
currentAncestor.expand();currentAncestor=currentAncestor.parent;}
if(this.onreveal)
this.onreveal(this);}
revealed(ignoreHidden)
{if(!ignoreHidden&&this.hidden)
return false;var currentAncestor=this.parent;while(currentAncestor&&!currentAncestor.root){if(!currentAncestor.expanded)
return false;if(!ignoreHidden&&currentAncestor.hidden)
return false;currentAncestor=currentAncestor.parent;}
return true;}
selectOnMouseDown(event)
{this.select(false,true);}
select(omitFocus,selectedByUser,suppressOnSelect,suppressOnDeselect)
{if(!this.treeOutline||!this.selectable)
return;if(this.selected&&!this.treeOutline.allowsRepeatSelection)
return;if(!omitFocus)
this.treeOutline._childrenListNode.focus();let treeOutline=this.treeOutline;if(!treeOutline)
return;treeOutline.processingSelectionChange=true;
if(!suppressOnSelect)
suppressOnDeselect=true;let deselectedElement=treeOutline.selectedTreeElement;if(!this.selected){if(treeOutline.selectedTreeElement)
treeOutline.selectedTreeElement.deselect(suppressOnDeselect);this.selected=true;treeOutline.selectedTreeElement=this;if(this._listItemNode)
this._listItemNode.classList.add("selected");}
if(!suppressOnSelect){if(this.onselect)
this.onselect(this,selectedByUser);treeOutline.dispatchEventToListeners(WebInspector.TreeOutline.Event.SelectionDidChange,{selectedElement:this,deselectedElement,selectedByUser});}
treeOutline.processingSelectionChange=false;let treeOutlineGroup=WebInspector.TreeOutlineGroup.groupForTreeOutline(treeOutline);if(!treeOutlineGroup)
return;treeOutlineGroup.didSelectTreeElement(this);}
revealAndSelect(omitFocus,selectedByUser,suppressOnSelect,suppressOnDeselect)
{this.reveal();this.select(omitFocus,selectedByUser,suppressOnSelect,suppressOnDeselect);}
deselect(suppressOnDeselect)
{if(!this.treeOutline||this.treeOutline.selectedTreeElement!==this||!this.selected)
return false;this.selected=false;this.treeOutline.selectedTreeElement=null;if(this._listItemNode)
this._listItemNode.classList.remove("selected");if(!suppressOnDeselect){if(this.ondeselect)
this.ondeselect(this);this.treeOutline.dispatchEventToListeners(WebInspector.TreeOutline.Event.SelectionDidChange,{deselectedElement:this});}
return true;}
onpopulate()
{}
traverseNextTreeElement(skipUnrevealed,stayWithin,dontPopulate,info)
{function shouldSkip(element){return skipUnrevealed&&!element.revealed(true);}
var depthChange=0;var element=this;if(!dontPopulate)
element.onpopulate();do{if(element.hasChildren&&element.children[0]&&(!skipUnrevealed||element.expanded)){element=element.children[0];depthChange+=1;}else{while(element&&!element.nextSibling&&element.parent&&!element.parent.root&&element.parent!==stayWithin){element=element.parent;depthChange-=1;}
if(element)
element=element.nextSibling;}}while(element&&shouldSkip(element));if(info)
info.depthChange=depthChange;return element;}
traversePreviousTreeElement(skipUnrevealed,dontPopulate)
{function shouldSkip(element){return skipUnrevealed&&!element.revealed(true);}
var element=this;do{if(element.previousSibling){element=element.previousSibling;while(element&&element.hasChildren&&element.expanded&&!shouldSkip(element)){if(!dontPopulate)
element.onpopulate();element=element.children.lastValue;}}else
element=element.parent&&element.parent.root?null:element.parent;}while(element&&shouldSkip(element));return element;}
isEventWithinDisclosureTriangle(event)
{if(!document.contains(this._listItemNode))
return false;let computedStyle=window.getComputedStyle(this._listItemNode);let start=0;if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL)
start+=this._listItemNode.totalOffsetRight-computedStyle.getPropertyCSSValue("padding-right").getFloatValue(CSSPrimitiveValue.CSS_PX)-this.arrowToggleWidth;else
start+=this._listItemNode.totalOffsetLeft+computedStyle.getPropertyCSSValue("padding-left").getFloatValue(CSSPrimitiveValue.CSS_PX);return event.pageX>=start&&event.pageX<=start+this.arrowToggleWidth&&this.hasChildren;}
populateContextMenu(contextMenu,event)
{if(this.children.some((child)=>child.hasChildren)||(this.hasChildren&&!this.children.length)){contextMenu.appendSeparator();contextMenu.appendItem(WebInspector.UIString("Expand All"),this.expandRecursively.bind(this));contextMenu.appendItem(WebInspector.UIString("Collapse All"),this.collapseRecursively.bind(this));}}};WebInspector.TreeElement.Event={DoubleClick:"tree-element-double-click",};WebInspector.TreeOutline=class TreeOutline extends WebInspector.Object
{constructor(element)
{super();this.element=element||document.createElement("ol");this.element.classList.add(WebInspector.TreeOutline.ElementStyleClassName);this.element.addEventListener("contextmenu",this._handleContextmenu.bind(this));this.children=[];this.selectedTreeElement=null;this._childrenListNode=this.element;this._childrenListNode.removeChildren();this._knownTreeElements=[];this._treeElementsExpandedState=[];this.allowsRepeatSelection=false;this.root=true;this.hasChildren=false;this.expanded=true;this.selected=false;this.treeOutline=this;this._hidden=false;this._compact=false;this._large=false;this._disclosureButtons=true;this._customIndent=false;this._childrenListNode.tabIndex=0;this._childrenListNode.addEventListener("keydown",this._treeKeyDown.bind(this),true);WebInspector.TreeOutline._generateStyleRulesIfNeeded();}
get hidden()
{return this._hidden;}
set hidden(x)
{if(this._hidden===x)
return;this._hidden=x;this.element.hidden=this._hidden;}
get compact()
{return this._compact;}
set compact(x)
{if(this._compact===x)
return;this._compact=x;if(this._compact)
this.large=false;this.element.classList.toggle("compact",this._compact);}
get large()
{return this._large;}
set large(x)
{if(this._large===x)
return;this._large=x;if(this._large)
this.compact=false;this.element.classList.toggle("large",this._large);}
get disclosureButtons()
{return this._disclosureButtons;}
set disclosureButtons(x)
{if(this._disclosureButtons===x)
return;this._disclosureButtons=x;this.element.classList.toggle("hide-disclosure-buttons",!this._disclosureButtons);}
get customIndent()
{return this._customIndent;}
set customIndent(x)
{if(this._customIndent===x)
return;this._customIndent=x;this.element.classList.toggle(WebInspector.TreeOutline.CustomIndentStyleClassName,this._customIndent);}
appendChild(child)
{if(!child)
return;var lastChild=this.children[this.children.length-1];if(lastChild){lastChild.nextSibling=child;child.previousSibling=lastChild;}else{child.previousSibling=null;child.nextSibling=null;}
var isFirstChild=!this.children.length;this.children.push(child);this.hasChildren=true;child.parent=this;child.treeOutline=this.treeOutline;child.treeOutline._rememberTreeElement(child);var current=child.children[0];while(current){current.treeOutline=this.treeOutline;current.treeOutline._rememberTreeElement(current);current=current.traverseNextTreeElement(false,child,true);}
if(child.hasChildren&&child.treeOutline._treeElementsExpandedState[child.identifier]!==undefined)
child.expanded=child.treeOutline._treeElementsExpandedState[child.identifier];if(this._childrenListNode)
child._attach();if(this.treeOutline)
this.treeOutline.dispatchEventToListeners(WebInspector.TreeOutline.Event.ElementAdded,{element:child});if(isFirstChild&&this.expanded)
this.expand();}
insertChild(child,index)
{if(!child)
return;var previousChild=(index>0?this.children[index-1]:null);if(previousChild){previousChild.nextSibling=child;child.previousSibling=previousChild;}else{child.previousSibling=null;}
var nextChild=this.children[index];if(nextChild){nextChild.previousSibling=child;child.nextSibling=nextChild;}else{child.nextSibling=null;}
var isFirstChild=!this.children.length;this.children.splice(index,0,child);this.hasChildren=true;child.parent=this;child.treeOutline=this.treeOutline;child.treeOutline._rememberTreeElement(child);var current=child.children[0];while(current){current.treeOutline=this.treeOutline;current.treeOutline._rememberTreeElement(current);current=current.traverseNextTreeElement(false,child,true);}
if(child.hasChildren&&child.treeOutline._treeElementsExpandedState[child.identifier]!==undefined)
child.expanded=child.treeOutline._treeElementsExpandedState[child.identifier];if(this._childrenListNode)
child._attach();if(this.treeOutline)
this.treeOutline.dispatchEventToListeners(WebInspector.TreeOutline.Event.ElementAdded,{element:child});if(isFirstChild&&this.expanded)
this.expand();}
removeChildAtIndex(childIndex,suppressOnDeselect,suppressSelectSibling)
{if(childIndex<0||childIndex>=this.children.length)
return;let child=this.children[childIndex];this.children.splice(childIndex,1);let parent=child.parent;if(child.deselect(suppressOnDeselect)){if(child.previousSibling&&!suppressSelectSibling)
child.previousSibling.select(true,false);else if(child.nextSibling&&!suppressSelectSibling)
child.nextSibling.select(true,false);else if(!suppressSelectSibling)
parent.select(true,false);}
if(child.previousSibling)
child.previousSibling.nextSibling=child.nextSibling;if(child.nextSibling)
child.nextSibling.previousSibling=child.previousSibling;let treeOutline=child.treeOutline;if(treeOutline){treeOutline._forgetTreeElement(child);treeOutline._forgetChildrenRecursive(child);}
child._detach();child.treeOutline=null;child.parent=null;child.nextSibling=null;child.previousSibling=null;if(treeOutline)
treeOutline.dispatchEventToListeners(WebInspector.TreeOutline.Event.ElementRemoved,{element:child});}
removeChild(child,suppressOnDeselect,suppressSelectSibling)
{if(!child)
return;var childIndex=this.children.indexOf(child);if(childIndex===-1)
return;this.removeChildAtIndex(childIndex,suppressOnDeselect,suppressSelectSibling);if(!this.children.length){if(this._listItemNode)
this._listItemNode.classList.remove("parent");this.hasChildren=false;}}
removeChildren(suppressOnDeselect)
{for(let child of this.children){child.deselect(suppressOnDeselect);let treeOutline=child.treeOutline;if(treeOutline){treeOutline._forgetTreeElement(child);treeOutline._forgetChildrenRecursive(child);}
child._detach();child.treeOutline=null;child.parent=null;child.nextSibling=null;child.previousSibling=null;if(treeOutline)
treeOutline.dispatchEventToListeners(WebInspector.TreeOutline.Event.ElementRemoved,{element:child});}
this.children=[];}
removeChildrenRecursive(suppressOnDeselect)
{let childrenToRemove=this.children;let child=this.children[0];while(child){if(child.children.length)
childrenToRemove=childrenToRemove.concat(child.children);child=child.traverseNextTreeElement(false,this,true);}
for(let child of childrenToRemove){child.deselect(suppressOnDeselect);let treeOutline=child.treeOutline;if(treeOutline)
treeOutline._forgetTreeElement(child);child._detach();child.children=[];child.treeOutline=null;child.parent=null;child.nextSibling=null;child.previousSibling=null;if(treeOutline)
treeOutline.dispatchEventToListeners(WebInspector.TreeOutline.Event.ElementRemoved,{element:child});}
this.children=[];}
reattachIfIndexChanged(treeElement,insertionIndex)
{if(this.children[insertionIndex]===treeElement)
return;let wasSelected=treeElement.selected;if(treeElement.parent===this)
this.removeChild(treeElement);this.insertChild(treeElement,insertionIndex);if(wasSelected)
treeElement.select();}
_rememberTreeElement(element)
{if(!this._knownTreeElements[element.identifier])
this._knownTreeElements[element.identifier]=[]; var elements=this._knownTreeElements[element.identifier];if(elements.indexOf(element)!==-1)
return; elements.push(element);}
_forgetTreeElement(element)
{if(this.selectedTreeElement===element){element.deselect(true);this.selectedTreeElement=null;}
if(this._knownTreeElements[element.identifier])
this._knownTreeElements[element.identifier].remove(element,true);}
_forgetChildrenRecursive(parentElement)
{var child=parentElement.children[0];while(child){this._forgetTreeElement(child);child=child.traverseNextTreeElement(false,parentElement,true);}}
getCachedTreeElement(representedObject)
{if(!representedObject)
return null;if(representedObject.__treeElementIdentifier){
var elements=this._knownTreeElements[representedObject.__treeElementIdentifier];if(elements){for(var i=0;i<elements.length;++i)
if(elements[i].representedObject===representedObject)
return elements[i];}}
return null;}
selfOrDescendant(predicate)
{let treeElements=[this];while(treeElements.length){let treeElement=treeElements.shift();if(predicate(treeElement))
return treeElement;treeElements=treeElements.concat(treeElement.children);}
return false;}
findTreeElement(representedObject,isAncestor,getParent)
{if(!representedObject)
return null;var cachedElement=this.getCachedTreeElement(representedObject);if(cachedElement)
return cachedElement;
var item;var found=false;for(var i=0;i<this.children.length;++i){item=this.children[i];if(item.representedObject===representedObject||(isAncestor&&isAncestor(item.representedObject,representedObject))){found=true;break;}}
if(!found)
return null;var ancestors=[];var currentObject=representedObject;while(currentObject){ancestors.unshift(currentObject);if(currentObject===item.representedObject)
break;currentObject=getParent(currentObject);}
for(var i=0;i<ancestors.length;++i){
if(ancestors[i]===representedObject)
continue;
item=this.findTreeElement(ancestors[i],isAncestor,getParent);if(item)
item.onpopulate();}
return this.getCachedTreeElement(representedObject);}
_treeElementDidChange(treeElement)
{if(treeElement.treeOutline!==this)
return;this.dispatchEventToListeners(WebInspector.TreeOutline.Event.ElementDidChange,{element:treeElement});}
treeElementFromNode(node)
{var listNode=node.enclosingNodeOrSelfWithNodeNameInArray(["ol","li"]);if(listNode)
return listNode.parentTreeElement||listNode.treeElement;return null;}
treeElementFromPoint(x,y)
{var node=this._childrenListNode.ownerDocument.elementFromPoint(x,y);if(!node)
return null;return this.treeElementFromNode(node);}
_treeKeyDown(event)
{if(event.target!==this._childrenListNode)
return;if(!this.selectedTreeElement||event.shiftKey||event.metaKey||event.ctrlKey)
return;let isRTL=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL;var handled=false;var nextSelectedElement;if(event.keyIdentifier==="Up"&&!event.altKey){nextSelectedElement=this.selectedTreeElement.traversePreviousTreeElement(true);while(nextSelectedElement&&!nextSelectedElement.selectable)
nextSelectedElement=nextSelectedElement.traversePreviousTreeElement(true);handled=nextSelectedElement?true:false;}else if(event.keyIdentifier==="Down"&&!event.altKey){nextSelectedElement=this.selectedTreeElement.traverseNextTreeElement(true);while(nextSelectedElement&&!nextSelectedElement.selectable)
nextSelectedElement=nextSelectedElement.traverseNextTreeElement(true);handled=nextSelectedElement?true:false;}else if((!isRTL&&event.keyIdentifier==="Left")||(isRTL&&event.keyIdentifier==="Right")){if(this.selectedTreeElement.expanded){if(event.altKey)
this.selectedTreeElement.collapseRecursively();else
this.selectedTreeElement.collapse();handled=true;}else if(this.selectedTreeElement.parent&&!this.selectedTreeElement.parent.root){handled=true;if(this.selectedTreeElement.parent.selectable){nextSelectedElement=this.selectedTreeElement.parent;while(nextSelectedElement&&!nextSelectedElement.selectable)
nextSelectedElement=nextSelectedElement.parent;handled=nextSelectedElement?true:false;}else if(this.selectedTreeElement.parent)
this.selectedTreeElement.parent.collapse();}}else if((!isRTL&&event.keyIdentifier==="Right")||(isRTL&&event.keyIdentifier==="Left")){if(!this.selectedTreeElement.revealed()){this.selectedTreeElement.reveal();handled=true;}else if(this.selectedTreeElement.hasChildren){handled=true;if(this.selectedTreeElement.expanded){nextSelectedElement=this.selectedTreeElement.children[0];while(nextSelectedElement&&!nextSelectedElement.selectable)
nextSelectedElement=nextSelectedElement.nextSibling;handled=nextSelectedElement?true:false;}else{if(event.altKey)
this.selectedTreeElement.expandRecursively();else
this.selectedTreeElement.expand();}}}else if(event.keyCode===8||event.keyCode===46){if(this.selectedTreeElement.ondelete)
handled=this.selectedTreeElement.ondelete();if(!handled&&this.treeOutline.ondelete)
handled=this.treeOutline.ondelete(this.selectedTreeElement);}else if(isEnterKey(event)){if(this.selectedTreeElement.onenter)
handled=this.selectedTreeElement.onenter();if(!handled&&this.treeOutline.onenter)
handled=this.treeOutline.onenter(this.selectedTreeElement);}else if(event.keyIdentifier==="U+0020"){if(this.selectedTreeElement.onspace)
handled=this.selectedTreeElement.onspace();if(!handled&&this.treeOutline.onspace)
handled=this.treeOutline.onspace(this.selectedTreeElement);}
if(nextSelectedElement){nextSelectedElement.reveal();nextSelectedElement.select(false,true);}
if(handled){event.preventDefault();event.stopPropagation();}}
expand()
{}
collapse()
{}
revealed()
{return true;}
reveal()
{}
select()
{}
revealAndSelect(omitFocus)
{}
get selectedTreeElementIndex()
{if(!this.hasChildren||!this.selectedTreeElement)
return;for(var i=0;i<this.children.length;++i){if(this.children[i]===this.selectedTreeElement)
return i;}
return false;}
treeElementFromEvent(event)
{let scrollContainer=this.element.parentElement;
let x=scrollContainer.totalOffsetLeft+scrollContainer.offsetWidth-36;let y=event.pageY;
let elementUnderMouse=this.treeElementFromPoint(x,y);let elementAboveMouse=this.treeElementFromPoint(x,y-2);let element=null;if(elementUnderMouse===elementAboveMouse)
element=elementUnderMouse;else
element=this.treeElementFromPoint(x,y+2);return element;}
populateContextMenu(contextMenu,event,treeElement)
{treeElement.populateContextMenu(contextMenu,event);}
static _generateStyleRulesIfNeeded()
{if(WebInspector.TreeOutline._styleElement)
return;WebInspector.TreeOutline._styleElement=document.createElement("style");let maximumTreeDepth=32;let baseLeftPadding=5;let depthPadding=10;let styleText="";let childrenSubstring="";for(let i=1;i<=maximumTreeDepth;++i){childrenSubstring+=i===maximumTreeDepth?" .children":" > .children";styleText+=`.${WebInspector.TreeOutline.ElementStyleClassName}:not(.${WebInspector.TreeOutline.CustomIndentStyleClassName})${childrenSubstring} > .item { `;if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL)
styleText+="padding-right: ";else
styleText+="padding-left: ";styleText+=(baseLeftPadding+(depthPadding*i))+"px; }\n";}
WebInspector.TreeOutline._styleElement.textContent=styleText;document.head.appendChild(WebInspector.TreeOutline._styleElement);}
_handleContextmenu(event)
{let treeElement=this.treeElementFromEvent(event);if(!treeElement)
return;let contextMenu=WebInspector.ContextMenu.createFromEvent(event);this.populateContextMenu(contextMenu,event,treeElement);}};WebInspector.TreeOutline._styleElement=null;WebInspector.TreeOutline.ElementStyleClassName="tree-outline";WebInspector.TreeOutline.CustomIndentStyleClassName="custom-indent";WebInspector.TreeOutline.Event={ElementAdded:Symbol("element-added"),ElementDidChange:Symbol("element-did-change"),ElementRemoved:Symbol("element-removed"),ElementDisclosureDidChanged:Symbol("element-disclosure-did-change"),ElementVisibilityDidChange:Symbol("element-visbility-did-change"),SelectionDidChange:Symbol("selection-did-change")};WebInspector.TreeOutline._knownTreeElementNextIdentifier=1;WebInspector.TreeOutlineGroup=class TreeOutlineGroup extends WebInspector.Collection
{constructor()
{super((object)=>object instanceof WebInspector.TreeOutline);}
static groupForTreeOutline(treeOutline)
{return treeOutline[WebInspector.TreeOutlineGroup.GroupForTreeOutlineSymbol]||null;}
get selectedTreeElement()
{for(let treeOutline of this.items){if(treeOutline.selectedTreeElement)
return treeOutline.selectedTreeElement;}
return null;}
itemAdded(treeOutline)
{treeOutline[WebInspector.TreeOutlineGroup.GroupForTreeOutlineSymbol]=this;if(treeOutline.selectedTreeElement)
this._removeConflictingTreeSelections(treeOutline.selectedTreeElement);}
itemRemoved(treeOutline)
{treeOutline[WebInspector.TreeOutlineGroup.GroupForTreeOutlineSymbol]=null;}
didSelectTreeElement(treeElement)
{if(!treeElement)
return;this._removeConflictingTreeSelections(treeElement);}
_removeConflictingTreeSelections(treeElement)
{let selectedTreeOutline=treeElement.treeOutline;for(let treeOutline of this.items){if(selectedTreeOutline===treeOutline)
continue;if(treeOutline.selectedTreeElement)
treeOutline.selectedTreeElement.deselect();}}};WebInspector.TreeOutlineGroup.GroupForTreeOutlineSymbol=Symbol("group-for-tree-outline");WebInspector.ButtonNavigationItem=class ButtonNavigationItem extends WebInspector.NavigationItem
{constructor(identifier,toolTipOrLabel,image,imageWidth,imageHeight,role,label)
{super(identifier);this.toolTip=toolTipOrLabel;this._element.addEventListener("click",this._mouseClicked.bind(this));this._element.setAttribute("role",role||"button");if(label)
this._element.setAttribute("aria-label",label);this._imageWidth=imageWidth||16;this._imageHeight=imageHeight||16;if(image)
this.image=image;else
this.label=toolTipOrLabel;}
get toolTip()
{return this._element.title;}
set toolTip(newToolTip)
{if(!newToolTip)
return;this._element.title=newToolTip;}
get label()
{return this._element.textContent;}
set label(newLabel)
{this._element.classList.add(WebInspector.ButtonNavigationItem.TextOnlyClassName);this._element.textContent=newLabel||"";if(this.parentNavigationBar)
this.parentNavigationBar.needsLayout();}
get image()
{return this._image;}
set image(newImage)
{if(!newImage){this._element.removeChildren();return;}
this._element.removeChildren();this._element.classList.remove(WebInspector.ButtonNavigationItem.TextOnlyClassName);this._image=newImage;this._glyphElement=useSVGSymbol(this._image,"glyph");this._glyphElement.style.width=this._imageWidth+"px";this._glyphElement.style.height=this._imageHeight+"px";this._element.appendChild(this._glyphElement);}
get enabled()
{return!this._element.classList.contains(WebInspector.ButtonNavigationItem.DisabledStyleClassName);}
set enabled(flag)
{if(flag)
this._element.classList.remove(WebInspector.ButtonNavigationItem.DisabledStyleClassName);else
this._element.classList.add(WebInspector.ButtonNavigationItem.DisabledStyleClassName);}
get additionalClassNames()
{return["button"];}
_mouseClicked(event)
{if(!this.enabled)
return;this.dispatchEventToListeners(WebInspector.ButtonNavigationItem.Event.Clicked);}};WebInspector.ButtonNavigationItem.DisabledStyleClassName="disabled";WebInspector.ButtonNavigationItem.TextOnlyClassName="text-only";WebInspector.ButtonNavigationItem.Event={Clicked:"button-navigation-item-clicked"};WebInspector.DatabaseUserQueryViewBase=class DatabaseUserQueryViewBase extends WebInspector.View
{constructor(query)
{super();this.element.className="database-user-query";let commandTextElement=document.createElement("span");commandTextElement.className="database-query-text";commandTextElement.textContent=query;this.element.appendChild(commandTextElement);this._resultElement=document.createElement("div");this._resultElement.className="database-query-result";this.element.appendChild(this._resultElement);}
get resultElement()
{return this._resultElement;}};WebInspector.DatabaseUserQueryErrorView=class DatabaseUserQueryErrorView extends WebInspector.DatabaseUserQueryViewBase
{constructor(query,message)
{super(query);this.resultElement.classList.add("error");this.resultElement.textContent=message;}};WebInspector.DatabaseUserQuerySuccessView=class DatabaseUserQuerySuccessView extends WebInspector.DatabaseUserQueryViewBase
{constructor(query,columnNames,values)
{super(query);this._dataGrid=WebInspector.DataGrid.createSortableDataGrid(columnNames,values);if(this._dataGrid){this._dataGrid.inline=true;this.resultElement.appendChild(this._dataGrid.element);this._dataGrid.updateLayoutIfNeeded();}else{this.resultElement.classList.add("no-results");this.resultElement.textContent=WebInspector.UIString("Query returned no results.");}}
get dataGrid()
{return this._dataGrid;}
layout()
{if(this._dataGrid)
this._dataGrid.updateLayout();}};WebInspector.DOMTreeContentView=class DOMTreeContentView extends WebInspector.ContentView
{constructor(representedObject)
{super(representedObject);this._compositingBordersButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("layer-borders",WebInspector.UIString("Show compositing borders"),WebInspector.UIString("Hide compositing borders"),"Images/LayerBorders.svg",13,13);this._compositingBordersButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._toggleCompositingBorders,this);this._compositingBordersButtonNavigationItem.enabled=!!PageAgent.getCompositingBordersVisible;WebInspector.showPaintRectsSetting.addEventListener(WebInspector.Setting.Event.Changed,this._showPaintRectsSettingChanged,this);this._paintFlashingButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("paint-flashing",WebInspector.UIString("Enable paint flashing"),WebInspector.UIString("Disable paint flashing"),"Images/PaintFlashing.svg",16,16);this._paintFlashingButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._togglePaintFlashing,this);this._paintFlashingButtonNavigationItem.enabled=!!PageAgent.setShowPaintRects;this._paintFlashingButtonNavigationItem.activated=PageAgent.setShowPaintRects&&WebInspector.showPaintRectsSetting.value;WebInspector.showShadowDOMSetting.addEventListener(WebInspector.Setting.Event.Changed,this._showShadowDOMSettingChanged,this);this._showsShadowDOMButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("shows-shadow-DOM",WebInspector.UIString("Show shadow DOM nodes"),WebInspector.UIString("Hide shadow DOM nodes"),"Images/ShadowDOM.svg",13,13);this._showsShadowDOMButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._toggleShowsShadowDOMSetting,this);this._showShadowDOMSettingChanged();WebInspector.showPrintStylesSetting.addEventListener(WebInspector.Setting.Event.Changed,this._showPrintStylesSettingChanged,this);this._showPrintStylesButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("print-styles",WebInspector.UIString("Force Print Media Styles"),WebInspector.UIString("Use Default Media Styles"),"Images/Printer.svg",16,16);this._showPrintStylesButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._togglePrintStylesSetting,this);this._showPrintStylesSettingChanged();this.element.classList.add("dom-tree");this.element.addEventListener("click",this._mouseWasClicked.bind(this),false);this._domTreeOutline=new WebInspector.DOMTreeOutline(true,true,true);this._domTreeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementAdded,this._domTreeElementAdded,this);this._domTreeOutline.addEventListener(WebInspector.DOMTreeOutline.Event.SelectedNodeChanged,this._selectedNodeDidChange,this);this._domTreeOutline.wireToDomAgent();this._domTreeOutline.editable=true;this.element.appendChild(this._domTreeOutline.element);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.AttributeModified,this._domNodeChanged,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.AttributeRemoved,this._domNodeChanged,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.CharacterDataModified,this._domNodeChanged,this);this._lastSelectedNodePathSetting=new WebInspector.Setting("last-selected-node-path",null);this._numberOfSearchResults=null;this._breakpointGutterEnabled=false;this._pendingBreakpointNodeIdentifiers=new Set;if(WebInspector.domDebuggerManager.supported){WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.BreakpointsEnabledDidChange,this._breakpointsEnabledDidChange,this);WebInspector.domDebuggerManager.addEventListener(WebInspector.DOMDebuggerManager.Event.DOMBreakpointAdded,this._domBreakpointAddedOrRemoved,this);WebInspector.domDebuggerManager.addEventListener(WebInspector.DOMDebuggerManager.Event.DOMBreakpointRemoved,this._domBreakpointAddedOrRemoved,this);WebInspector.DOMBreakpoint.addEventListener(WebInspector.DOMBreakpoint.Event.DisabledStateDidChange,this._domBreakpointDisabledStateDidChange,this);WebInspector.DOMBreakpoint.addEventListener(WebInspector.DOMBreakpoint.Event.ResolvedStateDidChange,this._domBreakpointResolvedStateDidChange,this);this._breakpointsEnabledDidChange();}}
get navigationItems()
{return[this._showPrintStylesButtonNavigationItem,this._showsShadowDOMButtonNavigationItem,this._compositingBordersButtonNavigationItem,this._paintFlashingButtonNavigationItem];}
get domTreeOutline()
{return this._domTreeOutline;}
get scrollableElements()
{return[this.element];}
get breakpointGutterEnabled()
{return this._breakpointGutterEnabled;}
set breakpointGutterEnabled(flag)
{if(this._breakpointGutterEnabled===flag)
return;this._breakpointGutterEnabled=flag;this.element.classList.toggle("show-gutter",this._breakpointGutterEnabled);}
shown()
{super.shown();this._domTreeOutline.setVisible(true,WebInspector.isConsoleFocused());this._updateCompositingBordersButtonToMatchPageSettings();if(!this._domTreeOutline.rootDOMNode)
return;this._restoreBreakpointsAfterUpdate();}
hidden()
{super.hidden();WebInspector.domTreeManager.hideDOMNodeHighlight();this._domTreeOutline.setVisible(false);}
closed()
{super.closed();WebInspector.showPaintRectsSetting.removeEventListener(null,null,this);WebInspector.showShadowDOMSetting.removeEventListener(null,null,this);WebInspector.debuggerManager.removeEventListener(null,null,this);WebInspector.domTreeManager.removeEventListener(null,null,this);WebInspector.domDebuggerManager.removeEventListener(null,null,this);WebInspector.DOMBreakpoint.removeEventListener(null,null,this);this._domTreeOutline.close();this._pendingBreakpointNodeIdentifiers.clear();}
get selectionPathComponents()
{var treeElement=this._domTreeOutline.selectedTreeElement;var pathComponents=[];while(treeElement&&!treeElement.root){
if(treeElement.isCloseTag()){treeElement=treeElement.parent;continue;}
var pathComponent=new WebInspector.DOMTreeElementPathComponent(treeElement,treeElement.representedObject);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.Clicked,this._pathComponentSelected,this);pathComponents.unshift(pathComponent);treeElement=treeElement.parent;}
return pathComponents;}
restoreFromCookie(cookie)
{if(!cookie||!cookie.nodeToSelect)
return;this.selectAndRevealDOMNode(cookie.nodeToSelect);
cookie.nodeToSelect=undefined;}
selectAndRevealDOMNode(domNode,preventFocusChange)
{this._domTreeOutline.selectDOMNode(domNode,!preventFocusChange);}
handleCopyEvent(event)
{var selectedDOMNode=this._domTreeOutline.selectedDOMNode();if(!selectedDOMNode)
return;event.clipboardData.clearData();event.preventDefault();selectedDOMNode.copyNode();}
get supportsSave()
{return WebInspector.canArchiveMainFrame();}
get saveData()
{function saveHandler(forceSaveAs)
{WebInspector.archiveMainFrame();}
return{customSaveHandler:saveHandler};}
get supportsSearch()
{return true;}
get numberOfSearchResults()
{return this._numberOfSearchResults;}
get hasPerformedSearch()
{return this._numberOfSearchResults!==null;}
set automaticallyRevealFirstSearchResult(reveal)
{this._automaticallyRevealFirstSearchResult=reveal;if(this._automaticallyRevealFirstSearchResult&&this._numberOfSearchResults>0){if(this._currentSearchResultIndex===-1)
this.revealNextSearchResult();}}
performSearch(query)
{if(this._searchQuery===query)
return;if(this._searchIdentifier){DOMAgent.discardSearchResults(this._searchIdentifier);this._hideSearchHighlights();}
this._searchQuery=query;this._searchIdentifier=null;this._numberOfSearchResults=null;this._currentSearchResultIndex=-1;function searchResultsReady(error,searchIdentifier,resultsCount)
{if(error)
return;this._searchIdentifier=searchIdentifier;this._numberOfSearchResults=resultsCount;this.dispatchEventToListeners(WebInspector.ContentView.Event.NumberOfSearchResultsDidChange);this._showSearchHighlights();if(this._automaticallyRevealFirstSearchResult)
this.revealNextSearchResult();}
function contextNodesReady(nodeIds)
{DOMAgent.performSearch(query,nodeIds,searchResultsReady.bind(this));}
this.getSearchContextNodes(contextNodesReady.bind(this));}
getSearchContextNodes(callback)
{callback(undefined);}
searchCleared()
{if(this._searchIdentifier){DOMAgent.discardSearchResults(this._searchIdentifier);this._hideSearchHighlights();}
this._searchQuery=null;this._searchIdentifier=null;this._numberOfSearchResults=null;this._currentSearchResultIndex=-1;}
revealPreviousSearchResult(changeFocus)
{if(!this._numberOfSearchResults)
return;if(this._currentSearchResultIndex>0)
--this._currentSearchResultIndex;else
this._currentSearchResultIndex=this._numberOfSearchResults-1;this._revealSearchResult(this._currentSearchResultIndex,changeFocus);}
revealNextSearchResult(changeFocus)
{if(!this._numberOfSearchResults)
return;if(this._currentSearchResultIndex+1<this._numberOfSearchResults)
++this._currentSearchResultIndex;else
this._currentSearchResultIndex=0;this._revealSearchResult(this._currentSearchResultIndex,changeFocus);}
layout()
{this._domTreeOutline.updateSelection();}
_revealSearchResult(index,changeFocus)
{var searchIdentifier=this._searchIdentifier;function revealResult(error,nodeIdentifiers)
{if(error)
return;if(this._searchIdentifier!==searchIdentifier)
return;var domNode=WebInspector.domTreeManager.nodeForId(nodeIdentifiers[0]);if(!domNode)
return;this._domTreeOutline.selectDOMNode(domNode,changeFocus);var selectedTreeElement=this._domTreeOutline.selectedTreeElement;if(selectedTreeElement)
selectedTreeElement.emphasizeSearchHighlight();}
DOMAgent.getSearchResults(this._searchIdentifier,index,index+1,revealResult.bind(this));}
_restoreSelectedNodeAfterUpdate(documentURL,defaultNode)
{if(!WebInspector.domTreeManager.restoreSelectedNodeIsAllowed)
return;function selectNode(lastSelectedNode)
{var nodeToFocus=lastSelectedNode;if(!nodeToFocus)
nodeToFocus=defaultNode;if(!nodeToFocus)
return;this._dontSetLastSelectedNodePath=true;this.selectAndRevealDOMNode(nodeToFocus,WebInspector.isConsoleFocused());this._dontSetLastSelectedNodePath=false;if(!lastSelectedNode&&this._domTreeOutline.selectedTreeElement)
this._domTreeOutline.selectedTreeElement.expand();}
function selectLastSelectedNode(nodeId)
{if(!WebInspector.domTreeManager.restoreSelectedNodeIsAllowed)
return;selectNode.call(this,WebInspector.domTreeManager.nodeForId(nodeId));}
if(documentURL&&this._lastSelectedNodePathSetting.value&&this._lastSelectedNodePathSetting.value.path&&this._lastSelectedNodePathSetting.value.url===documentURL.hash)
WebInspector.domTreeManager.pushNodeByPathToFrontend(this._lastSelectedNodePathSetting.value.path,selectLastSelectedNode.bind(this));else
selectNode.call(this);}
_domTreeElementAdded(event)
{if(!this._pendingBreakpointNodeIdentifiers.size)
return;let treeElement=event.data.element;let node=treeElement.representedObject;if(!(node instanceof WebInspector.DOMNode))
return;if(!this._pendingBreakpointNodeIdentifiers.delete(node.id))
return;this._updateBreakpointStatus(node.id);}
_selectedNodeDidChange(event)
{var selectedDOMNode=this._domTreeOutline.selectedDOMNode();if(selectedDOMNode&&!this._dontSetLastSelectedNodePath)
this._lastSelectedNodePathSetting.value={url:WebInspector.frameResourceManager.mainFrame.url.hash,path:selectedDOMNode.path()};if(selectedDOMNode)
ConsoleAgent.addInspectedNode(selectedDOMNode.id);this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);}
_pathComponentSelected(event)
{if(!event.data.pathComponent)
return;this._domTreeOutline.selectDOMNode(event.data.pathComponent.domTreeElement.representedObject,true);}
_domNodeChanged(event)
{var selectedDOMNode=this._domTreeOutline.selectedDOMNode();if(selectedDOMNode!==event.data.node)
return;this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);}
_mouseWasClicked(event)
{var anchorElement=event.target.enclosingNodeOrSelfWithNodeName("a");if(!anchorElement||!anchorElement.href)
return;event.preventDefault();event.stopPropagation();if(WebInspector.isBeingEdited(anchorElement)){return;}
if(this._followLinkTimeoutIdentifier){clearTimeout(this._followLinkTimeoutIdentifier);delete this._followLinkTimeoutIdentifier;}
if(event.detail>1)
return;function followLink()
{
const options={alwaysOpenExternally:event?event.metaKey:false,lineNumber:anchorElement.lineNumber,ignoreNetworkTab:true,ignoreSearchTab:true,};WebInspector.openURL(anchorElement.href,this._frame,options);}
this._followLinkTimeoutIdentifier=setTimeout(followLink.bind(this),333);}
_toggleCompositingBorders(event)
{var activated=!this._compositingBordersButtonNavigationItem.activated;this._compositingBordersButtonNavigationItem.activated=activated;PageAgent.setCompositingBordersVisible(activated);}
_togglePaintFlashing(event)
{WebInspector.showPaintRectsSetting.value=!WebInspector.showPaintRectsSetting.value;}
_updateCompositingBordersButtonToMatchPageSettings()
{var button=this._compositingBordersButtonNavigationItem;
PageAgent.getCompositingBordersVisible(function(error,compositingBordersVisible){button.activated=error?false:compositingBordersVisible;button.enabled=error!=="unsupported";});}
_showPaintRectsSettingChanged(event)
{this._paintFlashingButtonNavigationItem.activated=WebInspector.showPaintRectsSetting.value;PageAgent.setShowPaintRects(this._paintFlashingButtonNavigationItem.activated);}
_showShadowDOMSettingChanged(event)
{this._showsShadowDOMButtonNavigationItem.activated=WebInspector.showShadowDOMSetting.value;}
_toggleShowsShadowDOMSetting(event)
{WebInspector.showShadowDOMSetting.value=!WebInspector.showShadowDOMSetting.value;}
_showPrintStylesSettingChanged(event)
{this._showPrintStylesButtonNavigationItem.activated=WebInspector.showPrintStylesSetting.value;}
_togglePrintStylesSetting(event)
{WebInspector.showPrintStylesSetting.value=!WebInspector.showPrintStylesSetting.value;let mediaType=WebInspector.showPrintStylesSetting.value?"print":"";PageAgent.setEmulatedMedia(mediaType);WebInspector.cssStyleManager.mediaTypeChanged();}
_showSearchHighlights()
{this._searchResultNodes=[];var searchIdentifier=this._searchIdentifier;DOMAgent.getSearchResults(this._searchIdentifier,0,this._numberOfSearchResults,function(error,nodeIdentifiers){if(error)
return;if(this._searchIdentifier!==searchIdentifier)
return;for(var i=0;i<nodeIdentifiers.length;++i){var domNode=WebInspector.domTreeManager.nodeForId(nodeIdentifiers[i]);if(!domNode)
continue;this._searchResultNodes.push(domNode);var treeElement=this._domTreeOutline.findTreeElement(domNode);if(treeElement)
treeElement.highlightSearchResults(this._searchQuery);}}.bind(this));}
_hideSearchHighlights()
{if(!this._searchResultNodes)
return;for(var domNode of this._searchResultNodes){var treeElement=this._domTreeOutline.findTreeElement(domNode);if(treeElement)
treeElement.hideSearchHighlights();}
delete this._searchResultNodes;}
_domBreakpointAddedOrRemoved(event)
{let breakpoint=event.data.breakpoint;this._updateBreakpointStatus(breakpoint.domNodeIdentifier);}
_domBreakpointDisabledStateDidChange(event)
{let breakpoint=event.target;this._updateBreakpointStatus(breakpoint.domNodeIdentifier);}
_domBreakpointResolvedStateDidChange(event)
{let breakpoint=event.target;let nodeIdentifier=breakpoint.domNodeIdentifier||event.data.oldNodeIdentifier;this._updateBreakpointStatus(nodeIdentifier);}
_updateBreakpointStatus(nodeIdentifier)
{let domNode=WebInspector.domTreeManager.nodeForId(nodeIdentifier);if(!domNode)
return;let treeElement=this._domTreeOutline.findTreeElement(domNode);if(!treeElement){this._pendingBreakpointNodeIdentifiers.add(nodeIdentifier);return;}
let breakpoints=WebInspector.domDebuggerManager.domBreakpointsForNode(domNode);if(!breakpoints.length){treeElement.breakpointStatus=WebInspector.DOMTreeElement.BreakpointStatus.None;return;}
this.breakpointGutterEnabled=true;let disabled=breakpoints.some((item)=>item.disabled);treeElement.breakpointStatus=disabled?WebInspector.DOMTreeElement.BreakpointStatus.DisabledBreakpoint:WebInspector.DOMTreeElement.BreakpointStatus.Breakpoint;}
_restoreBreakpointsAfterUpdate()
{this._pendingBreakpointNodeIdentifiers.clear();this.breakpointGutterEnabled=false;let updatedNodes=new Set;for(let breakpoint of WebInspector.domDebuggerManager.domBreakpoints){if(updatedNodes.has(breakpoint.domNodeIdentifier))
continue;this._updateBreakpointStatus(breakpoint.domNodeIdentifier);}}
_breakpointsEnabledDidChange(event)
{this._domTreeOutline.element.classList.toggle("breakpoints-disabled",!WebInspector.debuggerManager.breakpointsEnabled);}};WebInspector.DetailsSidebarPanel=class DetailsSidebarPanel extends WebInspector.SidebarPanel
{constructor(identifier,displayName,dontCreateNavigationItem)
{super(identifier,displayName);this.element.classList.add("details");if(!dontCreateNavigationItem)
this._navigationItem=new WebInspector.RadioButtonNavigationItem(identifier,displayName);}
get navigationItem()
{return this._navigationItem;}
inspect(objects)
{return false;}};WebInspector.GeneralTabBarItem=class GeneralTabBarItem extends WebInspector.TabBarItem
{constructor(image,title,representedObject)
{super(image,title,representedObject);let closeButtonElement=document.createElement("div");closeButtonElement.classList.add(WebInspector.TabBarItem.CloseButtonStyleClassName);closeButtonElement.title=WebInspector.UIString("Click to close this tab; Option-click to close all tabs except this one");this.element.insertBefore(closeButtonElement,this.element.firstChild);this.element.addEventListener("contextmenu",this._handleContextMenuEvent.bind(this));}
set title(title)
{if(title){this._titleElement=document.createElement("span");this._titleElement.classList.add("title");let titleContentElement=document.createElement("span");titleContentElement.classList.add("content");titleContentElement.textContent=title;this._titleElement.appendChild(titleContentElement);this.element.insertBefore(this._titleElement,this.element.lastChild);}else{if(this._titleElement)
this._titleElement.remove();this._titleElement=null;}
super.title=title;}
_handleContextMenuEvent(event)
{if(!this._parentTabBar)
return;let closeTab=()=>{this._parentTabBar.removeTabBarItem(this);};let closeOtherTabs=()=>{let tabBarItems=this._parentTabBar.tabBarItems;for(let i=tabBarItems.length-1;i>=0;--i){let item=tabBarItems[i];if(item===this||item instanceof WebInspector.PinnedTabBarItem)
continue;this._parentTabBar.removeTabBarItem(item);}};let hasOtherNonPinnedTabs=this._parentTabBar.tabBarItems.some((item)=>item!==this&&!(item instanceof WebInspector.PinnedTabBarItem));let contextMenu=WebInspector.ContextMenu.createFromEvent(event);contextMenu.appendItem(WebInspector.UIString("Close Tab"),closeTab,this.isDefaultTab);contextMenu.appendItem(WebInspector.UIString("Close Other Tabs"),closeOtherTabs,!hasOtherNonPinnedTabs);}};WebInspector.GeneralTreeElement=class GeneralTreeElement extends WebInspector.TreeElement
{constructor(classNames,title,subtitle,representedObject,hasChildren)
{super("",representedObject,hasChildren);this.classNames=classNames;this._tooltipHandledSeparately=false;this._mainTitle=title||"";this._subtitle=subtitle||"";this._status="";}
get element()
{return this._listItemNode;}
get iconElement()
{this._createElementsIfNeeded();return this._iconElement;}
get titlesElement()
{this._createElementsIfNeeded();return this._titlesElement;}
get mainTitleElement()
{this._createElementsIfNeeded();return this._mainTitleElement;}
get subtitleElement()
{this._createElementsIfNeeded();this._createSubtitleElementIfNeeded();return this._subtitleElement;}
get classNames()
{return this._classNames;}
set classNames(x)
{x=x||[];if(typeof x==="string")
x=[x];if(Array.shallowEqual(this._classNames,x))
return;if(this._listItemNode&&this._classNames)
this._listItemNode.classList.remove(...this._classNames);this._classNames=x;if(this._listItemNode)
this._listItemNode.classList.add(...this._classNames);}
addClassName(className)
{if(this._classNames.includes(className))
return;this._classNames.push(className);if(this._listItemNode)
this._listItemNode.classList.add(className);}
removeClassName(className)
{if(!this._classNames.includes(className))
return;this._classNames.remove(className);if(this._listItemNode)
this._listItemNode.classList.remove(className);}
get mainTitle()
{return this._mainTitle;}
set mainTitle(x)
{x=x||"";if(this._mainTitle===x)
return;this._mainTitle=x;this._updateTitleElements();this.didChange();this.dispatchEventToListeners(WebInspector.GeneralTreeElement.Event.MainTitleDidChange);}
get subtitle()
{return this._subtitle;}
set subtitle(x)
{x=x||"";if(this._subtitle===x)
return;this._subtitle=x;this._updateTitleElements();this.didChange();}
get status()
{return this._status;}
set status(x)
{x=x||"";if(this._status===x)
return;if(!this._statusElement){this._statusElement=document.createElement("div");this._statusElement.className=WebInspector.GeneralTreeElement.StatusElementStyleClassName;}
this._status=x;this._updateStatusElement();}
get filterableData()
{return{text:[this.mainTitle,this.subtitle]};}
get tooltipHandledSeparately()
{return this._tooltipHandledSeparately;}
set tooltipHandledSeparately(x)
{this._tooltipHandledSeparately=!!x;}
isEventWithinDisclosureTriangle(event)
{return event.target===this._disclosureButton;}
onattach()
{this._createElementsIfNeeded();this._updateTitleElements();this._listItemNode.classList.add("item");if(this._classNames)
this._listItemNode.classList.add(...this._classNames);this._listItemNode.appendChild(this._disclosureButton);this._listItemNode.appendChild(this._iconElement);if(this._statusElement)
this._listItemNode.appendChild(this._statusElement);this._listItemNode.appendChild(this._titlesElement);}
ondetach()
{}
onreveal()
{if(this._listItemNode)
this._listItemNode.scrollIntoViewIfNeeded(false);}
callFirstAncestorFunction(functionName,args)
{var currentNode=this.parent;while(currentNode){if(typeof currentNode[functionName]==="function"){currentNode[functionName].apply(currentNode,args);break;}
currentNode=currentNode.parent;}}
_createElementsIfNeeded()
{if(this._createdElements)
return;this._disclosureButton=document.createElement("button");this._disclosureButton.className=WebInspector.GeneralTreeElement.DisclosureButtonStyleClassName;
this._disclosureButton.tabIndex=-1;this._iconElement=document.createElement("img");this._iconElement.className=WebInspector.GeneralTreeElement.IconElementStyleClassName;this._titlesElement=document.createElement("div");this._titlesElement.className=WebInspector.GeneralTreeElement.TitlesElementStyleClassName;this._mainTitleElement=document.createElement("span");this._mainTitleElement.className=WebInspector.GeneralTreeElement.MainTitleElementStyleClassName;this._titlesElement.appendChild(this._mainTitleElement);this._createdElements=true;}
_createSubtitleElementIfNeeded()
{if(this._subtitleElement)
return;this._subtitleElement=document.createElement("span");this._subtitleElement.className=WebInspector.GeneralTreeElement.SubtitleElementStyleClassName;this._titlesElement.appendChild(this._subtitleElement);}
_updateTitleElements()
{if(!this._createdElements)
return;if(typeof this._mainTitle==="string"){if(this._mainTitleElement.textContent!==this._mainTitle)
this._mainTitleElement.textContent=this._mainTitle;}else if(this._mainTitle instanceof Node){this._mainTitleElement.removeChildren();this._mainTitleElement.appendChild(this._mainTitle);}
if(typeof this._subtitle==="string"&&this._subtitle){this._createSubtitleElementIfNeeded();if(this._subtitleElement.textContent!==this._subtitle)
this._subtitleElement.textContent=this._subtitle;this._titlesElement.classList.remove(WebInspector.GeneralTreeElement.NoSubtitleStyleClassName);}else if(this._subtitle instanceof Node){this._createSubtitleElementIfNeeded();this._subtitleElement.removeChildren();this._subtitleElement.appendChild(this._subtitle);}else{if(this._subtitleElement)
this._subtitleElement.textContent="";this._titlesElement.classList.add(WebInspector.GeneralTreeElement.NoSubtitleStyleClassName);}
if(!this.tooltip&&!this._tooltipHandledSeparately)
this._updateTitleTooltip();}
_updateTitleTooltip()
{if(!this._listItemNode)
return;let mainTitleText=this._mainTitleElement.textContent;let subtitleText=this._subtitleElement?this._subtitleElement.textContent:"";let large=this.treeOutline&&this.treeOutline.large;if(mainTitleText&&subtitleText)
this._listItemNode.title=mainTitleText+(large?"\n":" \u2014 ")+subtitleText;else if(mainTitleText)
this._listItemNode.title=mainTitleText;else
this._listItemNode.title=subtitleText;}
_updateStatusElement()
{if(!this._statusElement)
return;if(!this._statusElement.parentNode&&this._listItemNode)
this._listItemNode.insertBefore(this._statusElement,this._titlesElement);if(this._status instanceof Node){this._statusElement.removeChildren();this._statusElement.appendChild(this._status);}else
this._statusElement.textContent=this._status;}};WebInspector.GeneralTreeElement.DisclosureButtonStyleClassName="disclosure-button";WebInspector.GeneralTreeElement.IconElementStyleClassName="icon";WebInspector.GeneralTreeElement.StatusElementStyleClassName="status";WebInspector.GeneralTreeElement.TitlesElementStyleClassName="titles";WebInspector.GeneralTreeElement.MainTitleElementStyleClassName="title";WebInspector.GeneralTreeElement.SubtitleElementStyleClassName="subtitle";WebInspector.GeneralTreeElement.NoSubtitleStyleClassName="no-subtitle";WebInspector.GeneralTreeElement.Event={MainTitleDidChange:"general-tree-element-main-title-did-change"};WebInspector.NavigationSidebarPanel=class NavigationSidebarPanel extends WebInspector.SidebarPanel
{constructor(identifier,displayName,shouldAutoPruneStaleTopLevelResourceTreeElements)
{super(identifier,displayName);this.element.classList.add("navigation");this.contentView.element.addEventListener("scroll",this.soon._updateContentOverflowShadowVisibility);this._contentTreeOutlineGroup=new WebInspector.TreeOutlineGroup;this._contentTreeOutline=this.createContentTreeOutline();this._filterBar=new WebInspector.FilterBar;this._filterBar.addEventListener(WebInspector.FilterBar.Event.FilterDidChange,this._filterDidChange,this);this.element.appendChild(this._filterBar.element);this._bottomOverflowShadowElement=document.createElement("div");this._bottomOverflowShadowElement.className=WebInspector.NavigationSidebarPanel.OverflowShadowElementStyleClassName;this.element.appendChild(this._bottomOverflowShadowElement);this._boundUpdateContentOverflowShadowVisibility=this.soon._updateContentOverflowShadowVisibility;window.addEventListener("resize",this._boundUpdateContentOverflowShadowVisibility);this._filtersSetting=new WebInspector.Setting(identifier+"-navigation-sidebar-filters",{});this._filterBar.filters=this._filtersSetting.value;this._emptyContentPlaceholderElements=new Map;this._emptyFilterResults=new Map;this._shouldAutoPruneStaleTopLevelResourceTreeElements=shouldAutoPruneStaleTopLevelResourceTreeElements||false;if(this._shouldAutoPruneStaleTopLevelResourceTreeElements){WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._checkForStaleResources,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ChildFrameWasRemoved,this._checkForStaleResources,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ResourceWasRemoved,this._checkForStaleResources,this);}
this._pendingViewStateCookie=null;this._restoringState=false;}
closed()
{window.removeEventListener("resize",this._boundUpdateContentOverflowShadowVisibility);WebInspector.Frame.removeEventListener(null,null,this);}
get contentBrowser()
{return this._contentBrowser;}
set contentBrowser(contentBrowser)
{this._contentBrowser=contentBrowser||null;}
get contentTreeOutline()
{return this._contentTreeOutline;}
get contentTreeOutlines()
{return this._contentTreeOutlineGroup.items;}
get currentRepresentedObject()
{if(!this._contentBrowser)
return null;return this._contentBrowser.currentRepresentedObjects[0]||null;}
get filterBar()
{return this._filterBar;}
get restoringState()
{return this._restoringState;}
cancelRestoringState()
{if(!this._finalAttemptToRestoreViewStateTimeout)
return;clearTimeout(this._finalAttemptToRestoreViewStateTimeout);this._finalAttemptToRestoreViewStateTimeout=undefined;}
createContentTreeOutline(suppressFiltering)
{let contentTreeOutline=new WebInspector.TreeOutline;contentTreeOutline.allowsRepeatSelection=true;contentTreeOutline.element.classList.add(WebInspector.NavigationSidebarPanel.ContentTreeOutlineElementStyleClassName);this._contentTreeOutlineGroup.add(contentTreeOutline);this.contentView.element.appendChild(contentTreeOutline.element);if(!suppressFiltering){contentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementAdded,this._treeElementAddedOrChanged,this);contentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementDidChange,this._treeElementAddedOrChanged,this);contentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementDisclosureDidChanged,this._treeElementDisclosureDidChange,this);}
contentTreeOutline[WebInspector.NavigationSidebarPanel.SuppressFilteringSymbol]=suppressFiltering;return contentTreeOutline;}
suppressFilteringOnTreeElements(treeElements)
{for(let treeElement of treeElements)
treeElement[WebInspector.NavigationSidebarPanel.SuppressFilteringSymbol]=true;this._updateFilter();}
treeElementForRepresentedObject(representedObject)
{let treeElement=null;for(let treeOutline of this.contentTreeOutlines){treeElement=treeOutline.getCachedTreeElement(representedObject);if(treeElement)
break;}
return treeElement;}
showDefaultContentView()
{}
showDefaultContentViewForTreeElement(treeElement)
{if(!treeElement||!treeElement.representedObject)
return false;
if(!this.selected){let contentView=this.contentBrowser.contentViewForRepresentedObject(treeElement.representedObject);if(contentView&&contentView.parentContainer&&contentView.parentContainer!==this.contentBrowser.contentViewContainer)
return false;let selectedTabContentView=WebInspector.tabBrowser.selectedTabContentView;if(selectedTabContentView&&selectedTabContentView.contentBrowser!==this.contentBrowser)
return false;}
let contentView=this.contentBrowser.showContentViewForRepresentedObject(treeElement.representedObject);if(!contentView)
return false;treeElement.revealAndSelect(true,false,true,true);return true;}
saveStateToCookie(cookie)
{if(!this._contentBrowser)
return;let representedObject=this.currentRepresentedObject;if(!representedObject)
return;cookie[WebInspector.TypeIdentifierCookieKey]=representedObject.constructor.TypeIdentifier;if(representedObject.saveIdentityToCookie){representedObject.saveIdentityToCookie(cookie);return;}
console.error("NavigationSidebarPanel representedObject is missing a saveIdentityToCookie implementation.",representedObject);}
restoreStateFromCookie(cookie,relaxedMatchDelay)
{this._pendingViewStateCookie=cookie;this._restoringState=true;this._checkOutlinesForPendingViewStateCookie();if(this._finalAttemptToRestoreViewStateTimeout)
clearTimeout(this._finalAttemptToRestoreViewStateTimeout);if(relaxedMatchDelay===0)
return;function finalAttemptToRestoreViewStateFromCookie()
{this._finalAttemptToRestoreViewStateTimeout=undefined;this._checkOutlinesForPendingViewStateCookie(true);this._pendingViewStateCookie=null;this._restoringState=false;}
this._finalAttemptToRestoreViewStateTimeout=setTimeout(finalAttemptToRestoreViewStateFromCookie.bind(this),relaxedMatchDelay);}
showEmptyContentPlaceholder(message,treeOutline)
{treeOutline=treeOutline||this._contentTreeOutline;let emptyContentPlaceholderElement=this._createEmptyContentPlaceholderIfNeeded(treeOutline);if(emptyContentPlaceholderElement.parentNode&&emptyContentPlaceholderElement.children[0].textContent===message)
return;emptyContentPlaceholderElement.children[0].textContent=message;let emptyContentPlaceholderParentElement=treeOutline.element.parentNode;emptyContentPlaceholderParentElement.appendChild(emptyContentPlaceholderElement);this._updateContentOverflowShadowVisibility();}
hideEmptyContentPlaceholder(treeOutline)
{treeOutline=treeOutline||this._contentTreeOutline;let emptyContentPlaceholderElement=this._emptyContentPlaceholderElements.get(treeOutline);if(!emptyContentPlaceholderElement||!emptyContentPlaceholderElement.parentNode)
return;emptyContentPlaceholderElement.remove();this._updateContentOverflowShadowVisibility();}
updateEmptyContentPlaceholder(message,treeOutline)
{treeOutline=treeOutline||this._contentTreeOutline;if(!treeOutline.children.length){this.showEmptyContentPlaceholder(message,treeOutline);}else if(!this._emptyFilterResults.get(treeOutline)){this.hideEmptyContentPlaceholder(treeOutline);}}
updateFilter()
{this._updateFilter();}
shouldFilterPopulate()
{return this.hasCustomFilters();}
hasCustomFilters()
{return false;}
matchTreeElementAgainstCustomFilters(treeElement)
{return true;}
matchTreeElementAgainstFilterFunctions(treeElement)
{if(!this._filterFunctions||!this._filterFunctions.length)
return true;for(var filterFunction of this._filterFunctions){if(filterFunction(treeElement))
return true;}
return false;}
applyFiltersToTreeElement(treeElement)
{if(!this._filterBar.hasActiveFilters()&&!this.hasCustomFilters()){treeElement.hidden=false;if(treeElement.expanded&&treeElement[WebInspector.NavigationSidebarPanel.WasExpandedDuringFilteringSymbol]){treeElement[WebInspector.NavigationSidebarPanel.WasExpandedDuringFilteringSymbol]=false;treeElement.collapse();}
return;}
var filterableData=treeElement.filterableData||{};var flags={expandTreeElement:false};var filterRegex=this._textFilterRegex;function matchTextFilter(inputs)
{if(!inputs||!filterRegex)
return true;for(var input of inputs){if(!input)
continue;if(filterRegex.test(input)){flags.expandTreeElement=true;return true;}}
return false;}
function makeVisible()
{treeElement.hidden=false;var currentAncestor=treeElement.parent;while(currentAncestor&&!currentAncestor.root){currentAncestor.hidden=false;if(flags.expandTreeElement&&!currentAncestor.expanded){currentAncestor.__wasExpandedDuringFiltering=true;currentAncestor.expand();}
currentAncestor=currentAncestor.parent;}}
let suppressFiltering=treeElement[WebInspector.NavigationSidebarPanel.SuppressFilteringSymbol];if(suppressFiltering||(matchTextFilter(filterableData.text)&&this.matchTreeElementAgainstFilterFunctions(treeElement,flags)&&this.matchTreeElementAgainstCustomFilters(treeElement,flags))){makeVisible();if(!flags.expandTreeElement&&treeElement.expanded&&treeElement[WebInspector.NavigationSidebarPanel.WasExpandedDuringFilteringSymbol]){treeElement[WebInspector.NavigationSidebarPanel.WasExpandedDuringFilteringSymbol]=false;treeElement.collapse();}
return;}
treeElement.hidden=true;}
shown()
{super.shown();this._updateContentOverflowShadowVisibility();}
pruneStaleResourceTreeElements()
{if(this._checkForStaleResourcesTimeoutIdentifier){clearTimeout(this._checkForStaleResourcesTimeoutIdentifier);this._checkForStaleResourcesTimeoutIdentifier=undefined;}
for(let contentTreeOutline of this.contentTreeOutlines){
for(var i=contentTreeOutline.children.length-1;i>=0;--i){var treeElement=contentTreeOutline.children[i];if(!(treeElement instanceof WebInspector.ResourceTreeElement))
continue;var resource=treeElement.resource;if(!resource.parentFrame||resource.parentFrame.isDetached())
contentTreeOutline.removeChildAtIndex(i,true,true);}}}
treeElementAddedOrChanged(treeElement)
{}
_updateContentOverflowShadowVisibility()
{if(!this.visible)
return;this._updateContentOverflowShadowVisibility.cancelDebounce();let scrollHeight=this.contentView.element.scrollHeight;let offsetHeight=this.contentView.element.offsetHeight;if(scrollHeight<offsetHeight){if(this._topOverflowShadowElement)
this._topOverflowShadowElement.style.opacity=0;this._bottomOverflowShadowElement.style.opacity=0;return;}
let edgeThreshold=1;let scrollTop=this.contentView.element.scrollTop;let topCoverage=Math.min(scrollTop,edgeThreshold);let bottomCoverage=Math.max(0,(offsetHeight+scrollTop)-(scrollHeight-edgeThreshold));if(this._topOverflowShadowElement)
this._topOverflowShadowElement.style.opacity=(topCoverage/edgeThreshold).toFixed(1);this._bottomOverflowShadowElement.style.opacity=(1-(bottomCoverage/edgeThreshold)).toFixed(1);}
_checkForEmptyFilterResults()
{function checkTreeOutlineForEmptyFilterResults(treeOutline)
{if(!treeOutline.children.length)
return;let filterableTreeElementFound=false;let unfilteredTreeElementFound=false;let currentTreeElement=treeOutline.children[0];while(currentTreeElement){let suppressFilteringForTreeElement=currentTreeElement[WebInspector.NavigationSidebarPanel.SuppressFilteringSymbol];if(!suppressFilteringForTreeElement){filterableTreeElementFound=true;if(!currentTreeElement.hidden){unfilteredTreeElementFound=true;break;}}
currentTreeElement=currentTreeElement.nextSibling;}
if(unfilteredTreeElementFound||!filterableTreeElementFound){this.hideEmptyContentPlaceholder(treeOutline);this._emptyFilterResults.set(treeOutline,false);return;}
this.showEmptyContentPlaceholder(WebInspector.UIString("No Filter Results"),treeOutline);this._emptyFilterResults.set(treeOutline,true);}
for(let treeOutline of this.contentTreeOutlines){if(treeOutline[WebInspector.NavigationSidebarPanel.SuppressFilteringSymbol])
continue;checkTreeOutlineForEmptyFilterResults.call(this,treeOutline);}}
_filterDidChange()
{this._updateFilter();}
_updateFilter()
{let selectedTreeElement;for(let treeOutline of this.contentTreeOutlines){if(treeOutline.hidden||treeOutline[WebInspector.NavigationSidebarPanel.SuppressFilteringSymbol])
continue;selectedTreeElement=treeOutline.selectedTreeElement;if(selectedTreeElement)
break;}
let filters=this._filterBar.filters;this._textFilterRegex=simpleGlobStringToRegExp(filters.text,"i");this._filtersSetting.value=filters;this._filterFunctions=filters.functions;let dontPopulate=!this._filterBar.hasActiveFilters()&&!this.shouldFilterPopulate();for(let treeOutline of this.contentTreeOutlines){if(treeOutline.hidden||treeOutline[WebInspector.NavigationSidebarPanel.SuppressFilteringSymbol])
continue;let currentTreeElement=treeOutline.children[0];while(currentTreeElement&&!currentTreeElement.root){if(!currentTreeElement[WebInspector.NavigationSidebarPanel.SuppressFilteringSymbol]){const currentTreeElementWasHidden=currentTreeElement.hidden;this.applyFiltersToTreeElement(currentTreeElement);if(currentTreeElementWasHidden!==currentTreeElement.hidden)
this._treeElementWasFiltered(currentTreeElement);}
currentTreeElement=currentTreeElement.traverseNextTreeElement(false,null,dontPopulate);}}
this._checkForEmptyFilterResults();this._updateContentOverflowShadowVisibility();}
_treeElementAddedOrChanged(event)
{var dontPopulate=!this._filterBar.hasActiveFilters()&&!this.shouldFilterPopulate();let treeElement=event.data.element;let currentTreeElement=treeElement;while(currentTreeElement&&!currentTreeElement.root){if(!currentTreeElement[WebInspector.NavigationSidebarPanel.SuppressFilteringSymbol]){const currentTreeElementWasHidden=currentTreeElement.hidden;this.applyFiltersToTreeElement(currentTreeElement);if(currentTreeElementWasHidden!==currentTreeElement.hidden)
this._treeElementWasFiltered(currentTreeElement);}
currentTreeElement=currentTreeElement.traverseNextTreeElement(false,treeElement,dontPopulate);}
this._checkForEmptyFilterResults();if(this.visible)
this.soon._updateContentOverflowShadowVisibility();if(this.selected)
this._checkElementsForPendingViewStateCookie([treeElement]);this.treeElementAddedOrChanged(treeElement);}
_treeElementDisclosureDidChange(event)
{this.soon._updateContentOverflowShadowVisibility();}
_checkForStaleResourcesIfNeeded()
{if(!this._checkForStaleResourcesTimeoutIdentifier||!this._shouldAutoPruneStaleTopLevelResourceTreeElements)
return;this.pruneStaleResourceTreeElements();}
_checkForStaleResources(event)
{if(this._checkForStaleResourcesTimeoutIdentifier)
return;this._checkForStaleResourcesTimeoutIdentifier=setTimeout(this.pruneStaleResourceTreeElements.bind(this));}
_isTreeElementWithoutRepresentedObject(treeElement)
{return treeElement instanceof WebInspector.FolderTreeElement||treeElement instanceof WebInspector.DatabaseHostTreeElement||treeElement instanceof WebInspector.IndexedDatabaseHostTreeElement||treeElement instanceof WebInspector.ApplicationCacheManifestTreeElement||treeElement instanceof WebInspector.ThreadTreeElement||treeElement instanceof WebInspector.IdleTreeElement||treeElement instanceof WebInspector.DOMBreakpointTreeElement||treeElement instanceof WebInspector.XHRBreakpointTreeElement||treeElement instanceof WebInspector.CSSStyleSheetTreeElement||typeof treeElement.representedObject==="string"||treeElement.representedObject instanceof String;}
_checkOutlinesForPendingViewStateCookie(matchTypeOnly)
{if(!this._pendingViewStateCookie)
return;this._checkForStaleResourcesIfNeeded();var visibleTreeElements=[];this.contentTreeOutlines.forEach(function(outline){var currentTreeElement=outline.hasChildren?outline.children[0]:null;while(currentTreeElement){visibleTreeElements.push(currentTreeElement);currentTreeElement=currentTreeElement.traverseNextTreeElement(false,null,false);}});return this._checkElementsForPendingViewStateCookie(visibleTreeElements,matchTypeOnly);}
_checkElementsForPendingViewStateCookie(treeElements,matchTypeOnly)
{if(!this._pendingViewStateCookie)
return;var cookie=this._pendingViewStateCookie;function treeElementMatchesCookie(treeElement)
{if(this._isTreeElementWithoutRepresentedObject(treeElement))
return false;var representedObject=treeElement.representedObject;if(!representedObject)
return false;var typeIdentifier=cookie[WebInspector.TypeIdentifierCookieKey];if(typeIdentifier!==representedObject.constructor.TypeIdentifier)
return false;if(matchTypeOnly)
return true;var candidateObjectCookie={};if(representedObject.saveIdentityToCookie)
representedObject.saveIdentityToCookie(candidateObjectCookie);var candidateCookieKeys=Object.keys(candidateObjectCookie);return candidateCookieKeys.length&&candidateCookieKeys.every((key)=>candidateObjectCookie[key]===cookie[key]);}
var matchedElement=null;treeElements.some((element)=>{if(treeElementMatchesCookie.call(this,element)){matchedElement=element;return true;}
return false;});if(matchedElement){let didShowContentView=this.showDefaultContentViewForTreeElement(matchedElement);if(!didShowContentView)
return;this._pendingViewStateCookie=null;
setTimeout(()=>{this._restoringState=false;},0);if(this._finalAttemptToRestoreViewStateTimeout){clearTimeout(this._finalAttemptToRestoreViewStateTimeout);this._finalAttemptToRestoreViewStateTimeout=undefined;}}}
_createEmptyContentPlaceholderIfNeeded(treeOutline)
{let emptyContentPlaceholderElement=this._emptyContentPlaceholderElements.get(treeOutline);if(emptyContentPlaceholderElement)
return emptyContentPlaceholderElement;emptyContentPlaceholderElement=document.createElement("div");emptyContentPlaceholderElement.classList.add(WebInspector.NavigationSidebarPanel.EmptyContentPlaceholderElementStyleClassName);this._emptyContentPlaceholderElements.set(treeOutline,emptyContentPlaceholderElement);let emptyContentPlaceholderMessageElement=document.createElement("div");emptyContentPlaceholderMessageElement.className=WebInspector.NavigationSidebarPanel.EmptyContentPlaceholderMessageElementStyleClassName;emptyContentPlaceholderElement.appendChild(emptyContentPlaceholderMessageElement);return emptyContentPlaceholderElement;}
_treeElementWasFiltered(treeElement)
{if(treeElement.selected||treeElement.hidden)
return;let representedObject=this.currentRepresentedObject;if(!representedObject||treeElement.representedObject!==representedObject)
return;const omitFocus=true;const selectedByUser=false;const suppressOnSelect=true;const suppressOnDeselect=true;treeElement.revealAndSelect(omitFocus,selectedByUser,suppressOnSelect,suppressOnDeselect);}};WebInspector.NavigationSidebarPanel.SuppressFilteringSymbol=Symbol("suppress-filtering");WebInspector.NavigationSidebarPanel.WasExpandedDuringFilteringSymbol=Symbol("was-expanded-during-filtering");WebInspector.NavigationSidebarPanel.OverflowShadowElementStyleClassName="overflow-shadow";WebInspector.NavigationSidebarPanel.ContentTreeOutlineElementStyleClassName="navigation-sidebar-panel-content-tree-outline";WebInspector.NavigationSidebarPanel.EmptyContentPlaceholderElementStyleClassName="empty-content-placeholder";WebInspector.NavigationSidebarPanel.EmptyContentPlaceholderMessageElementStyleClassName="message";WebInspector.PinnedTabBarItem=class PinnedTabBarItem extends WebInspector.TabBarItem
{constructor(image,title,representedObject)
{super(image,title,representedObject);this.element.classList.add("pinned");this.element.addEventListener("contextmenu",this._handleContextMenuEvent.bind(this));}
_handleContextMenuEvent(event)
{event.preventDefault();let contextMenu=WebInspector.ContextMenu.createFromEvent(event);this.dispatchEventToListeners(WebInspector.PinnedTabBarItem.Event.ContextMenu,{contextMenu});}};WebInspector.PinnedTabBarItem.Event={ContextMenu:"pinned-tab-bar-item-context-menu",};WebInspector.ResourceContentView=class ResourceContentView extends WebInspector.ContentView
{constructor(resource,styleClassName)
{super(resource);this._resource=resource;this.element.classList.add(styleClassName,"resource");this._spinnerTimeout=setTimeout(()=>{
let spinner=new WebInspector.IndeterminateProgressSpinner;this.element.appendChild(spinner.element);this._spinnerTimeout=undefined;},100);this.element.addEventListener("click",this._mouseWasClicked.bind(this),false);resource.requestContent().then(this._contentAvailable.bind(this)).catch(this.showGenericErrorMessage.bind(this));if(!this.managesOwnIssues){WebInspector.issueManager.addEventListener(WebInspector.IssueManager.Event.IssueWasAdded,this._issueWasAdded,this);var issues=WebInspector.issueManager.issuesForSourceCode(resource);for(var i=0;i<issues.length;++i)
this.addIssue(issues[i]);}}
get resource()
{return this._resource;}
get supportsSave()
{return this._resource.finished;}
get saveData()
{return{url:this._resource.url,content:this._resource.content};}
contentAvailable(content,base64Encoded)
{}
showGenericErrorMessage()
{this._contentError(WebInspector.UIString("An error occurred trying to load the resource."));}
addIssue(issue)
{this.element.removeChildren();this.element.appendChild(WebInspector.createMessageTextView(issue.text,issue.level===WebInspector.IssueMessage.Level.Error));}
closed()
{super.closed();if(!this.managesOwnIssues)
WebInspector.issueManager.removeEventListener(null,null,this);}
removeLoadingIndicator()
{if(this._spinnerTimeout){clearTimeout(this._spinnerTimeout);this._spinnerTimeout=undefined;}
this.element.removeChildren();}
_contentAvailable(parameters)
{if(parameters.error){this._contentError(parameters.error);return;}
this.contentAvailable(parameters.sourceCode.content,parameters.base64Encoded);}
_contentError(error)
{if(this._hasContent())
return;this.removeLoadingIndicator();this.element.appendChild(WebInspector.createMessageTextView(error,true));this.dispatchEventToListeners(WebInspector.ResourceContentView.Event.ContentError);}
_hasContent()
{return this.element.hasChildNodes()&&!this.element.querySelector(".indeterminate-progress-spinner");}
_issueWasAdded(event)
{var issue=event.data.issue;if(!WebInspector.IssueManager.issueMatchSourceCode(issue,this.resource))
return;this.addIssue(issue);}
_mouseWasClicked(event)
{WebInspector.handlePossibleLinkClick(event,this.resource.parentFrame);}};WebInspector.ResourceContentView.Event={ContentError:"resource-content-view-content-error",};WebInspector.TabContentView=class TabContentView extends WebInspector.ContentView
{constructor(identifier,styleClassNames,tabBarItem,navigationSidebarPanelConstructor,detailsSidebarPanelConstructors)
{super(null);this.element.classList.add("tab");if(typeof styleClassNames==="string")
styleClassNames=[styleClassNames];this.element.classList.add(...styleClassNames);this._identifier=identifier;this._tabBarItem=tabBarItem;this._navigationSidebarPanelConstructor=navigationSidebarPanelConstructor||null;this._detailsSidebarPanelConstructors=detailsSidebarPanelConstructors||[];const defaultSidebarWidth=300;this._navigationSidebarCollapsedSetting=new WebInspector.Setting(identifier+"-navigation-sidebar-collapsed",false);this._navigationSidebarWidthSetting=new WebInspector.Setting(identifier+"-navigation-sidebar-width",defaultSidebarWidth);this._detailsSidebarCollapsedSetting=new WebInspector.Setting(identifier+"-details-sidebar-collapsed",true);this._detailsSidebarSelectedPanelSetting=new WebInspector.Setting(identifier+"-details-sidebar-selected-panel",null);this._detailsSidebarWidthSetting=new WebInspector.Setting(identifier+"-details-sidebar-width",defaultSidebarWidth);this._cookieSetting=new WebInspector.Setting(identifier+"-tab-cookie",{});}
static isTabAllowed()
{return true;}
static isEphemeral()
{return false;}
static shouldSaveTab()
{return true;}
get type()
{return null;}
get parentTabBrowser()
{return this._parentTabBrowser;}
set parentTabBrowser(tabBrowser)
{this._parentTabBrowser=tabBrowser||null;}
get identifier()
{return this._identifier;}
get tabBarItem()
{return this._tabBarItem;}
get managesDetailsSidebarPanels()
{return false;}
showDetailsSidebarPanels()
{}
showRepresentedObject(representedObject,cookie)
{}
canShowRepresentedObject(representedObject)
{return false;}
shown()
{super.shown();if(this._shouldRestoreStateWhenShown)
this.restoreStateFromCookie(WebInspector.StateRestorationType.Delayed);}
restoreStateFromCookie(restorationType)
{if(!this.visible){this._shouldRestoreStateWhenShown=true;return;}
this._shouldRestoreStateWhenShown=false;var relaxMatchDelay=0;if(restorationType===WebInspector.StateRestorationType.Load)
relaxMatchDelay=1000;else if(restorationType===WebInspector.StateRestorationType.Navigation)
relaxMatchDelay=2000;let cookie=this._cookieSetting.value||{};if(this.navigationSidebarPanel)
this.navigationSidebarPanel.restoreStateFromCookie(cookie,relaxMatchDelay);this.restoreFromCookie(cookie);}
saveStateToCookie(cookie)
{if(this._shouldRestoreStateWhenShown)
return;cookie=cookie||{};if(this.navigationSidebarPanel)
this.navigationSidebarPanel.saveStateToCookie(cookie);this.saveToCookie(cookie);this._cookieSetting.value=cookie;}
get navigationSidebarPanel()
{if(!this._navigationSidebarPanelConstructor)
return null;return WebInspector.instanceForClass(this._navigationSidebarPanelConstructor);}
get navigationSidebarCollapsedSetting(){return this._navigationSidebarCollapsedSetting;}
get navigationSidebarWidthSetting(){return this._navigationSidebarWidthSetting;}
get detailsSidebarPanels()
{if(!this._detailsSidebarPanels)
this._detailsSidebarPanels=this._detailsSidebarPanelConstructors.map(constructor=>WebInspector.instanceForClass(constructor));return this._detailsSidebarPanels;}
get detailsSidebarCollapsedSetting(){return this._detailsSidebarCollapsedSetting;}
get detailsSidebarSelectedPanelSetting(){return this._detailsSidebarSelectedPanelSetting;}
get detailsSidebarWidthSetting(){return this._detailsSidebarWidthSetting;}};WebInspector.TimelineDataGrid=class TimelineDataGrid extends WebInspector.DataGrid
{constructor(columns,treeOutline,synchronizerDelegate,editCallback,deleteCallback)
{super(columns,editCallback,deleteCallback);if(treeOutline)
this._treeOutlineDataGridSynchronizer=new WebInspector.TreeOutlineDataGridSynchronizer(treeOutline,this,synchronizerDelegate);this.element.classList.add("timeline");this._sortDelegate=null;this._scopeBarColumns=[];for(var[identifier,column]of this.columns){var scopeBar=column.scopeBar;if(!scopeBar)
continue;this._scopeBarColumns.push(identifier);scopeBar.columnIdentifier=identifier;scopeBar.addEventListener(WebInspector.ScopeBar.Event.SelectionChanged,this._scopeBarSelectedItemsDidChange,this);}
if(this._scopeBarColumns.length>1){console.error("Creating a TimelineDataGrid with more than one filterable column is not yet supported.");return;}
this.addEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged,this._dataGridSelectedNodeChanged,this);this.addEventListener(WebInspector.DataGrid.Event.SortChanged,this._sort,this);this.columnChooserEnabled=true;}
static createColumnScopeBar(prefix,map)
{prefix=prefix+"-timeline-data-grid-";var scopeBarItems=[];for(var[key,value]of map){var id=prefix+key;var item=new WebInspector.ScopeBarItem(id,value);item.value=key;scopeBarItems.push(item);}
var allItem=new WebInspector.ScopeBarItem(prefix+"type-all",WebInspector.UIString("All"));scopeBarItems.unshift(allItem);return new WebInspector.ScopeBar(prefix+"scope-bar",scopeBarItems,allItem,true);}
get sortDelegate()
{return this._sortDelegate;}
set sortDelegate(delegate)
{delegate=delegate||null;if(this._sortDelegate===delegate)
return;this._sortDelegate=delegate;if(this.sortOrder!==WebInspector.DataGrid.SortOrder.Indeterminate)
this.dispatchEventToListeners(WebInspector.DataGrid.Event.SortChanged);}
reset()
{if(!this._treeOutlineDataGridSynchronizer)
this.removeChildren();this._hidePopover();}
shown()
{if(this._treeOutlineDataGridSynchronizer)
this._treeOutlineDataGridSynchronizer.synchronize();}
hidden()
{this._hidePopover();}
treeElementForDataGridNode(dataGridNode)
{if(!this._treeOutlineDataGridSynchronizer)
return null;return this._treeOutlineDataGridSynchronizer.treeElementForDataGridNode(dataGridNode);}
dataGridNodeForTreeElement(treeElement)
{if(!this._treeOutlineDataGridSynchronizer)
return null;return this._treeOutlineDataGridSynchronizer.dataGridNodeForTreeElement(treeElement);}
callFramePopoverAnchorElement()
{return null;}
addRowInSortOrder(treeElement,dataGridNode,parentTreeElementOrDataGridNode)
{let parentDataGridNode;let childElement=dataGridNode;if(treeElement){if(!this._treeOutlineDataGridSynchronizer)
return;this._treeOutlineDataGridSynchronizer.associate(treeElement,dataGridNode);let parentTreeElement=parentTreeElementOrDataGridNode||this._treeOutlineDataGridSynchronizer.treeOutline;parentDataGridNode=parentTreeElement.root?this:this._treeOutlineDataGridSynchronizer.dataGridNodeForTreeElement(parentTreeElement);parentTreeElementOrDataGridNode=parentTreeElement;childElement=treeElement;}else{parentTreeElementOrDataGridNode=parentTreeElementOrDataGridNode||this;parentDataGridNode=parentTreeElementOrDataGridNode;}
if(this.sortColumnIdentifier){let insertionIndex=insertionIndexForObjectInListSortedByFunction(dataGridNode,parentDataGridNode.children,this._sortComparator.bind(this));parentTreeElementOrDataGridNode.insertChild(childElement,insertionIndex);}else{parentTreeElementOrDataGridNode.appendChild(childElement);}}
shouldIgnoreSelectionEvent()
{return this._ignoreSelectionEvent||false;}
dataGridNodeNeedsRefresh(dataGridNode)
{if(!this._dirtyDataGridNodes)
this._dirtyDataGridNodes=new Set;this._dirtyDataGridNodes.add(dataGridNode);if(this._scheduledDataGridNodeRefreshIdentifier)
return;this._scheduledDataGridNodeRefreshIdentifier=requestAnimationFrame(this._refreshDirtyDataGridNodes.bind(this));}
hasCustomFilters()
{return true;}
matchNodeAgainstCustomFilters(node)
{if(!super.matchNodeAgainstCustomFilters(node))
return false;for(let identifier of this._scopeBarColumns){let scopeBar=this.columns.get(identifier).scopeBar;if(!scopeBar||scopeBar.defaultItem.selected)
continue;let value=node.data[identifier];if(!scopeBar.selectedItems.some((scopeBarItem)=>scopeBarItem.value===value))
return false;}
return true;}
_refreshDirtyDataGridNodes()
{if(this._scheduledDataGridNodeRefreshIdentifier){cancelAnimationFrame(this._scheduledDataGridNodeRefreshIdentifier);this._scheduledDataGridNodeRefreshIdentifier=undefined;}
if(!this._dirtyDataGridNodes)
return;let selectedNode=this.selectedNode;let sortComparator=this._sortComparator.bind(this);if(this._treeOutlineDataGridSynchronizer)
this._treeOutlineDataGridSynchronizer.enabled=false;for(let dataGridNode of this._dirtyDataGridNodes){dataGridNode.refresh();if(!this.sortColumnIdentifier)
continue;if(dataGridNode===selectedNode)
this._ignoreSelectionEvent=true;if(dataGridNode.parent===this)
this.removeChild(dataGridNode);let insertionIndex=insertionIndexForObjectInListSortedByFunction(dataGridNode,this.children,sortComparator);this.insertChild(dataGridNode,insertionIndex);if(dataGridNode===selectedNode){selectedNode.revealAndSelect();this._ignoreSelectionEvent=false;}
if(!this._treeOutlineDataGridSynchronizer)
continue;let treeOutline=this._treeOutlineDataGridSynchronizer.treeOutline;let treeElement=this._treeOutlineDataGridSynchronizer.treeElementForDataGridNode(dataGridNode);treeOutline.reattachIfIndexChanged(treeElement,insertionIndex);dataGridNode.element.classList.toggle("hidden",treeElement.hidden);}
if(this._treeOutlineDataGridSynchronizer)
this._treeOutlineDataGridSynchronizer.enabled=true;this._dirtyDataGridNodes=null;}
_sort()
{if(!this.children.length)
return;let sortColumnIdentifier=this.sortColumnIdentifier;if(!sortColumnIdentifier)
return;let selectedNode=this.selectedNode;this._ignoreSelectionEvent=true;let treeOutline;if(this._treeOutlineDataGridSynchronizer){this._treeOutlineDataGridSynchronizer.enabled=false;treeOutline=this._treeOutlineDataGridSynchronizer.treeOutline;if(treeOutline.selectedTreeElement)
treeOutline.selectedTreeElement.deselect(true);}
let parentDataGridNodes=[this];let currentDataGridNode=this.children[0];while(currentDataGridNode){if(currentDataGridNode.children.length)
parentDataGridNodes.push(currentDataGridNode);currentDataGridNode=currentDataGridNode.traverseNextNode(false,null,true);}
for(let parentDataGridNode of parentDataGridNodes){let childDataGridNodes=parentDataGridNode.children.slice();parentDataGridNode.removeChildren();let parentTreeElement;if(this._treeOutlineDataGridSynchronizer){parentTreeElement=parentDataGridNode===this?treeOutline:this._treeOutlineDataGridSynchronizer.treeElementForDataGridNode(parentDataGridNode);parentTreeElement.removeChildren();}
childDataGridNodes.sort(this._sortComparator.bind(this));for(let dataGridNode of childDataGridNodes){if(this._treeOutlineDataGridSynchronizer){let treeElement=this._treeOutlineDataGridSynchronizer.treeElementForDataGridNode(dataGridNode);if(parentTreeElement)
parentTreeElement.appendChild(treeElement);dataGridNode.element.classList.toggle("hidden",treeElement.hidden);}
parentDataGridNode.appendChild(dataGridNode);}}
if(this._treeOutlineDataGridSynchronizer)
this._treeOutlineDataGridSynchronizer.enabled=true;if(selectedNode)
selectedNode.revealAndSelect();this._ignoreSelectionEvent=false;}
_sortComparator(node1,node2)
{var sortColumnIdentifier=this.sortColumnIdentifier;if(!sortColumnIdentifier)
return 0;var sortDirection=this.sortOrder===WebInspector.DataGrid.SortOrder.Ascending?1:-1;if(this._sortDelegate&&typeof this._sortDelegate.dataGridSortComparator==="function"){let result=this._sortDelegate.dataGridSortComparator(sortColumnIdentifier,sortDirection,node1,node2);if(typeof result==="number")
return result;}
var value1=node1.data[sortColumnIdentifier];var value2=node2.data[sortColumnIdentifier];if(typeof value1==="number"&&typeof value2==="number"){if(isNaN(value1)&&isNaN(value2))
return 0;if(isNaN(value1))
return-sortDirection;if(isNaN(value2))
return sortDirection;return(value1-value2)*sortDirection;}
if(typeof value1==="string"&&typeof value2==="string")
return value1.extendedLocaleCompare(value2)*sortDirection;if(value1 instanceof WebInspector.CallFrame||value2 instanceof WebInspector.CallFrame){value1=value1&&value1.functionName?value1.functionName:(value1&&value1.sourceCodeLocation?value1.sourceCodeLocation.sourceCode:"");value2=value2&&value2.functionName?value2.functionName:(value2&&value2.sourceCodeLocation?value2.sourceCodeLocation.sourceCode:"");}
if(value1 instanceof WebInspector.SourceCode||value2 instanceof WebInspector.SourceCode){value1=value1?value1.displayName||"":"";value2=value2?value2.displayName||"":"";}
if(value1 instanceof WebInspector.SourceCodeLocation||value2 instanceof WebInspector.SourceCodeLocation){value1=value1?value1.displayLocationString()||"":"";value2=value2?value2.displayLocationString()||"":"";}
return(value1<value2?-1:(value1>value2?1:0))*sortDirection;}
_scopeBarSelectedItemsDidChange(event)
{this.filterDidChange();}
_dataGridSelectedNodeChanged(event)
{if(!this.selectedNode){this._hidePopover();return;}
var record=this.selectedNode.record;if(!record||!record.callFrames||!record.callFrames.length){this._hidePopover();return;}
this._showPopoverForSelectedNodeSoon();}
_showPopoverForSelectedNodeSoon()
{if(this._showPopoverTimeout)
return;this._showPopoverTimeout=setTimeout(()=>{if(!this._popover){this._popover=new WebInspector.Popover;this._popover.windowResizeHandler=()=>{this._updatePopoverForSelectedNode(false);};}
this._updatePopoverForSelectedNode(true);this._showPopoverTimeout=undefined;},WebInspector.TimelineDataGrid.DelayedPopoverShowTimeout);}
_hidePopover()
{if(this._showPopoverTimeout){clearTimeout(this._showPopoverTimeout);this._showPopoverTimeout=undefined;}
if(this._popover)
this._popover.dismiss();if(this._hidePopoverContentClearTimeout)
clearTimeout(this._hidePopoverContentClearTimeout);this._hidePopoverContentClearTimeout=setTimeout(()=>{if(this._popoverCallStackTreeOutline)
this._popoverCallStackTreeOutline.removeChildren();},WebInspector.TimelineDataGrid.DelayedPopoverHideContentClearTimeout);}
_updatePopoverForSelectedNode(updateContent)
{if(!this._popover||!this.selectedNode)
return;let targetPopoverElement=this.callFramePopoverAnchorElement();if(!targetPopoverElement)
return;let rect=WebInspector.Rect.rectFromClientRect(targetPopoverElement.getBoundingClientRect());if(!rect.size.width&&!rect.size.height)
return;if(this._hidePopoverContentClearTimeout){clearTimeout(this._hidePopoverContentClearTimeout);this._hidePopoverContentClearTimeout=undefined;}
let targetFrame=rect.pad(2);let preferredEdges=[WebInspector.RectEdge.MAX_Y,WebInspector.RectEdge.MIN_Y,WebInspector.RectEdge.MAX_X];if(updateContent)
this._popover.presentNewContentWithFrame(this._createPopoverContent(),targetFrame,preferredEdges);else
this._popover.present(targetFrame,preferredEdges);}
_createPopoverContent()
{if(!this._popoverCallStackTreeOutline){this._popoverCallStackTreeOutline=new WebInspector.TreeOutline;this._popoverCallStackTreeOutline.disclosureButtons=false;this._popoverCallStackTreeOutline.element.classList.add("timeline-data-grid");this._popoverCallStackTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._popoverCallStackTreeSelectionDidChange,this);}else
this._popoverCallStackTreeOutline.removeChildren();var callFrames=this.selectedNode.record.callFrames;for(var i=0;i<callFrames.length;++i){var callFrameTreeElement=new WebInspector.CallFrameTreeElement(callFrames[i]);this._popoverCallStackTreeOutline.appendChild(callFrameTreeElement);}
var content=document.createElement("div");content.className="timeline-data-grid-popover";content.appendChild(this._popoverCallStackTreeOutline.element);return content;}
_popoverCallStackTreeSelectionDidChange(event)
{let treeElement=event.data.selectedElement;if(!treeElement)
return;this._popover.dismiss();var callFrame=treeElement.callFrame;if(!callFrame.sourceCodeLocation)
return;WebInspector.showSourceCodeLocation(callFrame.sourceCodeLocation,{ignoreNetworkTab:true,ignoreSearchTab:true,});}};WebInspector.TimelineDataGrid.HasNonDefaultFilterStyleClassName="has-non-default-filter";WebInspector.TimelineDataGrid.DelayedPopoverShowTimeout=250;WebInspector.TimelineDataGrid.DelayedPopoverHideContentClearTimeout=500;WebInspector.TimelineDataGridNode=class TimelineDataGridNode extends WebInspector.DataGridNode
{constructor(includesGraph,graphDataSource,hasChildren)
{super({},hasChildren);this.copyable=false;this._includesGraph=includesGraph||false;this._graphDataSource=graphDataSource||null;if(graphDataSource){this._graphContainerElement=document.createElement("div");this._timelineRecordBars=[];}}
get record()
{return this.records&&this.records.length?this.records[0]:null;}
get records()
{return[];}
get graphDataSource()
{return this._graphDataSource;}
get data()
{if(!this._graphDataSource)
return{};var records=this.records||[];return{graph:records.length?records[0].startTime:0};}
collapse()
{super.collapse();if(!this._graphDataSource||!this.revealed)
return;this.refreshGraph();}
expand()
{super.expand();if(!this._graphDataSource||!this.revealed)
return;this.refreshGraph();var childNode=this.children[0];while(childNode){if(childNode instanceof WebInspector.TimelineDataGridNode)
childNode.refreshGraph();childNode=childNode.traverseNextNode(true,this);}}
createCellContent(columnIdentifier,cell)
{if(columnIdentifier==="graph"&&this._graphDataSource){this.needsGraphRefresh();return this._graphContainerElement;}
var value=this.data[columnIdentifier];if(!value)
return emDash;const options={useGoToArrowButton:true,ignoreNetworkTab:true,ignoreSearchTab:true,};if(value instanceof WebInspector.SourceCodeLocation){if(value.sourceCode instanceof WebInspector.Resource){cell.classList.add(WebInspector.ResourceTreeElement.ResourceIconStyleClassName);cell.classList.add(value.sourceCode.type);}else if(value.sourceCode instanceof WebInspector.Script){if(value.sourceCode.url){cell.classList.add(WebInspector.ResourceTreeElement.ResourceIconStyleClassName);cell.classList.add(WebInspector.Resource.Type.Script);}else
cell.classList.add(WebInspector.ScriptTreeElement.AnonymousScriptIconStyleClassName);}else
console.error("Unknown SourceCode subclass.");value.populateLiveDisplayLocationTooltip(cell);var fragment=document.createDocumentFragment();fragment.appendChild(WebInspector.createSourceCodeLocationLink(value,options));var titleElement=document.createElement("span");value.populateLiveDisplayLocationString(titleElement,"textContent");fragment.appendChild(titleElement);return fragment;}
if(value instanceof WebInspector.CallFrame){var callFrame=value;var isAnonymousFunction=false;var functionName=callFrame.functionName;if(!functionName){functionName=WebInspector.UIString("(anonymous function)");isAnonymousFunction=true;}
cell.classList.add(WebInspector.CallFrameView.FunctionIconStyleClassName);var fragment=document.createDocumentFragment();if(callFrame.sourceCodeLocation&&callFrame.sourceCodeLocation.sourceCode){callFrame.sourceCodeLocation.populateLiveDisplayLocationTooltip(cell);fragment.appendChild(WebInspector.createSourceCodeLocationLink(callFrame.sourceCodeLocation,options));if(isAnonymousFunction){if(callFrame.sourceCodeLocation.sourceCode instanceof WebInspector.Resource){cell.classList.add(WebInspector.ResourceTreeElement.ResourceIconStyleClassName);cell.classList.add(callFrame.sourceCodeLocation.sourceCode.type);}else if(callFrame.sourceCodeLocation.sourceCode instanceof WebInspector.Script){if(callFrame.sourceCodeLocation.sourceCode.url){cell.classList.add(WebInspector.ResourceTreeElement.ResourceIconStyleClassName);cell.classList.add(WebInspector.Resource.Type.Script);}else
cell.classList.add(WebInspector.ScriptTreeElement.AnonymousScriptIconStyleClassName);}else
console.error("Unknown SourceCode subclass.");var titleElement=document.createElement("span");callFrame.sourceCodeLocation.populateLiveDisplayLocationString(titleElement,"textContent");fragment.appendChild(titleElement);}else{cell.classList.add(WebInspector.CallFrameView.FunctionIconStyleClassName);fragment.append(functionName);var subtitleElement=document.createElement("span");subtitleElement.classList.add("subtitle");callFrame.sourceCodeLocation.populateLiveDisplayLocationString(subtitleElement,"textContent");fragment.appendChild(subtitleElement);}
return fragment;}
var icon=document.createElement("div");icon.classList.add("icon");fragment.append(icon,functionName);return fragment;}
return super.createCellContent(columnIdentifier,cell);}
refresh()
{if(this._graphDataSource&&this._includesGraph)
this.needsGraphRefresh();super.refresh();}
refreshGraph()
{if(!this._graphDataSource)
return;if(this._scheduledGraphRefreshIdentifier){cancelAnimationFrame(this._scheduledGraphRefreshIdentifier);this._scheduledGraphRefreshIdentifier=undefined;}
if(!this.revealed)
return;let secondsPerPixel=this._graphDataSource.secondsPerPixel;if(isNaN(secondsPerPixel))
return;var recordBarIndex=0;function createBar(records,renderMode)
{var timelineRecordBar=this._timelineRecordBars[recordBarIndex];if(!timelineRecordBar)
timelineRecordBar=this._timelineRecordBars[recordBarIndex]=new WebInspector.TimelineRecordBar(records,renderMode);else{timelineRecordBar.renderMode=renderMode;timelineRecordBar.records=records;}
timelineRecordBar.refresh(this._graphDataSource);if(!timelineRecordBar.element.parentNode){this._graphContainerElement.appendChild(timelineRecordBar.element);this.didAddRecordBar(timelineRecordBar);}
++recordBarIndex;}
function collectRecordsByType(records,recordsByTypeMap)
{for(var record of records){var typedRecords=recordsByTypeMap.get(record.type);if(!typedRecords){typedRecords=[];recordsByTypeMap.set(record.type,typedRecords);}
typedRecords.push(record);}}
var boundCreateBar=createBar.bind(this);if(this.expanded){WebInspector.TimelineRecordBar.createCombinedBars(this.records,secondsPerPixel,this._graphDataSource,boundCreateBar);}else{var recordTypeMap=new Map;collectRecordsByType(this.records,recordTypeMap);var childNode=this.children[0];while(childNode){if(childNode instanceof WebInspector.TimelineDataGridNode)
collectRecordsByType(childNode.records,recordTypeMap);childNode=childNode.traverseNextNode(false,this);}
for(var records of recordTypeMap.values())
WebInspector.TimelineRecordBar.createCombinedBars(records,secondsPerPixel,this._graphDataSource,boundCreateBar);}
for(;recordBarIndex<this._timelineRecordBars.length;++recordBarIndex){this._timelineRecordBars[recordBarIndex].element.remove();this.didRemoveRecordBar(this._timelineRecordBars[recordBarIndex]);this._timelineRecordBars[recordBarIndex].records=null;}}
needsGraphRefresh()
{if(!this.revealed){var ancestor=this;while(ancestor&&!ancestor.root){if(ancestor.revealed&&ancestor instanceof WebInspector.TimelineDataGridNode){ancestor.needsGraphRefresh();return;}
ancestor=ancestor.parent;}
return;}
if(!this._graphDataSource||this._scheduledGraphRefreshIdentifier)
return;this._scheduledGraphRefreshIdentifier=requestAnimationFrame(this.refreshGraph.bind(this));}
displayName()
{const includeDetails=true;return WebInspector.TimelineTabContentView.displayNameForRecord(this.record,true);}
iconClassNames()
{return[WebInspector.TimelineTabContentView.iconClassNameForRecord(this.record)];}
createGoToArrowButton(cellElement,callback)
{function buttonClicked(event)
{if(this.hidden||!this.revealed)
return;event.stopPropagation();callback(this,cellElement.__columnIdentifier);}
let button=WebInspector.createGoToArrowButton();button.addEventListener("click",buttonClicked.bind(this));let contentElement=cellElement.firstChild;contentElement.appendChild(button);}
isRecordVisible(record)
{if(!this._graphDataSource)
return false;if(isNaN(record.startTime))
return false;if(record.endTime<this.graphDataSource.startTime)
return false;if(record.startTime>this.graphDataSource.currentTime||record.startTime>this.graphDataSource.endTime)
return false;return true;}
filterableDataForColumn(columnIdentifier)
{let value=this.data[columnIdentifier];if(value instanceof WebInspector.SourceCodeLocation)
return value.displayLocationString();if(value instanceof WebInspector.CallFrame)
return[value.functionName,value.sourceCodeLocation.displayLocationString()];return super.filterableDataForColumn(columnIdentifier);}
didAddRecordBar(recordBar)
{}
didRemoveRecordBar(recordBar)
{}
didResizeColumn(columnIdentifier)
{if(columnIdentifier!=="graph")
return;this.needsGraphRefresh();}};WebInspector.ContentBrowserTabContentView=class ContentBrowserTabContentView extends WebInspector.TabContentView
{constructor(identifier,styleClassNames,tabBarItem,navigationSidebarPanelConstructor,detailsSidebarPanelConstructors,disableBackForward)
{if(typeof styleClassNames==="string")
styleClassNames=[styleClassNames];styleClassNames.push("content-browser");var contentBrowser=new WebInspector.ContentBrowser(null,null,disableBackForward);super(identifier,styleClassNames,tabBarItem,navigationSidebarPanelConstructor,detailsSidebarPanelConstructors);this._contentBrowser=contentBrowser;this._contentBrowser.delegate=this;this._lastSelectedDetailsSidebarPanelSetting=new WebInspector.Setting(identifier+"-last-selected-details-sidebar-panel",null);this._contentBrowser.addEventListener(WebInspector.ContentBrowser.Event.CurrentRepresentedObjectsDidChange,this.showDetailsSidebarPanels,this);this._contentBrowser.addEventListener(WebInspector.ContentBrowser.Event.CurrentContentViewDidChange,this._contentBrowserCurrentContentViewDidChange,this);this._contentBrowser.updateHierarchicalPathForCurrentContentView();if(navigationSidebarPanelConstructor){let showToolTip=WebInspector.UIString("Show the navigation sidebar (%s)").format(WebInspector.navigationSidebarKeyboardShortcut.displayName);let hideToolTip=WebInspector.UIString("Hide the navigation sidebar (%s)").format(WebInspector.navigationSidebarKeyboardShortcut.displayName);let image=WebInspector.resolvedLayoutDirection()==WebInspector.LayoutDirection.RTL?"Images/ToggleRightSidebar.svg":"Images/ToggleLeftSidebar.svg";this._showNavigationSidebarItem=new WebInspector.ActivateButtonNavigationItem("toggle-navigation-sidebar",showToolTip,hideToolTip,image,16,16);this._showNavigationSidebarItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,WebInspector.toggleNavigationSidebar,WebInspector);this._showNavigationSidebarItem.activated=!WebInspector.navigationSidebar.collapsed;this._contentBrowser.navigationBar.insertNavigationItem(this._showNavigationSidebarItem,0);this._contentBrowser.navigationBar.insertNavigationItem(new WebInspector.DividerNavigationItem,1);WebInspector.navigationSidebar.addEventListener(WebInspector.Sidebar.Event.CollapsedStateDidChange,this._navigationSidebarCollapsedStateDidChange,this);}
if(detailsSidebarPanelConstructors&&detailsSidebarPanelConstructors.length){let showToolTip=WebInspector.UIString("Show the details sidebar (%s)").format(WebInspector.detailsSidebarKeyboardShortcut.displayName);let hideToolTip=WebInspector.UIString("Hide the details sidebar (%s)").format(WebInspector.detailsSidebarKeyboardShortcut.displayName);let image=WebInspector.resolvedLayoutDirection()==WebInspector.LayoutDirection.RTL?"Images/ToggleLeftSidebar.svg":"Images/ToggleRightSidebar.svg";this._showDetailsSidebarItem=new WebInspector.ActivateButtonNavigationItem("toggle-details-sidebar",showToolTip,hideToolTip,image,16,16);this._showDetailsSidebarItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,WebInspector.toggleDetailsSidebar,WebInspector);this._showDetailsSidebarItem.activated=!WebInspector.detailsSidebar.collapsed;this._showDetailsSidebarItem.enabled=false;this._contentBrowser.navigationBar.addNavigationItem(new WebInspector.DividerNavigationItem);this._contentBrowser.navigationBar.addNavigationItem(this._showDetailsSidebarItem);WebInspector.detailsSidebar.addEventListener(WebInspector.Sidebar.Event.CollapsedStateDidChange,this._detailsSidebarCollapsedStateDidChange,this);WebInspector.detailsSidebar.addEventListener(WebInspector.Sidebar.Event.SidebarPanelSelected,this._detailsSidebarPanelSelected,this);}
this.addSubview(this._contentBrowser);}
get contentBrowser()
{return this._contentBrowser;}
shown()
{if(this.navigationSidebarPanel){if(!this.navigationSidebarPanel.contentBrowser)
this.navigationSidebarPanel.contentBrowser=this._contentBrowser;}
super.shown();this._contentBrowser.shown();if(this.navigationSidebarPanel){if(!this._contentBrowser.currentContentView)
this.navigationSidebarPanel.showDefaultContentView();}}
hidden()
{super.hidden();this._contentBrowser.hidden();}
closed()
{super.closed();WebInspector.navigationSidebar.removeEventListener(null,null,this);WebInspector.detailsSidebar.removeEventListener(null,null,this);if(this.navigationSidebarPanel&&typeof this.navigationSidebarPanel.closed==="function")
this.navigationSidebarPanel.closed();this._contentBrowser.contentViewContainer.closeAllContentViews();}
get managesDetailsSidebarPanels()
{return true;}
showDetailsSidebarPanels()
{if(!this.visible)
return;var currentRepresentedObjects=this._contentBrowser.currentRepresentedObjects;var currentSidebarPanels=WebInspector.detailsSidebar.sidebarPanels;var wasSidebarEmpty=!currentSidebarPanels.length;
this._ignoreDetailsSidebarPanelSelectedEvent=true;this._ignoreDetailsSidebarPanelCollapsedEvent=true;let hiddenSidebarPanels=0;for(var i=0;i<this.detailsSidebarPanels.length;++i){var sidebarPanel=this.detailsSidebarPanels[i];if(sidebarPanel.inspect(currentRepresentedObjects)){if(currentSidebarPanels.includes(sidebarPanel)){continue;}
let index=i-hiddenSidebarPanels;WebInspector.detailsSidebar.insertSidebarPanel(sidebarPanel,index);if(this._lastSelectedDetailsSidebarPanelSetting.value===sidebarPanel.identifier){WebInspector.detailsSidebar.selectedSidebarPanel=sidebarPanel;}}else{WebInspector.detailsSidebar.removeSidebarPanel(sidebarPanel);hiddenSidebarPanels++;}}
if(!WebInspector.detailsSidebar.selectedSidebarPanel&&currentSidebarPanels.length)
WebInspector.detailsSidebar.selectedSidebarPanel=currentSidebarPanels[0];if(!WebInspector.detailsSidebar.sidebarPanels.length)
WebInspector.detailsSidebar.collapsed=true;else if(wasSidebarEmpty)
WebInspector.detailsSidebar.collapsed=this.detailsSidebarCollapsedSetting.value;this._ignoreDetailsSidebarPanelCollapsedEvent=false;this._ignoreDetailsSidebarPanelSelectedEvent=false;if(!this.detailsSidebarPanels.length)
return;this._showDetailsSidebarItem.enabled=WebInspector.detailsSidebar.sidebarPanels.length;}
showRepresentedObject(representedObject,cookie)
{if(this.navigationSidebarPanel)
this.navigationSidebarPanel.cancelRestoringState();this.contentBrowser.showContentViewForRepresentedObject(representedObject,cookie);}
contentBrowserTreeElementForRepresentedObject(contentBrowser,representedObject)
{return this.treeElementForRepresentedObject(representedObject);}
treeElementForRepresentedObject(representedObject)
{if(!this.navigationSidebarPanel)
return null;return this.navigationSidebarPanel.treeElementForRepresentedObject(representedObject);}
_navigationSidebarCollapsedStateDidChange(event)
{this._showNavigationSidebarItem.activated=!WebInspector.navigationSidebar.collapsed;}
_detailsSidebarCollapsedStateDidChange(event)
{if(!this.visible)
return;this._showDetailsSidebarItem.activated=!WebInspector.detailsSidebar.collapsed;this._showDetailsSidebarItem.enabled=WebInspector.detailsSidebar.sidebarPanels.length;if(this._ignoreDetailsSidebarPanelCollapsedEvent)
return;this.detailsSidebarCollapsedSetting.value=WebInspector.detailsSidebar.collapsed;}
_detailsSidebarPanelSelected(event)
{if(!this.visible)
return;this._showDetailsSidebarItem.activated=!WebInspector.detailsSidebar.collapsed;this._showDetailsSidebarItem.enabled=WebInspector.detailsSidebar.sidebarPanels.length;if(!WebInspector.detailsSidebar.selectedSidebarPanel||this._ignoreDetailsSidebarPanelSelectedEvent)
return;this._lastSelectedDetailsSidebarPanelSetting.value=WebInspector.detailsSidebar.selectedSidebarPanel.identifier;}
_contentBrowserCurrentContentViewDidChange(event)
{let currentContentView=this._contentBrowser.currentContentView;if(!currentContentView)
return;this._revealAndSelectRepresentedObject(currentContentView.representedObject);}
_revealAndSelectRepresentedObject(representedObject)
{if(this.navigationSidebarPanel){
for(let contentTreeOutline of this.navigationSidebarPanel.contentTreeOutlines){if(contentTreeOutline.processingSelectionChange)
return;}}
let treeElement=this.treeElementForRepresentedObject(representedObject);if(treeElement)
treeElement.revealAndSelect(true,false,true,true);else if(this.navigationSidebarPanel&&this.navigationSidebarPanel.contentTreeOutline.selectedTreeElement)
this.navigationSidebarPanel.contentTreeOutline.selectedTreeElement.deselect(true);}};WebInspector.DOMDetailsSidebarPanel=class DOMDetailsSidebarPanel extends WebInspector.DetailsSidebarPanel
{constructor(identifier,displayName,dontCreateNavigationItem)
{super(identifier,displayName,dontCreateNavigationItem);this.element.addEventListener("click",this._mouseWasClicked.bind(this),true);this._domNode=null;}
inspect(objects)
{if(!(objects instanceof Array))
objects=[objects];var nodeToInspect=null;for(var i=0;i<objects.length;++i){if(objects[i]instanceof WebInspector.DOMNode){nodeToInspect=objects[i];break;}}
if(nodeToInspect&&!this.supportsDOMNode(nodeToInspect))
nodeToInspect=null;this.domNode=nodeToInspect;return!!this._domNode;}
get domNode()
{return this._domNode;}
set domNode(domNode)
{if(domNode===this._domNode)
return;if(this._domNode)
this.removeEventListeners();this._domNode=domNode;if(this._domNode)
this.addEventListeners();this.needsLayout();}
supportsDOMNode(nodeToInspect)
{return true;}
addEventListeners()
{}
removeEventListeners()
{}
_mouseWasClicked(event)
{if(this._domNode&&this._domNode.ownerDocument){var mainResource=WebInspector.frameResourceManager.resourceForURL(this._domNode.ownerDocument.documentURL);if(mainResource)
var parentFrame=mainResource.parentFrame;}
const options={ignoreNetworkTab:true,ignoreSearchTab:true,};WebInspector.handlePossibleLinkClick(event,parentFrame,options);}};WebInspector.FolderTreeElement=class FolderTreeElement extends WebInspector.GeneralTreeElement
{constructor(title,representedObject)
{const classNames=[WebInspector.FolderTreeElement.FolderIconStyleClassName];const subtitle=null;const hasChildren=true;super(classNames,title,subtitle,representedObject,hasChildren);}};WebInspector.FolderTreeElement.FolderIconStyleClassName="folder-icon";WebInspector.FolderizedTreeElement=class FolderizedTreeElement extends WebInspector.GeneralTreeElement
{constructor(classNames,title,subtitle,representedObject,hasChildren)
{super(classNames,title,subtitle,representedObject,hasChildren);this.shouldRefreshChildren=true;this._folderExpandedSettingMap=new Map;this._folderSettingsKey="";this._folderTypeMap=new Map;this._folderizeSettingsMap=new Map;this._groupedIntoFolders=false;this._clearNewChildQueue();}
get groupedIntoFolders()
{return this._groupedIntoFolders;}
set folderSettingsKey(x)
{this._folderSettingsKey=x;}
registerFolderizeSettings(type,displayName,representedObject,treeElementConstructor)
{let settings={type,displayName,topLevel:displayName===null,representedObject,treeElementConstructor,};this._folderizeSettingsMap.set(type,settings);}
removeChildren()
{super.removeChildren();this._clearNewChildQueue();for(var folder of this._folderTypeMap.values())
folder.removeChildren();this._folderExpandedSettingMap.clear();this._folderTypeMap.clear();this._groupedIntoFolders=false;}
addChildForRepresentedObject(representedObject)
{var settings=this._settingsForRepresentedObject(representedObject);if(!settings){console.error("No settings for represented object",representedObject);return;}
if(!this.treeOutline){this.shouldRefreshChildren=true;return;}
var childTreeElement=this.treeOutline.getCachedTreeElement(representedObject);if(!childTreeElement)
childTreeElement=new settings.treeElementConstructor(representedObject);this._addTreeElement(childTreeElement);}
addRepresentedObjectToNewChildQueue(representedObject)
{this._newChildQueue.push(representedObject);if(!this._newChildQueueTimeoutIdentifier)
this._newChildQueueTimeoutIdentifier=setTimeout(this._populateFromNewChildQueue.bind(this),WebInspector.FolderizedTreeElement.NewChildQueueUpdateInterval);}
removeChildForRepresentedObject(representedObject)
{this._removeRepresentedObjectFromNewChildQueue(representedObject);this.updateParentStatus();if(!this.treeOutline){this.shouldRefreshChildren=true;return;}
var childTreeElement=this.treeOutline.getCachedTreeElement(representedObject);if(!childTreeElement||!childTreeElement.parent)
return;this._removeTreeElement(childTreeElement);}
compareChildTreeElements(a,b)
{return this._compareTreeElementsByMainTitle(a,b);}
updateParentStatus()
{let hasChildren=false;for(let settings of this._folderizeSettingsMap.values()){if(settings.representedObject.items.size){hasChildren=true;break;}}
this.hasChildren=hasChildren;if(!this.hasChildren)
this.removeChildren();}
prepareToPopulate()
{if(!this._groupedIntoFolders&&this._shouldGroupIntoFolders()){this._groupedIntoFolders=true;return true;}
return false;}
_clearNewChildQueue()
{this._newChildQueue=[];if(this._newChildQueueTimeoutIdentifier){clearTimeout(this._newChildQueueTimeoutIdentifier);this._newChildQueueTimeoutIdentifier=null;}}
_populateFromNewChildQueue()
{if(!this.children.length){this.updateParentStatus();this.shouldRefreshChildren=true;return;}
if(this.prepareToPopulate()){this._clearNewChildQueue();this.shouldRefreshChildren=true;return;}
for(var i=0;i<this._newChildQueue.length;++i)
this.addChildForRepresentedObject(this._newChildQueue[i]);this._clearNewChildQueue();}
_removeRepresentedObjectFromNewChildQueue(representedObject)
{this._newChildQueue.remove(representedObject);}
_addTreeElement(childTreeElement)
{if(!childTreeElement)
return;var wasSelected=childTreeElement.selected;this._removeTreeElement(childTreeElement,true,true);var parentTreeElement=this._parentTreeElementForRepresentedObject(childTreeElement.representedObject);if(parentTreeElement!==this&&!parentTreeElement.parent)
this._insertFolderTreeElement(parentTreeElement);this._insertChildTreeElement(parentTreeElement,childTreeElement);if(wasSelected)
childTreeElement.revealAndSelect(true,false,true,true);}
_compareTreeElementsByMainTitle(a,b)
{let aIsFolder=a instanceof WebInspector.FolderTreeElement;let bIsFolder=b instanceof WebInspector.FolderTreeElement;if(aIsFolder&&!bIsFolder)
return-1;if(bIsFolder&&!aIsFolder)
return 1;return a.mainTitle.extendedLocaleCompare(b.mainTitle);}
_insertFolderTreeElement(folderTreeElement)
{this.insertChild(folderTreeElement,insertionIndexForObjectInListSortedByFunction(folderTreeElement,this.children,this._compareTreeElementsByMainTitle));}
_insertChildTreeElement(parentTreeElement,childTreeElement)
{parentTreeElement.insertChild(childTreeElement,insertionIndexForObjectInListSortedByFunction(childTreeElement,parentTreeElement.children,this.compareChildTreeElements.bind(this)));}
_removeTreeElement(childTreeElement,suppressOnDeselect,suppressSelectSibling)
{var oldParent=childTreeElement.parent;if(!oldParent)
return;oldParent.removeChild(childTreeElement,suppressOnDeselect,suppressSelectSibling);if(oldParent===this)
return;if(!(oldParent instanceof WebInspector.FolderTreeElement))
return;if(!oldParent.children.length)
oldParent.parent.removeChild(oldParent);}
_parentTreeElementForRepresentedObject(representedObject)
{if(!this._groupedIntoFolders)
return this;function createFolderTreeElement(settings)
{let folderTreeElement=new WebInspector.FolderTreeElement(settings.displayName,settings.representedObject);let folderExpandedSetting=new WebInspector.Setting(settings.type+"-folder-expanded-"+this._folderSettingsKey,false);this._folderExpandedSettingMap.set(folderTreeElement,folderExpandedSetting);if(folderExpandedSetting.value)
folderTreeElement.expand();folderTreeElement.onexpand=this._folderTreeElementExpandedStateChange.bind(this);folderTreeElement.oncollapse=this._folderTreeElementExpandedStateChange.bind(this);return folderTreeElement;}
var settings=this._settingsForRepresentedObject(representedObject);if(!settings){console.error("Unknown representedObject",representedObject);return this;}
if(settings.topLevel)
return this;var folder=this._folderTypeMap.get(settings.type);if(folder)
return folder;folder=createFolderTreeElement.call(this,settings);this._folderTypeMap.set(settings.type,folder);return folder;}
_folderTreeElementExpandedStateChange(folderTreeElement)
{let expandedSetting=this._folderExpandedSettingMap.get(folderTreeElement);if(!expandedSetting)
return;expandedSetting.value=folderTreeElement.expanded;}
_settingsForRepresentedObject(representedObject)
{for(let settings of this._folderizeSettingsMap.values()){if(settings.representedObject.typeVerifier(representedObject))
return settings;}
return null;}
_shouldGroupIntoFolders()
{if(this._groupedIntoFolders)
return true;
var numberOfSmallCategories=0;var numberOfMediumCategories=0;var foundLargeCategory=false;function pushCategory(childCount)
{if(!childCount)
return false;if(foundLargeCategory)
return true;if(childCount>=WebInspector.FolderizedTreeElement.LargeChildCountThreshold){if(numberOfSmallCategories||numberOfMediumCategories)
return true;foundLargeCategory=true;return false;}
if(childCount>=WebInspector.FolderizedTreeElement.MediumChildCountThreshold){return++numberOfMediumCategories>=WebInspector.FolderizedTreeElement.NumberOfMediumCategoriesThreshold;}
++numberOfSmallCategories;return false;}
for(var settings of this._folderizeSettingsMap.values()){if(pushCategory(settings.representedObject.items.size))
return true;}
return false;}};WebInspector.FolderizedTreeElement.MediumChildCountThreshold=5;WebInspector.FolderizedTreeElement.LargeChildCountThreshold=15;WebInspector.FolderizedTreeElement.NumberOfMediumCategoriesThreshold=2;WebInspector.FolderizedTreeElement.NewChildQueueUpdateInterval=500;WebInspector.NetworkTabContentView=class NetworkTabContentView extends WebInspector.ContentBrowserTabContentView
{constructor(identifier)
{let{image,title}=WebInspector.NetworkTabContentView.tabInfo();let tabBarItem=new WebInspector.GeneralTabBarItem(image,title);let detailsSidebarPanelConstructors=[WebInspector.ResourceDetailsSidebarPanel,WebInspector.ProbeDetailsSidebarPanel];super(identifier||"network","network",tabBarItem,WebInspector.NetworkSidebarPanel,detailsSidebarPanelConstructors);}
static tabInfo()
{return{image:"Images/Network.svg",title:WebInspector.UIString("Network"),};}
static isTabAllowed()
{return!!window.NetworkAgent&&!!window.PageAgent;}
get type()
{return WebInspector.NetworkTabContentView.Type;}
canShowRepresentedObject(representedObject)
{if(!(representedObject instanceof WebInspector.Resource))
return false;return!!this.navigationSidebarPanel.contentTreeOutline.getCachedTreeElement(representedObject);}
get supportsSplitContentBrowser()
{
return false;}};WebInspector.NetworkTabContentView.Type="network";WebInspector.NewTabContentView=class NewTabContentView extends WebInspector.TabContentView
{constructor(identifier)
{let{image,title}=WebInspector.NewTabContentView.tabInfo();let tabBarItem=new WebInspector.GeneralTabBarItem(image,title);tabBarItem.isDefaultTab=true;super(identifier||"new-tab","new-tab",tabBarItem);WebInspector.notifications.addEventListener(WebInspector.Notification.TabTypesChanged,this._updateShownTabs.bind(this));this._tabElementsByTabClass=new Map;this._updateShownTabs();}
static tabInfo()
{return{image:"Images/NewTab.svg",title:WebInspector.UIString("New Tab"),};}
static isEphemeral()
{return true;}
static shouldSaveTab()
{return false;}
get type()
{return WebInspector.NewTabContentView.Type;}
shown()
{WebInspector.tabBrowser.tabBar.addEventListener(WebInspector.TabBar.Event.TabBarItemAdded,this._updateTabItems,this);WebInspector.tabBrowser.tabBar.addEventListener(WebInspector.TabBar.Event.TabBarItemRemoved,this._updateTabItems,this);this._updateTabItems();}
hidden()
{WebInspector.tabBrowser.tabBar.removeEventListener(null,null,this);}
get supportsSplitContentBrowser()
{
return false;}
layout()
{this._tabElementsByTabClass.clear();this.element.removeChildren();for(let tabClass of this._shownTabClasses){let tabItemElement=document.createElement("div");tabItemElement.classList.add("tab-item");tabItemElement.addEventListener("click",this._createNewTabWithType.bind(this,tabClass.Type));tabItemElement[WebInspector.NewTabContentView.TypeSymbol]=tabClass.Type;let boxElement=tabItemElement.appendChild(document.createElement("div"));boxElement.classList.add("box");let info=tabClass.tabInfo();let imageElement=boxElement.appendChild(document.createElement("img"));imageElement.src=info.image;let labelElement=tabItemElement.appendChild(document.createElement("label"));labelElement.textContent=info.title;this.element.appendChild(tabItemElement);this._tabElementsByTabClass.set(tabClass,tabItemElement);}
this._updateTabItems();}
_createNewTabWithType(tabType,event)
{if(!WebInspector.isNewTabWithTypeAllowed(tabType))
return;const canCreateAdditionalTabs=this._allowableTabTypes().length>1;const options={referencedView:this,shouldReplaceTab:!canCreateAdditionalTabs||!WebInspector.modifierKeys.metaKey,shouldShowNewTab:!WebInspector.modifierKeys.metaKey};WebInspector.createNewTabWithType(tabType,options);}
_updateShownTabs()
{let allTabClasses=Array.from(WebInspector.knownTabClasses());let allowedTabClasses=allTabClasses.filter((tabClass)=>tabClass.isTabAllowed()&&!tabClass.isEphemeral());allowedTabClasses.sort((a,b)=>a.tabInfo().title.extendedLocaleCompare(b.tabInfo().title));if(Array.shallowEqual(this._shownTabClasses,allowedTabClasses))
return;this._shownTabClasses=allowedTabClasses;this.needsLayout();}
_allowableTabTypes()
{let tabTypes=this._shownTabClasses.map((tabClass)=>tabClass.Type);return tabTypes.filter((type)=>WebInspector.isNewTabWithTypeAllowed(type));}
_updateTabItems()
{for(let[tabClass,tabItemElement]of this._tabElementsByTabClass.entries()){let allowed=WebInspector.isNewTabWithTypeAllowed(tabClass.Type);tabItemElement.classList.toggle(WebInspector.NewTabContentView.DisabledStyleClassName,!allowed);}}};WebInspector.NewTabContentView.Type="new-tab";WebInspector.NewTabContentView.TypeSymbol=Symbol("type");WebInspector.NewTabContentView.TabItemStyleClassName="tab-item";WebInspector.NewTabContentView.DisabledStyleClassName="disabled";WebInspector.ObjectTreeBaseTreeElement=class ObjectTreeBaseTreeElement extends WebInspector.GeneralTreeElement
{constructor(representedObject,propertyPath,property)
{super(null,null,null,representedObject,false);this._property=property;this._propertyPath=propertyPath;this.toggleOnClick=true;this.selectable=false;this.tooltipHandledSeparately=true;}
get property()
{return this._property;}
get propertyPath()
{return this._propertyPath;}
resolvedValue()
{if(this._getterValue)
return this._getterValue;if(this._property.hasValue())
return this._property.value;return null;}
resolvedValuePropertyPath()
{if(this._getterValue)
return this._propertyPath.appendPropertyDescriptor(this._getterValue,this._property,WebInspector.PropertyPath.Type.Value);if(this._property.hasValue())
return this._propertyPath.appendPropertyDescriptor(this._property.value,this._property,WebInspector.PropertyPath.Type.Value);return null;}
thisPropertyPath()
{return this._propertyPath.appendPropertyDescriptor(null,this._property,this.propertyPathType());}
hadError()
{return this._property.wasThrown||this._getterHadError;}
propertyPathType()
{if(this._getterValue||this._property.hasValue())
return WebInspector.PropertyPath.Type.Value;if(this._property.hasGetter())
return WebInspector.PropertyPath.Type.Getter;if(this._property.hasSetter())
return WebInspector.PropertyPath.Type.Setter;return WebInspector.PropertyPath.Type.Value;}
propertyPathString(propertyPath)
{if(propertyPath.isFullPathImpossible())
return WebInspector.UIString("Unable to determine path to property from root");return propertyPath.displayPath(this.propertyPathType());}
createGetterElement(interactive)
{var getterElement=document.createElement("img");getterElement.className="getter";if(!interactive){getterElement.classList.add("disabled");getterElement.title=WebInspector.UIString("Getter");return getterElement;}
getterElement.title=WebInspector.UIString("Invoke getter");getterElement.addEventListener("click",(event)=>{event.stopPropagation();var lastNonPrototypeObject=this._propertyPath.lastNonPrototypeObject;var getterObject=this._property.get;lastNonPrototypeObject.invokeGetter(getterObject,(error,result,wasThrown)=>{this._getterHadError=!!(error||wasThrown);this._getterValue=result;if(this.invokedGetter&&typeof this.invokedGetter==="function")
this.invokedGetter();});});return getterElement;}
createSetterElement(interactive)
{var setterElement=document.createElement("img");setterElement.className="setter";setterElement.title=WebInspector.UIString("Setter");if(!interactive)
setterElement.classList.add("disabled");return setterElement;}
populateContextMenu(contextMenu,event)
{if(event.__addedObjectPreviewContextMenuItems)
return;if(event.__addedObjectTreeContextMenuItems)
return;event.__addedObjectTreeContextMenuItems=true;if(typeof this.treeOutline.objectTreeElementAddContextMenuItems==="function"){this.treeOutline.objectTreeElementAddContextMenuItems(this,contextMenu);if(!contextMenu.isEmpty())
contextMenu.appendSeparator();}
let resolvedValue=this.resolvedValue();if(!resolvedValue)
return;if(this._property&&this._property.symbol)
contextMenu.appendItem(WebInspector.UIString("Log Symbol"),this._logSymbolProperty.bind(this));contextMenu.appendItem(WebInspector.UIString("Log Value"),this._logValue.bind(this));let propertyPath=this.resolvedValuePropertyPath();if(propertyPath&&!propertyPath.isFullPathImpossible()){contextMenu.appendItem(WebInspector.UIString("Copy Path to Property"),()=>{InspectorFrontendHost.copyText(propertyPath.displayPath(WebInspector.PropertyPath.Type.Value));});}
contextMenu.appendSeparator();this._appendMenusItemsForObject(contextMenu,resolvedValue);super.populateContextMenu(contextMenu,event);}
_logSymbolProperty()
{var symbol=this._property.symbol;if(!symbol)
return;var text=WebInspector.UIString("Selected Symbol");WebInspector.consoleLogViewController.appendImmediateExecutionWithResult(text,symbol,true);}
_logValue(value)
{var resolvedValue=value||this.resolvedValue();if(!resolvedValue)
return;var propertyPath=this.resolvedValuePropertyPath();var isImpossible=propertyPath.isFullPathImpossible();var text=isImpossible?WebInspector.UIString("Selected Value"):propertyPath.displayPath(this.propertyPathType());if(!isImpossible)
WebInspector.quickConsole.prompt.pushHistoryItem(text);WebInspector.consoleLogViewController.appendImmediateExecutionWithResult(text,resolvedValue,isImpossible);}
_appendMenusItemsForObject(contextMenu,resolvedValue)
{if(resolvedValue.type==="function"){if(!isFunctionStringNativeCode(resolvedValue.description)){contextMenu.appendItem(WebInspector.UIString("Jump to Definition"),function(){resolvedValue.target.DebuggerAgent.getFunctionDetails(resolvedValue.objectId,function(error,response){if(error)
return;let location=response.location;let sourceCode=WebInspector.debuggerManager.scriptForIdentifier(location.scriptId,resolvedValue.target);if(!sourceCode)
return;let sourceCodeLocation=sourceCode.createSourceCodeLocation(location.lineNumber,location.columnNumber||0);const options={ignoreNetworkTab:true,ignoreSearchTab:true,};WebInspector.showSourceCodeLocation(sourceCodeLocation,options);});});}
return;}
if(resolvedValue.subtype==="node"){contextMenu.appendItem(WebInspector.UIString("Copy as HTML"),function(){resolvedValue.pushNodeToFrontend(function(nodeId){WebInspector.domTreeManager.nodeForId(nodeId).copyNode();});});contextMenu.appendItem(WebInspector.UIString("Scroll Into View"),function(){function scrollIntoView(){this.scrollIntoViewIfNeeded(true);}
resolvedValue.callFunction(scrollIntoView,undefined,false,function(){});});contextMenu.appendSeparator();contextMenu.appendItem(WebInspector.UIString("Reveal in DOM Tree"),function(){resolvedValue.pushNodeToFrontend(function(nodeId){WebInspector.domTreeManager.inspectElement(nodeId);});});return;}}};WebInspector.SourceCodeTreeElement=class SourceCodeTreeElement extends WebInspector.FolderizedTreeElement
{constructor(sourceCode,classNames,title,subtitle,representedObject,hasChildren)
{super(classNames,title,subtitle,representedObject||sourceCode,hasChildren);this._updateSourceCode(sourceCode);}
updateSourceMapResources()
{if(!this.treeOutline||!this.treeOutline.includeSourceMapResourceChildren)
return;this.hasChildren=!!this._sourceCode.sourceMaps.length;this.shouldRefreshChildren=this.hasChildren;if(!this.hasChildren)
this.removeChildren();}
onattach()
{super.onattach();this.updateSourceMapResources();}
onpopulate()
{if(!this.treeOutline||!this.treeOutline.includeSourceMapResourceChildren)
return;if(!this.hasChildren||!this.shouldRefreshChildren)
return;this.shouldRefreshChildren=false;this.removeChildren();function combineFolderChain(topFolder,bottomFolder)
{var components=[];for(var currentFolder=bottomFolder;currentFolder!==topFolder;currentFolder=currentFolder.parent)
components.push(currentFolder.mainTitle);components.push(topFolder.mainTitle);var folderName=components.reverse().join("/");var newFolder=new WebInspector.FolderTreeElement(folderName);var folderIndex=topFolder.parent.children.indexOf(topFolder);topFolder.parent.insertChild(newFolder,folderIndex);topFolder.parent.removeChild(topFolder);var children=bottomFolder.children;bottomFolder.removeChildren();for(var i=0;i<children.length;++i)
newFolder.appendChild(children[i]);}
function findAndCombineFolderChains(treeElement,previousSingleTreeElement)
{if(!(treeElement instanceof WebInspector.FolderTreeElement)){if(previousSingleTreeElement&&previousSingleTreeElement!==treeElement.parent)
combineFolderChain(previousSingleTreeElement,treeElement.parent);return;}
if(previousSingleTreeElement&&treeElement.children.length!==1){combineFolderChain(previousSingleTreeElement,treeElement);previousSingleTreeElement=null;}
if(!previousSingleTreeElement&&treeElement.children.length===1)
previousSingleTreeElement=treeElement;for(var i=0;i<treeElement.children.length;++i)
findAndCombineFolderChains(treeElement.children[i],previousSingleTreeElement);}
var sourceMaps=this._sourceCode.sourceMaps;for(var i=0;i<sourceMaps.length;++i){var sourceMap=sourceMaps[i];for(var j=0;j<sourceMap.resources.length;++j){var sourceMapResource=sourceMap.resources[j];var relativeSubpath=sourceMapResource.sourceMapDisplaySubpath;var folderTreeElement=this.createFoldersAsNeededForSubpath(relativeSubpath);var sourceMapTreeElement=new WebInspector.SourceMapResourceTreeElement(sourceMapResource);folderTreeElement.insertChild(sourceMapTreeElement,insertionIndexForObjectInListSortedByFunction(sourceMapTreeElement,folderTreeElement.children,WebInspector.ResourceTreeElement.compareFolderAndResourceTreeElements));}}
for(var i=0;i<this.children.length;++i)
findAndCombineFolderChains(this.children[i],null);}
createFoldersAsNeededForSubpath(subpath)
{if(!subpath)
return this;var components=subpath.split("/");if(components.length===1)
return this;if(!this._subpathFolderTreeElementMap)
this._subpathFolderTreeElementMap={};var currentPath="";var currentFolderTreeElement=this;for(var i=0;i<components.length-1;++i){var componentName=components[i];currentPath+=(i?"/":"")+componentName;var cachedFolder=this._subpathFolderTreeElementMap[currentPath];if(cachedFolder){currentFolderTreeElement=cachedFolder;continue;}
var newFolder=new WebInspector.FolderTreeElement(componentName);newFolder.__path=currentPath;this._subpathFolderTreeElementMap[currentPath]=newFolder;var index=insertionIndexForObjectInListSortedByFunction(newFolder,currentFolderTreeElement.children,WebInspector.ResourceTreeElement.compareFolderAndResourceTreeElements);currentFolderTreeElement.insertChild(newFolder,index);currentFolderTreeElement=newFolder;}
return currentFolderTreeElement;}
descendantResourceTreeElementTypeDidChange(childTreeElement,oldType)
{let parentTreeElement=childTreeElement.parent;let wasParentExpanded=parentTreeElement.expanded;let wasSelected=childTreeElement.selected;parentTreeElement.removeChild(childTreeElement,true,true);parentTreeElement.insertChild(childTreeElement,insertionIndexForObjectInListSortedByFunction(childTreeElement,parentTreeElement.children,WebInspector.ResourceTreeElement.compareFolderAndResourceTreeElements));if(wasParentExpanded)
parentTreeElement.expand();if(wasSelected)
childTreeElement.revealAndSelect(true,false,true,true);}
_updateSourceCode(sourceCode)
{if(this._sourceCode===sourceCode)
return;if(this._sourceCode)
this._sourceCode.removeEventListener(WebInspector.SourceCode.Event.SourceMapAdded,this.updateSourceMapResources,this);this._sourceCode=sourceCode;this._sourceCode.addEventListener(WebInspector.SourceCode.Event.SourceMapAdded,this.updateSourceMapResources,this);this.updateSourceMapResources();}};WebInspector.StorageTreeElement=class StorageTreeElement extends WebInspector.GeneralTreeElement
{constructor(classNames,title,representedObject)
{super(classNames,title,null,representedObject,false);this.flattened=false;}
get flattened()
{return this._flattened;}
set flattened(flattened)
{if(this._flattened===flattened)
return;this._flattened=flattened;if(!this._flattened){this.mainTitle=this.name;this.subtitle=this.secondaryName;this._updateChildrenTitles();return;}
this.mainTitle=this.categoryName;this.subtitle=this.name;this._updateChildrenTitles();}
_updateChildrenTitles()
{for(var i=0;i<this.children.length;++i){if(typeof this.children[i].updateTitles==="function")
this.children[i].updateTitles();}}};WebInspector.TimelineDataGridNodePathComponent=class TimelineDataGridNodePathComponent extends WebInspector.HierarchicalPathComponent
{constructor(timelineDataGridNode,representedObject)
{super(timelineDataGridNode.displayName(),timelineDataGridNode.iconClassNames(),representedObject||timelineDataGridNode.record);this._timelineDataGridNode=timelineDataGridNode;}
get timelineDataGridNode()
{return this._timelineDataGridNode;}
get previousSibling()
{let previousSibling=this._timelineDataGridNode.previousSibling;while(previousSibling&&previousSibling.hidden)
previousSibling=previousSibling.previousSibling;if(!previousSibling)
return null;return new WebInspector.TimelineDataGridNodePathComponent(previousSibling);}
get nextSibling()
{let nextSibling=this._timelineDataGridNode.nextSibling;while(nextSibling&&nextSibling.hidden)
nextSibling=nextSibling.nextSibling;if(!nextSibling)
return null;return new WebInspector.TimelineDataGridNodePathComponent(nextSibling);}};WebInspector.TimelineOverview=class TimelineOverview extends WebInspector.View
{constructor(timelineRecording,delegate)
{super();this._timelinesViewModeSettings=this._createViewModeSettings(WebInspector.TimelineOverview.ViewMode.Timelines,WebInspector.TimelineOverview.MinimumDurationPerPixel,WebInspector.TimelineOverview.MaximumDurationPerPixel,0.01,0,15);this._instrumentTypes=WebInspector.TimelineManager.availableTimelineTypes();if(WebInspector.FPSInstrument.supported()){let minimumDurationPerPixel=1/WebInspector.TimelineRecordFrame.MaximumWidthPixels;let maximumDurationPerPixel=1/WebInspector.TimelineRecordFrame.MinimumWidthPixels;this._renderingFramesViewModeSettings=this._createViewModeSettings(WebInspector.TimelineOverview.ViewMode.RenderingFrames,minimumDurationPerPixel,maximumDurationPerPixel,minimumDurationPerPixel,0,100);}
this._recording=timelineRecording;this._recording.addEventListener(WebInspector.TimelineRecording.Event.InstrumentAdded,this._instrumentAdded,this);this._recording.addEventListener(WebInspector.TimelineRecording.Event.InstrumentRemoved,this._instrumentRemoved,this);this._recording.addEventListener(WebInspector.TimelineRecording.Event.MarkerAdded,this._markerAdded,this);this._recording.addEventListener(WebInspector.TimelineRecording.Event.Reset,this._recordingReset,this);this._delegate=delegate;this.element.classList.add("timeline-overview");this._updateWheelAndGestureHandlers();this._graphsContainerView=new WebInspector.View;this._graphsContainerView.element.classList.add("graphs-container");this.addSubview(this._graphsContainerView);this._overviewGraphsByTypeMap=new Map;this._editInstrumentsButton=new WebInspector.ActivateButtonNavigationItem("toggle-edit-instruments",WebInspector.UIString("Edit configuration"),WebInspector.UIString("Save configuration"));this._editInstrumentsButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._toggleEditingInstruments,this);this._editingInstruments=false;this._updateEditInstrumentsButton();let instrumentsNavigationBar=new WebInspector.NavigationBar;instrumentsNavigationBar.element.classList.add("timelines");instrumentsNavigationBar.addNavigationItem(new WebInspector.FlexibleSpaceNavigationItem);instrumentsNavigationBar.addNavigationItem(this._editInstrumentsButton);this.addSubview(instrumentsNavigationBar);this._timelinesTreeOutline=new WebInspector.TreeOutline;this._timelinesTreeOutline.element.classList.add("timelines");this._timelinesTreeOutline.disclosureButtons=false;this._timelinesTreeOutline.large=true;this._timelinesTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._timelinesTreeSelectionDidChange,this);this.element.appendChild(this._timelinesTreeOutline.element);this._treeElementsByTypeMap=new Map;this._timelineRuler=new WebInspector.TimelineRuler;this._timelineRuler.allowsClippedLabels=true;this._timelineRuler.allowsTimeRangeSelection=true;this._timelineRuler.element.addEventListener("mousedown",this._timelineRulerMouseDown.bind(this));this._timelineRuler.element.addEventListener("click",this._timelineRulerMouseClicked.bind(this));this._timelineRuler.addEventListener(WebInspector.TimelineRuler.Event.TimeRangeSelectionChanged,this._timeRangeSelectionChanged,this);this.addSubview(this._timelineRuler);this._currentTimeMarker=new WebInspector.TimelineMarker(0,WebInspector.TimelineMarker.Type.CurrentTime);this._timelineRuler.addMarker(this._currentTimeMarker);this._scrollContainerElement=document.createElement("div");this._scrollContainerElement.classList.add("scroll-container");this._scrollContainerElement.addEventListener("scroll",this._handleScrollEvent.bind(this));this.element.appendChild(this._scrollContainerElement);this._scrollWidthSizer=document.createElement("div");this._scrollWidthSizer.classList.add("scroll-width-sizer");this._scrollContainerElement.appendChild(this._scrollWidthSizer);this._startTime=0;this._currentTime=0;this._revealCurrentTime=false;this._endTime=0;this._pixelAlignDuration=false;this._mouseWheelDelta=0;this._cachedScrollContainerWidth=NaN;this._timelineRulerSelectionChanged=false;this._viewMode=WebInspector.TimelineOverview.ViewMode.Timelines;this._selectedTimeline=null;for(let instrument of this._recording.instruments)
this._instrumentAdded(instrument);if(!WebInspector.timelineManager.isCapturingPageReload())
this._resetSelection();this._viewModeDidChange();WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.CapturingStarted,this._capturingStarted,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.CapturingStopped,this._capturingStopped,this);}
get selectedTimeline()
{return this._selectedTimeline;}
set selectedTimeline(x)
{if(this._editingInstruments)
return;if(this._selectedTimeline===x)
return;this._selectedTimeline=x;if(this._selectedTimeline){let treeElement=this._treeElementsByTypeMap.get(this._selectedTimeline.type);let omitFocus=true;let wasSelectedByUser=false;treeElement.select(omitFocus,wasSelectedByUser);}else if(this._timelinesTreeOutline.selectedTreeElement)
this._timelinesTreeOutline.selectedTreeElement.deselect();}
get editingInstruments()
{return this._editingInstruments;}
get viewMode()
{return this._viewMode;}
set viewMode(x)
{if(this._editingInstruments)
return;if(this._viewMode===x)
return;this._viewMode=x;this._viewModeDidChange();}
get startTime()
{return this._startTime;}
set startTime(x)
{x=x||0;if(this._startTime===x)
return;if(this._viewMode!==WebInspector.TimelineOverview.ViewMode.RenderingFrames){let selectionOffset=this.selectionStartTime-this._startTime;this.selectionStartTime=selectionOffset+x;}
this._startTime=x;this.needsLayout();}
get currentTime()
{return this._currentTime;}
set currentTime(x)
{x=x||0;if(this._currentTime===x)
return;this._currentTime=x;this._revealCurrentTime=true;this.needsLayout();}
get secondsPerPixel()
{return this._currentSettings.durationPerPixelSetting.value;}
set secondsPerPixel(x)
{x=Math.min(this._currentSettings.maximumDurationPerPixel,Math.max(this._currentSettings.minimumDurationPerPixel,x));if(this.secondsPerPixel===x)
return;if(this._pixelAlignDuration){x=1/Math.round(1/x);if(this.secondsPerPixel===x)
return;}
this._currentSettings.durationPerPixelSetting.value=x;this.needsLayout();}
get pixelAlignDuration()
{return this._pixelAlignDuration;}
set pixelAlignDuration(x)
{if(this._pixelAlignDuration===x)
return;this._mouseWheelDelta=0;this._pixelAlignDuration=x;if(this._pixelAlignDuration)
this.secondsPerPixel=1/Math.round(1/this.secondsPerPixel);}
get endTime()
{return this._endTime;}
set endTime(x)
{x=x||0;if(this._endTime===x)
return;this._endTime=x;this.needsLayout();}
get scrollStartTime()
{return this._currentSettings.scrollStartTime;}
set scrollStartTime(x)
{x=x||0;if(this.scrollStartTime===x)
return;this._currentSettings.scrollStartTime=x;this.needsLayout();}
get scrollContainerWidth()
{return this._cachedScrollContainerWidth;}
get visibleDuration()
{if(isNaN(this._cachedScrollContainerWidth)){this._cachedScrollContainerWidth=this._scrollContainerElement.offsetWidth;if(!this._cachedScrollContainerWidth)
this._cachedScrollContainerWidth=NaN;}
return this._cachedScrollContainerWidth*this.secondsPerPixel;}
get selectionStartTime()
{return this._timelineRuler.selectionStartTime;}
set selectionStartTime(x)
{x=x||0;if(this._timelineRuler.selectionStartTime===x)
return;let selectionDuration=this.selectionDuration;this._timelineRuler.selectionStartTime=x;this._timelineRuler.selectionEndTime=x+selectionDuration;}
get selectionDuration()
{return this._timelineRuler.selectionEndTime-this._timelineRuler.selectionStartTime;}
set selectionDuration(x)
{x=Math.max(this._timelineRuler.minimumSelectionDuration,x);this._timelineRuler.selectionEndTime=this._timelineRuler.selectionStartTime+x;}
get height()
{let height=0;for(let overviewGraph of this._overviewGraphsByTypeMap.values()){if(overviewGraph.visible)
height+=overviewGraph.height;}
return height;}
get visible()
{return this._visible;}
shown()
{this._visible=true;for(let[type,overviewGraph]of this._overviewGraphsByTypeMap){if(this._canShowTimelineType(type))
overviewGraph.shown();}
this.updateLayout(WebInspector.View.LayoutReason.Resize);}
hidden()
{this._visible=false;for(let overviewGraph of this._overviewGraphsByTypeMap.values())
overviewGraph.hidden();}
reset()
{for(let overviewGraph of this._overviewGraphsByTypeMap.values())
overviewGraph.reset();this._mouseWheelDelta=0;this._resetSelection();}
revealMarker(marker)
{this.scrollStartTime=marker.time-(this.visibleDuration/2);}
recordWasFiltered(timeline,record,filtered)
{let overviewGraph=this._overviewGraphsByTypeMap.get(timeline.type);if(!overviewGraph)
return;overviewGraph.recordWasFiltered(record,filtered);}
selectRecord(timeline,record)
{let overviewGraph=this._overviewGraphsByTypeMap.get(timeline.type);if(!overviewGraph)
return;overviewGraph.selectedRecord=record;}
userSelectedRecord(record)
{if(this._delegate&&this._delegate.timelineOverviewUserSelectedRecord)
this._delegate.timelineOverviewUserSelectedRecord(this,record);}
updateLayoutIfNeeded(layoutReason)
{if(this.layoutPending){super.updateLayoutIfNeeded(layoutReason);return;}
this._timelineRuler.updateLayoutIfNeeded(layoutReason);for(let overviewGraph of this._overviewGraphsByTypeMap.values()){if(overviewGraph.visible)
overviewGraph.updateLayoutIfNeeded(layoutReason);}}
discontinuitiesInTimeRange(startTime,endTime)
{return this._recording.discontinuitiesInTimeRange(startTime,endTime);}
get timelineRuler()
{return this._timelineRuler;}
layout()
{let startTime=this._startTime;let endTime=this._endTime;let currentTime=this._currentTime;if(this._viewMode===WebInspector.TimelineOverview.ViewMode.RenderingFrames){let renderingFramesTimeline=this._recording.timelines.get(WebInspector.TimelineRecord.Type.RenderingFrame);startTime=0;endTime=renderingFramesTimeline.records.length;currentTime=endTime;}
let duration=endTime-startTime;let newWidth=Math.ceil(duration/this.secondsPerPixel);this._updateElementWidth(this._scrollWidthSizer,newWidth);this._currentTimeMarker.time=currentTime;if(this._revealCurrentTime){this.revealMarker(this._currentTimeMarker);this._revealCurrentTime=false;}
const visibleDuration=this.visibleDuration;let scrollStartTime=Math.min(this.scrollStartTime,endTime-visibleDuration);scrollStartTime=Math.max(startTime,scrollStartTime);this._timelineRuler.zeroTime=startTime;this._timelineRuler.startTime=scrollStartTime;this._timelineRuler.secondsPerPixel=this.secondsPerPixel;if(!this._dontUpdateScrollLeft){this._ignoreNextScrollEvent=true;let scrollLeft=Math.ceil((scrollStartTime-startTime)/this.secondsPerPixel);if(scrollLeft)
this._scrollContainerElement.scrollLeft=scrollLeft;}
for(let overviewGraph of this._overviewGraphsByTypeMap.values()){if(!overviewGraph.visible)
continue;overviewGraph.zeroTime=startTime;overviewGraph.startTime=scrollStartTime;overviewGraph.currentTime=currentTime;overviewGraph.endTime=scrollStartTime+visibleDuration;}}
sizeDidChange()
{this._cachedScrollContainerWidth=NaN;}
_updateElementWidth(element,newWidth)
{var currentWidth=parseInt(element.style.width);if(currentWidth!==newWidth)
element.style.width=newWidth+"px";}
_handleScrollEvent(event)
{if(this._ignoreNextScrollEvent){this._ignoreNextScrollEvent=false;return;}
this._dontUpdateScrollLeft=true;let scrollOffset=this._scrollContainerElement.scrollLeft;if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL)
this.scrollStartTime=this._startTime-(scrollOffset*this.secondsPerPixel);else
this.scrollStartTime=this._startTime+(scrollOffset*this.secondsPerPixel);this.updateLayoutIfNeeded();this._dontUpdateScrollLeft=false;}
_handleWheelEvent(event)
{if(event.__cloned)
return;if(this._handlingGesture)
return;
if(Math.abs(event.deltaX)>=Math.abs(event.deltaY)*0.5){let newWheelEvent=new event.constructor(event.type,event);newWheelEvent.__cloned=true;this._scrollContainerElement.dispatchEvent(newWheelEvent);return;}
let mouseOffset=event.pageX-this._graphsContainerView.element.totalOffsetLeft;let mousePositionTime=this._currentSettings.scrollStartTime+(mouseOffset*this.secondsPerPixel);let deviceDirection=event.webkitDirectionInvertedFromDevice?1:-1;let delta=event.deltaY*(this.secondsPerPixel/WebInspector.TimelineOverview.ScrollDeltaDenominator)*deviceDirection;if(this._pixelAlignDuration&&(delta<0&&this._mouseWheelDelta>=0||delta>=0&&this._mouseWheelDelta<0))
this._mouseWheelDelta=0;let previousDurationPerPixel=this.secondsPerPixel;this._mouseWheelDelta+=delta;this.secondsPerPixel+=this._mouseWheelDelta;if(this.secondsPerPixel===this._currentSettings.minimumDurationPerPixel&&delta<0||this.secondsPerPixel===this._currentSettings.maximumDurationPerPixel&&delta>=0)
this._mouseWheelDelta=0;else
this._mouseWheelDelta=previousDurationPerPixel+this._mouseWheelDelta-this.secondsPerPixel;this.scrollStartTime=mousePositionTime-(mouseOffset*this.secondsPerPixel);event.preventDefault();event.stopPropagation();}
_handleGestureStart(event)
{if(this._handlingGesture){ return;}
let mouseOffset=event.pageX-this._graphsContainerView.element.totalOffsetLeft;let mousePositionTime=this._currentSettings.scrollStartTime+(mouseOffset*this.secondsPerPixel);this._handlingGesture=true;this._gestureStartStartTime=mousePositionTime;this._gestureStartDurationPerPixel=this.secondsPerPixel;event.preventDefault();event.stopPropagation();}
_handleGestureChange(event)
{let scale=Math.max(1/5,event.scale);let mouseOffset=event.pageX-this._graphsContainerView.element.totalOffsetLeft;let newSecondsPerPixel=this._gestureStartDurationPerPixel/scale;this.secondsPerPixel=newSecondsPerPixel;this.scrollStartTime=this._gestureStartStartTime-(mouseOffset*this.secondsPerPixel);event.preventDefault();event.stopPropagation();}
_handleGestureEnd(event)
{this._handlingGesture=false;this._gestureStartStartTime=NaN;this._gestureStartDurationPerPixel=NaN;}
_instrumentAdded(instrumentOrEvent)
{let instrument=instrumentOrEvent instanceof WebInspector.Instrument?instrumentOrEvent:instrumentOrEvent.data.instrument;let timeline=this._recording.timelineForInstrument(instrument);let treeElement=new WebInspector.TimelineTreeElement(timeline);let insertionIndex=insertionIndexForObjectInListSortedByFunction(treeElement,this._timelinesTreeOutline.children,this._compareTimelineTreeElements.bind(this));this._timelinesTreeOutline.insertChild(treeElement,insertionIndex);this._treeElementsByTypeMap.set(timeline.type,treeElement);let overviewGraph=WebInspector.TimelineOverviewGraph.createForTimeline(timeline,this);overviewGraph.addEventListener(WebInspector.TimelineOverviewGraph.Event.RecordSelected,this._recordSelected,this);this._overviewGraphsByTypeMap.set(timeline.type,overviewGraph);this._graphsContainerView.insertSubviewBefore(overviewGraph,this._graphsContainerView.subviews[insertionIndex]);treeElement.element.style.height=overviewGraph.height+"px";if(!this._canShowTimelineType(timeline.type)){overviewGraph.hidden();treeElement.hidden=true;}}
_instrumentRemoved(event)
{let instrument=event.data.instrument;let timeline=this._recording.timelineForInstrument(instrument);let overviewGraph=this._overviewGraphsByTypeMap.get(timeline.type);let treeElement=this._treeElementsByTypeMap.get(timeline.type);let shouldSuppressOnDeselect=false;let shouldSuppressSelectSibling=true;this._timelinesTreeOutline.removeChild(treeElement,shouldSuppressOnDeselect,shouldSuppressSelectSibling);overviewGraph.removeEventListener(WebInspector.TimelineOverviewGraph.Event.RecordSelected,this._recordSelected,this);this._graphsContainerView.removeSubview(overviewGraph);this._overviewGraphsByTypeMap.delete(timeline.type);this._treeElementsByTypeMap.delete(timeline.type);}
_markerAdded(event)
{this._timelineRuler.addMarker(event.data.marker);}
_timelineRulerMouseDown(event)
{this._timelineRulerSelectionChanged=false;}
_timelineRulerMouseClicked(event)
{if(this._timelineRulerSelectionChanged)
return;for(let overviewGraph of this._overviewGraphsByTypeMap.values()){let graphRect=overviewGraph.element.getBoundingClientRect();if(!(event.pageX>=graphRect.left&&event.pageX<=graphRect.right&&event.pageY>=graphRect.top&&event.pageY<=graphRect.bottom))
continue;let newClickEvent=new event.constructor(event.type,event);overviewGraph.element.dispatchEvent(newClickEvent);return;}}
_timeRangeSelectionChanged(event)
{this._timelineRulerSelectionChanged=true;let startTime=this._viewMode===WebInspector.TimelineOverview.ViewMode.Timelines?this._startTime:0;this._currentSettings.selectionStartValueSetting.value=this.selectionStartTime-startTime;this._currentSettings.selectionDurationSetting.value=this.selectionDuration;this.dispatchEventToListeners(WebInspector.TimelineOverview.Event.TimeRangeSelectionChanged);}
_recordSelected(event)
{for(let[type,overviewGraph]of this._overviewGraphsByTypeMap){if(overviewGraph!==event.target)
continue;let timeline=this._recording.timelines.get(type);this.dispatchEventToListeners(WebInspector.TimelineOverview.Event.RecordSelected,{timeline,record:event.data.record});return;}}
_resetSelection()
{function reset(settings)
{settings.durationPerPixelSetting.reset();settings.selectionStartValueSetting.reset();settings.selectionDurationSetting.reset();}
reset(this._timelinesViewModeSettings);if(this._renderingFramesViewModeSettings)
reset(this._renderingFramesViewModeSettings);this.secondsPerPixel=this._currentSettings.durationPerPixelSetting.value;this.selectionStartTime=this._currentSettings.selectionStartValueSetting.value;this.selectionDuration=this._currentSettings.selectionDurationSetting.value;}
_recordingReset(event)
{this._timelineRuler.clearMarkers();this._timelineRuler.addMarker(this._currentTimeMarker);}
_canShowTimelineType(type)
{let timelineViewMode=WebInspector.TimelineOverview.ViewMode.Timelines;if(type===WebInspector.TimelineRecord.Type.RenderingFrame)
timelineViewMode=WebInspector.TimelineOverview.ViewMode.RenderingFrames;return timelineViewMode===this._viewMode;}
_viewModeDidChange()
{let startTime=0;let isRenderingFramesMode=this._viewMode===WebInspector.TimelineOverview.ViewMode.RenderingFrames;if(isRenderingFramesMode){this._timelineRuler.minimumSelectionDuration=1;this._timelineRuler.snapInterval=1;this._timelineRuler.formatLabelCallback=(value)=>value.maxDecimals(0).toLocaleString();}else{this._timelineRuler.minimumSelectionDuration=0.01;this._timelineRuler.snapInterval=NaN;this._timelineRuler.formatLabelCallback=null;startTime=this._startTime;}
this.pixelAlignDuration=isRenderingFramesMode;this.selectionStartTime=this._currentSettings.selectionStartValueSetting.value+startTime;this.selectionDuration=this._currentSettings.selectionDurationSetting.value;for(let[type,overviewGraph]of this._overviewGraphsByTypeMap){let treeElement=this._treeElementsByTypeMap.get(type);treeElement.hidden=!this._canShowTimelineType(type);if(treeElement.hidden)
overviewGraph.hidden();else
overviewGraph.shown();}
this.element.classList.toggle("frames",isRenderingFramesMode);this.updateLayout(WebInspector.View.LayoutReason.Resize);}
_createViewModeSettings(viewMode,minimumDurationPerPixel,maximumDurationPerPixel,durationPerPixel,selectionStartValue,selectionDuration)
{durationPerPixel=Math.min(maximumDurationPerPixel,Math.max(minimumDurationPerPixel,durationPerPixel));let durationPerPixelSetting=new WebInspector.Setting(viewMode+"-duration-per-pixel",durationPerPixel);let selectionStartValueSetting=new WebInspector.Setting(viewMode+"-selection-start-value",selectionStartValue);let selectionDurationSetting=new WebInspector.Setting(viewMode+"-selection-duration",selectionDuration);return{scrollStartTime:0,minimumDurationPerPixel,maximumDurationPerPixel,durationPerPixelSetting,selectionStartValueSetting,selectionDurationSetting};}
get _currentSettings()
{return this._viewMode===WebInspector.TimelineOverview.ViewMode.Timelines?this._timelinesViewModeSettings:this._renderingFramesViewModeSettings;}
_timelinesTreeSelectionDidChange(event)
{function updateGraphSelectedState(timeline,selected)
{let overviewGraph=this._overviewGraphsByTypeMap.get(timeline.type);overviewGraph.selected=selected;}
let selectedTreeElement=event.data.selectedElement;let deselectedTreeElement=event.data.deselectedElement;let timeline=null;if(selectedTreeElement){timeline=selectedTreeElement.representedObject;updateGraphSelectedState.call(this,timeline,true);}
if(deselectedTreeElement)
updateGraphSelectedState.call(this,deselectedTreeElement.representedObject,false);this._selectedTimeline=timeline;this.dispatchEventToListeners(WebInspector.TimelineOverview.Event.TimelineSelected);}
_toggleEditingInstruments(event)
{if(this._editingInstruments)
this._stopEditingInstruments();else
this._startEditingInstruments();}
_editingInstrumentsDidChange()
{this.element.classList.toggle(WebInspector.TimelineOverview.EditInstrumentsStyleClassName,this._editingInstruments);this._timelineRuler.enabled=!this._editingInstruments;this._updateWheelAndGestureHandlers();this._updateEditInstrumentsButton();this.dispatchEventToListeners(WebInspector.TimelineOverview.Event.EditingInstrumentsDidChange);}
_updateEditInstrumentsButton()
{let newLabel=this._editingInstruments?WebInspector.UIString("Done"):WebInspector.UIString("Edit");this._editInstrumentsButton.label=newLabel;this._editInstrumentsButton.activated=this._editingInstruments;this._editInstrumentsButton.enabled=!WebInspector.timelineManager.isCapturing();}
_updateWheelAndGestureHandlers()
{if(this._editingInstruments){this.element.removeEventListener("wheel",this._handleWheelEventListener);this.element.removeEventListener("gesturestart",this._handleGestureStartEventListener);this.element.removeEventListener("gesturechange",this._handleGestureChangeEventListener);this.element.removeEventListener("gestureend",this._handleGestureEndEventListener);this._handleWheelEventListener=null;this._handleGestureStartEventListener=null;this._handleGestureChangeEventListener=null;this._handleGestureEndEventListener=null;}else{this._handleWheelEventListener=this._handleWheelEvent.bind(this);this._handleGestureStartEventListener=this._handleGestureStart.bind(this);this._handleGestureChangeEventListener=this._handleGestureChange.bind(this);this._handleGestureEndEventListener=this._handleGestureEnd.bind(this);this.element.addEventListener("wheel",this._handleWheelEventListener);this.element.addEventListener("gesturestart",this._handleGestureStartEventListener);this.element.addEventListener("gesturechange",this._handleGestureChangeEventListener);this.element.addEventListener("gestureend",this._handleGestureEndEventListener);}}
_startEditingInstruments()
{if(this._editingInstruments)
return;this._editingInstruments=true;for(let type of this._instrumentTypes){let treeElement=this._treeElementsByTypeMap.get(type);if(!treeElement){let timeline=this._recording.timelines.get(type);const placeholder=true;treeElement=new WebInspector.TimelineTreeElement(timeline,placeholder);let insertionIndex=insertionIndexForObjectInListSortedByFunction(treeElement,this._timelinesTreeOutline.children,this._compareTimelineTreeElements.bind(this));this._timelinesTreeOutline.insertChild(treeElement,insertionIndex);let placeholderGraph=new WebInspector.View;placeholderGraph.element.classList.add("timeline-overview-graph");treeElement[WebInspector.TimelineOverview.PlaceholderOverviewGraph]=placeholderGraph;this._graphsContainerView.insertSubviewBefore(placeholderGraph,this._graphsContainerView.subviews[insertionIndex]);}
treeElement.editing=true;treeElement.addEventListener(WebInspector.TimelineTreeElement.Event.EnabledDidChange,this._timelineTreeElementEnabledDidChange,this);}
this._editingInstrumentsDidChange();}
_stopEditingInstruments()
{if(!this._editingInstruments)
return;this._editingInstruments=false;let instruments=this._recording.instruments;for(let treeElement of this._treeElementsByTypeMap.values()){if(treeElement.status.checked){treeElement.editing=false;treeElement.removeEventListener(WebInspector.TimelineTreeElement.Event.EnabledDidChange,this._timelineTreeElementEnabledDidChange,this);continue;}
let timelineInstrument=instruments.find((instrument)=>instrument.timelineRecordType===treeElement.representedObject.type);this._recording.removeInstrument(timelineInstrument);}
let placeholderTreeElements=this._timelinesTreeOutline.children.filter((treeElement)=>treeElement.placeholder);for(let treeElement of placeholderTreeElements){this._timelinesTreeOutline.removeChild(treeElement);let placeholderGraph=treeElement[WebInspector.TimelineOverview.PlaceholderOverviewGraph];this._graphsContainerView.removeSubview(placeholderGraph);if(treeElement.status.checked){let instrument=WebInspector.Instrument.createForTimelineType(treeElement.representedObject.type);this._recording.addInstrument(instrument);}}
let instrumentTypes=instruments.map((instrument)=>instrument.timelineRecordType);WebInspector.timelineManager.enabledTimelineTypes=instrumentTypes;this._editingInstrumentsDidChange();}
_capturingStarted()
{this._editInstrumentsButton.enabled=false;this._stopEditingInstruments();}
_capturingStopped()
{this._editInstrumentsButton.enabled=true;}
_compareTimelineTreeElements(a,b)
{let aTimelineType=a.representedObject.type;let bTimelineType=b.representedObject.type;if(aTimelineType===WebInspector.TimelineRecord.Type.RenderingFrame)
return 1;if(bTimelineType===WebInspector.TimelineRecord.Type.RenderingFrame)
return-1;if(a.placeholder!==b.placeholder)
return a.placeholder?1:-1;let aTimelineIndex=this._instrumentTypes.indexOf(aTimelineType);let bTimelineIndex=this._instrumentTypes.indexOf(bTimelineType);return aTimelineIndex-bTimelineIndex;}
_timelineTreeElementEnabledDidChange(event)
{let enabled=this._timelinesTreeOutline.children.some((treeElement)=>{let timelineType=treeElement.representedObject.type;return this._canShowTimelineType(timelineType)&&treeElement.status.checked;});this._editInstrumentsButton.enabled=enabled;}};WebInspector.TimelineOverview.PlaceholderOverviewGraph=Symbol("placeholder-overview-graph");WebInspector.TimelineOverview.ScrollDeltaDenominator=500;WebInspector.TimelineOverview.EditInstrumentsStyleClassName="edit-instruments";WebInspector.TimelineOverview.MinimumDurationPerPixel=0.0001;WebInspector.TimelineOverview.MaximumDurationPerPixel=60;WebInspector.TimelineOverview.ViewMode={Timelines:"timeline-overview-view-mode-timelines",RenderingFrames:"timeline-overview-view-mode-rendering-frames"};WebInspector.TimelineOverview.Event={EditingInstrumentsDidChange:"editing-instruments-did-change",RecordSelected:"timeline-overview-record-selected",TimelineSelected:"timeline-overview-timeline-selected",TimeRangeSelectionChanged:"timeline-overview-time-range-selection-changed"};WebInspector.TimelineRecordTreeElement=class TimelineRecordTreeElement extends WebInspector.GeneralTreeElement
{constructor(timelineRecord,subtitleNameStyle,includeDetailsInMainTitle,sourceCodeLocation,representedObject)
{sourceCodeLocation=sourceCodeLocation||timelineRecord.sourceCodeLocation||null;let alternateSubtitle=null;if(includeDetailsInMainTitle&&timelineRecord.type===WebInspector.TimelineRecord.Type.Script&&timelineRecord.eventType===WebInspector.ScriptTimelineRecord.EventType.TimerInstalled){let timeoutString=Number.secondsToString(timelineRecord.details.timeout/1000);alternateSubtitle=document.createElement("span");alternateSubtitle.classList.add("alternate-subtitle");if(timelineRecord.details.repeating)
alternateSubtitle.textContent=WebInspector.UIString("%s interval").format(timeoutString);else
alternateSubtitle.textContent=WebInspector.UIString("%s delay").format(timeoutString);}
let subtitle=null;if(sourceCodeLocation){subtitle=document.createElement("span");if(subtitleNameStyle!==WebInspector.SourceCodeLocation.NameStyle.None)
sourceCodeLocation.populateLiveDisplayLocationString(subtitle,"textContent",null,subtitleNameStyle);else
sourceCodeLocation.populateLiveDisplayLocationString(subtitle,"textContent",null,WebInspector.SourceCodeLocation.NameStyle.None,WebInspector.UIString("line "));}
let iconStyleClass=WebInspector.TimelineTabContentView.iconClassNameForRecord(timelineRecord);let title=WebInspector.TimelineTabContentView.displayNameForRecord(timelineRecord);super([iconStyleClass],title,subtitle,representedObject||timelineRecord,false);this._record=timelineRecord;this._sourceCodeLocation=sourceCodeLocation;if(this._sourceCodeLocation)
this.tooltipHandledSeparately=true;if(alternateSubtitle)
this.titlesElement.appendChild(alternateSubtitle);}
get record()
{return this._record;}
get filterableData()
{var url=this._sourceCodeLocation?this._sourceCodeLocation.sourceCode.url:"";return{text:[this.mainTitle,url||"",this._record.details||""]};}
get sourceCodeLocation()
{return this._sourceCodeLocation;}
onattach()
{super.onattach();if(!this.tooltipHandledSeparately)
return;var tooltipPrefix=this.mainTitle+"\n";this._sourceCodeLocation.populateLiveDisplayLocationTooltip(this.element,tooltipPrefix);}};WebInspector.TimelineRecordTreeElement.StyleRecordIconStyleClass="style-record";WebInspector.TimelineRecordTreeElement.LayoutRecordIconStyleClass="layout-record";WebInspector.TimelineRecordTreeElement.PaintRecordIconStyleClass="paint-record";WebInspector.TimelineRecordTreeElement.CompositeRecordIconStyleClass="composite-record";WebInspector.TimelineRecordTreeElement.RenderingFrameRecordIconStyleClass="rendering-frame-record";WebInspector.TimelineRecordTreeElement.APIRecordIconStyleClass="api-record";WebInspector.TimelineRecordTreeElement.EvaluatedRecordIconStyleClass="evaluated-record";WebInspector.TimelineRecordTreeElement.EventRecordIconStyleClass="event-record";WebInspector.TimelineRecordTreeElement.TimerRecordIconStyleClass="timer-record";WebInspector.TimelineRecordTreeElement.AnimationRecordIconStyleClass="animation-record";WebInspector.TimelineRecordTreeElement.ProbeRecordIconStyleClass="probe-record";WebInspector.TimelineRecordTreeElement.ConsoleProfileIconStyleClass="console-profile-record";WebInspector.TimelineRecordTreeElement.GarbageCollectionIconStyleClass="garbage-collection-profile-record";WebInspector.TimelineTreeElement=class TimelineTreeElement extends WebInspector.GeneralTreeElement
{constructor(timeline,placeholder)
{let displayName=WebInspector.TimelineTabContentView.displayNameForTimelineType(timeline.type);let iconClassName=WebInspector.TimelineTabContentView.iconClassNameForTimelineType(timeline.type);let genericClassName=WebInspector.TimelineTabContentView.genericClassNameForTimelineType(timeline.type);super([iconClassName,genericClassName],displayName,"",timeline);this._placeholder=placeholder||false;this.editing=this._placeholder;}
get placeholder()
{return this._placeholder;}
get editing()
{return this._editing;}
set editing(x)
{if(this._editing===x)
return;this._editing=x;this.selectable=!this._editing;this._updateStatusButton();}
onattach()
{super.onattach();this.listItemElement.addEventListener("click",this._clickHandler.bind(this));}
_showCloseButton()
{let tooltip=WebInspector.UIString("Close %s timeline view").format(this.mainTitle);let button=new WebInspector.TreeElementStatusButton(useSVGSymbol("Images/CloseLarge.svg","close-button",tooltip));button.addEventListener(WebInspector.TreeElementStatusButton.Event.Clicked,()=>{this.deselect();});this.status=button.element;}
_showCheckbox()
{let checkboxElement=document.createElement("input");checkboxElement.type="checkbox";checkboxElement.checked=!this._placeholder;let button=new WebInspector.TreeElementStatusButton(checkboxElement);checkboxElement.addEventListener("change",()=>{this._dispatchEnabledDidChangeEvent();});this.status=checkboxElement;}
_updateStatusButton()
{if(this._editing)
this._showCheckbox();else
this._showCloseButton();}
_clickHandler()
{if(!this._editing)
return;this.status.checked=!this.status.checked;this._dispatchEnabledDidChangeEvent();}
_dispatchEnabledDidChangeEvent()
{this.dispatchEventToListeners(WebInspector.TimelineTreeElement.Event.EnabledDidChange);}};WebInspector.TimelineTreeElement.Event={EnabledDidChange:"timeline-tree-element-enabled-did-change"};WebInspector.ConsoleTabContentView=class ConsoleTabContentView extends WebInspector.ContentBrowserTabContentView
{constructor(identifier)
{let{image,title}=WebInspector.ConsoleTabContentView.tabInfo();let tabBarItem=new WebInspector.GeneralTabBarItem(image,title);super(identifier||"console","console",tabBarItem,null,null,true);}
static tabInfo()
{return{image:"Images/Console.svg",title:WebInspector.UIString("Console"),};}
get type()
{return WebInspector.ConsoleTabContentView.Type;}
shown()
{super.shown();WebInspector.consoleContentView.prompt.focus();if(this.contentBrowser.currentContentView===WebInspector.consoleContentView)
return;
if(WebInspector.consoleContentView.parentContainer)
WebInspector.consoleContentView.parentContainer.closeContentView(WebInspector.consoleContentView);this.contentBrowser.showContentView(WebInspector.consoleContentView);}
showRepresentedObject(representedObject,cookie)
{
}
canShowRepresentedObject(representedObject)
{return representedObject instanceof WebInspector.LogObject;}
get supportsSplitContentBrowser()
{return false;}};WebInspector.ConsoleTabContentView.Type="console";WebInspector.DebuggerTabContentView=class DebuggerTabContentView extends WebInspector.ContentBrowserTabContentView
{constructor(identifier)
{let{image,title}=WebInspector.DebuggerTabContentView.tabInfo();let tabBarItem=new WebInspector.GeneralTabBarItem(image,title);let detailsSidebarPanelConstructors=[WebInspector.ScopeChainDetailsSidebarPanel,WebInspector.ResourceDetailsSidebarPanel,WebInspector.ProbeDetailsSidebarPanel];super(identifier||"debugger","debugger",tabBarItem,WebInspector.DebuggerSidebarPanel,detailsSidebarPanelConstructors);}
static tabInfo()
{return{image:"Images/Debugger.svg",title:WebInspector.UIString("Debugger"),};}
get type()
{return WebInspector.DebuggerTabContentView.Type;}
get supportsSplitContentBrowser()
{return true;}
canShowRepresentedObject(representedObject)
{if(representedObject instanceof WebInspector.Script)
return true;if(!(representedObject instanceof WebInspector.Resource))
return false;return representedObject.type===WebInspector.Resource.Type.Document||representedObject.type===WebInspector.Resource.Type.Script;}
showDetailsSidebarPanels()
{super.showDetailsSidebarPanels();if(!this._showScopeChainDetailsSidebarPanel)
return;let scopeChainDetailsSidebarPanel=WebInspector.instanceForClass(WebInspector.ScopeChainDetailsSidebarPanel);if(!scopeChainDetailsSidebarPanel.parentSidebar)
return;scopeChainDetailsSidebarPanel.show();this._showScopeChainDetailsSidebarPanel=false;}
showScopeChainDetailsSidebarPanel()
{this._showScopeChainDetailsSidebarPanel=true;}
revealAndSelectBreakpoint(breakpoint)
{var treeElement=this.navigationSidebarPanel.treeElementForRepresentedObject(breakpoint);if(treeElement)
treeElement.revealAndSelect();}};WebInspector.DebuggerTabContentView.Type="debugger";WebInspector.ElementsTabContentView=class ElementsTabContentView extends WebInspector.ContentBrowserTabContentView
{constructor(identifier)
{let{image,title}=WebInspector.ElementsTabContentView.tabInfo();let tabBarItem=new WebInspector.GeneralTabBarItem(image,title);let detailsSidebarPanelConstructors=[WebInspector.DOMNodeDetailsSidebarPanel,WebInspector.CSSStyleDetailsSidebarPanel];if(window.LayerTreeAgent)
detailsSidebarPanelConstructors.push(WebInspector.LayerTreeDetailsSidebarPanel);super(identifier||"elements","elements",tabBarItem,null,detailsSidebarPanelConstructors,true);WebInspector.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.MainFrameDidChange,this._mainFrameDidChange,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);}
static tabInfo()
{return{image:"Images/Elements.svg",title:WebInspector.UIString("Elements"),};}
static isTabAllowed()
{return!!window.DOMAgent;}
get type()
{return WebInspector.ElementsTabContentView.Type;}
get supportsSplitContentBrowser()
{return true;}
canShowRepresentedObject(representedObject)
{return representedObject instanceof WebInspector.DOMTree;}
showRepresentedObject(representedObject,cookie)
{if(!this.contentBrowser.currentContentView)
this._showDOMTreeContentView();if(!cookie||!cookie.nodeToSelect)
return;let domTreeContentView=this.contentBrowser.currentContentView;domTreeContentView.selectAndRevealDOMNode(cookie.nodeToSelect);
cookie.nodeToSelect=undefined;}
shown()
{super.shown();if(!this.contentBrowser.currentContentView)
this._showDOMTreeContentView();}
closed()
{super.closed();WebInspector.frameResourceManager.removeEventListener(null,null,this);WebInspector.Frame.removeEventListener(null,null,this);}
_showDOMTreeContentView()
{this.contentBrowser.contentViewContainer.closeAllContentViews();var mainFrame=WebInspector.frameResourceManager.mainFrame;if(mainFrame)
this.contentBrowser.showContentViewForRepresentedObject(mainFrame.domTree);}
_mainFrameDidChange(event)
{this._showDOMTreeContentView();}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;this._showDOMTreeContentView();}};WebInspector.ElementsTabContentView.Type="elements";WebInspector.ResourceTreeElement=class ResourceTreeElement extends WebInspector.SourceCodeTreeElement
{constructor(resource,representedObject)
{super(resource,["resource",WebInspector.ResourceTreeElement.ResourceIconStyleClassName,resource.type],"","",representedObject||resource,false);this._updateResource(resource);}
static compareResourceTreeElements(a,b)
{var comparisonResult=a.resource.type.extendedLocaleCompare(b.resource.type);if(comparisonResult!==0)
return comparisonResult;if(a.resource.type===WebInspector.Resource.Type.XHR||a.resource.type===WebInspector.Resource.Type.Fetch||a.resource.type===WebInspector.Resource.Type.WebSocket)
return a.resource.firstTimestamp-b.resource.firstTimestamp||0;
comparisonResult=a.subtitle.extendedLocaleCompare(b.subtitle);if(comparisonResult!==0)
return comparisonResult;return a.mainTitle.extendedLocaleCompare(b.mainTitle);}
static compareFolderAndResourceTreeElements(a,b)
{var aIsFolder=a instanceof WebInspector.FolderTreeElement;var bIsFolder=b instanceof WebInspector.FolderTreeElement;if(aIsFolder&&!bIsFolder)
return-1;if(!aIsFolder&&bIsFolder)
return 1;if(aIsFolder&&bIsFolder)
return a.mainTitle.extendedLocaleCompare(b.mainTitle);return WebInspector.ResourceTreeElement.compareResourceTreeElements(a,b);}
get resource()
{return this._resource;}
get filterableData()
{let urlComponents=this._resource.urlComponents;return{text:[urlComponents.lastPathComponent,urlComponents.path,this._resource.url]};}
ondblclick()
{if(this._resource.type===WebInspector.Resource.Type.WebSocket)
return;InspectorFrontendHost.openInNewTab(this._resource.url);}
_updateResource(resource)
{
if(this._resource){this._resource.removeEventListener(WebInspector.Resource.Event.URLDidChange,this._urlDidChange,this);this._resource.removeEventListener(WebInspector.Resource.Event.TypeDidChange,this._typeDidChange,this);this._resource.removeEventListener(WebInspector.Resource.Event.LoadingDidFinish,this._updateStatus,this);this._resource.removeEventListener(WebInspector.Resource.Event.LoadingDidFail,this._updateStatus,this);}
this._updateSourceCode(resource);this._resource=resource;resource.addEventListener(WebInspector.Resource.Event.URLDidChange,this._urlDidChange,this);resource.addEventListener(WebInspector.Resource.Event.TypeDidChange,this._typeDidChange,this);resource.addEventListener(WebInspector.Resource.Event.LoadingDidFinish,this._updateStatus,this);resource.addEventListener(WebInspector.Resource.Event.LoadingDidFail,this._updateStatus,this);this._updateTitles();this._updateStatus();this._updateToolTip();}
_updateTitles()
{var frame=this._resource.parentFrame;var target=this._resource.target;var isMainResource=this._resource.isMainResource();var parentResourceHost=target.mainResource?target.mainResource.urlComponents.host:null;if(isMainResource&&frame){parentResourceHost=frame.parentFrame?frame.parentFrame.mainResource.urlComponents.host:null;}else if(frame){parentResourceHost=frame.mainResource.urlComponents.host;}
var urlComponents=this._resource.urlComponents;var oldMainTitle=this.mainTitle;this.mainTitle=WebInspector.displayNameForURL(this._resource.url,urlComponents);var subtitle=parentResourceHost!==urlComponents.host||frame&&frame.isMainFrame()&&isMainResource?WebInspector.displayNameForHost(urlComponents.host):null;this.subtitle=this.mainTitle!==subtitle?subtitle:null;if(oldMainTitle!==this.mainTitle)
this.callFirstAncestorFunction("descendantResourceTreeElementMainTitleDidChange",[this,oldMainTitle]);}
populateContextMenu(contextMenu,event)
{WebInspector.appendContextMenuItemsForSourceCode(contextMenu,this._resource);super.populateContextMenu(contextMenu,event);}
_updateStatus()
{if(this._resource.hadLoadingError())
this.addClassName(WebInspector.ResourceTreeElement.FailedStyleClassName);else
this.removeClassName(WebInspector.ResourceTreeElement.FailedStyleClassName);if(this._resource.finished||this._resource.failed){if(this.status&&this.status[WebInspector.ResourceTreeElement.SpinnerSymbol])
this.status="";}else{let spinner=new WebInspector.IndeterminateProgressSpinner;this.status=spinner.element;this.status[WebInspector.ResourceTreeElement.SpinnerSymbol]=true;}}
_updateToolTip()
{this.tooltip=this._resource.displayURL;}
_urlDidChange(event)
{this._updateTitles();this._updateToolTip();}
_typeDidChange(event)
{this.removeClassName(event.data.oldType);this.addClassName(this._resource.type);this.callFirstAncestorFunction("descendantResourceTreeElementTypeDidChange",[this,event.data.oldType]);}};WebInspector.ResourceTreeElement.ResourceIconStyleClassName="resource-icon";WebInspector.ResourceTreeElement.FailedStyleClassName="failed";WebInspector.ResourceTreeElement.SpinnerSymbol=Symbol("spinner");WebInspector.ResourcesTabContentView=class ResourcesTabContentView extends WebInspector.ContentBrowserTabContentView
{constructor(identifier)
{let{image,title}=WebInspector.ResourcesTabContentView.tabInfo();let tabBarItem=new WebInspector.GeneralTabBarItem(image,title);let detailsSidebarPanelConstructors=[WebInspector.ResourceDetailsSidebarPanel,WebInspector.ProbeDetailsSidebarPanel];if(window.CanvasAgent&&WebInspector.settings.experimentalShowCanvasContextsInResources.value)
detailsSidebarPanelConstructors.push(WebInspector.CanvasDetailsSidebarPanel);detailsSidebarPanelConstructors=detailsSidebarPanelConstructors.concat([WebInspector.DOMNodeDetailsSidebarPanel,WebInspector.CSSStyleDetailsSidebarPanel]);if(window.LayerTreeAgent)
detailsSidebarPanelConstructors.push(WebInspector.LayerTreeDetailsSidebarPanel);super(identifier||"resources","resources",tabBarItem,WebInspector.ResourceSidebarPanel,detailsSidebarPanelConstructors);}
static tabInfo()
{return{image:"Images/Resources.svg",title:WebInspector.UIString("Resources"),};}
get type()
{return WebInspector.ResourcesTabContentView.Type;}
get supportsSplitContentBrowser()
{return true;}
canShowRepresentedObject(representedObject)
{return representedObject instanceof WebInspector.Frame||representedObject instanceof WebInspector.Resource||representedObject instanceof WebInspector.Script||representedObject instanceof WebInspector.CSSStyleSheet||representedObject instanceof WebInspector.ContentFlow||representedObject instanceof WebInspector.Canvas||representedObject instanceof WebInspector.Collection;}};WebInspector.ResourcesTabContentView.Type="resources";WebInspector.SearchTabContentView=class SearchTabContentView extends WebInspector.ContentBrowserTabContentView
{constructor(identifier)
{let{image,title}=WebInspector.SearchTabContentView.tabInfo();let tabBarItem=new WebInspector.GeneralTabBarItem(image,title);let detailsSidebarPanelConstructors=[WebInspector.ResourceDetailsSidebarPanel,WebInspector.ProbeDetailsSidebarPanel,WebInspector.DOMNodeDetailsSidebarPanel,WebInspector.CSSStyleDetailsSidebarPanel];if(window.LayerTreeAgent)
detailsSidebarPanelConstructors.push(WebInspector.LayerTreeDetailsSidebarPanel);super(identifier||"search","search",tabBarItem,WebInspector.SearchSidebarPanel,detailsSidebarPanelConstructors);this._forcePerformSearch=false;}
static tabInfo()
{return{image:"Images/SearchResults.svg",title:WebInspector.UIString("Search"),};}
static isEphemeral()
{return true;}
get type()
{return WebInspector.SearchTabContentView.Type;}
shown()
{super.shown();setTimeout(this.focusSearchField.bind(this));}
canShowRepresentedObject(representedObject)
{if(!(representedObject instanceof WebInspector.Resource)&&!(representedObject instanceof WebInspector.Script)&&!(representedObject instanceof WebInspector.DOMTree))
return false;return!!this.navigationSidebarPanel.contentTreeOutline.getCachedTreeElement(representedObject);}
focusSearchField()
{this.navigationSidebarPanel.focusSearchField(this._forcePerformSearch);this._forcePerformSearch=false;}
performSearch(searchQuery)
{this.navigationSidebarPanel.performSearch(searchQuery);this._forcePerformSearch=false;}
handleCopyEvent(event)
{let selectedTreeElement=this.navigationSidebarPanel.contentTreeOutline.selectedTreeElement;if(!selectedTreeElement)
return;event.clipboardData.setData("text/plain",selectedTreeElement.synthesizedTextValue);event.stopPropagation();event.preventDefault();}
initialLayout()
{super.initialLayout();this._forcePerformSearch=true;}};WebInspector.SearchTabContentView.Type="search";WebInspector.SettingsTabContentView=class SettingsTabContentView extends WebInspector.TabContentView
{constructor(identifier)
{let tabBarItem=new WebInspector.PinnedTabBarItem("Images/Gear.svg",WebInspector.UIString("Open Settings"));super(identifier||"settings","settings",tabBarItem);tabBarItem.representedObject=this;this._selectedSettingsView=null;this._settingsViews=[];}
static tabInfo()
{return{image:"Images/Gear.svg",title:WebInspector.UIString("Settings"),};}
static isEphemeral()
{return true;}
static shouldSaveTab()
{return false;}
get type(){return WebInspector.SettingsTabContentView.Type;}
get selectedSettingsView()
{return this._selectedSettingsView;}
set selectedSettingsView(settingsView)
{if(this._selectedSettingsView===settingsView)
return;if(this._selectedSettingsView)
this.replaceSubview(this._selectedSettingsView,settingsView);else
this.addSubview(settingsView);this._selectedSettingsView=settingsView;this._selectedSettingsView.updateLayout();let navigationItem=this._navigationBar.findNavigationItem(settingsView.identifier);console.assert(navigationItem,"Missing navigation item for settings view.",settingsView)
if(!navigationItem)
return;this._navigationBar.selectedNavigationItem=navigationItem;}
addSettingsView(settingsView)
{if(this._settingsViews.includes(settingsView)){return;}
this._settingsViews.push(settingsView);this._navigationBar.addNavigationItem(new WebInspector.RadioButtonNavigationItem(settingsView.identifier,settingsView.displayName));this._updateNavigationBarVisibility();}
setSettingsViewVisible(settingsView,visible)
{let navigationItem=this._navigationBar.findNavigationItem(settingsView.identifier);if(!navigationItem)
return;if(navigationItem.hidden===!visible)
return;navigationItem.hidden=!visible;settingsView.element.classList.toggle("hidden",!visible);this._updateNavigationBarVisibility();if(!this.selectedSettingsView){if(visible)
this.selectedSettingsView=settingsView;return;}
if(this.selectedSettingsView!==settingsView)
return;let index=this._settingsViews.indexOf(settingsView);console.assert(index!==-1,"SettingsView not found.",settingsView)
if(index===-1)
return;let previousIndex=index;while(--previousIndex>=0){let previousNavigationItem=this._navigationBar.navigationItems[previousIndex];if(!previousNavigationItem||previousNavigationItem.hidden)
continue;this.selectedSettingsView=this._settingsViews[previousIndex];return;}
let nextIndex=index;while(++nextIndex<this._settingsViews.length){let nextNavigationItem=this._navigationBar.navigationItems[nextIndex];if(!nextNavigationItem||nextNavigationItem.hidden)
continue;this.selectedSettingsView=this._settingsViews[nextIndex];return;}}
initialLayout()
{this._navigationBar=new WebInspector.NavigationBar;this._navigationBar.addEventListener(WebInspector.NavigationBar.Event.NavigationItemSelected,this._navigationItemSelected,this);this.addSubview(this._navigationBar);this._createGeneralSettingsView();WebInspector.notifications.addEventListener(WebInspector.Notification.DebugUIEnabledDidChange,this._updateDebugSettingsViewVisibility,this);this._updateDebugSettingsViewVisibility();this.selectedSettingsView=this._settingsViews[0];}
_createGeneralSettingsView()
{let generalSettingsView=new WebInspector.SettingsView("general",WebInspector.UIString("General"));const indentValues=[WebInspector.UIString("Tabs"),WebInspector.UIString("Spaces")];let indentEditor=generalSettingsView.addGroupWithCustomSetting(WebInspector.UIString("Prefer indent using:"),WebInspector.SettingEditor.Type.Select,{values:indentValues});indentEditor.value=indentValues[WebInspector.settings.indentWithTabs.value?0:1];indentEditor.addEventListener(WebInspector.SettingEditor.Event.ValueDidChange,()=>{WebInspector.settings.indentWithTabs.value=indentEditor.value===indentValues[0];});const widthLabel=WebInspector.UIString("spaces");const widthOptions={min:1};generalSettingsView.addSetting(WebInspector.UIString("Tab width:"),WebInspector.settings.tabSize,widthLabel,widthOptions);generalSettingsView.addSetting(WebInspector.UIString("Indent width:"),WebInspector.settings.indentUnit,widthLabel,widthOptions);generalSettingsView.addSetting(WebInspector.UIString("Line wrapping:"),WebInspector.settings.enableLineWrapping,WebInspector.UIString("Wrap lines to editor width"));let showGroup=generalSettingsView.addGroup(WebInspector.UIString("Show:"));showGroup.addSetting(WebInspector.settings.showWhitespaceCharacters,WebInspector.UIString("Whitespace characters"));showGroup.addSetting(WebInspector.settings.showInvalidCharacters,WebInspector.UIString("Invalid characters"));generalSettingsView.addSeparator();let stylesEditingGroup=generalSettingsView.addGroup(WebInspector.UIString("Styles Editing:"));stylesEditingGroup.addSetting(WebInspector.settings.stylesShowInlineWarnings,WebInspector.UIString("Show inline warnings"));stylesEditingGroup.addSetting(WebInspector.settings.stylesInsertNewline,WebInspector.UIString("Automatically insert newline"));stylesEditingGroup.addSetting(WebInspector.settings.stylesSelectOnFirstClick,WebInspector.UIString("Select text on first click"));generalSettingsView.addSeparator();generalSettingsView.addSetting(WebInspector.UIString("Network:"),WebInspector.settings.clearNetworkOnNavigate,WebInspector.UIString("Clear when page navigates"));generalSettingsView.addSeparator();generalSettingsView.addSetting(WebInspector.UIString("Console:"),WebInspector.settings.clearLogOnNavigate,WebInspector.UIString("Clear when page navigates"));generalSettingsView.addSeparator();generalSettingsView.addSetting(WebInspector.UIString("Debugger:"),WebInspector.settings.showScopeChainOnPause,WebInspector.UIString("Show Scope Chain on pause"));generalSettingsView.addSeparator();const zoomLevels=[0.6,0.8,1,1.2,1.4,1.6,1.8,2,2.2,2.4];const zoomValues=zoomLevels.map((level)=>[level,Number.percentageString(level,0)]);let zoomEditor=generalSettingsView.addGroupWithCustomSetting(WebInspector.UIString("Zoom:"),WebInspector.SettingEditor.Type.Select,{values:zoomValues});zoomEditor.value=WebInspector.getZoomFactor();zoomEditor.addEventListener(WebInspector.SettingEditor.Event.ValueDidChange,()=>{WebInspector.setZoomFactor(zoomEditor.value);});WebInspector.settings.zoomFactor.addEventListener(WebInspector.Setting.Event.Changed,()=>{zoomEditor.value=WebInspector.getZoomFactor().maxDecimals(2);});this.addSettingsView(generalSettingsView);}
_createDebugSettingsView()
{if(this._debugSettingsView)
return;this._debugSettingsView=new WebInspector.SettingsView("debug",WebInspector.unlocalizedString("Debug"));let protocolMessagesGroup=this._debugSettingsView.addGroup(WebInspector.unlocalizedString("Protocol Logging:"));let autoLogProtocolMessagesEditor=protocolMessagesGroup.addSetting(WebInspector.settings.autoLogProtocolMessages,WebInspector.unlocalizedString("Messages"));WebInspector.settings.autoLogProtocolMessages.addEventListener(WebInspector.Setting.Event.Changed,()=>{autoLogProtocolMessagesEditor.value=InspectorBackend.dumpInspectorProtocolMessages;});protocolMessagesGroup.addSetting(WebInspector.settings.autoLogTimeStats,WebInspector.unlocalizedString("Time Stats"));this._debugSettingsView.addSeparator();this._debugSettingsView.addSetting(WebInspector.unlocalizedString("Uncaught Exception Reporter:"),WebInspector.settings.enableUncaughtExceptionReporter,WebInspector.unlocalizedString("Enabled"));this._debugSettingsView.addSeparator();const layoutDirectionValues=[[WebInspector.LayoutDirection.System,WebInspector.unlocalizedString("System Default")],[WebInspector.LayoutDirection.LTR,WebInspector.unlocalizedString("Left to Right (LTR)")],[WebInspector.LayoutDirection.RTL,WebInspector.unlocalizedString("Right to Left (RTL)")],];let layoutDirectionEditor=this._debugSettingsView.addGroupWithCustomSetting(WebInspector.unlocalizedString("Layout Direction:"),WebInspector.SettingEditor.Type.Select,{values:layoutDirectionValues});layoutDirectionEditor.value=WebInspector.settings.layoutDirection.value;layoutDirectionEditor.addEventListener(WebInspector.SettingEditor.Event.ValueDidChange,()=>{WebInspector.setLayoutDirection(layoutDirectionEditor.value);});if(window.CanvasAgent){this._debugSettingsView.addSeparator();this._debugSettingsView.addSetting(WebInspector.UIString("Canvas:"),WebInspector.settings.experimentalShowCanvasContextsInResources,WebInspector.UIString("Show Contexts in Resources Tab"));}
this.addSettingsView(this._debugSettingsView);}
_updateNavigationBarVisibility()
{let visibleItems=0;for(let item of this._navigationBar.navigationItems){if(!item.hidden&&++visibleItems>1){this._navigationBar.element.classList.remove("invisible");return;}}
this._navigationBar.element.classList.add("invisible");}
_navigationItemSelected(event)
{let navigationItem=event.target.selectedNavigationItem;if(!navigationItem)
return;let settingsView=this._settingsViews.find((view)=>view.identifier===navigationItem.identifier);if(!settingsView)
return;this.selectedSettingsView=settingsView;}
_updateDebugSettingsViewVisibility()
{if(WebInspector.isDebugUIEnabled())
this._createDebugSettingsView();if(!this._debugSettingsView)
return;this.setSettingsViewVisible(this._debugSettingsView,WebInspector.isDebugUIEnabled());this.needsLayout();}};WebInspector.SettingsTabContentView.Type="settings";WebInspector.StorageTabContentView=class StorageTabContentView extends WebInspector.ContentBrowserTabContentView
{constructor(identifier)
{let{image,title}=WebInspector.StorageTabContentView.tabInfo();let tabBarItem=new WebInspector.GeneralTabBarItem(image,title);let detailsSidebarPanelConstructors=[WebInspector.ApplicationCacheDetailsSidebarPanel,WebInspector.IndexedDatabaseDetailsSidebarPanel];super(identifier||"storage","storage",tabBarItem,WebInspector.StorageSidebarPanel,detailsSidebarPanelConstructors);}
static tabInfo()
{return{image:"Images/Storage.svg",title:WebInspector.UIString("Storage"),};}
static isTabAllowed()
{return!!window.DOMStorageAgent||!!window.DatabaseAgent||!!window.IndexedDBAgent;}
get type()
{return WebInspector.StorageTabContentView.Type;}
get supportsSplitContentBrowser()
{return true;}
canShowRepresentedObject(representedObject)
{return representedObject instanceof WebInspector.DOMStorageObject||representedObject instanceof WebInspector.CookieStorageObject||representedObject instanceof WebInspector.DatabaseTableObject||representedObject instanceof WebInspector.DatabaseObject||representedObject instanceof WebInspector.ApplicationCacheFrame||representedObject instanceof WebInspector.IndexedDatabaseObjectStore||representedObject instanceof WebInspector.IndexedDatabase||representedObject instanceof WebInspector.IndexedDatabaseObjectStoreIndex;}};WebInspector.StorageTabContentView.Type="storage";WebInspector.TimelineTabContentView=class TimelineTabContentView extends WebInspector.ContentBrowserTabContentView
{constructor(identifier)
{let{image,title}=WebInspector.TimelineTabContentView.tabInfo();let tabBarItem=new WebInspector.GeneralTabBarItem(image,title);let detailsSidebarPanelConstructors=[WebInspector.ResourceDetailsSidebarPanel,WebInspector.ProbeDetailsSidebarPanel];super(identifier||"timeline","timeline",tabBarItem,null,detailsSidebarPanelConstructors);this._recordingTreeElementMap=new Map;this._recordingsTreeOutline=new WebInspector.TreeOutline;this._recordingsTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._recordingsTreeSelectionDidChange,this);this._toggleRecordingShortcut=new WebInspector.KeyboardShortcut(null,WebInspector.KeyboardShortcut.Key.Space,this._toggleRecordingOnSpacebar.bind(this));this._toggleRecordingShortcut.implicitlyPreventsDefault=false;this._toggleRecordingShortcut.disabled=true;this._toggleNewRecordingShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.Shift,WebInspector.KeyboardShortcut.Key.Space,this._toggleNewRecordingOnSpacebar.bind(this));this._toggleNewRecordingShortcut.implicitlyPreventsDefault=false;this._toggleNewRecordingShortcut.disabled=true;let toolTip=WebInspector.UIString("Start recording (%s)\nCreate new recording (%s)").format(this._toggleRecordingShortcut.displayName,this._toggleNewRecordingShortcut.displayName);let altToolTip=WebInspector.UIString("Stop recording (%s)").format(this._toggleRecordingShortcut.displayName);this._recordButton=new WebInspector.ToggleButtonNavigationItem("record-start-stop",toolTip,altToolTip,"Images/Record.svg","Images/Stop.svg",13,13);this._recordButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._recordButtonClicked,this);this.contentBrowser.navigationBar.insertNavigationItem(this._recordButton,0);if(WebInspector.FPSInstrument.supported()){let timelinesNavigationItem=new WebInspector.RadioButtonNavigationItem(WebInspector.TimelineOverview.ViewMode.Timelines,WebInspector.UIString("Events"));let renderingFramesNavigationItem=new WebInspector.RadioButtonNavigationItem(WebInspector.TimelineOverview.ViewMode.RenderingFrames,WebInspector.UIString("Frames"));this.contentBrowser.navigationBar.insertNavigationItem(timelinesNavigationItem,1);this.contentBrowser.navigationBar.insertNavigationItem(renderingFramesNavigationItem,2);this.contentBrowser.navigationBar.addEventListener(WebInspector.NavigationBar.Event.NavigationItemSelected,this._viewModeSelected,this);}
WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.RecordingCreated,this._recordingCreated,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.RecordingLoaded,this._recordingLoaded,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.CapturingStarted,this._capturingStartedOrStopped,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.CapturingStopped,this._capturingStartedOrStopped,this);WebInspector.notifications.addEventListener(WebInspector.Notification.VisibilityStateDidChange,this._inspectorVisibilityChanged,this);this._displayedRecording=null;this._displayedContentView=null;this._viewMode=null;this._previousSelectedTimelineType=null;const selectedByUser=false;this._changeViewMode(WebInspector.TimelineOverview.ViewMode.Timelines,selectedByUser);for(let recording of WebInspector.timelineManager.recordings)
this._addRecording(recording);this._recordingCountChanged();this.contentBrowser.updateHierarchicalPathForCurrentContentView();}
static tabInfo()
{return{image:"Images/Timeline.svg",title:WebInspector.UIString("Timelines"),};}
static isTabAllowed()
{return!!window.TimelineAgent||!!window.ScriptProfilerAgent;}
static displayNameForTimelineType(timelineType)
{switch(timelineType){case WebInspector.TimelineRecord.Type.Network:return WebInspector.UIString("Network Requests");case WebInspector.TimelineRecord.Type.Layout:return WebInspector.UIString("Layout & Rendering");case WebInspector.TimelineRecord.Type.Script:return WebInspector.UIString("JavaScript & Events");case WebInspector.TimelineRecord.Type.RenderingFrame:return WebInspector.UIString("Rendering Frames");case WebInspector.TimelineRecord.Type.Memory:return WebInspector.UIString("Memory");case WebInspector.TimelineRecord.Type.HeapAllocations:return WebInspector.UIString("JavaScript Allocations");default:console.error("Unknown Timeline type:",timelineType);}
return null;}
static iconClassNameForTimelineType(timelineType)
{switch(timelineType){case WebInspector.TimelineRecord.Type.Network:return"network-icon";case WebInspector.TimelineRecord.Type.Layout:return"layout-icon";case WebInspector.TimelineRecord.Type.Memory:return"memory-icon";case WebInspector.TimelineRecord.Type.HeapAllocations:return"heap-allocations-icon";case WebInspector.TimelineRecord.Type.Script:return"script-icon";case WebInspector.TimelineRecord.Type.RenderingFrame:return"rendering-frame-icon";default:console.error("Unknown Timeline type:",timelineType);}
return null;}
static genericClassNameForTimelineType(timelineType)
{switch(timelineType){case WebInspector.TimelineRecord.Type.Network:return"network";case WebInspector.TimelineRecord.Type.Layout:return"colors";case WebInspector.TimelineRecord.Type.Memory:return"memory";case WebInspector.TimelineRecord.Type.HeapAllocations:return"heap-allocations";case WebInspector.TimelineRecord.Type.Script:return"script";case WebInspector.TimelineRecord.Type.RenderingFrame:return"rendering-frame";default:console.error("Unknown Timeline type:",timelineType);}
return null;}
static iconClassNameForRecord(timelineRecord)
{switch(timelineRecord.type){case WebInspector.TimelineRecord.Type.Layout:switch(timelineRecord.eventType){case WebInspector.LayoutTimelineRecord.EventType.InvalidateStyles:case WebInspector.LayoutTimelineRecord.EventType.RecalculateStyles:return WebInspector.TimelineRecordTreeElement.StyleRecordIconStyleClass;case WebInspector.LayoutTimelineRecord.EventType.InvalidateLayout:case WebInspector.LayoutTimelineRecord.EventType.ForcedLayout:case WebInspector.LayoutTimelineRecord.EventType.Layout:return WebInspector.TimelineRecordTreeElement.LayoutRecordIconStyleClass;case WebInspector.LayoutTimelineRecord.EventType.Paint:return WebInspector.TimelineRecordTreeElement.PaintRecordIconStyleClass;case WebInspector.LayoutTimelineRecord.EventType.Composite:return WebInspector.TimelineRecordTreeElement.CompositeRecordIconStyleClass;default:console.error("Unknown LayoutTimelineRecord eventType: "+timelineRecord.eventType,timelineRecord);}
break;case WebInspector.TimelineRecord.Type.Script:switch(timelineRecord.eventType){case WebInspector.ScriptTimelineRecord.EventType.APIScriptEvaluated:return WebInspector.TimelineRecordTreeElement.APIRecordIconStyleClass;case WebInspector.ScriptTimelineRecord.EventType.ScriptEvaluated:return WebInspector.TimelineRecordTreeElement.EvaluatedRecordIconStyleClass;case WebInspector.ScriptTimelineRecord.EventType.MicrotaskDispatched:case WebInspector.ScriptTimelineRecord.EventType.EventDispatched:return WebInspector.TimelineRecordTreeElement.EventRecordIconStyleClass;case WebInspector.ScriptTimelineRecord.EventType.ProbeSampleRecorded:return WebInspector.TimelineRecordTreeElement.ProbeRecordIconStyleClass;case WebInspector.ScriptTimelineRecord.EventType.ConsoleProfileRecorded:return WebInspector.TimelineRecordTreeElement.ConsoleProfileIconStyleClass;case WebInspector.ScriptTimelineRecord.EventType.GarbageCollected:return WebInspector.TimelineRecordTreeElement.GarbageCollectionIconStyleClass;case WebInspector.ScriptTimelineRecord.EventType.TimerInstalled:return WebInspector.TimelineRecordTreeElement.TimerRecordIconStyleClass;case WebInspector.ScriptTimelineRecord.EventType.TimerFired:case WebInspector.ScriptTimelineRecord.EventType.TimerRemoved:return WebInspector.TimelineRecordTreeElement.TimerRecordIconStyleClass;case WebInspector.ScriptTimelineRecord.EventType.AnimationFrameFired:case WebInspector.ScriptTimelineRecord.EventType.AnimationFrameRequested:case WebInspector.ScriptTimelineRecord.EventType.AnimationFrameCanceled:return WebInspector.TimelineRecordTreeElement.AnimationRecordIconStyleClass;default:console.error("Unknown ScriptTimelineRecord eventType: "+timelineRecord.eventType,timelineRecord);}
break;case WebInspector.TimelineRecord.Type.RenderingFrame:return WebInspector.TimelineRecordTreeElement.RenderingFrameRecordIconStyleClass;case WebInspector.TimelineRecord.Type.HeapAllocations:return"heap-snapshot-record";case WebInspector.TimelineRecord.Type.Memory:default:console.error("Unknown TimelineRecord type: "+timelineRecord.type,timelineRecord);}
return null;}
static displayNameForRecord(timelineRecord,includeDetailsInMainTitle)
{switch(timelineRecord.type){case WebInspector.TimelineRecord.Type.Network:return WebInspector.displayNameForURL(timelineRecord.resource.url,timelineRecord.resource.urlComponents);case WebInspector.TimelineRecord.Type.Layout:return WebInspector.LayoutTimelineRecord.displayNameForEventType(timelineRecord.eventType);case WebInspector.TimelineRecord.Type.Script:return WebInspector.ScriptTimelineRecord.EventType.displayName(timelineRecord.eventType,timelineRecord.details,includeDetailsInMainTitle);case WebInspector.TimelineRecord.Type.RenderingFrame:return WebInspector.UIString("Frame %d").format(timelineRecord.frameNumber);case WebInspector.TimelineRecord.Type.HeapAllocations:if(timelineRecord.heapSnapshot.title)
return WebInspector.UIString("Snapshot %d \u2014 %s").format(timelineRecord.heapSnapshot.identifier,timelineRecord.heapSnapshot.title);return WebInspector.UIString("Snapshot %d").format(timelineRecord.heapSnapshot.identifier);case WebInspector.TimelineRecord.Type.Memory:default:console.error("Unknown TimelineRecord type: "+timelineRecord.type,timelineRecord);}
return null;}
get type()
{return WebInspector.TimelineTabContentView.Type;}
shown()
{super.shown();this._toggleRecordingShortcut.disabled=false;this._toggleNewRecordingShortcut.disabled=false;if(WebInspector.visible)
WebInspector.timelineManager.autoCaptureOnPageLoad=true;}
hidden()
{super.hidden();this._toggleRecordingShortcut.disabled=true;this._toggleNewRecordingShortcut.disabled=true;WebInspector.timelineManager.autoCaptureOnPageLoad=false;}
closed()
{super.closed();if(WebInspector.FPSInstrument.supported())
this.contentBrowser.navigationBar.removeEventListener(null,null,this);WebInspector.timelineManager.removeEventListener(null,null,this);WebInspector.notifications.removeEventListener(null,null,this);}
canShowRepresentedObject(representedObject)
{return representedObject instanceof WebInspector.TimelineRecording;}
restoreFromCookie(cookie)
{this._restoredShowingTimelineRecordingContentView=cookie[WebInspector.TimelineTabContentView.ShowingTimelineRecordingContentViewCookieKey];if(!this._restoredShowingTimelineRecordingContentView){if(!this.contentBrowser.currentContentView){if(!this._displayedRecording&&WebInspector.timelineManager.activeRecording)
this._recordingLoaded();this._showTimelineViewForType(WebInspector.TimelineTabContentView.OverviewTimelineIdentifierCookieValue);}
return;}
let selectedTimelineViewIdentifier=cookie[WebInspector.TimelineTabContentView.SelectedTimelineViewIdentifierCookieKey];if(selectedTimelineViewIdentifier===WebInspector.TimelineRecord.Type.RenderingFrame&&!WebInspector.FPSInstrument.supported())
selectedTimelineViewIdentifier=null;this._showTimelineViewForType(selectedTimelineViewIdentifier);super.restoreFromCookie(cookie);}
saveToCookie(cookie)
{cookie[WebInspector.TimelineTabContentView.ShowingTimelineRecordingContentViewCookieKey]=this.contentBrowser.currentContentView instanceof WebInspector.TimelineRecordingContentView;if(this._viewMode===WebInspector.TimelineOverview.ViewMode.RenderingFrames)
cookie[WebInspector.TimelineTabContentView.SelectedTimelineViewIdentifierCookieKey]=WebInspector.TimelineRecord.Type.RenderingFrame;else{let selectedTimeline=this._getTimelineForCurrentContentView();if(selectedTimeline)
cookie[WebInspector.TimelineTabContentView.SelectedTimelineViewIdentifierCookieKey]=selectedTimeline.type;else
cookie[WebInspector.TimelineTabContentView.SelectedTimelineViewIdentifierCookieKey]=WebInspector.TimelineTabContentView.OverviewTimelineIdentifierCookieValue;}
super.saveToCookie(cookie);}
treeElementForRepresentedObject(representedObject)
{if(!this._recordingTreeElementMap)
return null;if(representedObject instanceof WebInspector.TimelineRecording)
return this._recordingTreeElementMap.get(representedObject);return null;}
_capturingStartedOrStopped(event)
{let isCapturing=WebInspector.timelineManager.isCapturing();this._recordButton.toggled=isCapturing;}
_inspectorVisibilityChanged(event)
{WebInspector.timelineManager.autoCaptureOnPageLoad=!!this.visible&&!!WebInspector.visible;}
_toggleRecordingOnSpacebar(event)
{if(WebInspector.isEventTargetAnEditableField(event))
return;this._toggleRecording();event.preventDefault();}
_toggleNewRecordingOnSpacebar(event)
{if(WebInspector.isEventTargetAnEditableField(event))
return;this._toggleRecording(true);event.preventDefault();}
_toggleRecording(shouldCreateRecording)
{let isCapturing=WebInspector.timelineManager.isCapturing();this._recordButton.toggled=isCapturing;if(isCapturing)
WebInspector.timelineManager.stopCapturing();else{WebInspector.timelineManager.startCapturing(shouldCreateRecording);this._recordingLoaded();}}
_recordButtonClicked(event)
{let shouldCreateNewRecording=window.event?window.event.shiftKey:false;this._recordButton.toggled=!WebInspector.timelineManager.isCapturing();this._toggleRecording(shouldCreateNewRecording);}
_recordingsTreeSelectionDidChange(event)
{let treeElement=event.data.selectedElement;if(!treeElement)
return;this._recordingSelected(treeElement.representedObject);}
_recordingCreated(event)
{this._addRecording(event.data.recording);this._recordingCountChanged();}
_addRecording(recording)
{let recordingTreeElement=new WebInspector.GeneralTreeElement(WebInspector.TimelineTabContentView.StopwatchIconStyleClass,recording.displayName,null,recording);this._recordingTreeElementMap.set(recording,recordingTreeElement);this._recordingsTreeOutline.appendChild(recordingTreeElement);}
_recordingCountChanged()
{let previousTreeElement=null;for(let treeElement of this._recordingTreeElementMap.values()){if(previousTreeElement){previousTreeElement.nextSibling=treeElement;treeElement.previousSibling=previousTreeElement;}
previousTreeElement=treeElement;}}
_recordingSelected(recording)
{this._displayedRecording=recording;let cookie={};this.saveToCookie(cookie);if(this._displayedContentView)
this._displayedContentView.removeEventListener(WebInspector.ContentView.Event.NavigationItemsDidChange,this._displayedContentViewNavigationItemsDidChange,this);let onlyExisting=true;this._displayedContentView=this.contentBrowser.contentViewForRepresentedObject(this._displayedRecording,onlyExisting);if(this._displayedContentView){this._displayedContentView.addEventListener(WebInspector.ContentView.Event.NavigationItemsDidChange,this._displayedContentViewNavigationItemsDidChange,this);let currentTimelineView=this._displayedContentView.currentTimelineView;let timelineType=currentTimelineView&&currentTimelineView.representedObject instanceof WebInspector.Timeline?currentTimelineView.representedObject.type:null;this._showTimelineViewForType(timelineType);return;}
onlyExisting=false;this._displayedContentView=this.contentBrowser.contentViewForRepresentedObject(this._displayedRecording,onlyExisting);if(this._displayedContentView)
this._displayedContentView.addEventListener(WebInspector.ContentView.Event.NavigationItemsDidChange,this._displayedContentViewNavigationItemsDidChange,this);this.restoreFromCookie(cookie);}
_recordingLoaded(event)
{this._recordingSelected(WebInspector.timelineManager.activeRecording);}
_viewModeSelected(event)
{let selectedNavigationItem=event.target.selectedNavigationItem;if(!selectedNavigationItem)
return;const selectedByUser=true;this._changeViewMode(selectedNavigationItem.identifier,selectedByUser);}
_changeViewMode(mode,selectedByUser)
{if(this._viewMode===mode)
return;let navigationItemForViewMode=this.contentBrowser.navigationBar.findNavigationItem(mode);if(!navigationItemForViewMode)
return;this._viewMode=mode;this.contentBrowser.navigationBar.selectedNavigationItem=navigationItemForViewMode;if(!selectedByUser)
return;let timelineType=this._previousSelectedTimelineType;if(this._viewMode===WebInspector.TimelineOverview.ViewMode.RenderingFrames){let timeline=this._getTimelineForCurrentContentView();this._previousSelectedTimelineType=timeline?timeline.type:null;timelineType=WebInspector.TimelineRecord.Type.RenderingFrame;}
this._showTimelineViewForType(timelineType);}
_showTimelineViewForType(timelineType)
{let timeline=timelineType?this._displayedRecording.timelines.get(timelineType):null;if(timeline)
this._displayedContentView.showTimelineViewForTimeline(timeline);else
this._displayedContentView.showOverviewTimelineView();if(this.contentBrowser.currentContentView!==this._displayedContentView)
this.contentBrowser.showContentView(this._displayedContentView);}
_displayedContentViewNavigationItemsDidChange(event)
{let timeline=this._getTimelineForCurrentContentView();let newViewMode=WebInspector.TimelineOverview.ViewMode.Timelines;if(timeline&&timeline.type===WebInspector.TimelineRecord.Type.RenderingFrame)
newViewMode=WebInspector.TimelineOverview.ViewMode.RenderingFrames;const selectedByUser=false;this._changeViewMode(newViewMode,selectedByUser);}
_getTimelineForCurrentContentView()
{let currentContentView=this.contentBrowser.currentContentView;if(!(currentContentView instanceof WebInspector.TimelineRecordingContentView))
return null;let timelineView=currentContentView.currentTimelineView;return(timelineView&&timelineView.representedObject instanceof WebInspector.Timeline)?timelineView.representedObject:null;}};WebInspector.TimelineTabContentView.Type="timeline";WebInspector.TimelineTabContentView.ShowingTimelineRecordingContentViewCookieKey="timeline-sidebar-panel-showing-timeline-recording-content-view";WebInspector.TimelineTabContentView.SelectedTimelineViewIdentifierCookieKey="timeline-sidebar-panel-selected-timeline-view-identifier";WebInspector.TimelineTabContentView.OverviewTimelineIdentifierCookieValue="overview";WebInspector.TimelineTabContentView.StopwatchIconStyleClass="stopwatch-icon";WebInspector.DetailsSection=class DetailsSection extends WebInspector.Object
{constructor(identifier,title,groups,optionsElement,defaultCollapsedSettingValue)
{super();this._element=document.createElement("div");this._element.classList.add(identifier,"details-section");this._headerElement=document.createElement("div");this._headerElement.addEventListener("click",this._headerElementClicked.bind(this));this._headerElement.className="header";this._element.appendChild(this._headerElement);if(optionsElement instanceof HTMLElement){this._optionsElement=optionsElement;this._optionsElement.classList.add("options");this._optionsElement.addEventListener("mousedown",this._optionsElementMouseDown.bind(this));this._optionsElement.addEventListener("mouseup",this._optionsElementMouseUp.bind(this));this._headerElement.appendChild(this._optionsElement);}
this._titleElement=document.createElement("span");this._headerElement.appendChild(this._titleElement);this._contentElement=document.createElement("div");this._contentElement.className="content";this._element.appendChild(this._contentElement);this._identifier=identifier;this.title=title;this.groups=groups||[new WebInspector.DetailsSectionGroup];this._collapsedSetting=new WebInspector.Setting(identifier+"-details-section-collapsed",!!defaultCollapsedSettingValue);this.collapsed=this._collapsedSetting.value;this._expandedByUser=false;}
get element()
{return this._element;}
get identifier()
{return this._identifier;}
get title()
{return this._titleElement.textContent;}
set title(title)
{this._titleElement.textContent=title;}
get titleElement()
{return this._titleElement;}
set titleElement(element)
{this._headerElement.replaceChild(element,this._titleElement);this._titleElement=element;}
get collapsed()
{return this._element.classList.contains(WebInspector.DetailsSection.CollapsedStyleClassName);}
set collapsed(flag)
{if(flag)
this._element.classList.add(WebInspector.DetailsSection.CollapsedStyleClassName);else
this._element.classList.remove(WebInspector.DetailsSection.CollapsedStyleClassName);this._collapsedSetting.value=flag||false;this.dispatchEventToListeners(WebInspector.DetailsSection.Event.CollapsedStateChanged,{collapsed:this._collapsedSetting.value});}
get groups()
{return this._groups;}
set groups(groups)
{this._contentElement.removeChildren();this._groups=groups||[];for(var i=0;i<this._groups.length;++i)
this._contentElement.appendChild(this._groups[i].element);}
get expandedByUser()
{return this._expandedByUser;}
_headerElementClicked(event)
{if(event.target.isSelfOrDescendant(this._optionsElement))
return;var collapsed=this.collapsed;this.collapsed=!collapsed;this._expandedByUser=collapsed;this._element.scrollIntoViewIfNeeded(false);}
_optionsElementMouseDown(event)
{this._headerElement.classList.add(WebInspector.DetailsSection.MouseOverOptionsElementStyleClassName);}
_optionsElementMouseUp(event)
{this._headerElement.classList.remove(WebInspector.DetailsSection.MouseOverOptionsElementStyleClassName);}};WebInspector.DetailsSection.CollapsedStyleClassName="collapsed";WebInspector.DetailsSection.MouseOverOptionsElementStyleClassName="mouse-over-options-element";WebInspector.DetailsSection.Event={CollapsedStateChanged:"details-section-collapsed-state-changed"};WebInspector.DetailsSectionDataGridRow=class DetailsSectionDataGridRow extends WebInspector.DetailsSectionRow
{constructor(dataGrid,emptyMessage)
{super(emptyMessage);this.element.classList.add("data-grid");this.dataGrid=dataGrid;}
get dataGrid()
{return this._dataGrid;}
set dataGrid(dataGrid)
{if(this._dataGrid===dataGrid)
return;this._dataGrid=dataGrid||null;if(dataGrid){dataGrid.inline=true;dataGrid.variableHeightRows=true;this.hideEmptyMessage();this.element.appendChild(dataGrid.element);dataGrid.updateLayoutIfNeeded();}else
this.showEmptyMessage();}
sizeDidChange()
{ if(this._dataGrid)
this._dataGrid.sizeDidChange();}};WebInspector.DetailsSectionGroup=class DetailsSectionGroup extends WebInspector.Object
{constructor(rows)
{super();this._element=document.createElement("div");this._element.className="group";this.rows=rows||[];}
get element()
{return this._element;}
get rows()
{return this._rows;}
set rows(rows)
{this._element.removeChildren();this._rows=rows||[];for(var i=0;i<this._rows.length;++i)
this._element.appendChild(this._rows[i].element);}};WebInspector.DetailsSectionSimpleRow=class DetailsSectionSimpleRow extends WebInspector.DetailsSectionRow
{constructor(label,value)
{super();this.element.classList.add("simple");this._labelElement=document.createElement("div");this._labelElement.className="label";this.element.appendChild(this._labelElement);this._valueElement=document.createElement("div");this._valueElement.className="value";this.element.appendChild(this._valueElement);
var valueElementClicked=function(event){event.stopPropagation();if(event.detail<3)
return;var currentSelection=window.getSelection();if(!currentSelection)
return;var currentRange=currentSelection.getRangeAt(0);if(!currentRange||currentRange.startContainer===currentRange.endContainer)
return;var correctedRange=document.createRange();correctedRange.selectNodeContents(event.currentTarget);currentSelection.removeAllRanges();currentSelection.addRange(correctedRange);};this._valueElement.addEventListener("click",valueElementClicked);this.label=label;this.value=value;}
get label()
{return this._labelElement.textContent;}
set label(label)
{this._labelElement.textContent=label;}
get value()
{return this._value;}
set value(value)
{this._value=value||"";if(this._value){this.element.classList.remove(WebInspector.DetailsSectionSimpleRow.EmptyStyleClassName);if(/[\s\u200b]/.test(this._value))
this.element.classList.remove(WebInspector.DetailsSectionSimpleRow.DataStyleClassName);else
this.element.classList.add(WebInspector.DetailsSectionSimpleRow.DataStyleClassName);}else{this.element.classList.add(WebInspector.DetailsSectionSimpleRow.EmptyStyleClassName);this.element.classList.remove(WebInspector.DetailsSectionSimpleRow.DataStyleClassName);}
if(value instanceof Node){this._valueElement.removeChildren();this._valueElement.appendChild(this._value);}else
this._valueElement.textContent=this._value;}
get tooltip()
{return this._valueElement.title;}
set tooltip(x)
{this._valueElement.title=x;}};WebInspector.DetailsSectionSimpleRow.DataStyleClassName="data";WebInspector.DetailsSectionSimpleRow.EmptyStyleClassName="empty";WebInspector.DetailsSectionTextRow=class DetailsSectionTextRow extends WebInspector.DetailsSectionRow
{constructor(text)
{super();this.element.classList.add("text");this.element.textContent=text;}
get text()
{return this.element.textContent;}
set text(text)
{this.element.textContent=text;}};WebInspector.SettingEditor=class SettingEditor extends WebInspector.Object
{constructor(type,label,options)
{super();this._type=type;this._label=label;this._value=null;this._editorElement=this._createEditorElement(options);this._element=document.createElement("div");this._element.classList.add("editor");this._element.append(this._editorElement);if(this._label){this._editorElement.id="setting-editor-"+WebInspector.SettingEditor._nextEditorIdentifier++;let labelElement=document.createElement("label");labelElement.setAttribute("for",this._editorElement.id);labelElement.textContent=label;this._element.append(labelElement);}}
static createForSetting(setting,label,options)
{let type;if(typeof setting.value==="boolean")
type=WebInspector.SettingEditor.Type.Checkbox;else if(typeof setting.value==="number")
type=WebInspector.SettingEditor.Type.Numeric;if(!type)
return null;let editor=new WebInspector.SettingEditor(type,label,options);editor.value=setting.value;editor.addEventListener(WebInspector.SettingEditor.Event.ValueDidChange,()=>{setting.value=editor.value;});return editor;}
get element(){return this._element;}
get type(){return this._type;}
get label(){return this._label;}
get value()
{return this._value;}
set value(value)
{if(this._value===value)
return;let oldValue=this._value;this._value=value;if(this._type==WebInspector.SettingEditor.Type.Checkbox)
this._editorElement.checked=!!this._value;else
this._editorElement.value=this._value;this.dispatchEventToListeners(WebInspector.SettingEditor.Event.ValueDidChange,{oldValue});}
_createEditorElement(options)
{let editorElement;switch(this._type){case WebInspector.SettingEditor.Type.Checkbox:editorElement=document.createElement("input");editorElement.type="checkbox";editorElement.addEventListener("change",(event)=>{this.value=event.target.checked;});break;case WebInspector.SettingEditor.Type.Numeric:editorElement=document.createElement("input");editorElement.type="number";if(options.min!==undefined)
editorElement.min=options.min;if(options.max!==undefined)
editorElement.max=options.max;editorElement.addEventListener("change",(event)=>{let currentValue=this._value;let newValue=parseInt(event.target.value);this.value=isNaN(newValue)?currentValue:newValue;});break;case WebInspector.SettingEditor.Type.Select:editorElement=document.createElement("select");var keyValuePairs=[];if(Array.isArray(options.values[0]))
keyValuePairs=options.values;else
keyValuePairs=options.values.map((value)=>[value,value]);for(let[key,value]of keyValuePairs){let optionElement=editorElement.appendChild(document.createElement("option"));optionElement.value=key;optionElement.textContent=value;}
editorElement.addEventListener("change",(event)=>{this.value=event.target.value;});break;default:console.error("Unknown editor type: "+this._type);}
return editorElement;}};WebInspector.SettingEditor._nextEditorIdentifier=1;WebInspector.SettingEditor.Type={Checkbox:"setting-editor-type-checkbox",Numeric:"setting-editor-type-numeric",Select:"setting-editor-type-select",};WebInspector.SettingEditor.Event={ValueDidChange:"value-did-change",};WebInspector.SettingsGroup=class SettingsGroup extends WebInspector.Object
{constructor(title)
{super();this._element=document.createElement("div");this._element.classList.add("container");let titleElement=this._element.appendChild(document.createElement("div"));titleElement.classList.add("title");titleElement.textContent=title;this._editorGroupElement=this._element.appendChild(document.createElement("div"));this._editorGroupElement.classList.add("editor-group");}
get element(){return this._element;}
addSetting(setting,label,options)
{let editor=WebInspector.SettingEditor.createForSetting(setting,label,options);if(!editor)
return null;this._editorGroupElement.append(editor.element);return editor;}
addCustomSetting(editorType,options)
{let editor=new WebInspector.SettingEditor(editorType,options.label,options);if(!editor)
return null;this._editorGroupElement.append(editor.element);return editor;}};WebInspector.SettingsView=class SettingsView extends WebInspector.View
{constructor(identifier,displayName)
{super();this._identifier=identifier;this._displayName=displayName;this.element.classList.add("settings-view",identifier);}
get identifier(){return this._identifier;}
get displayName(){return this._displayName;}
addSetting(title,setting,label,options)
{let settingsGroup=this.addGroup(title);return settingsGroup.addSetting(setting,label,options);}
addGroupWithCustomSetting(title,editorType,options)
{let settingsGroup=this.addGroup(title);return settingsGroup.addCustomSetting(editorType,options);}
addGroup(title)
{let settingsGroup=new WebInspector.SettingsGroup(title);this.element.append(settingsGroup.element);return settingsGroup;}
addSeparator()
{if(this.element.lastChild&&this.element.lastChild.classList.contains("separator"))
return;let separatorElement=this.element.appendChild(document.createElement("div"));separatorElement.classList.add("separator");}};WebInspector.SettingsView.EditorType={Checkbox:"settings-view-editor-type-checkbox",Numeric:"settings-view-editor-type-numeric",Select:"settings-view-editor-type-select",};WebInspector.ActivateButtonNavigationItem=class ActivateButtonNavigationItem extends WebInspector.ButtonNavigationItem
{constructor(identifier,defaultToolTip,activatedToolTip,image,imageWidth,imageHeight,role)
{super(identifier,defaultToolTip,image,imageWidth,imageHeight,role);this._defaultToolTip=defaultToolTip;this._activatedToolTip=activatedToolTip||defaultToolTip;this._role=role;}
get defaultToolTip()
{return this._defaultToolTip;}
get activatedToolTip()
{return this._activatedToolTip;}
get activated()
{return this.element.classList.contains(WebInspector.ActivateButtonNavigationItem.ActivatedStyleClassName);}
set activated(flag)
{this.element.classList.toggle(WebInspector.ActivateButtonNavigationItem.ActivatedStyleClassName,flag);if(flag){this.toolTip=this._activatedToolTip;if(this._role==="tab")
this.element.setAttribute("aria-selected","true");}else{this.toolTip=this._defaultToolTip;if(this._role==="tab")
this.element.removeAttribute("aria-selected");}}
get additionalClassNames()
{return["activate","button"];}};WebInspector.ActivateButtonNavigationItem.ActivatedStyleClassName="activated";WebInspector.ActivateButtonToolbarItem=class ActivateButtonToolbarItem extends WebInspector.ActivateButtonNavigationItem
{constructor(identifier,defaultToolTip,activatedToolTip,label,image,role)
{super(identifier,defaultToolTip,activatedToolTip,image,16,16,role);if(typeof label==="string"){this._labelElement=document.createElement("div");this._labelElement.className=WebInspector.ButtonToolbarItem.LabelStyleClassName;this._element.appendChild(this._labelElement);this.label=label;}}
get label()
{return this._labelElement.textContent;}
set label(newLabel)
{if(!newLabel||!this._labelElement)
return;this._labelElement.textContent=newLabel;}};WebInspector.ApplicationCacheDetailsSidebarPanel=class ApplicationCacheDetailsSidebarPanel extends WebInspector.DetailsSidebarPanel
{constructor()
{super("application-cache-details",WebInspector.UIString("Storage"));this.element.classList.add("application-cache");this._applicationCacheFrame=null;}
inspect(objects)
{if(!(objects instanceof Array))
objects=[objects];var applicationCacheFrameToInspect=null;for(var i=0;i<objects.length;++i){if(objects[i]instanceof WebInspector.ApplicationCacheFrame){applicationCacheFrameToInspect=objects[i];break;}}
this.applicationCacheFrame=applicationCacheFrameToInspect;return!!this.applicationCacheFrame;}
get applicationCacheFrame()
{return this._applicationCacheFrame;}
set applicationCacheFrame(applicationCacheFrame)
{if(this._applicationCacheFrame===applicationCacheFrame)
return;this._applicationCacheFrame=applicationCacheFrame;this.needsLayout();}
initialLayout()
{super.initialLayout();this._locationManifestURLRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Manifest URL"));this._locationFrameURLRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Frame URL"));let locationGroup=new WebInspector.DetailsSectionGroup([this._locationManifestURLRow,this._locationFrameURLRow]);let locationSection=new WebInspector.DetailsSection("application-cache-location",WebInspector.UIString("Location"),[locationGroup]);this._onlineRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Online"));this._statusRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Status"));let statusGroup=new WebInspector.DetailsSectionGroup([this._onlineRow,this._statusRow]);let statusSection=new WebInspector.DetailsSection("application-cache-status",WebInspector.UIString("Status"),[statusGroup]);this.contentView.element.appendChild(locationSection.element);this.contentView.element.appendChild(statusSection.element);WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationCacheManager.Event.NetworkStateUpdated,this._networkStateUpdated,this);WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationCacheManager.Event.FrameManifestStatusChanged,this._frameManifestStatusChanged,this);}
layout()
{super.layout();if(!this.applicationCacheFrame)
return;this._locationFrameURLRow.value=this.applicationCacheFrame.frame.url;this._locationManifestURLRow.value=this.applicationCacheFrame.manifest.manifestURL;this._refreshOnlineRow();this._refreshStatusRow();}
_networkStateUpdated(event)
{if(!this.applicationCacheFrame)
return;this._refreshOnlineRow();}
_frameManifestStatusChanged(event)
{if(!this.applicationCacheFrame)
return;if(event.data.frameManifest!==this.applicationCacheFrame)
return;this._refreshStatusRow();}
_refreshOnlineRow()
{this._onlineRow.value=WebInspector.applicationCacheManager.online?WebInspector.UIString("Yes"):WebInspector.UIString("No");}
_refreshStatusRow()
{this._statusRow.value=WebInspector.ApplicationCacheDetailsSidebarPanel.Status[this.applicationCacheFrame.status];}};WebInspector.ApplicationCacheDetailsSidebarPanel.Status={0:"Uncached",1:"Idle",2:"Checking",3:"Downloading",4:"UpdateReady",5:"Obsolete"};WebInspector.ApplicationCacheFrameContentView=class ApplicationCacheFrameContentView extends WebInspector.ContentView
{constructor(representedObject)
{super(representedObject);this.element.classList.add("application-cache-frame");this._frame=representedObject.frame;this._emptyView=WebInspector.createMessageTextView(WebInspector.UIString("No Application Cache information available"),false);this._emptyView.classList.add("hidden");this.element.appendChild(this._emptyView);this._markDirty();var status=representedObject.status;this.updateStatus(status);WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationCacheManager.Event.FrameManifestStatusChanged,this._updateStatus,this);}
shown()
{super.shown();this._maybeUpdate();}
closed()
{WebInspector.applicationCacheManager.removeEventListener(null,null,this);super.closed();}
saveToCookie(cookie)
{cookie.type=WebInspector.ContentViewCookieType.ApplicationCache;cookie.frame=this.representedObject.frame.url;cookie.manifest=this.representedObject.manifest.manifestURL;}
get scrollableElements()
{if(!this._dataGrid)
return[];return[this._dataGrid.scrollContainer];}
_maybeUpdate()
{if(!this.visible||!this._viewDirty)
return;this._update();this._viewDirty=false;}
_markDirty()
{this._viewDirty=true;}
_updateStatus(event)
{var frameManifest=event.data.frameManifest;if(frameManifest!==this.representedObject)
return;this.updateStatus(frameManifest.status);}
updateStatus(status)
{var oldStatus=this._status;this._status=status;if(this.visible&&this._status===WebInspector.ApplicationCacheManager.Status.Idle&&(oldStatus===WebInspector.ApplicationCacheManager.Status.UpdateReady||!this._resources))
this._markDirty();this._maybeUpdate();}
_update()
{WebInspector.applicationCacheManager.requestApplicationCache(this._frame,this._updateCallback.bind(this));}
_updateCallback(applicationCache)
{if(!applicationCache||!applicationCache.manifestURL){delete this._manifest;delete this._creationTime;delete this._updateTime;delete this._size;delete this._resources;this._emptyView.classList.remove("hidden");if(this._dataGrid)
this._dataGrid.element.classList.add("hidden");return;}
this._manifest=applicationCache.manifestURL;this._creationTime=applicationCache.creationTime;this._updateTime=applicationCache.updateTime;this._size=applicationCache.size;this._resources=applicationCache.resources;if(!this._dataGrid)
this._createDataGrid();this._populateDataGrid();this._dataGrid.autoSizeColumns(20,80);this._dataGrid.element.classList.remove("hidden");this._emptyView.classList.add("hidden");}
_createDataGrid()
{var columns={url:{},type:{},size:{}};columns.url.title=WebInspector.UIString("Resource");columns.url.sortable=true;columns.type.title=WebInspector.UIString("Type");columns.type.sortable=true;columns.size.title=WebInspector.UIString("Size");columns.size.aligned="right";columns.size.sortable=true;this._dataGrid=new WebInspector.DataGrid(columns);this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SortChanged,this._sortDataGrid,this);this._dataGrid.sortColumnIdentifier="url";this._dataGrid.sortOrder=WebInspector.DataGrid.SortOrder.Ascending;this._dataGrid.createSettings("application-cache-frame-content-view");this.addSubview(this._dataGrid);this._dataGrid.updateLayout();}
_sortDataGrid()
{function numberCompare(columnIdentifier,nodeA,nodeB)
{return nodeA.data[columnIdentifier]-nodeB.data[columnIdentifier];}
function localeCompare(columnIdentifier,nodeA,nodeB)
{return(nodeA.data[columnIdentifier]+"").extendedLocaleCompare(nodeB.data[columnIdentifier]+"");}
var comparator;switch(this._dataGrid.sortColumnIdentifier){case"type":comparator=localeCompare.bind(this,"type");break;case"size":comparator=numberCompare.bind(this,"size");break;case"url":default:comparator=localeCompare.bind(this,"url");break;}
this._dataGrid.sortNodes(comparator);}
_populateDataGrid()
{this._dataGrid.removeChildren();for(var resource of this._resources){var data={url:resource.url,type:resource.type,size:Number.bytesToString(resource.size)};var node=new WebInspector.DataGridNode(data);this._dataGrid.appendChild(node);}}
_deleteButtonClicked(event)
{if(!this._dataGrid||!this._dataGrid.selectedNode)
return;this._deleteCallback(this._dataGrid.selectedNode);}
_deleteCallback(node)
{
}};WebInspector.ApplicationCacheFrameTreeElement=class ApplicationCacheFrameTreeElement extends WebInspector.GeneralTreeElement
{constructor(representedObject)
{super("application-cache-frame","","",representedObject,false);this.updateTitles();}
updateTitles()
{var url=this.representedObject.frame.url;var parsedURL=parseURL(url);this.mainTitle=WebInspector.displayNameForURL(url,parsedURL);var subtitle=WebInspector.displayNameForHost(parsedURL.host);var manifestTreeElement=null;var currentAncestor=this.parent;while(currentAncestor&&!currentAncestor.root){if(currentAncestor instanceof WebInspector.ApplicationCacheManifestTreeElement){manifestTreeElement=currentAncestor;break;}
currentAncestor=currentAncestor.parent;}
var subtitleIsDuplicate=subtitle===this._mainTitle||(manifestTreeElement&&manifestTreeElement.subtitle===subtitle);this.subtitle=subtitleIsDuplicate?null:subtitle;}};WebInspector.ApplicationCacheManifestTreeElement=class ApplicationCacheManifestTreeElement extends WebInspector.StorageTreeElement
{constructor(representedObject)
{super("application-cache-manifest","",representedObject);this.hasChildren=true;this.expanded=true;}
get name()
{if(!this._name)
this._generateTitles();return this._name;}
get secondaryName()
{if(!this._secondaryName)
this._generateTitles();return this._secondaryName;}
get categoryName()
{return WebInspector.UIString("Application Cache");}
_generateTitles()
{var parsedURL=parseURL(this.representedObject.manifestURL);this._name=WebInspector.displayNameForURL(this.representedObject.manifestURL,parsedURL);var secondaryName=WebInspector.displayNameForHost(parsedURL.host);this._secondaryName=this._name!==secondaryName?secondaryName:null;}};WebInspector.BezierEditor=class BezierEditor extends WebInspector.Object
{constructor()
{super();this._element=document.createElement("div");this._element.classList.add("bezier-editor");var editorWidth=184;var editorHeight=200;this._padding=25;this._controlHandleRadius=7;this._bezierWidth=editorWidth-(this._controlHandleRadius*2);this._bezierHeight=editorHeight-(this._controlHandleRadius*2)-(this._padding*2);this._bezierPreviewContainer=this._element.createChild("div","bezier-preview");this._bezierPreviewContainer.title=WebInspector.UIString("Restart animation");this._bezierPreviewContainer.addEventListener("mousedown",this._resetPreviewAnimation.bind(this));this._bezierPreview=this._bezierPreviewContainer.createChild("div");this._bezierPreviewTiming=this._element.createChild("div","bezier-preview-timing");this._bezierContainer=this._element.appendChild(createSVGElement("svg"));this._bezierContainer.setAttribute("width",editorWidth);this._bezierContainer.setAttribute("height",editorHeight);this._bezierContainer.classList.add("bezier-container");let svgGroup=this._bezierContainer.appendChild(createSVGElement("g"));svgGroup.setAttribute("transform","translate(0, "+this._padding+")");let linearCurve=svgGroup.appendChild(createSVGElement("line"));linearCurve.classList.add("linear-curve");linearCurve.setAttribute("x1",this._controlHandleRadius);linearCurve.setAttribute("y1",this._bezierHeight+this._controlHandleRadius);linearCurve.setAttribute("x2",this._bezierWidth+this._controlHandleRadius);linearCurve.setAttribute("y2",this._controlHandleRadius);this._bezierCurve=svgGroup.appendChild(createSVGElement("path"));this._bezierCurve.classList.add("bezier-curve");function createControl(x1,y1)
{x1+=this._controlHandleRadius;y1+=this._controlHandleRadius;let line=svgGroup.appendChild(createSVGElement("line"));line.classList.add("control-line");line.setAttribute("x1",x1);line.setAttribute("y1",y1);line.setAttribute("x2",x1);line.setAttribute("y2",y1);let handle=svgGroup.appendChild(createSVGElement("circle"));handle.classList.add("control-handle");return{point:null,line,handle};}
this._inControl=createControl.call(this,0,this._bezierHeight);this._outControl=createControl.call(this,this._bezierWidth,0);this._numberInputContainer=this._element.createChild("div","number-input-container");function createBezierInput(id,{min,max}={})
{let key="_bezier"+id+"Input";this[key]=this._numberInputContainer.createChild("input");this[key].type="number";this[key].step=0.01;if(!isNaN(min))
this[key].min=min;if(!isNaN(max))
this[key].max=max;this[key].addEventListener("input",this.debounce(250)._handleNumberInputInput);this[key].addEventListener("keydown",this._handleNumberInputKeydown.bind(this));}
createBezierInput.call(this,"InX",{min:0,max:1});createBezierInput.call(this,"InY");createBezierInput.call(this,"OutX",{min:0,max:1});createBezierInput.call(this,"OutY");this._selectedControl=null;this._mouseDownPosition=null;this._bezierContainer.addEventListener("mousedown",this);WebInspector.addWindowKeydownListener(this);}
get element()
{return this._element;}
set bezier(bezier)
{if(!bezier)
return;var isCubicBezier=bezier instanceof WebInspector.CubicBezier;if(!isCubicBezier)
return;this._bezier=bezier;this._updateBezierPreview();}
get bezier()
{return this._bezier;}
removeListeners()
{WebInspector.removeWindowKeydownListener(this);}
handleEvent(event)
{switch(event.type){case"mousedown":this._handleMousedown(event);break;case"mousemove":this._handleMousemove(event);break;case"mouseup":this._handleMouseup(event);break;}}
handleKeydownEvent(event)
{if(!this._selectedControl||!this._element.parentNode)
return false;let horizontal=0;let vertical=0;switch(event.keyCode){case WebInspector.KeyboardShortcut.Key.Up.keyCode:vertical=-1;break;case WebInspector.KeyboardShortcut.Key.Right.keyCode:horizontal=1;break;case WebInspector.KeyboardShortcut.Key.Down.keyCode:vertical=1;break;case WebInspector.KeyboardShortcut.Key.Left.keyCode:horizontal=-1;break;default:return false;}
if(event.shiftKey){horizontal*=10;vertical*=10;}
vertical*=this._bezierWidth/100;horizontal*=this._bezierHeight/100;this._selectedControl.point.x=Number.constrain(this._selectedControl.point.x+horizontal,0,this._bezierWidth);this._selectedControl.point.y+=vertical;this._updateControl(this._selectedControl);this._updateValue();return true;}
_handleMousedown(event)
{if(event.button!==0)
return;window.addEventListener("mousemove",this,true);window.addEventListener("mouseup",this,true);this._bezierPreviewContainer.classList.remove("animate");this._bezierPreviewTiming.classList.remove("animate");this._updateControlPointsForMouseEvent(event,true);}
_handleMousemove(event)
{this._updateControlPointsForMouseEvent(event);}
_handleMouseup(event)
{this._selectedControl.handle.classList.remove("selected");this._mouseDownPosition=null;this._triggerPreviewAnimation();window.removeEventListener("mousemove",this,true);window.removeEventListener("mouseup",this,true);}
_updateControlPointsForMouseEvent(event,calculateSelectedControlPoint)
{var point=WebInspector.Point.fromEventInElement(event,this._bezierContainer);point.x=Number.constrain(point.x-this._controlHandleRadius,0,this._bezierWidth);point.y-=this._controlHandleRadius+this._padding;if(calculateSelectedControlPoint){this._mouseDownPosition=point;if(this._inControl.point.distance(point)<this._outControl.point.distance(point))
this._selectedControl=this._inControl;else
this._selectedControl=this._outControl;}
if(event.shiftKey&&this._mouseDownPosition){if(Math.abs(this._mouseDownPosition.x-point.x)>Math.abs(this._mouseDownPosition.y-point.y))
point.y=this._mouseDownPosition.y;else
point.x=this._mouseDownPosition.x;}
this._selectedControl.point=point;this._selectedControl.handle.classList.add("selected");this._updateValue();}
_updateValue()
{function round(num)
{return Math.round(num*100)/100;}
var inValueX=round(this._inControl.point.x/this._bezierWidth);var inValueY=round(1-(this._inControl.point.y/this._bezierHeight));var outValueX=round(this._outControl.point.x/this._bezierWidth);var outValueY=round(1-(this._outControl.point.y/this._bezierHeight));this._bezier=new WebInspector.CubicBezier(inValueX,inValueY,outValueX,outValueY);this._updateBezier();this.dispatchEventToListeners(WebInspector.BezierEditor.Event.BezierChanged,{bezier:this._bezier});}
_updateBezier()
{var r=this._controlHandleRadius;var inControlX=this._inControl.point.x+r;var inControlY=this._inControl.point.y+r;var outControlX=this._outControl.point.x+r;var outControlY=this._outControl.point.y+r;var path=`M ${r} ${this._bezierHeight + r} C ${inControlX} ${inControlY} ${outControlX} ${outControlY} ${this._bezierWidth + r} ${r}`;this._bezierCurve.setAttribute("d",path);this._updateControl(this._inControl);this._updateControl(this._outControl);this._bezierInXInput.value=this._bezier.inPoint.x;this._bezierInYInput.value=this._bezier.inPoint.y;this._bezierOutXInput.value=this._bezier.outPoint.x;this._bezierOutYInput.value=this._bezier.outPoint.y;}
_updateControl(control)
{control.handle.setAttribute("cx",control.point.x+this._controlHandleRadius);control.handle.setAttribute("cy",control.point.y+this._controlHandleRadius);control.line.setAttribute("x2",control.point.x+this._controlHandleRadius);control.line.setAttribute("y2",control.point.y+this._controlHandleRadius);}
_updateBezierPreview()
{this._inControl.point=new WebInspector.Point(this._bezier.inPoint.x*this._bezierWidth,(1-this._bezier.inPoint.y)*this._bezierHeight);this._outControl.point=new WebInspector.Point(this._bezier.outPoint.x*this._bezierWidth,(1-this._bezier.outPoint.y)*this._bezierHeight);this._updateBezier();this._triggerPreviewAnimation();}
_triggerPreviewAnimation()
{this._bezierPreview.style.animationTimingFunction=this._bezier.toString();this._bezierPreviewContainer.classList.add("animate");this._bezierPreviewTiming.classList.add("animate");}
_resetPreviewAnimation()
{var parent=this._bezierPreview.parentNode;parent.removeChild(this._bezierPreview);parent.appendChild(this._bezierPreview);this._element.removeChild(this._bezierPreviewTiming);this._element.appendChild(this._bezierPreviewTiming);}
_handleNumberInputInput(event)
{this._changeBezierForInput(event.target,event.target.value);}
_handleNumberInputKeydown(event)
{let shift=0;if(event.keyIdentifier==="Up")
shift=0.01;else if(event.keyIdentifier==="Down")
shift=-0.01;if(!shift)
return;if(event.shiftKey)
shift*=10;event.preventDefault();this._changeBezierForInput(event.target,parseFloat(event.target.value)+shift);}
_changeBezierForInput(target,value)
{value=Math.round(value*100)/100;switch(target){case this._bezierInXInput:this._bezier.inPoint.x=Number.constrain(value,0,1);break;case this._bezierInYInput:this._bezier.inPoint.y=value;break;case this._bezierOutXInput:this._bezier.outPoint.x=Number.constrain(value,0,1);break;case this._bezierOutYInput:this._bezier.outPoint.y=value;break;default:return;}
this._updateBezierPreview();this.dispatchEventToListeners(WebInspector.BezierEditor.Event.BezierChanged,{bezier:this._bezier});}};WebInspector.BezierEditor.Event={BezierChanged:"bezier-editor-bezier-changed"};WebInspector.BoxModelDetailsSectionRow=class BoxModelDetailsSectionRow extends WebInspector.DetailsSectionRow
{constructor()
{super(WebInspector.UIString("No Box Model Information"));this.element.classList.add("box-model");this._nodeStyles=null;}
get nodeStyles()
{return this._nodeStyles;}
set nodeStyles(nodeStyles)
{if(this._nodeStyles&&this._nodeStyles.computedStyle)
this._nodeStyles.computedStyle.removeEventListener(WebInspector.CSSStyleDeclaration.Event.PropertiesChanged,this._refresh,this);this._nodeStyles=nodeStyles;if(this._nodeStyles&&this._nodeStyles.computedStyle)
this._nodeStyles.computedStyle.addEventListener(WebInspector.CSSStyleDeclaration.Event.PropertiesChanged,this._refresh,this);this._refresh();}
_refresh()
{if(this._ignoreNextRefresh){this._ignoreNextRefresh=false;return;}
this._updateMetrics();}
_getPropertyValueAsPx(style,propertyName)
{return Number(style.propertyForName(propertyName).value.replace(/px$/,"")||0);}
_getBox(computedStyle,componentName)
{var suffix=this._getComponentSuffix(componentName);var left=this._getPropertyValueAsPx(computedStyle,componentName+"-left"+suffix);var top=this._getPropertyValueAsPx(computedStyle,componentName+"-top"+suffix);var right=this._getPropertyValueAsPx(computedStyle,componentName+"-right"+suffix);var bottom=this._getPropertyValueAsPx(computedStyle,componentName+"-bottom"+suffix);return{left,top,right,bottom};}
_getComponentSuffix(componentName)
{return componentName==="border"?"-width":"";}
_highlightDOMNode(showHighlight,mode,event)
{event.stopPropagation();var nodeId=showHighlight?this.nodeStyles.node.id:0;if(nodeId){if(this._highlightMode===mode)
return;this._highlightMode=mode;WebInspector.domTreeManager.highlightDOMNode(nodeId,mode);}else{this._highlightMode=null;WebInspector.domTreeManager.hideDOMNodeHighlight();}
for(var i=0;this._boxElements&&i<this._boxElements.length;++i){var element=this._boxElements[i];if(nodeId&&(mode==="all"||element._name===mode))
element.classList.add("active");else
element.classList.remove("active");}
this.element.classList.toggle("hovered",showHighlight);}
_updateMetrics()
{var metricsElement=document.createElement("div");var style=this._nodeStyles.computedStyle;function createValueElement(type,value,name,propertyName)
{let floatValue=parseFloat(value);let shouldRoundValue=!isNaN(floatValue)&&(floatValue%1!==0);if(isNaN(floatValue))
value=figureDash;let element=document.createElement(type);element.textContent=shouldRoundValue?("~"+Math.round(floatValue*100)/100):value;if(shouldRoundValue)
element.title=value;element.addEventListener("dblclick",this._startEditing.bind(this,element,name,propertyName,style),false);return element;}
function createBoxPartElement(name,side)
{let suffix=this._getComponentSuffix(name);let propertyName=(name!=="position"?name+"-":"")+side+suffix;let value=style.propertyForName(propertyName).value;if(value===""||(name!=="position"&&value==="0px")||(name==="position"&&value==="auto"))
value="";else
value=value.replace(/px$/,"");let element=createValueElement.call(this,"div",value,name,propertyName);element.className=side;return element;}
function createContentAreaElement(name)
{let size=style.propertyForName(name).value.replace(/px$/,"");if(style.propertyForName("box-sizing").value==="border-box"){let borderBox=this._getBox(style,"border");let paddingBox=this._getBox(style,"padding");let[side,oppositeSide]=name==="width"?["left","right"]:["top","bottom"];size=size-borderBox[side]-borderBox[oppositeSide]-paddingBox[side]-paddingBox[oppositeSide];}
return createValueElement.call(this,"span",size,name,name);}
var noMarginDisplayType={"table-cell":true,"table-column":true,"table-column-group":true,"table-footer-group":true,"table-header-group":true,"table-row":true,"table-row-group":true};var noPaddingDisplayType={"table-column":true,"table-column-group":true,"table-footer-group":true,"table-header-group":true,"table-row":true,"table-row-group":true};var noPositionType={"static":true};this._boxElements=[];if(!style.hasProperties()){this.showEmptyMessage();return;}
var previousBox=null;for(let name of["content","padding","border","margin","position"]){if(name==="margin"&&noMarginDisplayType[style.propertyForName("display").value])
continue;if(name==="padding"&&noPaddingDisplayType[style.propertyForName("display").value])
continue;if(name==="position"&&noPositionType[style.propertyForName("position").value])
continue;var boxElement=document.createElement("div");boxElement.className=name;boxElement._name=name;boxElement.addEventListener("mouseover",this._highlightDOMNode.bind(this,true,name==="position"?"all":name),false);this._boxElements.push(boxElement);if(name==="content"){let widthElement=createContentAreaElement.call(this,"width");let heightElement=createContentAreaElement.call(this,"height");boxElement.append(widthElement," \u00D7 ",heightElement);}else{var labelElement=document.createElement("div");labelElement.className="label";labelElement.textContent=name;boxElement.appendChild(labelElement);boxElement.appendChild(createBoxPartElement.call(this,name,"top"));boxElement.appendChild(document.createElement("br"));boxElement.appendChild(createBoxPartElement.call(this,name,"left"));if(previousBox)
boxElement.appendChild(previousBox);boxElement.appendChild(createBoxPartElement.call(this,name,"right"));boxElement.appendChild(document.createElement("br"));boxElement.appendChild(createBoxPartElement.call(this,name,"bottom"));}
previousBox=boxElement;}
metricsElement.appendChild(previousBox);metricsElement.addEventListener("mouseover",this._highlightDOMNode.bind(this,false,""),false);this.hideEmptyMessage();this.element.appendChild(metricsElement);}
_startEditing(targetElement,box,styleProperty,computedStyle)
{if(WebInspector.isBeingEdited(targetElement))
return;
if(targetElement.title)
targetElement.textContent=targetElement.title;var context={box,styleProperty};var boundKeyDown=this._handleKeyDown.bind(this,context,styleProperty);context.keyDownHandler=boundKeyDown;targetElement.addEventListener("keydown",boundKeyDown,false);this._isEditingMetrics=true;var config=new WebInspector.EditingConfig(this._editingCommitted.bind(this),this._editingCancelled.bind(this),context);WebInspector.startEditing(targetElement,config);window.getSelection().setBaseAndExtent(targetElement,0,targetElement,1);}
_alteredFloatNumber(number,event)
{var arrowKeyPressed=event.keyIdentifier==="Up"||event.keyIdentifier==="Down";var changeAmount=1;if(event.shiftKey&&!arrowKeyPressed)
changeAmount=100;else if(event.shiftKey||!arrowKeyPressed)
changeAmount=10;else if(event.altKey)
changeAmount=0.1;if(event.keyIdentifier==="Down"||event.keyIdentifier==="PageDown")
changeAmount*=-1;var result=Number((number+changeAmount).toFixed(6));if(!String(result).match(WebInspector.EditingSupport.NumberRegex))
return null;return result;}
_handleKeyDown(context,styleProperty,event)
{if(!/^(?:Page)?(?:Up|Down)$/.test(event.keyIdentifier))
return;var element=event.currentTarget;var selection=window.getSelection();if(!selection.rangeCount)
return;var selectionRange=selection.getRangeAt(0);if(!selectionRange.commonAncestorContainer.isSelfOrDescendant(element))
return;var originalValue=element.textContent;var wordRange=selectionRange.startContainer.rangeOfWord(selectionRange.startOffset,WebInspector.EditingSupport.StyleValueDelimiters,element);var wordString=wordRange.toString();var matches=WebInspector.EditingSupport.NumberRegex.exec(wordString);var replacementString;if(matches&&matches.length){var prefix=matches[1];var suffix=matches[3];var number=this._alteredFloatNumber(parseFloat(matches[2]),event);if(number===null){return;}
if(styleProperty!=="margin"&&number<0)
number=0;replacementString=prefix+number+suffix;}
if(!replacementString)
return;var replacementTextNode=document.createTextNode(replacementString);wordRange.deleteContents();wordRange.insertNode(replacementTextNode);var finalSelectionRange=document.createRange();finalSelectionRange.setStart(replacementTextNode,0);finalSelectionRange.setEnd(replacementTextNode,replacementString.length);selection.removeAllRanges();selection.addRange(finalSelectionRange);event.handled=true;event.preventDefault();this._ignoreNextRefresh=true;this._applyUserInput(element,replacementString,originalValue,context,false);}
_editingEnded(element,context)
{element.removeEventListener("keydown",context.keyDownHandler,false);this._isEditingMetrics=false;}
_editingCancelled(element,context)
{this._editingEnded(element,context);this._refresh();}
_applyUserInput(element,userInput,previousContent,context,commitEditor)
{if(commitEditor&&userInput===previousContent){this._editingCancelled(element,context);return;}
if(context.box!=="position"&&(!userInput||userInput===figureDash))
userInput="0px";else if(context.box==="position"&&(!userInput||userInput===figureDash))
userInput="auto";userInput=userInput.toLowerCase();if(/^-?(?:\d+(?:\.\d+)?|\.\d+)$/.test(userInput))
userInput+="px";var styleProperty=context.styleProperty;var computedStyle=this._nodeStyles.computedStyle;if(computedStyle.propertyForName("box-sizing").value==="border-box"&&(styleProperty==="width"||styleProperty==="height")){if(!userInput.match(/px$/)){console.error("For elements with box-sizing: border-box, only absolute content area dimensions can be applied");return;}
var borderBox=this._getBox(computedStyle,"border");var paddingBox=this._getBox(computedStyle,"padding");var userValuePx=Number(userInput.replace(/px$/,""));if(isNaN(userValuePx))
return;if(styleProperty==="width")
userValuePx+=borderBox.left+borderBox.right+paddingBox.left+paddingBox.right;else
userValuePx+=borderBox.top+borderBox.bottom+paddingBox.top+paddingBox.bottom;userInput=userValuePx+"px";}
function resolvedNode(object)
{if(!object)
return;function toggleInlineStyleProperty(property,value)
{this.style.setProperty(property,value,"important");}
function didToggle()
{this._nodeStyles.refresh();}
object.callFunction(toggleInlineStyleProperty,[styleProperty,userInput],false,didToggle.bind(this));object.release();}
WebInspector.RemoteObject.resolveNode(this._nodeStyles.node,"",resolvedNode.bind(this));}
_editingCommitted(element,userInput,previousContent,context)
{this._editingEnded(element,context);this._applyUserInput(element,userInput,previousContent,context,true);}};WebInspector.BreakpointActionView=class BreakpointActionView extends WebInspector.Object
{constructor(action,delegate,omitFocus)
{super();this._action=action;this._delegate=delegate;this._element=document.createElement("div");this._element.className="breakpoint-action-block";var header=this._element.appendChild(document.createElement("div"));header.className="breakpoint-action-block-header";var picker=header.appendChild(document.createElement("select"));picker.addEventListener("change",this._pickerChanged.bind(this));for(var key in WebInspector.BreakpointAction.Type){var type=WebInspector.BreakpointAction.Type[key];var option=document.createElement("option");option.textContent=WebInspector.BreakpointActionView.displayStringForType(type);option.selected=this._action.type===type;option.value=type;picker.add(option);}
let buttonContainerElement=header.appendChild(document.createElement("div"));buttonContainerElement.classList.add("breakpoint-action-button-container");let appendActionButton=buttonContainerElement.appendChild(document.createElement("button"));appendActionButton.className="breakpoint-action-append-button";appendActionButton.addEventListener("click",this._appendActionButtonClicked.bind(this));appendActionButton.title=WebInspector.UIString("Add new breakpoint action after this action");let removeActionButton=buttonContainerElement.appendChild(document.createElement("button"));removeActionButton.className="breakpoint-action-remove-button";removeActionButton.addEventListener("click",this._removeAction.bind(this));removeActionButton.title=WebInspector.UIString("Remove this breakpoint action");this._bodyElement=this._element.appendChild(document.createElement("div"));this._bodyElement.className="breakpoint-action-block-body";this._updateBody(omitFocus);}
static displayStringForType(type)
{switch(type){case WebInspector.BreakpointAction.Type.Log:return WebInspector.UIString("Log Message");case WebInspector.BreakpointAction.Type.Evaluate:return WebInspector.UIString("Evaluate JavaScript");case WebInspector.BreakpointAction.Type.Sound:return WebInspector.UIString("Play Sound");case WebInspector.BreakpointAction.Type.Probe:return WebInspector.UIString("Probe Expression");default:return"";}}
get action()
{return this._action;}
get element()
{return this._element;}
_pickerChanged(event)
{var newType=event.target.value;this._action=this._action.breakpoint.recreateAction(newType,this._action);this._updateBody();this._delegate.breakpointActionViewResized(this);}
_appendActionButtonClicked(event)
{var newAction=this._action.breakpoint.createAction(this._action.type,this._action);this._delegate.breakpointActionViewAppendActionView(this,newAction);}
_removeAction()
{this._action.breakpoint.removeAction(this._action);this._delegate.breakpointActionViewRemoveActionView(this);}
_updateBody(omitFocus)
{this._bodyElement.removeChildren();switch(this._action.type){case WebInspector.BreakpointAction.Type.Log:this._bodyElement.hidden=false;var input=this._bodyElement.appendChild(document.createElement("input"));input.placeholder=WebInspector.UIString("Message");input.addEventListener("change",this._logInputChanged.bind(this));input.value=this._action.data||"";input.spellcheck=false;if(!omitFocus)
setTimeout(function(){input.focus();},0);var descriptionElement=this._bodyElement.appendChild(document.createElement("div"));descriptionElement.classList.add("description");descriptionElement.setAttribute("dir","ltr");descriptionElement.textContent=WebInspector.UIString("${expr} = expression");break;case WebInspector.BreakpointAction.Type.Evaluate:case WebInspector.BreakpointAction.Type.Probe:this._bodyElement.hidden=false;var editorElement=this._bodyElement.appendChild(document.createElement("div"));editorElement.classList.add("breakpoint-action-eval-editor");editorElement.classList.add(WebInspector.SyntaxHighlightedStyleClassName);this._codeMirror=WebInspector.CodeMirrorEditor.create(editorElement,{lineWrapping:true,mode:"text/javascript",indentWithTabs:true,indentUnit:4,matchBrackets:true,value:this._action.data||"",});this._codeMirror.on("viewportChange",this._codeMirrorViewportChanged.bind(this));this._codeMirror.on("blur",this._codeMirrorBlurred.bind(this));this._codeMirrorViewport={from:null,to:null};var completionController=new WebInspector.CodeMirrorCompletionController(this._codeMirror);completionController.addExtendedCompletionProvider("javascript",WebInspector.javaScriptRuntimeCompletionProvider);setTimeout(()=>{this._codeMirror.refresh();if(!omitFocus)
this._codeMirror.focus();},0);break;case WebInspector.BreakpointAction.Type.Sound:this._bodyElement.hidden=true;break;default:this._bodyElement.hidden=true;break;}}
_logInputChanged(event)
{this._action.data=event.target.value;}
_codeMirrorBlurred(event)
{this._action.data=(this._codeMirror.getValue()||"").trim();}
_codeMirrorViewportChanged(event,from,to)
{if(this._codeMirrorViewport.from===from&&this._codeMirrorViewport.to===to)
return;this._codeMirrorViewport.from=from;this._codeMirrorViewport.to=to;this._delegate.breakpointActionViewResized(this);}};WebInspector.BreakpointTreeElement=class BreakpointTreeElement extends WebInspector.GeneralTreeElement
{constructor(breakpoint,className,title)
{if(!className)
className=WebInspector.BreakpointTreeElement.GenericLineIconStyleClassName;super(["breakpoint",className],title,null,breakpoint,false);this._breakpoint=breakpoint;this._probeSet=null;this._listenerSet=new WebInspector.EventListenerSet(this,"BreakpointTreeElement listeners");if(!title)
this._listenerSet.register(breakpoint,WebInspector.Breakpoint.Event.LocationDidChange,this._breakpointLocationDidChange);this._listenerSet.register(breakpoint,WebInspector.Breakpoint.Event.DisabledStateDidChange,this._updateStatus);this._listenerSet.register(breakpoint,WebInspector.Breakpoint.Event.AutoContinueDidChange,this._updateStatus);this._listenerSet.register(breakpoint,WebInspector.Breakpoint.Event.ResolvedStateDidChange,this._updateStatus);this._listenerSet.register(WebInspector.debuggerManager,WebInspector.DebuggerManager.Event.BreakpointsEnabledDidChange,this._updateStatus);this._listenerSet.register(WebInspector.probeManager,WebInspector.ProbeManager.Event.ProbeSetAdded,this._probeSetAdded);this._listenerSet.register(WebInspector.probeManager,WebInspector.ProbeManager.Event.ProbeSetRemoved,this._probeSetRemoved);this._statusImageElement=document.createElement("img");this._statusImageElement.className=WebInspector.BreakpointTreeElement.StatusImageElementStyleClassName;this._listenerSet.register(this._statusImageElement,"mousedown",this._statusImageElementMouseDown);this._listenerSet.register(this._statusImageElement,"click",this._statusImageElementClicked);if(!title)
this._updateTitles();this._updateStatus();this.status=this._statusImageElement;this._iconAnimationLayerElement=document.createElement("span");this.iconElement.appendChild(this._iconAnimationLayerElement);}
get breakpoint()
{return this._breakpoint;}
get filterableData()
{return{text:[this.breakpoint.contentIdentifier]};}
ondelete()
{if(!WebInspector.debuggerManager.isBreakpointRemovable(this._breakpoint))
return false;
this.__deletedViaDeleteKeyboardShortcut=true;WebInspector.debuggerManager.removeBreakpoint(this._breakpoint);return true;}
onenter()
{this._breakpoint.cycleToNextMode();return true;}
onspace()
{this._breakpoint.cycleToNextMode();return true;}
onattach()
{super.onattach();this._listenerSet.install();for(var probeSet of WebInspector.probeManager.probeSets)
if(probeSet.breakpoint===this._breakpoint)
this._addProbeSet(probeSet);}
ondetach()
{super.ondetach();this._listenerSet.uninstall();if(this._probeSet)
this._removeProbeSet(this._probeSet);}
populateContextMenu(contextMenu,event)
{WebInspector.breakpointPopoverController.appendContextMenuItems(contextMenu,this._breakpoint,this._statusImageElement);super.populateContextMenu(contextMenu,event);}
removeStatusImage()
{this._statusImageElement.remove();this._statusImageElement=null;}
_updateTitles()
{var sourceCodeLocation=this._breakpoint.sourceCodeLocation;var displayLineNumber=sourceCodeLocation.displayLineNumber;var displayColumnNumber=sourceCodeLocation.displayColumnNumber;if(displayColumnNumber>0)
this.mainTitle=WebInspector.UIString("Line %d:%d").format(displayLineNumber+1,displayColumnNumber+1);else
this.mainTitle=WebInspector.UIString("Line %d").format(displayLineNumber+1);if(sourceCodeLocation.hasMappedLocation()){this.subtitle=sourceCodeLocation.formattedLocationString();if(sourceCodeLocation.hasFormattedLocation())
this.subtitleElement.classList.add(WebInspector.BreakpointTreeElement.FormattedLocationStyleClassName);else
this.subtitleElement.classList.remove(WebInspector.BreakpointTreeElement.FormattedLocationStyleClassName);this.tooltip=this.mainTitle+" \u2014 "+WebInspector.UIString("originally %s").format(sourceCodeLocation.originalLocationString());}}
_updateStatus()
{if(!this._statusImageElement)
return;if(this._breakpoint.disabled)
this._statusImageElement.classList.add(WebInspector.BreakpointTreeElement.StatusImageDisabledStyleClassName);else
this._statusImageElement.classList.remove(WebInspector.BreakpointTreeElement.StatusImageDisabledStyleClassName);if(this._breakpoint.autoContinue)
this._statusImageElement.classList.add(WebInspector.BreakpointTreeElement.StatusImageAutoContinueStyleClassName);else
this._statusImageElement.classList.remove(WebInspector.BreakpointTreeElement.StatusImageAutoContinueStyleClassName);if(this._breakpoint.resolved&&WebInspector.debuggerManager.breakpointsEnabled)
this._statusImageElement.classList.add(WebInspector.BreakpointTreeElement.StatusImageResolvedStyleClassName);else
this._statusImageElement.classList.remove(WebInspector.BreakpointTreeElement.StatusImageResolvedStyleClassName);}
_addProbeSet(probeSet)
{this._probeSet=probeSet;probeSet.addEventListener(WebInspector.ProbeSet.Event.SamplesCleared,this._samplesCleared,this);probeSet.dataTable.addEventListener(WebInspector.ProbeSetDataTable.Event.FrameInserted,this._dataUpdated,this);}
_removeProbeSet(probeSet)
{probeSet.removeEventListener(WebInspector.ProbeSet.Event.SamplesCleared,this._samplesCleared,this);probeSet.dataTable.removeEventListener(WebInspector.ProbeSetDataTable.Event.FrameInserted,this._dataUpdated,this);this._probeSet=null;}
_probeSetAdded(event)
{var probeSet=event.data.probeSet;if(probeSet.breakpoint===this._breakpoint)
this._addProbeSet(probeSet);}
_probeSetRemoved(event)
{var probeSet=event.data.probeSet;if(probeSet.breakpoint===this._breakpoint)
this._removeProbeSet(probeSet);}
_samplesCleared(event)
{var oldTable=event.data.oldTable;oldTable.removeEventListener(WebInspector.ProbeSetDataTable.Event.FrameInserted,this._dataUpdated,this);this._probeSet.dataTable.addEventListener(WebInspector.ProbeSetDataTable.Event.FrameInserted,this._dataUpdated,this);}
_dataUpdated()
{if(this.element.classList.contains(WebInspector.BreakpointTreeElement.ProbeDataUpdatedStyleClassName)){clearTimeout(this._removeIconAnimationTimeoutIdentifier);this.element.classList.remove(WebInspector.BreakpointTreeElement.ProbeDataUpdatedStyleClassName);window.requestAnimationFrame(this._dataUpdated.bind(this));return;}
this.element.classList.add(WebInspector.BreakpointTreeElement.ProbeDataUpdatedStyleClassName);this._removeIconAnimationTimeoutIdentifier=setTimeout(()=>{this.element.classList.remove(WebInspector.BreakpointTreeElement.ProbeDataUpdatedStyleClassName);},WebInspector.BreakpointTreeElement.ProbeDataUpdatedAnimationDuration);}
_breakpointLocationDidChange(event)
{if(event.data.oldDisplaySourceCode===this._breakpoint.displaySourceCode)
return;this._updateTitles();}
_statusImageElementMouseDown(event)
{event.stopPropagation();}
_statusImageElementClicked(event)
{this._breakpoint.cycleToNextMode();}};WebInspector.BreakpointTreeElement.GenericLineIconStyleClassName="breakpoint-generic-line-icon";WebInspector.BreakpointTreeElement.StatusImageElementStyleClassName="status-image";WebInspector.BreakpointTreeElement.StatusImageResolvedStyleClassName="resolved";WebInspector.BreakpointTreeElement.StatusImageAutoContinueStyleClassName="auto-continue";WebInspector.BreakpointTreeElement.StatusImageDisabledStyleClassName="disabled";WebInspector.BreakpointTreeElement.FormattedLocationStyleClassName="formatted-location";WebInspector.BreakpointTreeElement.ProbeDataUpdatedStyleClassName="data-updated";WebInspector.BreakpointTreeElement.ProbeDataUpdatedAnimationDuration=400;WebInspector.ButtonToolbarItem=class ButtonToolbarItem extends WebInspector.ButtonNavigationItem
{constructor(identifier,toolTip,label,image,role)
{super(identifier,toolTip,image,16,16,role);if(typeof label==="string"){this._labelElement=document.createElement("div");this._labelElement.className=WebInspector.ButtonToolbarItem.LabelStyleClassName;this._element.appendChild(this._labelElement);this.label=label;}}
get label()
{return this._labelElement.textContent;}
set label(newLabel)
{if(!newLabel||!this._labelElement)
return;this._labelElement.textContent=newLabel;}};WebInspector.ButtonToolbarItem.LabelStyleClassName="label";WebInspector.CSSStyleDeclarationSection=class CSSStyleDeclarationSection extends WebInspector.Object
{constructor(delegate,style)
{super();this._delegate=delegate||null;this._style=style||null;this._selectorElements=[];this._ruleDisabled=false;this._hasInvalidSelector=false;this._element=document.createElement("div");this._element.classList.add("style-declaration-section");new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"S",this._save.bind(this),this._element);new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,"S",this._save.bind(this),this._element);this._headerElement=document.createElement("div");this._headerElement.classList.add("header");if(!style.editable){let lockedIconElement=this._headerElement.createChild("img","locked-icon");let styleLabel;if(style.ownerRule&&style.ownerRule.type===WebInspector.CSSStyleSheet.Type.UserAgent)
styleLabel=WebInspector.UIString("User Agent Stylesheet");else
styleLabel=WebInspector.UIString("Style rule");lockedIconElement.title=WebInspector.UIString("%s cannot be modified").format(styleLabel);}
this._iconElement=this._headerElement.createChild("img","icon");if(this.selectorEditable){this._selectorInput=this._headerElement.createChild("textarea");this._selectorInput.spellcheck=false;this._selectorInput.dir="ltr";this._selectorInput.tabIndex=-1;this._selectorInput.addEventListener("mouseover",this._handleMouseOver.bind(this));this._selectorInput.addEventListener("mousemove",this._handleMouseMove.bind(this));this._selectorInput.addEventListener("mouseout",this._handleMouseOut.bind(this));this._selectorInput.addEventListener("keydown",this._handleKeyDown.bind(this));this._selectorInput.addEventListener("keypress",this._handleKeyPress.bind(this));this._selectorInput.addEventListener("input",this._handleInput.bind(this));this._selectorInput.addEventListener("paste",this._handleSelectorPaste.bind(this));this._selectorInput.addEventListener("blur",this._handleBlur.bind(this));}
this._selectorElement=this._headerElement.createChild("span","selector");if(!this.selectorEditable){this._selectorElement.addEventListener("mouseover",this._handleMouseOver.bind(this));this._selectorElement.addEventListener("mouseout",this._handleMouseOut.bind(this));}
this._originElement=this._headerElement.createChild("span","origin");this._propertiesElement=document.createElement("div");this._propertiesElement.classList.add("properties");this._editorActive=false;this._propertiesTextEditor=new WebInspector.CSSStyleDeclarationTextEditor(this,style);this._propertiesTextEditor.addEventListener(WebInspector.CSSStyleDeclarationTextEditor.Event.ContentChanged,this._editorContentChanged.bind(this));this._propertiesTextEditor.addEventListener(WebInspector.CSSStyleDeclarationTextEditor.Event.Blurred,this._editorBlurred.bind(this));this._propertiesElement.appendChild(this._propertiesTextEditor.element);this._element.appendChild(this._headerElement);this._element.appendChild(this._propertiesElement);let iconClassName=null;switch(style.type){case WebInspector.CSSStyleDeclaration.Type.Rule:if(style.inherited)
iconClassName=WebInspector.CSSStyleDeclarationSection.InheritedStyleRuleIconStyleClassName;else if(style.ownerRule.type===WebInspector.CSSStyleSheet.Type.Author)
iconClassName=WebInspector.CSSStyleDeclarationSection.AuthorStyleRuleIconStyleClassName;else if(style.ownerRule.type===WebInspector.CSSStyleSheet.Type.User)
iconClassName=WebInspector.CSSStyleDeclarationSection.UserStyleRuleIconStyleClassName;else if(style.ownerRule.type===WebInspector.CSSStyleSheet.Type.UserAgent)
iconClassName=WebInspector.CSSStyleDeclarationSection.UserAgentStyleRuleIconStyleClassName;else if(style.ownerRule.type===WebInspector.CSSStyleSheet.Type.Inspector)
iconClassName=WebInspector.CSSStyleDeclarationSection.InspectorStyleRuleIconStyleClassName;break;case WebInspector.CSSStyleDeclaration.Type.Inline:case WebInspector.CSSStyleDeclaration.Type.Attribute:if(style.inherited)
iconClassName=WebInspector.CSSStyleDeclarationSection.InheritedElementStyleRuleIconStyleClassName;else
iconClassName=WebInspector.DOMTreeElementPathComponent.DOMElementIconStyleClassName;break;}
if(style.editable){this._iconElement.classList.add("toggle-able");this._iconElement.title=WebInspector.UIString("Comment All Properties");this._iconElement.addEventListener("click",this._handleIconElementClicked.bind(this));}
this._element.classList.add(iconClassName);if(!style.editable)
this._element.classList.add(WebInspector.CSSStyleDeclarationSection.LockedStyleClassName);else if(style.ownerRule)
this._style.ownerRule.addEventListener(WebInspector.CSSRule.Event.SelectorChanged,this._updateSelectorIcon.bind(this));else
this._element.classList.add(WebInspector.CSSStyleDeclarationSection.SelectorLockedStyleClassName);this.refresh();this._headerElement.addEventListener("contextmenu",this._handleContextMenuEvent.bind(this));}
get element()
{return this._element;}
get style()
{return this._style;}
get lastInGroup()
{return this._element.classList.contains(WebInspector.CSSStyleDeclarationSection.LastInGroupStyleClassName);}
set lastInGroup(last)
{if(last)
this._element.classList.add(WebInspector.CSSStyleDeclarationSection.LastInGroupStyleClassName);else
this._element.classList.remove(WebInspector.CSSStyleDeclarationSection.LastInGroupStyleClassName);}
get focused()
{return this._propertiesTextEditor.focused;}
focus()
{this._propertiesTextEditor.focus();}
refresh()
{this._selectorElement.removeChildren();this._originElement.removeChildren();this._selectorElements=[];this._originElement.append(` ${emDash} `);function appendSelector(selector,matched)
{let selectorElement=document.createElement("span");selectorElement.textContent=selector.text;if(matched)
selectorElement.classList.add(WebInspector.CSSStyleDeclarationSection.MatchedSelectorElementStyleClassName);let specificity=selector.specificity;if(specificity){let tooltip=WebInspector.UIString("Specificity: (%d, %d, %d)").format(specificity[0],specificity[1],specificity[2]);if(selector.dynamic){tooltip+="\n";if(this._style.inherited)
tooltip+=WebInspector.UIString("Dynamically calculated for the parent element");else
tooltip+=WebInspector.UIString("Dynamically calculated for the selected element");}
selectorElement.title=tooltip;}else if(selector.dynamic){let tooltip=WebInspector.UIString("Specificity: No value for selected element");tooltip+="\n";tooltip+=WebInspector.UIString("Dynamically calculated for the selected element and did not match");selectorElement.title=tooltip;}
this._selectorElement.appendChild(selectorElement);this._selectorElements.push(selectorElement);}
function appendSelectorTextKnownToMatch(selectorText)
{let selectorElement=document.createElement("span");selectorElement.textContent=selectorText;selectorElement.classList.add(WebInspector.CSSStyleDeclarationSection.MatchedSelectorElementStyleClassName);this._selectorElement.appendChild(selectorElement);}
switch(this._style.type){case WebInspector.CSSStyleDeclaration.Type.Rule:let selectors=this._style.ownerRule.selectors;let matchedSelectorIndices=this._style.ownerRule.matchedSelectorIndices;let alwaysMatch=!matchedSelectorIndices.length;if(selectors.length){let hasMatchingPseudoElementSelector=false;for(let i=0;i<selectors.length;++i){appendSelector.call(this,selectors[i],alwaysMatch||matchedSelectorIndices.includes(i));if(i<selectors.length-1)
this._selectorElement.append(", ");if(matchedSelectorIndices.includes(i)&&selectors[i].isPseudoElementSelector())
hasMatchingPseudoElementSelector=true;}
this._element.classList.toggle(WebInspector.CSSStyleDeclarationSection.PseudoElementSelectorStyleClassName,hasMatchingPseudoElementSelector);}else
appendSelectorTextKnownToMatch.call(this,this._style.ownerRule.selectorText);if(this._style.ownerRule.sourceCodeLocation){let options={dontFloat:true,ignoreNetworkTab:true,ignoreSearchTab:true,};if(this._style.ownerStyleSheet.isInspectorStyleSheet()){options.nameStyle=WebInspector.SourceCodeLocation.NameStyle.None;options.prefix=WebInspector.UIString("Inspector Style Sheet")+":";}
let sourceCodeLink=WebInspector.createSourceCodeLocationLink(this._style.ownerRule.sourceCodeLocation,options);this._originElement.appendChild(sourceCodeLink);}else{let originString;switch(this._style.ownerRule.type){case WebInspector.CSSStyleSheet.Type.Author:originString=WebInspector.UIString("Author Stylesheet");break;case WebInspector.CSSStyleSheet.Type.User:originString=WebInspector.UIString("User Stylesheet");break;case WebInspector.CSSStyleSheet.Type.UserAgent:originString=WebInspector.UIString("User Agent Stylesheet");break;case WebInspector.CSSStyleSheet.Type.Inspector:originString=WebInspector.UIString("Web Inspector");break;}
if(originString)
this._originElement.append(originString);}
break;case WebInspector.CSSStyleDeclaration.Type.Inline:appendSelectorTextKnownToMatch.call(this,this._style.node.displayName);this._originElement.append(WebInspector.UIString("Style Attribute"));break;case WebInspector.CSSStyleDeclaration.Type.Attribute:appendSelectorTextKnownToMatch.call(this,this._style.node.displayName);this._originElement.append(WebInspector.UIString("HTML Attributes"));break;}
this._updateSelectorIcon();if(this._selectorInput)
this._selectorInput.value=this._selectorElement.textContent;}
refreshEditor()
{this._propertiesTextEditor.refresh();}
highlightProperty(property)
{if(this._propertiesTextEditor.highlightProperty(property)){this._element.scrollIntoView();return true;}
return false;}
findMatchingPropertiesAndSelectors(needle)
{this._element.classList.remove(WebInspector.CSSStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName,WebInspector.CSSStyleDetailsSidebarPanel.FilterMatchingSectionHasLabelClassName);var hasMatchingSelector=false;for(var selectorElement of this._selectorElements){selectorElement.classList.remove(WebInspector.CSSStyleDetailsSidebarPanel.FilterMatchSectionClassName);if(needle&&selectorElement.textContent.includes(needle)){selectorElement.classList.add(WebInspector.CSSStyleDetailsSidebarPanel.FilterMatchSectionClassName);hasMatchingSelector=true;}}
if(!needle){this._propertiesTextEditor.resetFilteredProperties();return false;}
var hasMatchingProperty=this._propertiesTextEditor.findMatchingProperties(needle);if(!hasMatchingProperty&&!hasMatchingSelector){this._element.classList.add(WebInspector.CSSStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName);return false;}
return true;}
updateLayout()
{this._propertiesTextEditor.updateLayout();}
clearSelection()
{this._propertiesTextEditor.clearSelection();}
cssStyleDeclarationTextEditorFocused()
{if(typeof this._delegate.cssStyleDeclarationSectionEditorFocused==="function")
this._delegate.cssStyleDeclarationSectionEditorFocused(this);}
cssStyleDeclarationTextEditorSwitchRule(reverse)
{if(!this._delegate)
return;if(reverse&&typeof this._delegate.cssStyleDeclarationSectionEditorPreviousRule==="function")
this._delegate.cssStyleDeclarationSectionEditorPreviousRule(this);else if(!reverse&&typeof this._delegate.cssStyleDeclarationSectionEditorNextRule==="function")
this._delegate.cssStyleDeclarationSectionEditorNextRule(this);}
focusRuleSelector(reverse)
{if(!this.selectorEditable&&!this.locked){this.focus();return;}
if(this.locked){this.cssStyleDeclarationTextEditorSwitchRule(reverse);return;}
let selection=window.getSelection();selection.removeAllRanges();this._element.scrollIntoViewIfNeeded();if(this._selectorInput){this._selectorInput.focus();this._selectorInput.selectionStart=0;this._selectorInput.selectionEnd=this._selectorInput.value.length;}else{let range=document.createRange();range.selectNodeContents(this._selectorElement);selection.addRange(range);}}
selectLastProperty()
{this._propertiesTextEditor.selectLastProperty();}
get selectorEditable()
{return!this.locked&&this._style.ownerRule;}
get locked()
{return!this._style.editable;}
get editorActive()
{return this._editorActive;}
get _currentSelectorText()
{let selectorText=this.selectorEditable?this._selectorInput.value:this._selectorElement.textContent;if(!selectorText||!selectorText.length){if(!this._style.ownerRule)
return"";selectorText=this._style.ownerRule.selectorText;}
return selectorText.trim();}
_handleSelectorPaste(event)
{if(this._style.type===WebInspector.CSSStyleDeclaration.Type.Inline||!this._style.ownerRule)
return;if(!event||!event.clipboardData)
return;let data=event.clipboardData.getData("text/plain");if(!data)
return;function parseTextForRule(text)
{let containsBraces=/[\{\}]/;if(!containsBraces.test(text))
return[];let match=text.match(/([^{]+){([\s\S]*)}/);if(!match)
return[];return containsBraces.test(match[2])?parseTextForRule(match[2]):match;}
let[selector,value]=parseTextForRule(data);if(!selector||!value)
return;this._style.nodeStyles.changeRule(this._style.ownerRule,selector.trim(),value);event.preventDefault();}
_handleContextMenuEvent(event)
{if(window.getSelection().toString().length)
return;let contextMenu=WebInspector.ContextMenu.createFromEvent(event);contextMenu.appendItem(WebInspector.UIString("Copy Rule"),()=>{InspectorFrontendHost.copyText(this._style.generateCSSRuleString());});if(this._style.inherited)
return;contextMenu.appendItem(WebInspector.UIString("Duplicate Selector"),()=>{if(this._delegate&&typeof this._delegate.focusEmptySectionWithStyle==="function"){let existingRules=this._style.nodeStyles.rulesForSelector(this._currentSelectorText);for(let rule of existingRules){if(this._delegate.focusEmptySectionWithStyle(rule.style))
return;}}
this._style.nodeStyles.addRule(this._currentSelectorText);});if(WebInspector.CSSStyleManager.PseudoElementNames.some((className)=>this._style.selectorText.includes(":"+className)))
return;if(WebInspector.CSSStyleManager.ForceablePseudoClasses.every((className)=>!this._style.selectorText.includes(":"+className))){contextMenu.appendSeparator();for(let pseudoClass of WebInspector.CSSStyleManager.ForceablePseudoClasses){if(pseudoClass==="visited"&&this._style.node.nodeName()!=="A")
continue;let pseudoClassSelector=":"+pseudoClass;contextMenu.appendItem(WebInspector.UIString("Add %s Rule").format(pseudoClassSelector),()=>{this._style.node.setPseudoClassEnabled(pseudoClass,true);let selector;if(this._style.ownerRule)
selector=this._style.ownerRule.selectors.map((selector)=>selector.text+pseudoClassSelector).join(", ");else
selector=this._currentSelectorText+pseudoClassSelector;this._style.nodeStyles.addRule(selector);});}}
contextMenu.appendSeparator();for(let pseudoElement of WebInspector.CSSStyleManager.PseudoElementNames){let pseudoElementSelector="::"+pseudoElement;const styleText="content: \"\";";let existingSection=null;if(this._delegate&&typeof this._delegate.sectionForStyle==="function"){let existingRules=this._style.nodeStyles.rulesForSelector(this._currentSelectorText+pseudoElementSelector);if(existingRules.length){
existingSection=this._delegate.sectionForStyle(existingRules[0].style);}}
let title=existingSection?WebInspector.UIString("Focus %s Rule"):WebInspector.UIString("Create %s Rule");contextMenu.appendItem(title.format(pseudoElementSelector),()=>{if(existingSection){existingSection.focus();return;}
let selector;if(this._style.ownerRule)
selector=this._style.ownerRule.selectors.map((selector)=>selector.text+pseudoElementSelector).join(", ");else
selector=this._currentSelectorText+pseudoElementSelector;this._style.nodeStyles.addRule(selector,styleText);});}}
_handleIconElementClicked()
{if(this._hasInvalidSelector){this.refresh();return;}
this._ruleDisabled=this._ruleDisabled?!this._propertiesTextEditor.uncommentAllProperties():this._propertiesTextEditor.commentAllProperties();this._iconElement.title=this._ruleDisabled?WebInspector.UIString("Uncomment All Properties"):WebInspector.UIString("Comment All Properties");this._element.classList.toggle("rule-disabled",this._ruleDisabled);}
_highlightNodesWithSelector()
{if(!this._style.ownerRule){WebInspector.domTreeManager.highlightDOMNode(this._style.node.id);return;}
WebInspector.domTreeManager.highlightSelector(this._currentSelectorText,this._style.node.ownerDocument.frameIdentifier);}
_hideDOMNodeHighlight()
{WebInspector.domTreeManager.hideDOMNodeHighlight();}
_handleMouseOver(event)
{this._highlightNodesWithSelector();}
_handleMouseMove(event)
{if(this._hasInvalidSelector)
return;
for(let element of this._selectorElements){let{top,right,bottom,left}=element.getBoundingClientRect();if(event.clientX>=left&&event.clientX<=right&&event.clientY>=top&&event.clientY<=bottom){this._selectorInput.title=element.title;return;}}
this._selectorInput.title="";}
_handleMouseOut(event)
{this._hideDOMNodeHighlight();}
_save(event)
{event.preventDefault();event.stopPropagation();if(this._style.type!==WebInspector.CSSStyleDeclaration.Type.Rule){InspectorFrontendHost.beep();return;}
let sourceCode=this._style.ownerRule.sourceCodeLocation.sourceCode;if(sourceCode.type!==WebInspector.Resource.Type.Stylesheet){InspectorFrontendHost.beep();return;}
var url;if(sourceCode.urlComponents.scheme==="data"){let mainResource=WebInspector.frameResourceManager.mainFrame.mainResource;let pathDirectory=mainResource.url.slice(0,-mainResource.urlComponents.lastPathComponent.length);url=pathDirectory+"base64.css";}else
url=sourceCode.url;const saveAs=event.shiftKey;WebInspector.saveDataToFile({url:url,content:sourceCode.content},saveAs);}
_handleKeyDown(event)
{if(event.keyCode===WebInspector.KeyboardShortcut.Key.Enter.keyCode){event.preventDefault();this.focus();return;}
if(event.keyCode!==WebInspector.KeyboardShortcut.Key.Tab.keyCode){this._highlightNodesWithSelector();return;}
if(event.shiftKey&&this._delegate&&typeof this._delegate.cssStyleDeclarationSectionEditorPreviousRule==="function"){event.preventDefault();this._delegate.cssStyleDeclarationSectionEditorPreviousRule(this,true);return;}
if(!event.metaKey){event.preventDefault();this.focus();this._propertiesTextEditor.selectFirstProperty();return;}}
_handleKeyPress(event)
{if(!event.altGraphKey&&!event.altKey&&!event.ctrlKey&&!event.metaKey){
this._selectorElement.append(String.fromCharCode(event.keyCode));}}
_handleInput(event)
{this._selectorElement.textContent=this._selectorInput.value;this._highlightNodesWithSelector();}
_handleBlur(event)
{this._hideDOMNodeHighlight();let newSelectorText=this._currentSelectorText.trim();if(!newSelectorText){this.refresh();return;}
if(event.relatedTarget&&event.relatedTarget.isDescendant(this.element)){this._editorActive=true;this.focus();}
this._style.ownerRule.selectorText=newSelectorText;}
_updateSelectorIcon(event)
{if(!this._style.ownerRule||!this._style.editable)
return;this._hasInvalidSelector=event&&event.data&&!event.data.valid;this._element.classList.toggle("invalid-selector",!!this._hasInvalidSelector);if(this._hasInvalidSelector){this._iconElement.title=WebInspector.UIString("The selector “%s” is invalid.\nClick to revert to the previous selector.").format(this._selectorElement.textContent.trim());this._selectorInput.title=WebInspector.UIString("Using previous selector “%s”").format(this._style.ownerRule.selectorText);return;}
this._iconElement.title=this._ruleDisabled?WebInspector.UIString("Uncomment All Properties"):WebInspector.UIString("Comment All Properties");this._selectorInput.title="";}
_editorContentChanged(event)
{this._editorActive=true;}
_editorBlurred(event)
{this._editorActive=false;this.dispatchEventToListeners(WebInspector.CSSStyleDeclarationSection.Event.Blurred);}};WebInspector.CSSStyleDeclarationSection.Event={Blurred:"css-style-declaration-sections-blurred"};WebInspector.CSSStyleDeclarationSection.LockedStyleClassName="locked";WebInspector.CSSStyleDeclarationSection.SelectorLockedStyleClassName="selector-locked";WebInspector.CSSStyleDeclarationSection.LastInGroupStyleClassName="last-in-group";WebInspector.CSSStyleDeclarationSection.MatchedSelectorElementStyleClassName="matched";WebInspector.CSSStyleDeclarationSection.PseudoElementSelectorStyleClassName="pseudo-element-selector";WebInspector.CSSStyleDeclarationSection.AuthorStyleRuleIconStyleClassName="author-style-rule-icon";WebInspector.CSSStyleDeclarationSection.UserStyleRuleIconStyleClassName="user-style-rule-icon";WebInspector.CSSStyleDeclarationSection.UserAgentStyleRuleIconStyleClassName="user-agent-style-rule-icon";WebInspector.CSSStyleDeclarationSection.InspectorStyleRuleIconStyleClassName="inspector-style-rule-icon";WebInspector.CSSStyleDeclarationSection.InheritedStyleRuleIconStyleClassName="inherited-style-rule-icon";WebInspector.CSSStyleDeclarationSection.InheritedElementStyleRuleIconStyleClassName="inherited-element-style-rule-icon";WebInspector.CSSStyleDeclarationTextEditor=class CSSStyleDeclarationTextEditor extends WebInspector.View
{constructor(delegate,style)
{super();this.element.classList.add(WebInspector.CSSStyleDeclarationTextEditor.StyleClassName);this.element.classList.add(WebInspector.SyntaxHighlightedStyleClassName);this.element.addEventListener("mousedown",this._handleMouseDown.bind(this),true);this.element.addEventListener("mouseup",this._handleMouseUp.bind(this));this._mouseDownCursorPosition=null;this._propertyVisibilityMode=WebInspector.CSSStyleDeclarationTextEditor.PropertyVisibilityMode.ShowAll;this._showsImplicitProperties=true;this._alwaysShowPropertyNames={};this._filterResultPropertyNames=null;this._sortProperties=false;this._hasActiveInlineSwatchEditor=false;this._linePrefixWhitespace="";this._delegate=delegate||null;this._codeMirror=WebInspector.CodeMirrorEditor.create(this.element,{readOnly:true,lineWrapping:true,mode:"css-rule",electricChars:false,indentWithTabs:false,indentUnit:4,smartIndent:false,matchBrackets:true,autoCloseBrackets:true});this._codeMirror.addKeyMap({"Enter":this._handleEnterKey.bind(this),"Shift-Enter":this._insertNewlineAfterCurrentLine.bind(this),"Shift-Tab":this._handleShiftTabKey.bind(this),"Tab":this._handleTabKey.bind(this)});this._completionController=new WebInspector.CodeMirrorCompletionController(this._codeMirror,this);this._tokenTrackingController=new WebInspector.CodeMirrorTokenTrackingController(this._codeMirror,this);this._completionController.noEndingSemicolon=true;this._jumpToSymbolTrackingModeEnabled=false;this._tokenTrackingController.classNameForHighlightedRange=WebInspector.CodeMirrorTokenTrackingController.JumpToSymbolHighlightStyleClassName;this._tokenTrackingController.mouseOverDelayDuration=0;this._tokenTrackingController.mouseOutReleaseDelayDuration=0;this._tokenTrackingController.mode=WebInspector.CodeMirrorTokenTrackingController.Mode.NonSymbolTokens;this._codeMirror.on("change",this._contentChanged.bind(this));this._codeMirror.on("blur",this._editorBlured.bind(this));this._codeMirror.on("beforeChange",this._handleBeforeChange.bind(this));if(typeof this._delegate.cssStyleDeclarationTextEditorFocused==="function")
this._codeMirror.on("focus",this._editorFocused.bind(this));this.style=style;this._shownProperties=[];WebInspector.settings.stylesShowInlineWarnings.addEventListener(WebInspector.Setting.Event.Changed,this.refresh,this);}
get delegate(){return this._delegate;}
set delegate(delegate)
{this._delegate=delegate||null;}
get style(){return this._style;}
set style(style)
{if(this._style===style)
return;if(this._style){this._style.removeEventListener(WebInspector.CSSStyleDeclaration.Event.PropertiesChanged,this._propertiesChanged,this);WebInspector.notifications.removeEventListener(WebInspector.Notification.GlobalModifierKeysDidChange,this._updateJumpToSymbolTrackingMode,this);}
this._style=style||null;if(this._style){this._style.addEventListener(WebInspector.CSSStyleDeclaration.Event.PropertiesChanged,this._propertiesChanged,this);WebInspector.notifications.addEventListener(WebInspector.Notification.GlobalModifierKeysDidChange,this._updateJumpToSymbolTrackingMode,this);}
this._updateJumpToSymbolTrackingMode();this._resetContent();}
get shownProperties(){return this._shownProperties;}
get focused()
{return this._codeMirror.getWrapperElement().classList.contains("CodeMirror-focused");}
get alwaysShowPropertyNames(){return Object.keys(this._alwaysShowPropertyNames);}
set alwaysShowPropertyNames(alwaysShowPropertyNames)
{this._alwaysShowPropertyNames=(alwaysShowPropertyNames||[]).keySet();this._resetContent();}
get propertyVisibilityMode(){return this._propertyVisibilityMode;}
set propertyVisibilityMode(propertyVisibilityMode)
{if(this._propertyVisibilityMode===propertyVisibilityMode)
return;this._propertyVisibilityMode=propertyVisibilityMode;this._resetContent();}
get showsImplicitProperties(){return this._showsImplicitProperties;}
set showsImplicitProperties(showsImplicitProperties)
{if(this._showsImplicitProperties===showsImplicitProperties)
return;this._showsImplicitProperties=showsImplicitProperties;this._resetContent();}
get sortProperties(){return this._sortProperties;}
set sortProperties(sortProperties)
{if(this._sortProperties===sortProperties)
return;this._sortProperties=sortProperties;this._resetContent();}
focus()
{this._codeMirror.focus();}
refresh()
{this._resetContent();}
highlightProperty(property)
{function propertiesMatch(cssProperty)
{if(cssProperty.enabled&&!cssProperty.overridden){if(cssProperty.canonicalName===property.canonicalName||hasMatchingLonghandProperty(cssProperty))
return true;}
return false;}
function hasMatchingLonghandProperty(cssProperty)
{var cssProperties=cssProperty.relatedLonghandProperties;if(!cssProperties.length)
return false;for(var property of cssProperties){if(propertiesMatch(property))
return true;}
return false;}
for(var cssProperty of this.style.properties){if(propertiesMatch(cssProperty)){var selection=cssProperty.__propertyTextMarker.find();this._codeMirror.setSelection(selection.from,selection.to);this.focus();return true;}}
return false;}
clearSelection()
{this._codeMirror.setCursor({line:0,ch:0});}
findMatchingProperties(needle)
{if(!needle){this.resetFilteredProperties();return false;}
var propertiesList=this._style.visibleProperties.length?this._style.visibleProperties:this._style.properties;var matchingProperties=[];for(var property of propertiesList)
matchingProperties.push(property.text.includes(needle));if(!matchingProperties.includes(true)){this.resetFilteredProperties();return false;}
for(var i=0;i<matchingProperties.length;++i){var property=propertiesList[i];if(matchingProperties[i])
property.__filterResultClassName=WebInspector.CSSStyleDetailsSidebarPanel.FilterMatchSectionClassName;else
property.__filterResultClassName=WebInspector.CSSStyleDetailsSidebarPanel.NoFilterMatchInPropertyClassName;this._updateTextMarkerForPropertyIfNeeded(property);}
return true;}
resetFilteredProperties()
{var propertiesList=this._style.visibleProperties.length?this._style.visibleProperties:this._style.properties;for(var property of propertiesList){if(property.__filterResultClassName){property.__filterResultClassName=null;this._updateTextMarkerForPropertyIfNeeded(property);}}}
removeNonMatchingProperties(needle)
{this._filterResultPropertyNames=null;if(!needle){this._resetContent();return false;}
var matchingPropertyNames=[];for(var property of this._style.properties){var indexesOfNeedle=property.text.getMatchingIndexes(needle);if(indexesOfNeedle.length){matchingPropertyNames.push(property.name);property.__filterResultClassName=WebInspector.CSSStyleDetailsSidebarPanel.FilterMatchSectionClassName;property.__filterResultNeedlePosition={start:indexesOfNeedle,length:needle.length};}}
this._filterResultPropertyNames=matchingPropertyNames.length?matchingPropertyNames.keySet():{};this._resetContent();return matchingPropertyNames.length>0;}
uncommentAllProperties()
{function uncommentProperties(properties)
{if(!properties.length)
return false;for(var property of properties){if(property._commentRange){this._uncommentRange(property._commentRange);property._commentRange=null;}}
return true;}
return uncommentProperties.call(this,this._style.pendingProperties)||uncommentProperties.call(this,this._style.properties);}
commentAllProperties()
{if(!this._style.hasProperties())
return false;for(var property of this._style.properties){if(property.__propertyTextMarker)
this._commentProperty(property);}
return true;}
selectFirstProperty()
{var line=this._codeMirror.getLine(0);var trimmedLine=line.trimRight();if(!line||!trimmedLine.trimLeft().length)
this.clearSelection();var index=line.indexOf(":");var cursor={line:0,ch:0};this._codeMirror.setSelection(cursor,{line:0,ch:index<0||this._textAtCursorIsComment(this._codeMirror,cursor)?trimmedLine.length:index});}
selectLastProperty()
{var line=this._codeMirror.lineCount()-1;var lineText=this._codeMirror.getLine(line);var trimmedLine=lineText.trimRight();var lastAnchor;var lastHead;if(this._textAtCursorIsComment(this._codeMirror,{line,ch:line.length})){lastAnchor=0;lastHead=line.length;}else{var colon=/(?::\s*)/.exec(lineText);lastAnchor=colon?colon.index+colon[0].length:0;lastHead=trimmedLine.length-trimmedLine.endsWith(";");}
this._codeMirror.setSelection({line,ch:lastAnchor},{line,ch:lastHead});}
completionControllerCompletionsHidden(completionController)
{var styleText=this._style.text;var currentText=this._formattedContent();
if(styleText!==currentText)
this._commitChanges();else
this._propertiesChanged();}
completionControllerCompletionsNeeded(completionController,prefix,defaultCompletions,base,suffix,forced)
{let properties=this._style.nodeStyles.computedStyle.properties;let variables=properties.filter((property)=>property.variable&&property.name.startsWith(prefix));let variableNames=variables.map((property)=>property.name);completionController.updateCompletions(defaultCompletions.concat(variableNames));}
layout()
{this._codeMirror.refresh();}
_textAtCursorIsComment(codeMirror,cursor)
{var token=codeMirror.getTokenTypeAt(cursor);return token&&token.includes("comment");}
_highlightNextNameOrValue(codeMirror,cursor,text)
{let range=this._rangeForNextNameOrValue(codeMirror,cursor,text);codeMirror.setSelection(range.from,range.to);}
_rangeForNextNameOrValue(codeMirror,cursor,text)
{let nextAnchor=0;let nextHead=0;if(this._textAtCursorIsComment(codeMirror,cursor))
nextHead=text.length;else{let range=WebInspector.rangeForNextCSSNameOrValue(text,cursor.ch);nextAnchor=range.from;nextHead=range.to;}
return{from:{line:cursor.line,ch:nextAnchor},to:{line:cursor.line,ch:nextHead},};}
_handleMouseDown(event)
{if(this._codeMirror.options.readOnly)
return;let cursor=this._codeMirror.coordsChar({left:event.x,top:event.y});let line=this._codeMirror.getLine(cursor.line);if(!line.trim().length)
return;this._mouseDownCursorPosition=cursor;this._mouseDownCursorPosition.previousRange={from:this._codeMirror.getCursor("from"),to:this._codeMirror.getCursor("to")};}
_handleMouseUp(event)
{if(this._codeMirror.options.readOnly||!this._mouseDownCursorPosition)
return;let cursor=this._codeMirror.coordsChar({left:event.x,top:event.y});let clickedBookmark=false;for(let marker of this._codeMirror.findMarksAt(cursor)){if(marker.type!=="bookmark"||marker.replacedWith!==event.target)
continue;let pos=marker.find();if(pos.line===cursor.line&&Math.abs(pos.ch-cursor.ch)<=1){clickedBookmark=true;break;}}
if(!clickedBookmark&&this._mouseDownCursorPosition.line===cursor.line&&this._mouseDownCursorPosition.ch===cursor.ch){let line=this._codeMirror.getLine(cursor.line);if(cursor.ch===line.trimRight().length){let nextLine=this._codeMirror.getLine(cursor.line+1);if(WebInspector.settings.stylesInsertNewline.value&&cursor.line<this._codeMirror.lineCount()-1&&(!nextLine||!nextLine.trim().length)){this._codeMirror.setCursor({line:cursor.line+1,ch:0});}else{let line=this._codeMirror.getLine(cursor.line);let replacement=WebInspector.settings.stylesInsertNewline.value?"\n":"";if(!line.trimRight().endsWith(";")&&!this._textAtCursorIsComment(this._codeMirror,cursor))
replacement=";"+replacement;this._codeMirror.replaceRange(replacement,cursor);}}else if(WebInspector.settings.stylesSelectOnFirstClick.value&&this._mouseDownCursorPosition.previousRange){let range=this._rangeForNextNameOrValue(this._codeMirror,cursor,line);let clickedDifferentLine=this._mouseDownCursorPosition.previousRange.from.line!==cursor.line||this._mouseDownCursorPosition.previousRange.to.line!==cursor.line;let cursorInPreviousRange=cursor.ch>=this._mouseDownCursorPosition.previousRange.from.ch&&cursor.ch<=this._mouseDownCursorPosition.previousRange.to.ch;let previousInNewRange=this._mouseDownCursorPosition.previousRange.from.ch>=range.from.ch&&this._mouseDownCursorPosition.previousRange.to.ch<=range.to.ch;
if(!this._codeMirror.hasFocus()||clickedDifferentLine||(!cursorInPreviousRange&&!previousInNewRange))
this._codeMirror.setSelection(range.from,range.to);}}
this._mouseDownCursorPosition=null;}
_handleBeforeChange(codeMirror,change)
{if(change.origin!=="+delete"||this._completionController.isShowingCompletions())
return CodeMirror.Pass;if(!change.to.line&&!change.to.ch){if(codeMirror.lineCount()===1)
return CodeMirror.Pass;var line=codeMirror.getLine(change.to.line);if(line&&line.trim().length)
return CodeMirror.Pass;codeMirror.execCommand("deleteLine");return;}
var marks=codeMirror.findMarksAt(change.to);if(!marks.length)
return CodeMirror.Pass;for(var mark of marks)
mark.clear();}
_handleEnterKey(codeMirror)
{var cursor=codeMirror.getCursor();var line=codeMirror.getLine(cursor.line);var trimmedLine=line.trimRight();var hasEndingSemicolon=trimmedLine.endsWith(";");if(!trimmedLine.trimLeft().length)
return CodeMirror.Pass;if(hasEndingSemicolon&&cursor.ch===trimmedLine.length-1)
++cursor.ch;if(cursor.ch===trimmedLine.length){var replacement="\n";if(!hasEndingSemicolon&&!this._textAtCursorIsComment(this._codeMirror,cursor))
replacement=";"+replacement;this._codeMirror.replaceRange(replacement,cursor);return;}
return CodeMirror.Pass;}
_insertNewlineAfterCurrentLine(codeMirror)
{var cursor=codeMirror.getCursor();var line=codeMirror.getLine(cursor.line);var trimmedLine=line.trimRight();cursor.ch=trimmedLine.length;if(cursor.ch){var replacement="\n";if(!trimmedLine.endsWith(";")&&!this._textAtCursorIsComment(this._codeMirror,cursor))
replacement=";"+replacement;this._codeMirror.replaceRange(replacement,cursor);return;}
return CodeMirror.Pass;}
_handleShiftTabKey(codeMirror)
{function switchRule()
{if(this._delegate&&typeof this._delegate.cssStyleDeclarationTextEditorSwitchRule==="function"){this._delegate.cssStyleDeclarationTextEditorSwitchRule(true);return;}
return CodeMirror.Pass;}
let cursor=codeMirror.getCursor();let line=codeMirror.getLine(cursor.line);let previousLine=codeMirror.getLine(cursor.line-1);if(!line&&!previousLine&&!cursor.line)
return switchRule.call(this);let trimmedPreviousLine=previousLine?previousLine.trimRight():"";let previousAnchor=0;let previousHead=line.length;let isComment=this._textAtCursorIsComment(codeMirror,cursor);if(cursor.ch===line.indexOf(":")||line.indexOf(":")<0||isComment){if(previousLine){--cursor.line;previousHead=trimmedPreviousLine.length;if(!this._textAtCursorIsComment(codeMirror,cursor)){let colon=/(?::\s*)/.exec(previousLine);previousAnchor=colon?colon.index+colon[0].length:0;if(trimmedPreviousLine.includes(";"))
previousHead=trimmedPreviousLine.lastIndexOf(";");}
codeMirror.setSelection({line:cursor.line,ch:previousAnchor},{line:cursor.line,ch:previousHead});return;}
if(cursor.line){codeMirror.setCursor(cursor.line-1,0);return;}
return switchRule.call(this);}
if(!isComment){let match=/(?:[^:;\s]\s*)+/.exec(line);previousAnchor=match.index;previousHead=previousAnchor+match[0].length;}
codeMirror.setSelection({line:cursor.line,ch:previousAnchor},{line:cursor.line,ch:previousHead});}
_handleTabKey(codeMirror)
{function switchRule(){if(this._delegate&&typeof this._delegate.cssStyleDeclarationTextEditorSwitchRule==="function"){this._delegate.cssStyleDeclarationTextEditorSwitchRule();return;}
return CodeMirror.Pass;}
let cursor=codeMirror.getCursor();let line=codeMirror.getLine(cursor.line);let trimmedLine=line.trimRight();let lastLine=cursor.line===codeMirror.lineCount()-1;let nextLine=codeMirror.getLine(cursor.line+1);let trimmedNextLine=nextLine?nextLine.trimRight():"";if(!trimmedLine.trimLeft().length){if(lastLine)
return switchRule.call(this);if(!trimmedNextLine.trimLeft().length){codeMirror.setCursor(cursor.line+1,0);return;}
++cursor.line;this._highlightNextNameOrValue(codeMirror,cursor,nextLine);return;}
if(trimmedLine.endsWith(":")){codeMirror.setCursor(cursor.line,line.length);this._completionController._completeAtCurrentPosition(true);return;}
let hasEndingSemicolon=trimmedLine.endsWith(";");let pastLastSemicolon=line.includes(";")&&cursor.ch>=line.lastIndexOf(";");if(cursor.ch>=line.trimRight().length-hasEndingSemicolon||pastLastSemicolon){this._completionController.completeAtCurrentPositionIfNeeded().then(function(result){if(result!==WebInspector.CodeMirrorCompletionController.UpdatePromise.NoCompletionsFound)
return;let replacement="";if(!hasEndingSemicolon&&!pastLastSemicolon&&!this._textAtCursorIsComment(codeMirror,cursor))
replacement+=";";if(lastLine)
replacement+="\n";if(replacement.length)
codeMirror.replaceRange(replacement,{line:cursor.line,ch:trimmedLine.length});if(!nextLine){codeMirror.setCursor(cursor.line+1,0);return;}
this._highlightNextNameOrValue(codeMirror,{line:cursor.line+1,ch:0},nextLine);}.bind(this));return;}
this._highlightNextNameOrValue(codeMirror,cursor,line);}
_clearRemoveEditingLineClassesTimeout()
{if(!this._removeEditingLineClassesTimeout)
return;clearTimeout(this._removeEditingLineClassesTimeout);delete this._removeEditingLineClassesTimeout;}
_removeEditingLineClasses()
{this._clearRemoveEditingLineClassesTimeout();function removeEditingLineClasses()
{var lineCount=this._codeMirror.lineCount();for(var i=0;i<lineCount;++i)
this._codeMirror.removeLineClass(i,"wrap",WebInspector.CSSStyleDeclarationTextEditor.EditingLineStyleClassName);}
this._codeMirror.operation(removeEditingLineClasses.bind(this));}
_removeEditingLineClassesSoon()
{if(this._removeEditingLineClassesTimeout)
return;this._removeEditingLineClassesTimeout=setTimeout(this._removeEditingLineClasses.bind(this),WebInspector.CSSStyleDeclarationTextEditor.RemoveEditingLineClassesDelay);}
_formattedContent()
{var content=WebInspector.CSSStyleDeclarationTextEditor.PrefixWhitespace;var lineCount=this._codeMirror.lineCount();for(var i=0;i<lineCount;++i){var lineContent=this._codeMirror.getLine(i);content+=this._linePrefixWhitespace+lineContent;if(i!==lineCount-1)
content+="\n";}
content+=WebInspector.CSSStyleDeclarationTextEditor.SuffixWhitespace;
return content.replace(/\s*\n\s*\n(\s*)/g,"\n$1");}
_commitChanges()
{if(this._commitChangesTimeout){clearTimeout(this._commitChangesTimeout);delete this._commitChangesTimeout;}
this._style.text=this._formattedContent();}
_editorBlured(codeMirror)
{if(this._completionController.isHandlingClickEvent())
return;this._resetContent();this.dispatchEventToListeners(WebInspector.CSSStyleDeclarationTextEditor.Event.Blurred);}
_editorFocused(codeMirror)
{if(typeof this._delegate.cssStyleDeclarationTextEditorFocused==="function")
this._delegate.cssStyleDeclarationTextEditorFocused();}
_contentChanged(codeMirror,change)
{
if(!this._style||!this._style.editable||this._ignoreCodeMirrorContentDidChangeEvent)
return;this._markLinesWithCheckboxPlaceholder();this._clearRemoveEditingLineClassesTimeout();this._codeMirror.addLineClass(change.from.line,"wrap",WebInspector.CSSStyleDeclarationTextEditor.EditingLineStyleClassName);
if(this._completionController.isCompletionChange(change))
this._createInlineSwatches(false,change.from.line);
var delay=change.origin&&change.origin.charAt(0)==="+"?WebInspector.CSSStyleDeclarationTextEditor.CommitCoalesceDelay:0;if(this._commitChangesTimeout)
clearTimeout(this._commitChangesTimeout);this._commitChangesTimeout=setTimeout(this._commitChanges.bind(this),delay);this.dispatchEventToListeners(WebInspector.CSSStyleDeclarationTextEditor.Event.ContentChanged);}
_updateTextMarkers(nonatomic)
{function update()
{this._clearTextMarkers(true);this._iterateOverProperties(true,function(property){var styleTextRange=property.styleDeclarationTextRange;if(!styleTextRange)
return;var from={line:styleTextRange.startLine,ch:styleTextRange.startColumn};var to={line:styleTextRange.endLine,ch:styleTextRange.endColumn};from.line--;to.line--;from.ch-=this._linePrefixWhitespace.length;to.ch-=this._linePrefixWhitespace.length;this._createTextMarkerForPropertyIfNeeded(from,to,property);});if(!this._codeMirror.getOption("readOnly")){this._codeMirror.eachLine((lineHandler)=>{this._createCommentedCheckboxMarker(lineHandler);});}
this._createInlineSwatches(true);this._markLinesWithCheckboxPlaceholder();}
if(nonatomic)
update.call(this);else
this._codeMirror.operation(update.bind(this));}
_createCommentedCheckboxMarker(lineHandle)
{var lineNumber=lineHandle.lineNo();if(!lineNumber&&isNaN(lineNumber))
return;let commentedPropertyRegex=/\/\*\s*[-\w]+\s*\:\s*(?:(?:\".*\"|url\(.+\)|[^;])\s*)+;?\s*\*\//g;var match=commentedPropertyRegex.exec(lineHandle.text);if(!match)
return;while(match){var checkboxElement=document.createElement("input");checkboxElement.type="checkbox";checkboxElement.checked=false;checkboxElement.addEventListener("change",this._propertyCommentCheckboxChanged.bind(this));var from={line:lineNumber,ch:match.index};var to={line:lineNumber,ch:match.index+match[0].length};var checkboxMarker=this._codeMirror.setUniqueBookmark(from,checkboxElement);checkboxMarker.__propertyCheckbox=true;var commentTextMarker=this._codeMirror.markText(from,to);checkboxElement.__commentTextMarker=commentTextMarker;match=commentedPropertyRegex.exec(lineHandle.text);}}
_createInlineSwatches(nonatomic,lineNumber)
{function createSwatch(swatch,marker,valueObject,valueString)
{swatch.addEventListener(WebInspector.InlineSwatch.Event.ValueChanged,this._inlineSwatchValueChanged,this);swatch.addEventListener(WebInspector.InlineSwatch.Event.Activated,this._inlineSwatchActivated,this);swatch.addEventListener(WebInspector.InlineSwatch.Event.Deactivated,this._inlineSwatchDeactivated,this);let codeMirrorTextMarker=marker.codeMirrorTextMarker;let codeMirrorTextMarkerRange=codeMirrorTextMarker.find();this._codeMirror.setUniqueBookmark(codeMirrorTextMarkerRange.from,swatch.element);swatch.__textMarker=codeMirrorTextMarker;swatch.__textMarkerRange=codeMirrorTextMarkerRange;}
function update()
{let range=typeof lineNumber==="number"?new WebInspector.TextRange(lineNumber,0,lineNumber+1,0):null;createCodeMirrorColorTextMarkers(this._codeMirror,range,(marker,color,colorString)=>{let swatch=new WebInspector.InlineSwatch(WebInspector.InlineSwatch.Type.Color,color,this._codeMirror.getOption("readOnly"));createSwatch.call(this,swatch,marker,color,colorString);});createCodeMirrorGradientTextMarkers(this._codeMirror,range,(marker,gradient,gradientString)=>{let swatch=new WebInspector.InlineSwatch(WebInspector.InlineSwatch.Type.Gradient,gradient,this._codeMirror.getOption("readOnly"));createSwatch.call(this,swatch,marker,gradient,gradientString);});createCodeMirrorCubicBezierTextMarkers(this._codeMirror,range,(marker,bezier,bezierString)=>{let swatch=new WebInspector.InlineSwatch(WebInspector.InlineSwatch.Type.Bezier,bezier,this._codeMirror.getOption("readOnly"));createSwatch.call(this,swatch,marker,bezier,bezierString);});createCodeMirrorSpringTextMarkers(this._codeMirror,range,(marker,spring,springString)=>{let swatch=new WebInspector.InlineSwatch(WebInspector.InlineSwatch.Type.Spring,spring,this._codeMirror.getOption("readOnly"));createSwatch.call(this,swatch,marker,spring,springString);});createCodeMirrorVariableTextMarkers(this._codeMirror,range,(marker,variable,variableString)=>{const dontCreateIfMissing=true;let variableProperty=this._style.nodeStyles.computedStyle.propertyForName(variableString,dontCreateIfMissing);if(!variableProperty){let from={line:marker.range.startLine,ch:marker.range.startColumn};let to={line:marker.range.endLine,ch:marker.range.endColumn};this._codeMirror.markText(from,to,{className:"invalid"});if(WebInspector.settings.stylesShowInlineWarnings.value){let invalidMarker=document.createElement("button");invalidMarker.classList.add("invalid-warning-marker","clickable");invalidMarker.title=WebInspector.UIString("The variable “%s” does not exist.\nClick to delete and open autocomplete.").format(variableString);invalidMarker.addEventListener("click",(event)=>{this._codeMirror.replaceRange("",from,to);this._codeMirror.setCursor(from);this._completionController.completeAtCurrentPositionIfNeeded(true);});this._codeMirror.setBookmark(from,invalidMarker);}
return;}
let trimmedValue=variableProperty.value.trim();let swatch=new WebInspector.InlineSwatch(WebInspector.InlineSwatch.Type.Variable,trimmedValue,this._codeMirror.getOption("readOnly"));createSwatch.call(this,swatch,marker,variableProperty,trimmedValue);});}
if(nonatomic)
update.call(this);else
this._codeMirror.operation(update.bind(this));}
_updateTextMarkerForPropertyIfNeeded(property)
{var textMarker=property.__propertyTextMarker;if(!textMarker)
return;var range=textMarker.find();if(!range)
return;this._createTextMarkerForPropertyIfNeeded(range.from,range.to,property);}
_createTextMarkerForPropertyIfNeeded(from,to,property)
{if(!this._codeMirror.getOption("readOnly")){var checkboxElement=document.createElement("input");checkboxElement.type="checkbox";checkboxElement.checked=true;checkboxElement.addEventListener("change",this._propertyCheckboxChanged.bind(this));checkboxElement.__cssProperty=property;var checkboxMarker=this._codeMirror.setUniqueBookmark(from,checkboxElement);checkboxMarker.__propertyCheckbox=true;}else if(this._delegate.cssStyleDeclarationTextEditorShouldAddPropertyGoToArrows&&!property.implicit&&typeof this._delegate.cssStyleDeclarationTextEditorShowProperty==="function"){let arrowElement=WebInspector.createGoToArrowButton();arrowElement.title=WebInspector.UIString("Option-click to show source");let delegate=this._delegate;arrowElement.addEventListener("click",function(event){delegate.cssStyleDeclarationTextEditorShowProperty(property,event.altKey);});this._codeMirror.setUniqueBookmark(to,arrowElement);}
function duplicatePropertyExistsBelow(cssProperty)
{var propertyFound=false;for(var property of this._style.properties){if(property===cssProperty)
propertyFound=true;else if(property.name===cssProperty.name&&propertyFound)
return true;}
return false;}
var propertyNameIsValid=false;if(WebInspector.CSSCompletions.cssNameCompletions)
propertyNameIsValid=WebInspector.CSSCompletions.cssNameCompletions.isValidPropertyName(property.name);var classNames=["css-style-declaration-property"];if(property.overridden)
classNames.push("overridden");if(property.implicit)
classNames.push("implicit");if(this._style.inherited&&!property.inherited)
classNames.push("not-inherited");if(!property.valid&&property.hasOtherVendorNameOrKeyword())
classNames.push("other-vendor");else if(!property.valid&&(!propertyNameIsValid||duplicatePropertyExistsBelow.call(this,property)))
classNames.push("invalid");if(!property.enabled)
classNames.push("disabled");if(property.__filterResultClassName&&!property.__filterResultNeedlePosition)
classNames.push(property.__filterResultClassName);var classNamesString=classNames.join(" ");
if(property.__propertyTextMarker&&property.__propertyTextMarker.doc.cm===this._codeMirror&&property.__propertyTextMarker.find()){if(property.__propertyTextMarker.className===classNamesString)
return;property.__propertyTextMarker.clear();}
var propertyTextMarker=this._codeMirror.markText(from,to,{className:classNamesString});propertyTextMarker.__cssProperty=property;property.__propertyTextMarker=propertyTextMarker;property.addEventListener(WebInspector.CSSProperty.Event.OverriddenStatusChanged,this._propertyOverriddenStatusChanged,this);this._removeCheckboxPlaceholder(from.line);if(property.__filterResultClassName&&property.__filterResultNeedlePosition){for(var needlePosition of property.__filterResultNeedlePosition.start){var start={line:from.line,ch:needlePosition};var end={line:to.line,ch:start.ch+property.__filterResultNeedlePosition.length};this._codeMirror.markText(start,end,{className:property.__filterResultClassName});}}
if(this._codeMirror.getOption("readOnly")||property.hasOtherVendorNameOrKeyword()||property.text.trim().endsWith(":")||!WebInspector.settings.stylesShowInlineWarnings.value)
return;var propertyHasUnnecessaryPrefix=property.name.startsWith("-webkit-")&&WebInspector.CSSCompletions.cssNameCompletions.isValidPropertyName(property.canonicalName);function generateInvalidMarker(options)
{var invalidMarker=document.createElement("button");invalidMarker.className="invalid-warning-marker";invalidMarker.title=options.title;if(typeof options.correction==="string"){ invalidMarker.classList.add("clickable");invalidMarker.addEventListener("click",function(){this._codeMirror.replaceRange(options.correction,from,to);if(options.autocomplete){this._codeMirror.setCursor(to);this.focus();this._completionController._completeAtCurrentPosition(true);}}.bind(this));}
this._codeMirror.setBookmark(options.position,invalidMarker);}
function instancesOfProperty(propertyName)
{var count=0;for(var property of this._style.properties){if(property.name===propertyName)
++count;}
return count;}
var instances=instancesOfProperty.call(this,property.name);var invalidMarkerInfo;if(propertyHasUnnecessaryPrefix&&!instancesOfProperty.call(this,property.canonicalName)){generateInvalidMarker.call(this,{position:from,title:WebInspector.UIString("The “webkit” prefix is not necessary.\nClick to insert a duplicate without the prefix."),correction:property.text+"\n"+property.text.replace("-webkit-",""),autocomplete:false});}else if(instances>1){invalidMarkerInfo={position:from,title:WebInspector.UIString("Duplicate property “%s”.\nClick to delete this property.").format(property.name),correction:"",autocomplete:false};}
if(property.valid){if(invalidMarkerInfo)
generateInvalidMarker.call(this,invalidMarkerInfo);return;}
if(propertyNameIsValid){let start={line:from.line,ch:from.ch+property.name.length+2};let end={line:to.line,ch:start.ch+property.value.length};this._codeMirror.markText(start,end,{className:"invalid"});if(/^(?:\d+)$/.test(property.value)){invalidMarkerInfo={position:from,title:WebInspector.UIString("The value “%s” needs units.\nClick to add “px” to the value.").format(property.value),correction:property.name+": "+property.value+"px;",autocomplete:false};}else{var valueReplacement=property.value.length?WebInspector.UIString("The value “%s” is not supported for this property.\nClick to delete and open autocomplete.").format(property.value):WebInspector.UIString("This property needs a value.\nClick to open autocomplete.");invalidMarkerInfo={position:from,title:valueReplacement,correction:property.name+": ",autocomplete:true};}}else if(!instancesOfProperty.call(this,"-webkit-"+property.name)&&WebInspector.CSSCompletions.cssNameCompletions.propertyRequiresWebkitPrefix(property.name)){invalidMarkerInfo={position:from,title:WebInspector.UIString("The “webkit” prefix is needed for this property.\nClick to insert a duplicate with the prefix."),correction:"-webkit-"+property.text+"\n"+property.text,autocomplete:false};}else if(!propertyHasUnnecessaryPrefix&&!WebInspector.CSSCompletions.cssNameCompletions.isValidPropertyName("-webkit-"+property.name)){var closestPropertyName=WebInspector.CSSCompletions.cssNameCompletions.getClosestPropertyName(property.name);if(closestPropertyName){invalidMarkerInfo={position:from,title:WebInspector.UIString("Did you mean “%s”?\nClick to replace.").format(closestPropertyName),correction:property.text.replace(property.name,closestPropertyName),autocomplete:true};}else if(property.name.startsWith("-webkit-")&&(closestPropertyName=WebInspector.CSSCompletions.cssNameCompletions.getClosestPropertyName(property.canonicalName))){invalidMarkerInfo={position:from,title:WebInspector.UIString("Did you mean “%s”?\nClick to replace.").format("-webkit-"+closestPropertyName),correction:property.text.replace(property.canonicalName,closestPropertyName),autocomplete:true};}else{invalidMarkerInfo={position:from,title:WebInspector.UIString("Unsupported property “%s”").format(property.name),correction:false,autocomplete:false};}}
if(!invalidMarkerInfo)
return;generateInvalidMarker.call(this,invalidMarkerInfo);}
_clearTextMarkers(nonatomic,all)
{function clear()
{var markers=this._codeMirror.getAllMarks();for(var i=0;i<markers.length;++i){var textMarker=markers[i];if(!all&&textMarker.__checkboxPlaceholder){var position=textMarker.find();if(position&&!position.ch)
continue;}
if(textMarker.__cssProperty){textMarker.__cssProperty.removeEventListener(null,null,this);delete textMarker.__cssProperty.__propertyTextMarker;delete textMarker.__cssProperty;}
textMarker.clear();}}
if(nonatomic)
clear.call(this);else
this._codeMirror.operation(clear.bind(this));}
_iterateOverProperties(onlyVisibleProperties,callback)
{let properties=onlyVisibleProperties?this._style.visibleProperties:this._style.properties;let filterFunction=(property)=>property;if(this._filterResultPropertyNames){filterFunction=(property)=>{if(!property.variable&&this._propertyVisibilityMode===WebInspector.CSSStyleDeclarationTextEditor.PropertyVisibilityMode.HideNonVariables)
return false;if(property.variable&&this._propertyVisibilityMode===WebInspector.CSSStyleDeclarationTextEditor.PropertyVisibilityMode.HideVariables)
return false;if(property.implicit&&!this._showsImplicitProperties)
return false;if(!(property.name in this._filterResultPropertyNames))
return false;return true;};}else if(!onlyVisibleProperties){filterFunction=(property)=>{switch(this._propertyVisibilityMode){case WebInspector.CSSStyleDeclarationTextEditor.PropertyVisibilityMode.HideNonVariables:if(!property.variable)
return false;break;case WebInspector.CSSStyleDeclarationTextEditor.PropertyVisibilityMode.HideVariables:if(property.variable)
return false;break;case WebInspector.CSSStyleDeclarationTextEditor.PropertyVisibilityMode.ShowAll:break;default:console.error("Invalid property visibility mode");break;}
return!property.implicit||this._showsImplicitProperties||property.canonicalName in this._alwaysShowPropertyNames;};}
properties=properties.filter(filterFunction);if(this._sortProperties)
properties.sort((a,b)=>a.name.extendedLocaleCompare(b.name));this._shownProperties=properties;for(var i=0;i<properties.length;++i){if(callback.call(this,properties[i],i===properties.length-1))
break;}}
_propertyCheckboxChanged(event)
{var property=event.target.__cssProperty;if(!property)
return;this._commentProperty(property);}
_commentProperty(property)
{var textMarker=property.__propertyTextMarker;if(!textMarker)
return;
var range=textMarker.find();if(!range)
return;property._commentRange=range;property._commentRange.to.ch+=6;var text=this._codeMirror.getRange(range.from,range.to);function update()
{this._codeMirror.replaceRange("/* "+text+" */",range.from,range.to);this._createInlineSwatches(true,range.from.line);}
this._codeMirror.operation(update.bind(this));}
_propertyCommentCheckboxChanged(event)
{var commentTextMarker=event.target.__commentTextMarker;if(!commentTextMarker)
return;
var range=commentTextMarker.find();if(!range)
return;this._uncommentRange(range);}
_uncommentRange(range)
{var text=this._codeMirror.getRange(range.from,range.to);text=text.replace(/^\/\*\s*/,"").replace(/\s*\*\/$/,"");if(text.length&&text.charAt(text.length-1)!==";")
text+=";";function update()
{this._codeMirror.addLineClass(range.from.line,"wrap",WebInspector.CSSStyleDeclarationTextEditor.EditingLineStyleClassName);this._codeMirror.replaceRange(text,range.from,range.to);this._createInlineSwatches(true,range.from.line);}
this._codeMirror.operation(update.bind(this));}
_inlineSwatchValueChanged(event)
{let swatch=event&&event.target;if(!swatch)
return;let value=event.data&&event.data.value&&event.data.value.toString();if(!value)
return;let textMarker=swatch.__textMarker;let range=swatch.__textMarkerRange;if(!range)
return;function update()
{range=textMarker.find();if(!range)
return;textMarker.clear();this._codeMirror.replaceRange(value,range.from,range.to);range.to.ch=range.from.ch+value.length;textMarker=this._codeMirror.markText(range.from,range.to);swatch.__textMarker=textMarker;}
this._codeMirror.operation(update.bind(this));}
_inlineSwatchActivated()
{this._hasActiveInlineSwatchEditor=true;}
_inlineSwatchDeactivated()
{this._hasActiveInlineSwatchEditor=false;}
_propertyOverriddenStatusChanged(event)
{this._updateTextMarkerForPropertyIfNeeded(event.target);}
_propertiesChanged(event)
{
if(this._completionController.isShowingCompletions())
return;if(this._hasActiveInlineSwatchEditor)
return;if(this._ignoreNextPropertiesChanged){this._ignoreNextPropertiesChanged=false;return;}
if(!this.focused&&(!this._style.text||this._style.text!==this._formattedContent())){this._resetContent();return;}
this._removeEditingLineClassesSoon();this._updateTextMarkers();}
_markLinesWithCheckboxPlaceholder()
{if(this._codeMirror.getOption("readOnly"))
return;var linesWithPropertyCheckboxes={};var linesWithCheckboxPlaceholders={};var markers=this._codeMirror.getAllMarks();for(var i=0;i<markers.length;++i){var textMarker=markers[i];if(textMarker.__propertyCheckbox){var position=textMarker.find();if(position)
linesWithPropertyCheckboxes[position.line]=true;}else if(textMarker.__checkboxPlaceholder){var position=textMarker.find();if(position)
linesWithCheckboxPlaceholders[position.line]=true;}}
var lineCount=this._codeMirror.lineCount();for(var i=0;i<lineCount;++i){if(i in linesWithPropertyCheckboxes||i in linesWithCheckboxPlaceholders)
continue;var position={line:i,ch:0};var placeholderElement=document.createElement("div");placeholderElement.className=WebInspector.CSSStyleDeclarationTextEditor.CheckboxPlaceholderElementStyleClassName;var placeholderMark=this._codeMirror.setUniqueBookmark(position,placeholderElement);placeholderMark.__checkboxPlaceholder=true;}}
_removeCheckboxPlaceholder(lineNumber)
{var marks=this._codeMirror.findMarksAt({line:lineNumber,ch:0});for(var i=0;i<marks.length;++i){var mark=marks[i];if(!mark.__checkboxPlaceholder)
continue;mark.clear();return;}}
_formattedContentFromEditor()
{let indentString=WebInspector.indentString();let builder=new FormatterContentBuilder(indentString);let formatter=new WebInspector.Formatter(this._codeMirror,builder);let start={line:0,ch:0};let end={line:this._codeMirror.lineCount()-1};formatter.format(start,end);return builder.formattedContent.trim();}
_resetContent()
{if(this._commitChangesTimeout){clearTimeout(this._commitChangesTimeout);this._commitChangesTimeout=null;}
this._removeEditingLineClasses();const readOnly=!this._style||!this._style.editable||!this._style.styleSheetTextRange;this._codeMirror.setOption("readOnly",readOnly);if(readOnly){this.element.classList.add(WebInspector.CSSStyleDeclarationTextEditor.ReadOnlyStyleClassName);this._codeMirror.setOption("placeholder",WebInspector.UIString("No Properties"));}else{this.element.classList.remove(WebInspector.CSSStyleDeclarationTextEditor.ReadOnlyStyleClassName);this._codeMirror.setOption("placeholder",WebInspector.UIString("No Properties \u2014 Click to Edit"));}
if(!this._style){this._ignoreCodeMirrorContentDidChangeEvent=true;this._clearTextMarkers(false,true);this._codeMirror.setValue("");this._codeMirror.clearHistory();this._codeMirror.markClean();this._ignoreCodeMirrorContentDidChangeEvent=false;return;}
function update()
{let isEditorReadOnly=this._codeMirror.getOption("readOnly");let styleText=this._style.text;let trimmedStyleText=styleText.trim();
if(!trimmedStyleText&&!isEditorReadOnly){this._markLinesWithCheckboxPlaceholder();return;}
if(isEditorReadOnly){this._codeMirror.setValue("");let lineNumber=0;this._iterateOverProperties(false,function(property){let from={line:lineNumber,ch:0};let to={line:lineNumber};this._codeMirror.replaceRange((lineNumber?"\n":"")+property.synthesizedText,from);this._createTextMarkerForPropertyIfNeeded(from,to,property);lineNumber++;});return;}
let selectionAnchor=this._codeMirror.getCursor("anchor");let selectionHead=this._codeMirror.getCursor("head");let whitespaceRegex=/\s+/g;this._linePrefixWhitespace=WebInspector.indentString();let styleTextPrefixWhitespace=styleText.match(/^\s*/);
if(styleTextPrefixWhitespace&&trimmedStyleText.includes("\n")){let linePrefixWhitespaceMatch=styleTextPrefixWhitespace[0].match(/[^\S\n]+$/);if(linePrefixWhitespaceMatch)
this._linePrefixWhitespace=linePrefixWhitespaceMatch[0];}
this._codeMirror.setValue(trimmedStyleText);this._codeMirror.setValue(this._formattedContentFromEditor());
let cssPropertiesMap=new Map();this._iterateOverProperties(false,function(cssProperty){cssProperty.__refreshedAfterBlur=false;let propertyTextSansWhitespace=cssProperty.text.replace(whitespaceRegex,"");let existingProperties=cssPropertiesMap.get(propertyTextSansWhitespace)||[];existingProperties.push(cssProperty);cssPropertiesMap.set(propertyTextSansWhitespace,existingProperties);});
this._codeMirror.eachLine(function(lineHandler){let lineNumber=lineHandler.lineNo();let lineContentSansWhitespace=lineHandler.text.replace(whitespaceRegex,"");let properties=cssPropertiesMap.get(lineContentSansWhitespace);if(!properties){this._createCommentedCheckboxMarker(lineHandler);return;}
for(let property of properties){if(property.__refreshedAfterBlur)
continue;let from={line:lineNumber,ch:0};let to={line:lineNumber};this._createTextMarkerForPropertyIfNeeded(from,to,property);property.__refreshedAfterBlur=true;break;}}.bind(this));this._createInlineSwatches(true);this._codeMirror.setSelection(selectionAnchor,selectionHead);
this._codeMirror.clearHistory();this._codeMirror.markClean();this._markLinesWithCheckboxPlaceholder();}
this._clearTextMarkers(false,true);this._ignoreCodeMirrorContentDidChangeEvent=true;this._codeMirror.operation(update.bind(this));this._ignoreCodeMirrorContentDidChangeEvent=false;}
_updateJumpToSymbolTrackingMode()
{var oldJumpToSymbolTrackingModeEnabled=this._jumpToSymbolTrackingModeEnabled;if(!this._style)
this._jumpToSymbolTrackingModeEnabled=false;else
this._jumpToSymbolTrackingModeEnabled=WebInspector.modifierKeys.altKey&&!WebInspector.modifierKeys.metaKey&&!WebInspector.modifierKeys.shiftKey;if(oldJumpToSymbolTrackingModeEnabled!==this._jumpToSymbolTrackingModeEnabled){if(this._jumpToSymbolTrackingModeEnabled){this._tokenTrackingController.highlightLastHoveredRange();this._tokenTrackingController.enabled=true;}else{this._tokenTrackingController.removeHighlightedRange();this._tokenTrackingController.enabled=false;}}}
tokenTrackingControllerHighlightedRangeWasClicked(tokenTrackingController)
{let candidate=tokenTrackingController.candidate;if(!candidate)
return;let sourceCodeLocation=null;if(this._style.ownerRule)
sourceCodeLocation=this._style.ownerRule.sourceCodeLocation;let token=candidate.hoveredToken;const options={ignoreNetworkTab:true,ignoreSearchTab:true,};if(token&&/\blink\b/.test(token.type)){let url=token.string;let baseURL=sourceCodeLocation?sourceCodeLocation.sourceCode.url:this._style.node.ownerDocument.documentURL;const frame=null;WebInspector.openURL(absoluteURL(url,baseURL),frame,options);return;}
if(!this._style.ownerRule||!this._style.ownerRule.sourceCodeLocation)
return;if(!sourceCodeLocation)
return;function showRangeInSourceCode(sourceCode,range)
{if(!sourceCode||!range)
return false;WebInspector.showSourceCodeLocation(sourceCode.createSourceCodeLocation(range.startLine,range.startColumn),options);return true;}
if(token&&/\bvariable-2\b/.test(token.type)){let property=this._style.nodeStyles.effectivePropertyForName(token.string);if(property&&showRangeInSourceCode(property.ownerStyle.ownerRule.sourceCodeLocation.sourceCode,property.styleSheetTextRange))
return;}
let marks=this._codeMirror.findMarksAt(candidate.hoveredTokenRange.start);for(let mark of marks){let property=mark.__cssProperty;if(property&&showRangeInSourceCode(sourceCodeLocation.sourceCode,property.styleSheetTextRange))
return;}}
tokenTrackingControllerNewHighlightCandidate(tokenTrackingController,candidate)
{if(!this._style.ownerRule||!this._style.ownerRule.sourceCodeLocation){if(!candidate.hoveredToken||!/\blink\b/.test(candidate.hoveredToken.type))
return;}
this._tokenTrackingController.highlightRange(candidate.hoveredTokenRange);}};WebInspector.CSSStyleDeclarationTextEditor.Event={ContentChanged:"css-style-declaration-text-editor-content-changed",Blurred:"css-style-declaration-text-editor-blurred"};WebInspector.CSSStyleDeclarationTextEditor.PropertyVisibilityMode={ShowAll:Symbol("variable-visibility-show-all"),HideVariables:Symbol("variable-visibility-hide-variables"),HideNonVariables:Symbol("variable-visibility-hide-non-variables"),};WebInspector.CSSStyleDeclarationTextEditor.PrefixWhitespace="\n";WebInspector.CSSStyleDeclarationTextEditor.SuffixWhitespace="\n";WebInspector.CSSStyleDeclarationTextEditor.StyleClassName="css-style-text-editor";WebInspector.CSSStyleDeclarationTextEditor.ReadOnlyStyleClassName="read-only";WebInspector.CSSStyleDeclarationTextEditor.CheckboxPlaceholderElementStyleClassName="checkbox-placeholder";WebInspector.CSSStyleDeclarationTextEditor.EditingLineStyleClassName="editing-line";WebInspector.CSSStyleDeclarationTextEditor.CommitCoalesceDelay=250;WebInspector.CSSStyleDeclarationTextEditor.RemoveEditingLineClassesDelay=2000;WebInspector.CSSStyleDetailsSidebarPanel=class CSSStyleDetailsSidebarPanel extends WebInspector.DOMDetailsSidebarPanel
{constructor()
{const dontCreateNavigationItem=true;super("css-style",WebInspector.UIString("Styles"),dontCreateNavigationItem);this._selectedPanel=null;this._computedStyleDetailsPanel=new WebInspector.ComputedStyleDetailsPanel(this);this._rulesStyleDetailsPanel=new WebInspector.RulesStyleDetailsPanel(this);this._visualStyleDetailsPanel=new WebInspector.VisualStyleDetailsPanel(this);this._panels=[this._computedStyleDetailsPanel,this._rulesStyleDetailsPanel,this._visualStyleDetailsPanel];this._panelNavigationInfo=[this._computedStyleDetailsPanel.navigationInfo,this._rulesStyleDetailsPanel.navigationInfo,this._visualStyleDetailsPanel.navigationInfo];this._lastSelectedPanelSetting=new WebInspector.Setting("last-selected-style-details-panel",this._rulesStyleDetailsPanel.navigationInfo.identifier);this._classListContainerToggledSetting=new WebInspector.Setting("class-list-container-toggled",false);this._initiallySelectedPanel=this._panelMatchingIdentifier(this._lastSelectedPanelSetting.value)||this._rulesStyleDetailsPanel;this._navigationItem=new WebInspector.ScopeRadioButtonNavigationItem(this.identifier,this.displayName,this._panelNavigationInfo,this._initiallySelectedPanel.navigationInfo);this._navigationItem.addEventListener(WebInspector.ScopeRadioButtonNavigationItem.Event.SelectedItemChanged,this._handleSelectedItemChanged,this);this._forcedPseudoClassCheckboxes={};}
supportsDOMNode(nodeToInspect)
{return nodeToInspect.nodeType()===Node.ELEMENT_NODE;}
visibilityDidChange()
{super.visibilityDidChange();if(!this._selectedPanel)
return;if(!this.visible){this._selectedPanel.hidden();return;}
this._updateNoForcedPseudoClassesScrollOffset();this._selectedPanel.shown();this._selectedPanel.markAsNeedsRefresh(this.domNode);}
computedStyleDetailsPanelShowProperty(property)
{this._rulesStyleDetailsPanel.scrollToSectionAndHighlightProperty(property);this._switchPanels(this._rulesStyleDetailsPanel);this._navigationItem.selectedItemIdentifier=this._lastSelectedPanelSetting.value;}
layout()
{let domNode=this.domNode;if(!domNode)
return;this.contentView.element.scrollTop=this._initialScrollOffset;for(let panel of this._panels){panel.element._savedScrollTop=undefined;panel.markAsNeedsRefresh(domNode);}
this._updatePseudoClassCheckboxes();if(!this._classListContainer.hidden)
this._populateClassToggles();}
addEventListeners()
{let effectiveDOMNode=this.domNode.isPseudoElement()?this.domNode.parentNode:this.domNode;if(!effectiveDOMNode)
return;effectiveDOMNode.addEventListener(WebInspector.DOMNode.Event.EnabledPseudoClassesChanged,this._updatePseudoClassCheckboxes,this);effectiveDOMNode.addEventListener(WebInspector.DOMNode.Event.AttributeModified,this._handleNodeAttributeModified,this);effectiveDOMNode.addEventListener(WebInspector.DOMNode.Event.AttributeRemoved,this._handleNodeAttributeRemoved,this);}
removeEventListeners()
{let effectiveDOMNode=this.domNode.isPseudoElement()?this.domNode.parentNode:this.domNode;if(!effectiveDOMNode)
return;effectiveDOMNode.removeEventListener(null,null,this);}
initialLayout()
{if(WebInspector.cssStyleManager.canForcePseudoClasses()){this._forcedPseudoClassContainer=document.createElement("div");this._forcedPseudoClassContainer.className="pseudo-classes";let groupElement=null;WebInspector.CSSStyleManager.ForceablePseudoClasses.forEach(function(pseudoClass){let label=pseudoClass.capitalize();let labelElement=document.createElement("label");let checkboxElement=document.createElement("input");checkboxElement.addEventListener("change",this._forcedPseudoClassCheckboxChanged.bind(this,pseudoClass));checkboxElement.type="checkbox";this._forcedPseudoClassCheckboxes[pseudoClass]=checkboxElement;labelElement.appendChild(checkboxElement);labelElement.append(label);if(!groupElement||groupElement.children.length===2){groupElement=document.createElement("div");groupElement.className="group";this._forcedPseudoClassContainer.appendChild(groupElement);}
groupElement.appendChild(labelElement);},this);this.contentView.element.appendChild(this._forcedPseudoClassContainer);}
this._computedStyleDetailsPanel.addEventListener(WebInspector.StyleDetailsPanel.Event.Refreshed,this._filterDidChange,this);this._rulesStyleDetailsPanel.addEventListener(WebInspector.StyleDetailsPanel.Event.Refreshed,this._filterDidChange,this);this._switchPanels(this._initiallySelectedPanel);this._initiallySelectedPanel=null;let optionsContainer=this.element.createChild("div","options-container");let newRuleButton=optionsContainer.createChild("img","new-rule");newRuleButton.title=WebInspector.UIString("Add new rule");newRuleButton.addEventListener("click",this._newRuleButtonClicked.bind(this));newRuleButton.addEventListener("contextmenu",this._newRuleButtonContextMenu.bind(this));this._filterBar=new WebInspector.FilterBar;this._filterBar.placeholder=WebInspector.UIString("Filter Styles");this._filterBar.addEventListener(WebInspector.FilterBar.Event.FilterDidChange,this._filterDidChange,this);optionsContainer.appendChild(this._filterBar.element);this._classToggleButton=optionsContainer.createChild("button","toggle-class-toggle");this._classToggleButton.textContent=WebInspector.UIString("Classes");this._classToggleButton.title=WebInspector.UIString("Toggle Classes");this._classToggleButton.addEventListener("click",this._classToggleButtonClicked.bind(this));this._classListContainer=this.element.createChild("div","class-list-container");this._classListContainer.hidden=true;this._addClassContainer=this._classListContainer.createChild("div","new-class");this._addClassContainer.title=WebInspector.UIString("Add a Class");this._addClassContainer.addEventListener("click",this._addClassContainerClicked.bind(this));this._addClassInput=this._addClassContainer.createChild("input","class-name-input");this._addClassInput.setAttribute("placeholder",WebInspector.UIString("Enter Class Name"));this._addClassInput.addEventListener("keypress",this._addClassInputKeyPressed.bind(this));this._addClassInput.addEventListener("blur",this._addClassInputBlur.bind(this));WebInspector.cssStyleManager.addEventListener(WebInspector.CSSStyleManager.Event.StyleSheetAdded,this._styleSheetAddedOrRemoved,this);WebInspector.cssStyleManager.addEventListener(WebInspector.CSSStyleManager.Event.StyleSheetRemoved,this._styleSheetAddedOrRemoved,this);if(this._classListContainerToggledSetting.value)
this._classToggleButtonClicked();}
sizeDidChange()
{super.sizeDidChange();this._updateNoForcedPseudoClassesScrollOffset();if(this._selectedPanel)
this._selectedPanel.sizeDidChange();}
get _initialScrollOffset()
{if(!WebInspector.cssStyleManager.canForcePseudoClasses())
return 0;return this.domNode&&this.domNode.enabledPseudoClasses.length?0:WebInspector.CSSStyleDetailsSidebarPanel.NoForcedPseudoClassesScrollOffset;}
_updateNoForcedPseudoClassesScrollOffset()
{if(this._forcedPseudoClassContainer)
WebInspector.CSSStyleDetailsSidebarPanel.NoForcedPseudoClassesScrollOffset=this._forcedPseudoClassContainer.offsetHeight;}
_panelMatchingIdentifier(identifier)
{let selectedPanel=null;for(let panel of this._panels){if(panel.navigationInfo.identifier!==identifier)
continue;selectedPanel=panel;break;}
return selectedPanel;}
_handleSelectedItemChanged()
{let selectedIdentifier=this._navigationItem.selectedItemIdentifier;let selectedPanel=this._panelMatchingIdentifier(selectedIdentifier);this._switchPanels(selectedPanel);}
_switchPanels(selectedPanel)
{if(this._selectedPanel){this._selectedPanel.hidden();this._selectedPanel.element._savedScrollTop=this.contentView.element.scrollTop;this.contentView.removeSubview(this._selectedPanel);}
this._selectedPanel=selectedPanel;if(!this._selectedPanel)
return;this.contentView.addSubview(this._selectedPanel);if(typeof this._selectedPanel.element._savedScrollTop==="number")
this.contentView.element.scrollTop=this._selectedPanel.element._savedScrollTop;else
this.contentView.element.scrollTop=this._initialScrollOffset;let hasFilter=typeof this._selectedPanel.filterDidChange==="function";this.contentView.element.classList.toggle("has-filter-bar",hasFilter);if(this._filterBar)
this.contentView.element.classList.toggle(WebInspector.CSSStyleDetailsSidebarPanel.FilterInProgressClassName,hasFilter&&this._filterBar.hasActiveFilters());this.contentView.element.classList.toggle("supports-new-rule",typeof this._selectedPanel.newRuleButtonClicked==="function");this._selectedPanel.shown();this._lastSelectedPanelSetting.value=selectedPanel.navigationInfo.identifier;}
_forcedPseudoClassCheckboxChanged(pseudoClass,event)
{if(!this.domNode)
return;let effectiveDOMNode=this.domNode.isPseudoElement()?this.domNode.parentNode:this.domNode;effectiveDOMNode.setPseudoClassEnabled(pseudoClass,event.target.checked);}
_updatePseudoClassCheckboxes()
{if(!this.domNode)
return;let effectiveDOMNode=this.domNode.isPseudoElement()?this.domNode.parentNode:this.domNode;let enabledPseudoClasses=effectiveDOMNode.enabledPseudoClasses;for(let pseudoClass in this._forcedPseudoClassCheckboxes){let checkboxElement=this._forcedPseudoClassCheckboxes[pseudoClass];checkboxElement.checked=enabledPseudoClasses.includes(pseudoClass);}}
_handleNodeAttributeModified(event)
{if(event&&event.data&&event.data.name==="class")
this._populateClassToggles();}
_handleNodeAttributeRemoved(event)
{if(event&&event.data&&event.data.name==="class")
this._populateClassToggles();}
_newRuleButtonClicked()
{if(this._selectedPanel&&typeof this._selectedPanel.newRuleButtonClicked==="function")
this._selectedPanel.newRuleButtonClicked();}
_newRuleButtonContextMenu(event)
{if(this._selectedPanel&&typeof this._selectedPanel.newRuleButtonContextMenu==="function")
this._selectedPanel.newRuleButtonContextMenu(event);}
_classToggleButtonClicked(event)
{this._classToggleButton.classList.toggle("selected");this._classListContainer.hidden=!this._classListContainer.hidden;this._classListContainerToggledSetting.value=!this._classListContainer.hidden;if(this._classListContainer.hidden)
return;this._populateClassToggles();}
_addClassContainerClicked(event)
{this._addClassContainer.classList.add("active");this._addClassInput.focus();}
_addClassInputKeyPressed(event)
{if(event.keyCode!==WebInspector.KeyboardShortcut.Key.Enter.keyCode)
return;this._addClassInput.blur();}
_addClassInputBlur(event)
{this.domNode.toggleClass(this._addClassInput.value,true);this._addClassContainer.classList.remove("active");this._addClassInput.value=null;}
_populateClassToggles()
{while(this._classListContainer.children.length>1)
this._classListContainer.children[1].remove();let classes=this.domNode.getAttribute("class");let classToggledMap=this.domNode[WebInspector.CSSStyleDetailsSidebarPanel.ToggledClassesSymbol];if(!classToggledMap)
classToggledMap=this.domNode[WebInspector.CSSStyleDetailsSidebarPanel.ToggledClassesSymbol]=new Map;if(classes&&classes.length){for(let className of classes.split(/\s+/))
classToggledMap.set(className,true);}
for(let[className,toggled]of classToggledMap){if((toggled&&!classes.includes(className))||(!toggled&&classes.includes(className))){toggled=!toggled;classToggledMap.set(className,toggled);}
this._createToggleForClassName(className);}}
_createToggleForClassName(className)
{if(!className||!className.length)
return;let classToggledMap=this.domNode[WebInspector.CSSStyleDetailsSidebarPanel.ToggledClassesSymbol];if(!classToggledMap)
return;if(!classToggledMap.has(className))
classToggledMap.set(className,true);let toggled=classToggledMap.get(className);let classNameContainer=document.createElement("div");classNameContainer.classList.add("class-toggle");let classNameToggle=classNameContainer.createChild("input");classNameToggle.type="checkbox";classNameToggle.checked=toggled;let classNameTitle=classNameContainer.createChild("span");classNameTitle.textContent=className;classNameTitle.draggable=true;classNameTitle.addEventListener("dragstart",(event)=>{event.dataTransfer.setData(WebInspector.CSSStyleDetailsSidebarPanel.ToggledClassesDragType,className);event.dataTransfer.effectAllowed="copy";});let classNameToggleChanged=(event)=>{this.domNode.toggleClass(className,classNameToggle.checked);classToggledMap.set(className,classNameToggle.checked);};classNameToggle.addEventListener("click",classNameToggleChanged);classNameTitle.addEventListener("click",(event)=>{classNameToggle.checked=!classNameToggle.checked;classNameToggleChanged();});this._classListContainer.appendChild(classNameContainer);}
_filterDidChange()
{this.contentView.element.classList.toggle(WebInspector.CSSStyleDetailsSidebarPanel.FilterInProgressClassName,this._filterBar.hasActiveFilters());this._selectedPanel.filterDidChange(this._filterBar);}
_styleSheetAddedOrRemoved()
{this.needsLayout();}};WebInspector.CSSStyleDetailsSidebarPanel.NoForcedPseudoClassesScrollOffset=30;WebInspector.CSSStyleDetailsSidebarPanel.FilterInProgressClassName="filter-in-progress";WebInspector.CSSStyleDetailsSidebarPanel.FilterMatchingSectionHasLabelClassName="filter-section-has-label";WebInspector.CSSStyleDetailsSidebarPanel.FilterMatchSectionClassName="filter-matching";WebInspector.CSSStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName="filter-section-non-matching";WebInspector.CSSStyleDetailsSidebarPanel.NoFilterMatchInPropertyClassName="filter-property-non-matching";WebInspector.CSSStyleDetailsSidebarPanel.ToggledClassesSymbol=Symbol("css-style-details-sidebar-panel-toggled-classes-symbol");WebInspector.CSSStyleDetailsSidebarPanel.ToggledClassesDragType="text/classname";WebInspector.CSSStyleSheetTreeElement=class CSSStyleSheetTreeElement extends WebInspector.SourceCodeTreeElement
{constructor(styleSheet)
{const classNames=["stylesheet","stylesheet-icon"];const title=WebInspector.UIString("Inspector Style Sheet");const subtitle=null;const hasChildren=false;super(styleSheet,classNames,title,subtitle,styleSheet,hasChildren);}};WebInspector.CallFrameTreeElement=class CallFrameTreeElement extends WebInspector.GeneralTreeElement
{constructor(callFrame,isAsyncBoundaryCallFrame)
{let className=WebInspector.CallFrameView.iconClassNameForCallFrame(callFrame);let title=callFrame.functionName||WebInspector.UIString("(anonymous function)");super(["call-frame",className],title,null,callFrame,false);this._callFrame=callFrame;this._isActiveCallFrame=false;if(isAsyncBoundaryCallFrame){this.addClassName("async-boundary");this.selectable=false;}
if(this._callFrame.nativeCode||!this._callFrame.sourceCodeLocation){this.subtitle="";return;}
let displayScriptURL=this._callFrame.sourceCodeLocation.displaySourceCode.url;if(displayScriptURL){this.subtitle=document.createElement("span");this._callFrame.sourceCodeLocation.populateLiveDisplayLocationString(this.subtitle,"textContent");this.tooltipHandledSeparately=true;}}
get callFrame(){return this._callFrame;}
get isActiveCallFrame(){return this._isActiveCallFrame;}
set isActiveCallFrame(x)
{if(this._isActiveCallFrame===x)
return;this._isActiveCallFrame=x;this._updateStatus();}
onattach()
{super.onattach();if(this.tooltipHandledSeparately){let tailCallSuffix="";if(this._callFrame.isTailDeleted)
tailCallSuffix=" "+WebInspector.UIString("(Tail Call)");let tooltipPrefix=this.mainTitle+tailCallSuffix+"\n";this._callFrame.sourceCodeLocation.populateLiveDisplayLocationTooltip(this.element,tooltipPrefix);}
this._updateStatus();}
_updateStatus()
{if(!this.element)
return;if(!this._isActiveCallFrame){this.status=null;return;}
if(!this._statusImageElement)
this._statusImageElement=useSVGSymbol("Images/ActiveCallFrame.svg","status-image");this.status=this._statusImageElement;}};WebInspector.CallFrameView=class CallFrameView extends WebInspector.Object
{constructor(callFrame,showFunctionName)
{var callFrameElement=document.createElement("div");callFrameElement.classList.add("call-frame",WebInspector.CallFrameView.iconClassNameForCallFrame(callFrame));var subtitleElement=document.createElement("span");subtitleElement.classList.add("subtitle");var sourceCodeLocation=callFrame.sourceCodeLocation;if(sourceCodeLocation){WebInspector.linkifyElement(callFrameElement,sourceCodeLocation);var linkElement=document.createElement("a");linkElement.classList.add("source-link");linkElement.href=sourceCodeLocation.sourceCode.url;if(showFunctionName){var separatorElement=document.createElement("span");separatorElement.classList.add("separator");separatorElement.textContent=" — ";subtitleElement.append(separatorElement);}
subtitleElement.append(linkElement);sourceCodeLocation.populateLiveDisplayLocationTooltip(linkElement);sourceCodeLocation.populateLiveDisplayLocationString(linkElement,"textContent");}
var titleElement=document.createElement("span");titleElement.classList.add("title");if(showFunctionName){var imgElement=document.createElement("img");imgElement.classList.add("icon");titleElement.append(imgElement,callFrame.functionName||WebInspector.UIString("(anonymous function)"));}
callFrameElement.append(titleElement,subtitleElement);return callFrameElement;}
static iconClassNameForCallFrame(callFrame)
{if(callFrame.isTailDeleted)
return WebInspector.CallFrameView.TailDeletedIcon;if(callFrame.programCode)
return WebInspector.CallFrameView.ProgramIconStyleClassName;
if(callFrame.functionName&&callFrame.functionName.startsWith("on")&&callFrame.functionName.length>=5)
return WebInspector.CallFrameView.EventListenerIconStyleClassName;if(callFrame.nativeCode)
return WebInspector.CallFrameView.NativeIconStyleClassName;return WebInspector.CallFrameView.FunctionIconStyleClassName;}};WebInspector.CallFrameView.ProgramIconStyleClassName="program-icon";WebInspector.CallFrameView.FunctionIconStyleClassName="function-icon";WebInspector.CallFrameView.EventListenerIconStyleClassName="event-listener-icon";WebInspector.CallFrameView.NativeIconStyleClassName="native-icon";WebInspector.CallFrameView.TailDeletedIcon="tail-deleted";WebInspector.CanvasContentView=class CanvasContentView extends WebInspector.ContentView
{constructor(representedObject)
{super(representedObject);this.element.classList.add("canvas");this._previewContainerElement=null;this._previewImageElement=null;this._errorElement=null;this._refreshButtonNavigationItem=new WebInspector.ButtonNavigationItem("canvas-refresh",WebInspector.UIString("Refresh"),"Images/ReloadFull.svg",13,13);this._refreshButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._showPreview,this);this._showGridButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("show-grid",WebInspector.UIString("Show Grid"),WebInspector.UIString("Hide Grid"),"Images/NavigationItemCheckers.svg",13,13);this._showGridButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._showGridButtonClicked,this);this._showGridButtonNavigationItem.activated=!!WebInspector.settings.showImageGrid.value;}
get navigationItems()
{return[this._refreshButtonNavigationItem,this._showGridButtonNavigationItem];}
shown()
{super.shown();this._showPreview();WebInspector.settings.showImageGrid.addEventListener(WebInspector.Setting.Event.Changed,this._updateImageGrid,this);}
hidden()
{WebInspector.settings.showImageGrid.removeEventListener(WebInspector.Setting.Event.Changed,this._updateImageGrid,this);super.hidden();}
_showPreview()
{let showError=()=>{if(this._previewContainerElement)
this._previewContainerElement.remove();if(!this._errorElement){const isError=true;this._errorElement=WebInspector.createMessageTextView(WebInspector.UIString("No Preview Available"),isError);}
this.element.appendChild(this._errorElement);};if(!this._previewContainerElement){this._previewContainerElement=this.element.appendChild(document.createElement("div"));this._previewContainerElement.classList.add("preview");}
this.representedObject.requestContent((content)=>{if(!content){showError();return;}
if(this._errorElement)
this._errorElement.remove();if(!this._previewImageElement){this._previewImageElement=document.createElement("img");this._previewImageElement.addEventListener("error",showError);}
this._previewImageElement.src=content;this._previewContainerElement.appendChild(this._previewImageElement);this._updateImageGrid();});}
_updateImageGrid()
{if(!this._previewImageElement)
return;let activated=WebInspector.settings.showImageGrid.value;this._showGridButtonNavigationItem.activated=activated;this._previewImageElement.classList.toggle("show-grid",activated);}
_showGridButtonClicked(event)
{WebInspector.settings.showImageGrid.value=!this._showGridButtonNavigationItem.activated;this._updateImageGrid();}};WebInspector.CanvasDetailsSidebarPanel=class CanvasDetailsSidebarPanel extends WebInspector.DetailsSidebarPanel
{constructor()
{super("canvas",WebInspector.UIString("Canvas"));this.element.classList.add("canvas");this._canvas=null;this._node=null;}
inspect(objects)
{if(!(objects instanceof Array))
objects=[objects];this.canvas=objects.find((object)=>object instanceof WebInspector.Canvas);return!!this._canvas;}
get canvas()
{return this._canvas;}
set canvas(canvas)
{if(canvas===this._canvas)
return;if(this._node){this._node.removeEventListener(WebInspector.DOMNode.Event.AttributeModified,this._refreshSourceSection,this);this._node.removeEventListener(WebInspector.DOMNode.Event.AttributeRemoved,this._refreshSourceSection,this);this._node=null;}
if(this._canvas){this._canvas.removeEventListener(WebInspector.Canvas.Event.MemoryChanged,this._canvasMemoryChanged,this);this._canvas.removeEventListener(WebInspector.Canvas.Event.CSSCanvasClientNodesChanged,this._refreshCSSCanvasSection,this);}
this._canvas=canvas||null;if(this._canvas){this._canvas.addEventListener(WebInspector.Canvas.Event.MemoryChanged,this._canvasMemoryChanged,this);this._canvas.addEventListener(WebInspector.Canvas.Event.CSSCanvasClientNodesChanged,this._refreshCSSCanvasSection,this);}
this.needsLayout();}
initialLayout()
{super.initialLayout();this._nameRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Name"));this._typeRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Type"));this._memoryRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Memory"));this._memoryRow.tooltip=WebInspector.UIString("Memory usage of this canvas");let identitySection=new WebInspector.DetailsSection("canvas-details",WebInspector.UIString("Identity"));identitySection.groups=[new WebInspector.DetailsSectionGroup([this._nameRow,this._typeRow,this._memoryRow])];this.contentView.element.appendChild(identitySection.element);this._nodeRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Node"));this._cssCanvasRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("CSS Canvas"));this._widthRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Width"));this._heightRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Height"));this._datachedRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Detached"));let sourceSection=new WebInspector.DetailsSection("canvas-source",WebInspector.UIString("Source"));sourceSection.groups=[new WebInspector.DetailsSectionGroup([this._nodeRow,this._cssCanvasRow,this._widthRow,this._heightRow,this._datachedRow])];this.contentView.element.appendChild(sourceSection.element);this._attributesDataGridRow=new WebInspector.DetailsSectionDataGridRow(null,WebInspector.UIString("No Attributes"));let attributesSection=new WebInspector.DetailsSection("canvas-attributes",WebInspector.UIString("Attributes"));attributesSection.groups=[new WebInspector.DetailsSectionGroup([this._attributesDataGridRow])];this.contentView.element.appendChild(attributesSection.element);this._cssCanvasClientsRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Nodes"));this._cssCanvasSection=new WebInspector.DetailsSection("canvas-css",WebInspector.UIString("CSS"));this._cssCanvasSection.groups=[new WebInspector.DetailsSectionGroup([this._cssCanvasClientsRow])];this._cssCanvasSection.element.hidden=true;this.contentView.element.appendChild(this._cssCanvasSection.element);}
layout()
{super.layout();if(!this._canvas)
return;this._refreshIdentitySection();this._refreshSourceSection();this._refreshAttributesSection();this._refreshCSSCanvasSection();}
sizeDidChange()
{super.sizeDidChange(); this._attributesDataGridRow.sizeDidChange();}
_refreshIdentitySection()
{if(!this._canvas)
return;this._nameRow.value=this._canvas.displayName;this._typeRow.value=WebInspector.Canvas.displayNameForContextType(this._canvas.contextType);this._formatMemoryRow();}
_refreshSourceSection()
{if(!this._canvas)
return;this._nodeRow.value=this._canvas.cssCanvasName?null:emDash;this._cssCanvasRow.value=this._canvas.cssCanvasName||null;this._widthRow.value=emDash;this._heightRow.value=emDash;this._datachedRow.value=null;this._canvas.requestNode((node)=>{if(!node)
return;if(node!==this._node){if(this._node){this._node.removeEventListener(WebInspector.DOMNode.Event.AttributeModified,this._refreshSourceSection,this);this._node.removeEventListener(WebInspector.DOMNode.Event.AttributeRemoved,this._refreshSourceSection,this);this._node=null;}
this._node=node;this._node.addEventListener(WebInspector.DOMNode.Event.AttributeModified,this._refreshSourceSection,this);this._node.addEventListener(WebInspector.DOMNode.Event.AttributeRemoved,this._refreshSourceSection,this);}
if(!this._canvas.cssCanvasName)
this._nodeRow.value=WebInspector.linkifyNodeReference(this._node);let setRowValueIfValidAttributeValue=(row,attribute)=>{let value=Number(this._node.getAttribute(attribute));if(!Number.isInteger(value)||value<0)
return false;row.value=value;return true;};let validWidth=setRowValueIfValidAttributeValue(this._widthRow,"width");let validHeight=setRowValueIfValidAttributeValue(this._heightRow,"height");if(!validWidth||!validHeight){
WebInspector.RemoteObject.resolveNode(node,"",(remoteObject)=>{if(!remoteObject)
return;function setRowValueToPropertyValue(row,property){remoteObject.getProperty(property,(error,result,wasThrown)=>{if(!error&&result.type==="number")
row.value=`${result.value}px`;});}
setRowValueToPropertyValue(this._widthRow,"width");setRowValueToPropertyValue(this._heightRow,"height");remoteObject.release();});}
if(!this._canvas.cssCanvasName&&!this._node.parentNode)
this._datachedRow.value=WebInspector.UIString("Yes");});}
_refreshAttributesSection()
{if(!this._canvas)
return;if(isEmptyObject(this._canvas.contextAttributes)){this._attributesDataGridRow.dataGrid=null;return;}
let dataGrid=this._attributesDataGridRow.dataGrid;if(!dataGrid){dataGrid=this._attributesDataGridRow.dataGrid=new WebInspector.DataGrid({name:{title:WebInspector.UIString("Name")},value:{title:WebInspector.UIString("Value"),width:"30%"},});}
dataGrid.removeChildren();for(let attribute in this._canvas.contextAttributes){let data={name:attribute,value:this._canvas.contextAttributes[attribute]};let dataGridNode=new WebInspector.DataGridNode(data);dataGrid.appendChild(dataGridNode);}
dataGrid.updateLayoutIfNeeded();}
_refreshCSSCanvasSection()
{if(!this._canvas)
return;if(!this._canvas.cssCanvasName){this._cssCanvasSection.element.hidden=true;return;}
this._cssCanvasClientsRow.value=emDash;this._cssCanvasSection.element.hidden=false;this._canvas.requestCSSCanvasClientNodes((cssCanvasClientNodes)=>{if(!cssCanvasClientNodes.length)
return;let fragment=document.createDocumentFragment();for(let clientNode of cssCanvasClientNodes)
fragment.appendChild(WebInspector.linkifyNodeReference(clientNode));this._cssCanvasClientsRow.value=fragment;});}
_formatMemoryRow()
{if(!this._canvas.memoryCost||isNaN(this._canvas.memoryCost)){this._memoryRow.value=emDash;return;}
this._memoryRow.value=Number.bytesToString(this._canvas.memoryCost);}
_canvasMemoryChanged(event)
{this._formatMemoryRow();}};WebInspector.CanvasTreeElement=class CanvasTreeElement extends WebInspector.GeneralTreeElement
{constructor(representedObject)
{const subtitle=null;super(["canvas",representedObject.contextType],representedObject.displayName,subtitle,representedObject);}
onattach()
{super.onattach();this.element.addEventListener("mouseover",this._handleMouseOver.bind(this));this.element.addEventListener("mouseout",this._handleMouseOut.bind(this));}
populateContextMenu(contextMenu,event)
{super.populateContextMenu(contextMenu,event);contextMenu.appendItem(WebInspector.UIString("Log Canvas Context"),()=>{WebInspector.RemoteObject.resolveCanvasContext(this.representedObject,WebInspector.RuntimeManager.ConsoleObjectGroup,(remoteObject)=>{if(!remoteObject)
return;const text=WebInspector.UIString("Selected Canvas Context");const addSpecialUserLogClass=true;WebInspector.consoleLogViewController.appendImmediateExecutionWithResult(text,remoteObject,addSpecialUserLogClass);});});contextMenu.appendSeparator();}
_handleMouseOver(event)
{if(this.representedObject.cssCanvasName){this.representedObject.requestCSSCanvasClientNodes((cssCanvasClientNodes)=>{WebInspector.domTreeManager.highlightDOMNodeList(cssCanvasClientNodes.map((node)=>node.id),"all");});}else{this.representedObject.requestNode((node)=>{if(!node||!node.ownerDocument)
return;WebInspector.domTreeManager.highlightDOMNode(node.id,"all");});}}
_handleMouseOut(event)
{WebInspector.domTreeManager.hideDOMNodeHighlight();}};WebInspector.ChartDetailsSectionRow=class ChartDetailsSectionRow extends WebInspector.DetailsSectionRow
{constructor(delegate,chartSize,innerRadiusRatio)
{super(WebInspector.UIString("No Chart Available"));innerRadiusRatio=innerRadiusRatio||0;this.element.classList.add("chart");this._titleElement=document.createElement("div");this._titleElement.className="title";this.element.appendChild(this._titleElement);let chartContentElement=document.createElement("div");chartContentElement.className="chart-content";this.element.appendChild(chartContentElement);this._chartElement=createSVGElement("svg");chartContentElement.appendChild(this._chartElement);this._legendElement=document.createElement("div");this._legendElement.className="legend";chartContentElement.appendChild(this._legendElement);this._delegate=delegate;this._items=new Map;this._title="";this._chartSize=chartSize;this._radius=(this._chartSize/2)-1;this._innerRadius=innerRadiusRatio?Math.floor(this._radius*innerRadiusRatio):0;this._total=0;this._svgFiltersElement=document.createElement("svg");this._svgFiltersElement.classList.add("defs-only");this.element.append(this._svgFiltersElement);this._checkboxStyleElement=document.createElement("style");this._checkboxStyleElement.id="checkbox-styles";document.getElementsByTagName("head")[0].append(this._checkboxStyleElement);function createEmptyChartPathData(c,r1,r2)
{const a1=0;const a2=Math.PI*1.9999;let x1=c+Math.cos(a1)*r1,y1=c+Math.sin(a1)*r1,x2=c+Math.cos(a2)*r1,y2=c+Math.sin(a2)*r1,x3=c+Math.cos(a2)*r2,y3=c+Math.sin(a2)*r2,x4=c+Math.cos(a1)*r2,y4=c+Math.sin(a1)*r2;return["M",x1,y1,"A",r1,r1,0,1,1,x2,y2,"Z","M",x3,y3,"A",r2,r2,0,1,0,x4,y4,"Z"].join(" ");}
this._emptyChartPath=createSVGElement("path");this._emptyChartPath.setAttribute("d",createEmptyChartPathData(this._chartSize/2,this._radius,this._innerRadius));this._emptyChartPath.classList.add("empty-chart");this._chartElement.appendChild(this._emptyChartPath);}
get chartSize()
{return this._chartSize;}
set title(title)
{if(this._title===title)
return;this._title=title;this._titleElement.textContent=title;}
get total()
{return this._total;}
addItem(id,label,value,color,checkbox,checked)
{if(this._items.has(id))
return;if(value<0)
return;this._items.set(id,{label,value,color,checkbox,checked});this._total+=value;this._needsLayout();}
setItemValue(id,value)
{let item=this._items.get(id);if(!item)
return;if(value<0)
return;if(item.value===value)
return;this._total+=value-item.value;item.value=value;this._needsLayout();}
clearItems()
{for(let item of this._items.values()){let path=item[WebInspector.ChartDetailsSectionRow.ChartSegmentPathSymbol];if(path)
path.remove();}
this._total=0;this._items.clear();this._needsLayout();}
_addCheckboxColorFilter(id,r,g,b)
{for(let i=0;i<this._svgFiltersElement.childNodes.length;++i){if(this._svgFiltersElement.childNodes[i].id===id)
return;}
r/=255;b/=255;g/=255;let filterElement=createSVGElement("filter");filterElement.id=id;filterElement.setAttribute("color-interpolation-filters","sRGB");let values=[1-r,0,0,0,r,1-g,0,0,0,g,1-b,0,0,0,b,0,0,0,1,0];let colorMatrixPrimitive=createSVGElement("feColorMatrix");colorMatrixPrimitive.setAttribute("type","matrix");colorMatrixPrimitive.setAttribute("values",values.join(" "));function createGammaPrimitive(tagName,value)
{let gammaPrimitive=createSVGElement(tagName);gammaPrimitive.setAttribute("type","gamma");gammaPrimitive.setAttribute("exponent",value);return gammaPrimitive;}
let componentTransferPrimitive=createSVGElement("feComponentTransfer");componentTransferPrimitive.append(createGammaPrimitive("feFuncR",1.4),createGammaPrimitive("feFuncG",1.4),createGammaPrimitive("feFuncB",1.4));filterElement.append(colorMatrixPrimitive,componentTransferPrimitive);this._svgFiltersElement.append(filterElement);let styleSheet=this._checkboxStyleElement.sheet;styleSheet.insertRule(".details-section > .content > .group > .row.chart > .chart-content > .legend > .legend-item > label > input[type=checkbox]."+id+" { filter: grayscale(1) url(#"+id+") }",0);}
_updateLegend()
{if(!this._items.size){this._legendElement.removeChildren();return;}
function formatItemValue(item)
{if(this._delegate&&typeof this._delegate.formatChartValue==="function")
return this._delegate.formatChartValue(item.value);return item.value;}
for(let[id,item]of this._items){if(item[WebInspector.ChartDetailsSectionRow.LegendItemValueElementSymbol]){let valueElement=item[WebInspector.ChartDetailsSectionRow.LegendItemValueElementSymbol];valueElement.textContent=formatItemValue.call(this,item);continue;}
let labelElement=document.createElement("label");let keyElement;if(item.checkbox){let className=id.toLowerCase();let rgb=item.color.substring(4,item.color.length-1).replace(/ /g,"").split(",");if(rgb[0]===rgb[1]&&rgb[1]===rgb[2])
rgb[0]=rgb[1]=rgb[2]=Math.min(160,rgb[0]);keyElement=document.createElement("input");keyElement.type="checkbox";keyElement.classList.add(className);keyElement.checked=item.checked;keyElement[WebInspector.ChartDetailsSectionRow.DataItemIdSymbol]=id;keyElement.addEventListener("change",this._legendItemCheckboxValueChanged.bind(this));this._addCheckboxColorFilter(className,rgb[0],rgb[1],rgb[2]);}else{keyElement=document.createElement("div");keyElement.classList.add("color-key");keyElement.style.backgroundColor=item.color;}
labelElement.append(keyElement,item.label);let valueElement=document.createElement("div");valueElement.classList.add("value");valueElement.textContent=formatItemValue.call(this,item);item[WebInspector.ChartDetailsSectionRow.LegendItemValueElementSymbol]=valueElement;let legendItemElement=document.createElement("div");legendItemElement.classList.add("legend-item");legendItemElement.append(labelElement,valueElement);this._legendElement.append(legendItemElement);}}
_legendItemCheckboxValueChanged(event)
{let checkbox=event.target;let id=checkbox[WebInspector.ChartDetailsSectionRow.DataItemIdSymbol];this.dispatchEventToListeners(WebInspector.ChartDetailsSectionRow.Event.LegendItemChecked,{id,checked:checkbox.checked});}
_needsLayout()
{if(this._scheduledLayoutUpdateIdentifier)
return;this._scheduledLayoutUpdateIdentifier=requestAnimationFrame(this._updateLayout.bind(this));}
_updateLayout()
{if(this._scheduledLayoutUpdateIdentifier){cancelAnimationFrame(this._scheduledLayoutUpdateIdentifier);this._scheduledLayoutUpdateIdentifier=undefined;}
this._updateLegend();this._chartElement.setAttribute("width",this._chartSize);this._chartElement.setAttribute("height",this._chartSize);this._chartElement.setAttribute("viewbox","0 0 "+this._chartSize+" "+this._chartSize);function createSegmentPathData(c,a1,a2,r1,r2)
{const largeArcFlag=((a2-a1)%(Math.PI*2))>Math.PI?1:0;let x1=c+Math.cos(a1)*r1,y1=c+Math.sin(a1)*r1,x2=c+Math.cos(a2)*r1,y2=c+Math.sin(a2)*r1,x3=c+Math.cos(a2)*r2,y3=c+Math.sin(a2)*r2,x4=c+Math.cos(a1)*r2,y4=c+Math.sin(a1)*r2;return["M",x1,y1,"A",r1,r1,0,largeArcFlag,1,x2,y2,"L",x3,y3,"A",r2,r2,0,largeArcFlag,0,x4,y4,"Z"].join(" ");}
const minimumDisplayValue=this._total*0.015;let items=[];for(let item of this._items.values()){item.displayValue=item.value?Math.max(minimumDisplayValue,item.value):0;if(item.displayValue)
items.push(item);}
if(items.length>1){items.sort(function(a,b){return a.value-b.value;});let largeItemCount=items.length;let totalAdjustedValue=0;for(let item of items){if(item.value<minimumDisplayValue){totalAdjustedValue+=minimumDisplayValue-item.value;largeItemCount--;continue;}
if(!totalAdjustedValue||!largeItemCount)
break;const donatedValue=totalAdjustedValue/largeItemCount;if(item.displayValue-donatedValue>=minimumDisplayValue){item.displayValue-=donatedValue;totalAdjustedValue-=donatedValue;}
largeItemCount--;}}
const center=this._chartSize/2;let startAngle=-Math.PI/2;let endAngle=0;for(let[id,item]of this._items){let path=item[WebInspector.ChartDetailsSectionRow.ChartSegmentPathSymbol];if(!path){path=createSVGElement("path");path.classList.add("chart-segment");path.setAttribute("fill",item.color);this._chartElement.appendChild(path);item[WebInspector.ChartDetailsSectionRow.ChartSegmentPathSymbol]=path;}
if(!item.value){path.classList.add("hidden");continue;}
const angle=(item.displayValue/this._total)*Math.PI*2;endAngle=startAngle+angle;path.setAttribute("d",createSegmentPathData(center,startAngle,endAngle,this._radius,this._innerRadius));path.classList.remove("hidden");startAngle=endAngle;}}};WebInspector.ChartDetailsSectionRow.DataItemIdSymbol=Symbol("chart-details-section-row-data-item-id");WebInspector.ChartDetailsSectionRow.ChartSegmentPathSymbol=Symbol("chart-details-section-row-chart-segment-path");WebInspector.ChartDetailsSectionRow.LegendItemValueElementSymbol=Symbol("chart-details-section-row-legend-item-value-element");WebInspector.ChartDetailsSectionRow.Event={LegendItemChecked:"chart-details-section-row-legend-item-checked"};
WebInspector.CircleChart=class CircleChart
{constructor({size,innerRadiusRatio})
{this._data=[];this._size=size;this._radius=(size/2)-1;this._innerRadius=innerRadiusRatio?Math.floor(this._radius*innerRadiusRatio):0;this._element=document.createElement("div");this._element.classList.add("circle-chart");this._chartElement=this._element.appendChild(createSVGElement("svg"));this._chartElement.setAttribute("width",size);this._chartElement.setAttribute("height",size);this._chartElement.setAttribute("viewbox",`0 0 ${size} ${size}`);this._pathElements=[];this._values=[];this._total=0;let backgroundPath=this._chartElement.appendChild(createSVGElement("path"));backgroundPath.setAttribute("d",this._createCompleteCirclePathData(this.size/2,this._radius,this._innerRadius));backgroundPath.classList.add("background");}
get element(){return this._element;}
get points(){return this._points;}
get size(){return this._size;}
get centerElement()
{if(!this._centerElement){this._centerElement=this._element.appendChild(document.createElement("div"));this._centerElement.classList.add("center");this._centerElement.style.width=this._centerElement.style.height=this._radius+"px";this._centerElement.style.top=this._centerElement.style.left=(this._radius-this._innerRadius)+"px";}
return this._centerElement;}
get segments()
{return this._segments;}
set segments(segmentClassNames)
{for(let pathElement of this._pathElements)
pathElement.remove();this._pathElements=[];for(let className of segmentClassNames){let pathElement=this._chartElement.appendChild(createSVGElement("path"));pathElement.classList.add("segment",className);this._pathElements.push(pathElement);}}
get values()
{return this._values;}
set values(values)
{this._values=values;this._total=0;for(let value of values)
this._total+=value;}
clear()
{this.values=new Array(this._values.length).fill(0);}
needsLayout()
{if(this._scheduledLayoutUpdateIdentifier)
return;this._scheduledLayoutUpdateIdentifier=requestAnimationFrame(this.updateLayout.bind(this));}
updateLayout()
{if(this._scheduledLayoutUpdateIdentifier){cancelAnimationFrame(this._scheduledLayoutUpdateIdentifier);this._scheduledLayoutUpdateIdentifier=undefined;}
if(!this._values.length)
return;const center=this._size/2;let startAngle=-Math.PI/2;let endAngle=0;for(let i=0;i<this._values.length;++i){let value=this._values[i];let pathElement=this._pathElements[i];if(value===0)
pathElement.removeAttribute("d");else if(value===this._total)
pathElement.setAttribute("d",this._createCompleteCirclePathData(center,this._radius,this._innerRadius));else{let angle=(value/this._total)*Math.PI*2;endAngle=startAngle+angle;pathElement.setAttribute("d",this._createSegmentPathData(center,startAngle,endAngle,this._radius,this._innerRadius));startAngle=endAngle;}}}
_createCompleteCirclePathData(c,r1,r2)
{const a1=0;const a2=Math.PI*1.9999;let x1=c+Math.cos(a1)*r1,y1=c+Math.sin(a1)*r1,x2=c+Math.cos(a2)*r1,y2=c+Math.sin(a2)*r1,x3=c+Math.cos(a2)*r2,y3=c+Math.sin(a2)*r2,x4=c+Math.cos(a1)*r2,y4=c+Math.sin(a1)*r2;return["M",x1,y1,"A",r1,r1,0,1,1,x2,y2,"Z","M",x3,y3,"A",r2,r2,0,1,0,x4,y4,"Z"].join(" ");}
_createSegmentPathData(c,a1,a2,r1,r2)
{const largeArcFlag=((a2-a1)%(Math.PI*2))>Math.PI?1:0;let x1=c+Math.cos(a1)*r1,y1=c+Math.sin(a1)*r1,x2=c+Math.cos(a2)*r1,y2=c+Math.sin(a2)*r1,x3=c+Math.cos(a2)*r2,y3=c+Math.sin(a2)*r2,x4=c+Math.cos(a1)*r2,y4=c+Math.sin(a1)*r2;return["M",x1,y1,"A",r1,r1,0,largeArcFlag,1,x2,y2,"L",x3,y3,"A",r2,r2,0,largeArcFlag,0,x4,y4,"Z"].join(" ");}};WebInspector.ClusterContentView=class ClusterContentView extends WebInspector.ContentView
{constructor(representedObject)
{super(representedObject);this.element.classList.add("cluster");this._contentViewContainer=new WebInspector.ContentViewContainer;this._contentViewContainer.addEventListener(WebInspector.ContentViewContainer.Event.CurrentContentViewDidChange,this._currentContentViewDidChange,this);this.addSubview(this._contentViewContainer);WebInspector.ContentView.addEventListener(WebInspector.ContentView.Event.SelectionPathComponentsDidChange,this._contentViewSelectionPathComponentDidChange,this);WebInspector.ContentView.addEventListener(WebInspector.ContentView.Event.SupplementalRepresentedObjectsDidChange,this._contentViewSupplementalRepresentedObjectsDidChange,this);WebInspector.ContentView.addEventListener(WebInspector.ContentView.Event.NumberOfSearchResultsDidChange,this._contentViewNumberOfSearchResultsDidChange,this);}
get navigationItems()
{var currentContentView=this._contentViewContainer.currentContentView;return currentContentView?currentContentView.navigationItems:[];}
get contentViewContainer()
{return this._contentViewContainer;}
get supportsSplitContentBrowser()
{if(this._contentViewContainer.currentContentView)
return this._contentViewContainer.currentContentView.supportsSplitContentBrowser;return super.supportsSplitContentBrowser;}
shown()
{super.shown();this._contentViewContainer.shown();}
hidden()
{super.hidden();this._contentViewContainer.hidden();}
closed()
{super.closed();this._contentViewContainer.closeAllContentViews();WebInspector.ContentView.removeEventListener(null,null,this);}
canGoBack()
{return this._contentViewContainer.canGoBack();}
canGoForward()
{return this._contentViewContainer.canGoForward();}
goBack()
{this._contentViewContainer.goBack();}
goForward()
{this._contentViewContainer.goForward();}
get scrollableElements()
{if(!this._contentViewContainer.currentContentView)
return[];return this._contentViewContainer.currentContentView.scrollableElements;}
get selectionPathComponents()
{if(!this._contentViewContainer.currentContentView)
return[];return this._contentViewContainer.currentContentView.selectionPathComponents;}
get supplementalRepresentedObjects()
{if(!this._contentViewContainer.currentContentView)
return[];return this._contentViewContainer.currentContentView.supplementalRepresentedObjects;}
get handleCopyEvent()
{var currentContentView=this._contentViewContainer.currentContentView;return currentContentView&&typeof currentContentView.handleCopyEvent==="function"?currentContentView.handleCopyEvent.bind(currentContentView):null;}
get supportsSave()
{var currentContentView=this._contentViewContainer.currentContentView;return currentContentView&&currentContentView.supportsSave;}
get saveData()
{var currentContentView=this._contentViewContainer.currentContentView;return currentContentView&&currentContentView.saveData||null;}
get supportsSearch()
{return true;}
get numberOfSearchResults()
{var currentContentView=this._contentViewContainer.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return null;return currentContentView.numberOfSearchResults;}
get hasPerformedSearch()
{var currentContentView=this._contentViewContainer.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return false;return currentContentView.hasPerformedSearch;}
set automaticallyRevealFirstSearchResult(reveal)
{var currentContentView=this._contentViewContainer.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return;currentContentView.automaticallyRevealFirstSearchResult=reveal;}
performSearch(query)
{this._searchQuery=query;var currentContentView=this._contentViewContainer.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return;currentContentView.performSearch(query);}
searchCleared()
{this._searchQuery=null;var currentContentView=this._contentViewContainer.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return;currentContentView.searchCleared();}
searchQueryWithSelection()
{var currentContentView=this._contentViewContainer.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return null;return currentContentView.searchQueryWithSelection();}
revealPreviousSearchResult(changeFocus)
{var currentContentView=this._contentViewContainer.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return;currentContentView.revealPreviousSearchResult(changeFocus);}
revealNextSearchResult(changeFocus)
{var currentContentView=this._contentViewContainer.currentContentView;if(!currentContentView||!currentContentView.supportsSearch)
return;currentContentView.revealNextSearchResult(changeFocus);}
_currentContentViewDidChange(event)
{var currentContentView=this._contentViewContainer.currentContentView;if(currentContentView&&currentContentView.supportsSearch){if(this._searchQuery)
currentContentView.performSearch(this._searchQuery);else
currentContentView.searchCleared();}
this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);this.dispatchEventToListeners(WebInspector.ContentView.Event.NumberOfSearchResultsDidChange);this.dispatchEventToListeners(WebInspector.ContentView.Event.NavigationItemsDidChange);}
_contentViewSelectionPathComponentDidChange(event)
{if(event.target!==this._contentViewContainer.currentContentView)
return;this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);}
_contentViewSupplementalRepresentedObjectsDidChange(event)
{if(event.target!==this._contentViewContainer.currentContentView)
return;this.dispatchEventToListeners(WebInspector.ContentView.Event.SupplementalRepresentedObjectsDidChange);}
_contentViewNumberOfSearchResultsDidChange(event)
{if(event.target!==this._contentViewContainer.currentContentView)
return;this.dispatchEventToListeners(WebInspector.ContentView.Event.NumberOfSearchResultsDidChange);}};(function(){
function tokenizeLinkString(stream,state)
{if(state._linkQuoteCharacter)
stream.eatWhile(new RegExp("[^"+state._linkQuoteCharacter+"]"));else
stream.eatWhile(/[^\s\u00a0=<>\"\']/);if(!stream.eol())
state._linkTokenize=tokenizeEndOfLinkString;return"link";}
function tokenizeEndOfLinkString(stream,state)
{if(state._linkQuoteCharacter)
stream.eat(state._linkQuoteCharacter);var style=state._linkBaseStyle;delete state._linkTokenize;delete state._linkQuoteCharacter;delete state._linkBaseStyle;delete state._srcSetTokenizeState;return style;}
function tokenizeSrcSetString(stream,state)
{if(state._srcSetTokenizeState==="link"){if(state._linkQuoteCharacter)
stream.eatWhile(new RegExp("[^\\s,"+state._linkQuoteCharacter+"]"));else
stream.eatWhile(/[^\s,\u00a0=<>\"\']/);}else{stream.eatSpace();if(state._linkQuoteCharacter)
stream.eatWhile(new RegExp("[^,"+state._linkQuoteCharacter+"]"));else
stream.eatWhile(/[^\s\u00a0=<>\"\']/);stream.eatWhile(/[\s,]/);}
if(stream.eol()||(!state._linkQuoteCharacter||stream.peek()===state._linkQuoteCharacter))
state._linkTokenize=tokenizeEndOfLinkString;if(state._srcSetTokenizeState==="link"){state._srcSetTokenizeState="descriptor";return"link";}
state._srcSetTokenizeState="link";return state._linkBaseStyle;}
function extendedXMLToken(stream,state)
{if(state._linkTokenize){var style=state._linkTokenize(stream,state);return style&&(style+" m-"+this.name);}
var startPosition=stream.pos;var style=this._token(stream,state);if(style==="attribute"){
var text=stream.current().toLowerCase();if(text==="src"||/\bhref\b/.test(text))
state._expectLink=true;else if(text==="srcset")
state._expectSrcSet=true;else{delete state._expectLink;delete state._expectSrcSet;}}else if(state._expectLink&&style==="string"){var current=stream.current();
if(current!=="\"\""&&current!=="''"){delete state._expectLink;state._linkTokenize=tokenizeLinkString;state._linkBaseStyle=style;var quote=current[0];state._linkQuoteCharacter=quote==="'"||quote==="\""?quote:null;stream.pos=startPosition;
if(state._linkQuoteCharacter)
stream.eat(state._linkQuoteCharacter);}}else if(state._expectSrcSet&&style==="string"){var current=stream.current();
if(current!=="\"\""&&current!=="''"){delete state._expectSrcSet;state._srcSetTokenizeState="link";state._linkTokenize=tokenizeSrcSetString;state._linkBaseStyle=style;var quote=current[0];state._linkQuoteCharacter=quote==="'"||quote==="\""?quote:null;stream.pos=startPosition;
if(state._linkQuoteCharacter)
stream.eat(state._linkQuoteCharacter);}}else if(style){
delete state._expectLink;delete state._expectSrcSet;}
return style&&(style+" m-"+this.name);}
function tokenizeCSSURLString(stream,state)
{if(state._unquotedURLString&&stream.eatSpace())
return null;var ch=null;var escaped=false;var reachedEndOfURL=false;var lastNonWhitespace=stream.pos;var quote=state._urlQuoteCharacter;while((ch=stream.next())!=null){if(ch===quote&&!escaped){reachedEndOfURL=true;break;}
escaped=!escaped&&ch==="\\";if(!/[\s\u00a0]/.test(ch))
lastNonWhitespace=stream.pos;}
if(state._unquotedURLString)
stream.pos=lastNonWhitespace;if(reachedEndOfURL){if(!state._unquotedURLString)
stream.backUp(1);this._urlTokenize=tokenizeEndOfCSSURLString;}
return"link";}
function tokenizeEndOfCSSURLString(stream,state)
{if(!state._unquotedURLString)
stream.eat(state._urlQuoteCharacter);var style=state._urlBaseStyle;delete state._urlTokenize;delete state._urlQuoteCharacter;delete state._urlBaseStyle;return style;}
function extendedCSSToken(stream,state)
{var hexColorRegex=/#(?:[0-9a-fA-F]{8}|[0-9a-fA-F]{6}|[0-9a-fA-F]{3,4})\b/g;if(state._urlTokenize){var style=state._urlTokenize(stream,state);return style&&(style+" m-"+(this.alternateName||this.name));}
var startPosition=stream.pos;var style=this._token(stream,state);if(style){if(style==="atom"){if(stream.current()==="url"){state._expectLink=true;}else if(hexColorRegex.test(stream.current()))
style=style+" hex-color";}else if(state._expectLink){delete state._expectLink;if(style==="string"){state._urlTokenize=tokenizeCSSURLString;state._urlBaseStyle=style;var quote=stream.current()[0];state._urlQuoteCharacter=quote==="'"||quote==="\""?quote:")";state._unquotedURLString=state._urlQuoteCharacter===")";stream.pos=startPosition;
if(!state._unquotedURLString)
stream.eat(state._urlQuoteCharacter);}}}
return style&&(style+" m-"+(this.alternateName||this.name));}
function extendedToken(stream,state)
{var style=this._token(stream,state);return style&&(style+" m-"+(this.alternateName||this.name));}
function extendedCSSRuleStartState(base)
{var state=this._startState(base);
state.state="block";state.context.type="block";return state;}
function scrollCursorIntoView(codeMirror,event)
{
event.preventDefault();function delayedWork()
{if(!codeMirror.getWrapperElement().classList.contains("CodeMirror-focused"))
return;var cursorElement=codeMirror.getScrollerElement().getElementsByClassName("CodeMirror-cursor")[0];if(cursorElement)
cursorElement.scrollIntoViewIfNeeded(false);}
setTimeout(delayedWork,0);}
CodeMirror.extendMode("css",{token:extendedCSSToken});CodeMirror.extendMode("xml",{token:extendedXMLToken});CodeMirror.extendMode("javascript",{token:extendedToken});CodeMirror.defineMode("css-rule",CodeMirror.modes.css);CodeMirror.extendMode("css-rule",{token:extendedCSSToken,startState:extendedCSSRuleStartState,alternateName:"css"});CodeMirror.defineInitHook(function(codeMirror){codeMirror.on("scrollCursorIntoView",scrollCursorIntoView);});const maximumNeighboringWhitespaceCharacters=16;CodeMirror.defineOption("showWhitespaceCharacters",false,function(cm,value,old){if(!value||(old&&old!==CodeMirror.Init)){cm.removeOverlay("whitespace");return;}
cm.addOverlay({name:"whitespace",token(stream){if(stream.peek()===" "){let count=0;while(count<maximumNeighboringWhitespaceCharacters&&stream.peek()===" "){++count;stream.next();}
return`whitespace whitespace-${count}`;}
while(!stream.eol()&&stream.peek()!==" ")
stream.next();return null;}});});CodeMirror.defineExtension("hasLineClass",function(line,where,className){var classProperty=(where==="text"?"textClass":(where==="background"?"bgClass":"wrapClass"));var lineInfo=this.lineInfo(line);if(!lineInfo)
return false;if(!lineInfo[classProperty])
return false;if(lineInfo[classProperty]===className)
return true;var index=lineInfo[classProperty].indexOf(className);if(index===-1)
return false;var paddedClass=" "+lineInfo[classProperty]+" ";return paddedClass.indexOf(" "+className+" ",index)!==-1;});CodeMirror.defineExtension("setUniqueBookmark",function(position,options){var marks=this.findMarksAt(position);for(var i=0;i<marks.length;++i){if(marks[i].__uniqueBookmark){marks[i].clear();break;}}
var uniqueBookmark=this.setBookmark(position,options);uniqueBookmark.__uniqueBookmark=true;return uniqueBookmark;});CodeMirror.defineExtension("toggleLineClass",function(line,where,className){if(this.hasLineClass(line,where,className)){this.removeLineClass(line,where,className);return false;}
this.addLineClass(line,where,className);return true;});CodeMirror.defineExtension("alterNumberInRange",function(amount,startPosition,endPosition,updateSelection){if(startPosition.line!==endPosition.line)
return false;if(updateSelection){var selectionStart=this.getCursor("start");var selectionEnd=this.getCursor("end");}
var line=this.getLine(startPosition.line);var foundPeriod=false;var start=NaN;var end=NaN;for(var i=startPosition.ch;i>=0;--i){var character=line.charAt(i);if(character==="."){if(foundPeriod)
break;foundPeriod=true;}else if(character!=="-"&&character!=="+"&&isNaN(parseInt(character))){if(i===startPosition.ch){end=i;continue;}
break;}
start=i;}
if(isNaN(end)){for(var i=startPosition.ch+1;i<line.length;++i){var character=line.charAt(i);if(character==="."){if(foundPeriod){end=i;break;}
foundPeriod=true;}else if(isNaN(parseInt(character))){end=i;break;}
end=i+1;}}
if(isNaN(start)||isNaN(end))
return false;var number=parseFloat(line.substring(start,end));var alteredNumber=Number((number+amount).toFixed(6));var alteredNumberString=alteredNumber.toString();var from={line:startPosition.line,ch:start};var to={line:startPosition.line,ch:end};this.replaceRange(alteredNumberString,from,to);if(updateSelection){var previousLength=to.ch-from.ch;var newLength=alteredNumberString.length;
let diff=newLength-previousLength;if(selectionStart===selectionEnd)
selectionStart.ch+=diff;else{if(selectionStart.ch>from.ch)
selectionStart.ch+=diff;if(selectionEnd.ch>from.ch)
selectionEnd.ch+=diff;}
this.setSelection(selectionStart,selectionEnd);}
return true;});function alterNumber(amount,codeMirror)
{function findNumberToken(position)
{
var token=codeMirror.getTokenAt(position);if(token&&token.type&&/\bnumber\b/.test(token.type))
return token;return null;}
var position=codeMirror.getCursor("head");var token=findNumberToken(position);if(!token){
position.ch+=1;token=findNumberToken(position);}
if(!token)
return CodeMirror.Pass;var foundNumber=codeMirror.alterNumberInRange(amount,{ch:token.start,line:position.line},{ch:token.end,line:position.line},true);if(!foundNumber)
return CodeMirror.Pass;}
CodeMirror.defineExtension("rectsForRange",function(range){var lineRects=[];for(var line=range.start.line;line<=range.end.line;++line){var lineContent=this.getLine(line);var startChar=line===range.start.line?range.start.ch:(lineContent.length-lineContent.trimLeft().length);var endChar=line===range.end.line?range.end.ch:lineContent.length;var firstCharCoords=this.cursorCoords({ch:startChar,line});var endCharCoords=this.cursorCoords({ch:endChar,line});if(firstCharCoords.bottom!==endCharCoords.bottom){var maxY=-Number.MAX_VALUE;for(var ch=startChar;ch<=endChar;++ch){var coords=this.cursorCoords({ch,line});if(coords.bottom>maxY){if(ch>startChar){var maxX=Math.ceil(this.cursorCoords({ch:ch-1,line}).right);lineRects.push(new WebInspector.Rect(minX,minY,maxX-minX,maxY-minY));}
var minX=Math.floor(coords.left);var minY=Math.floor(coords.top);maxY=Math.ceil(coords.bottom);}}
maxX=Math.ceil(coords.right);lineRects.push(new WebInspector.Rect(minX,minY,maxX-minX,maxY-minY));}else{var minX=Math.floor(firstCharCoords.left);var minY=Math.floor(firstCharCoords.top);var maxX=Math.ceil(endCharCoords.right);var maxY=Math.ceil(endCharCoords.bottom);lineRects.push(new WebInspector.Rect(minX,minY,maxX-minX,maxY-minY));}}
return lineRects;});let mac=WebInspector.Platform.name==="mac";CodeMirror.keyMap["default"]={"Alt-Up":alterNumber.bind(null,1),"Ctrl-Alt-Up":alterNumber.bind(null,0.1),"Shift-Alt-Up":alterNumber.bind(null,10),"Alt-PageUp":alterNumber.bind(null,10),"Shift-Alt-PageUp":alterNumber.bind(null,100),"Alt-Down":alterNumber.bind(null,-1),"Ctrl-Alt-Down":alterNumber.bind(null,-0.1),"Shift-Alt-Down":alterNumber.bind(null,-10),"Alt-PageDown":alterNumber.bind(null,-10),"Shift-Alt-PageDown":alterNumber.bind(null,-100),"Cmd-/":"toggleComment","Cmd-D":"selectNextOccurrence","Shift-Tab":"indentLess",fallthrough:mac?"macDefault":"pcDefault"};
var extraXMLTypes=["text/xml","text/xsl"];extraXMLTypes.forEach(function(type){CodeMirror.defineMIME(type,"xml");});var extraHTMLTypes=["application/xhtml+xml","image/svg+xml"];extraHTMLTypes.forEach(function(type){CodeMirror.defineMIME(type,"htmlmixed");});var extraJavaScriptTypes=["text/ecmascript","application/javascript","application/ecmascript","application/x-javascript","text/x-javascript","text/javascript1.1","text/javascript1.2","text/javascript1.3","text/jscript","text/livescript"];extraJavaScriptTypes.forEach(function(type){CodeMirror.defineMIME(type,"javascript");});var extraJSONTypes=["application/x-json","text/x-json","application/vnd.api+json"];extraJSONTypes.forEach(function(type){CodeMirror.defineMIME(type,{name:"javascript",json:true});});})();WebInspector.compareCodeMirrorPositions=function(a,b)
{var lineCompare=a.line-b.line;if(lineCompare!==0)
return lineCompare;var aColumn="ch"in a?a.ch:Number.MAX_VALUE;var bColumn="ch"in b?b.ch:Number.MAX_VALUE;return aColumn-bColumn;};WebInspector.walkTokens=function(cm,mode,initialPosition,callback)
{let state=CodeMirror.copyState(mode,cm.getTokenAt(initialPosition).state);if(state.localState)
state=state.localState;let lineCount=cm.lineCount();let abort=false;for(let lineNumber=initialPosition.line;!abort&&lineNumber<lineCount;++lineNumber){let line=cm.getLine(lineNumber);let stream=new CodeMirror.StringStream(line);if(lineNumber===initialPosition.line)
stream.start=stream.pos=initialPosition.ch;while(!stream.eol()){let tokenType=mode.token(stream,state);if(!callback(tokenType,stream.current())){abort=true;break;}
stream.start=stream.pos;}}
if(!abort)
callback(null);};WebInspector.CodeMirrorEditor=class CodeMirrorEditor
{static create(element,options)
{if(options.lineSeparator===undefined)
options.lineSeparator="\n";element.setAttribute("dir","ltr");let codeMirror=new CodeMirror(element,options);if(WebInspector.Platform.name==="mac"){codeMirror.addKeyMap({"Home":()=>{codeMirror.scrollIntoView({line:0,ch:0});},"End":()=>{codeMirror.scrollIntoView({line:codeMirror.lineCount()-1,ch:null});},});}
new WebInspector.CodeMirrorTextKillController(codeMirror);return codeMirror;}};
CodeMirror.extendMode("javascript",{shouldHaveSpaceBeforeToken:function(lastToken,lastContent,token,state,content,isComment)
{if(!token){if(content==="(")
return lastToken&&/\bkeyword\b/.test(lastToken)&&(lastContent!=="function"&&lastContent!=="typeof"&&lastContent!=="instanceof");if(content===":")
return state.lexical.type==="stat"||state.lexical.type===")"||state.lexical.type==="]";return false;}
if(isComment)
return true;if(/\boperator\b/.test(token)){if(!lastToken&&(content==="+"||content==="-"||content==="~")&&(lastContent!==")"&&lastContent!=="]"))
return false;if(content==="!")
return false;return"+-/*%&&||!===+=-=>=<=?".indexOf(content)>=0;}
if(/\bkeyword\b/.test(token)){if(content==="else"||content==="catch"||content==="finally")
return lastContent==="}";if(content==="while"&&lastContent==="}")
return state._jsPrettyPrint.lastContentBeforeBlock==="do";return false;}
return false;},shouldHaveSpaceAfterLastToken:function(lastToken,lastContent,token,state,content,isComment)
{if(lastToken&&/\bkeyword\b/.test(lastToken)){if(lastContent==="else")
return true;if(lastContent==="catch")
return true;if(lastContent==="return")
return content!==";";if(lastContent==="throw")
return true;if(lastContent==="try")
return true;if(lastContent==="finally")
return true;if(lastContent==="do")
return true;return false;}
if(lastToken&&/\bcomment\b/.test(lastToken))
return true;if(lastContent===")")
return content==="{";if(lastContent===";")
return state.lexical.type===")";if(lastContent==="!")
return false;if((lastContent==="+"||lastContent==="-"||lastContent==="~")&&!state._jsPrettyPrint.unaryOperatorHadLeadingExpr)
return false;return",+-/*%&&||:!===+=-=>=<=?".indexOf(lastContent)>=0;},newlinesAfterToken:function(lastToken,lastContent,token,state,content,isComment)
{if(!token){if(content===",")
return state.lexical.type==="}"?1:0;if(content===";")
return state.lexical.type!==")"?1:0;if(content===":"&&state.lexical.type==="}"&&state.lexical.prev&&state.lexical.prev.type==="form")
return 1;return content.length===1&&"{}".indexOf(content)>=0?1:0;}
if(isComment)
return 1;return 0;},removeLastWhitespace:function(lastToken,lastContent,token,state,content,isComment)
{return false;},removeLastNewline:function(lastToken,lastContent,token,state,content,isComment,firstTokenOnLine)
{if(!token){if(content==="}")
return lastContent==="{";if(content===";")
return"};".indexOf(lastContent)>=0;if(content===":")
return lastContent==="}"&&(state.lexical.type==="stat"||state.lexical.type===")"||state.lexical.type==="]");if(",().".indexOf(content)>=0)
return lastContent==="}";return false;}
if(isComment){if(!firstTokenOnLine&&lastContent===";")
return true;return false;}
if(/\bkeyword\b/.test(token)){if(content==="else"||content==="catch"||content==="finally")
return lastContent==="}";if(content==="while"&&lastContent==="}")
return state._jsPrettyPrint.lastContentBeforeBlock==="do";return false;}
return false;},indentAfterToken:function(lastToken,lastContent,token,state,content,isComment)
{if(content==="{")
return true;if(content==="case"||content==="default")
return state.lexical.type==="}"&&state.lexical.prev&&state.lexical.prev.type==="form";return false;},newlineBeforeToken:function(lastToken,lastContent,token,state,content,isComment)
{if(state._jsPrettyPrint.shouldIndent)
return true;return content==="}"&&lastContent!=="{";},indentBeforeToken:function(lastToken,lastContent,token,state,content,isComment)
{if(state._jsPrettyPrint.shouldIndent)
return true;return false;},dedentsBeforeToken:function(lastToken,lastContent,token,state,content,isComment)
{var dedent=0;if(state._jsPrettyPrint.shouldDedent)
dedent+=state._jsPrettyPrint.dedentSize;if(!token&&content==="}")
dedent+=1;else if(token&&/\bkeyword\b/.test(token)&&(content==="case"||content==="default"))
dedent+=1;return dedent;},modifyStateForTokenPre:function(lastToken,lastContent,token,state,content,isComment)
{if(!state._jsPrettyPrint){state._jsPrettyPrint={indentCount:0,shouldIndent:false,shouldDedent:false,dedentSize:0,lastIfIndentCount:0,openBraceStartMarkers:[],openBraceTrackingCount:-1,unaryOperatorHadLeadingExpr:false,lastContentBeforeBlock:undefined,};}
if(!isComment&&state.lexical.prev&&state.lexical.prev.type==="form"&&!state.lexical.prev._jsPrettyPrintMarker&&(lastContent===")"||lastContent==="else"||lastContent==="do")&&(state.lexical.type!==")")){if(content==="{"){var savedState={indentCount:state._jsPrettyPrint.indentCount,openBraceTrackingCount:state._jsPrettyPrint.openBraceTrackingCount,lastContentBeforeBlock:lastContent};state._jsPrettyPrint.openBraceStartMarkers.push(savedState);state._jsPrettyPrint.openBraceTrackingCount=1;}else if(state.lexical.type!=="}"){if(!(lastContent==="else"&&content==="if")){state._jsPrettyPrint.indentCount++;state._jsPrettyPrint.shouldIndent=true;}
state.lexical.prev._jsPrettyPrintMarker=true;if(state._jsPrettyPrint.enteringIf)
state._jsPrettyPrint.lastIfIndentCount=state._jsPrettyPrint.indentCount-1;}}
else{if(!isComment){if(content==="{")
state._jsPrettyPrint.openBraceTrackingCount++;else if(content==="}")
state._jsPrettyPrint.openBraceTrackingCount--;}
if(content===";"){}else if(content==="else"){if(lastContent!=="}"){state._jsPrettyPrint.shouldDedent=true;state._jsPrettyPrint.dedentSize=state._jsPrettyPrint.indentCount-state._jsPrettyPrint.lastIfIndentCount;state._jsPrettyPrint.lastIfIndentCount=0;}}else if(content==="}"&&!state._jsPrettyPrint.openBraceTrackingCount&&state._jsPrettyPrint.openBraceStartMarkers.length){var savedState=state._jsPrettyPrint.openBraceStartMarkers.pop();state._jsPrettyPrint.shouldDedent=true;state._jsPrettyPrint.dedentSize=state._jsPrettyPrint.indentCount-savedState.indentCount;state._jsPrettyPrint.openBraceTrackingCount=savedState.openBraceTrackingCount;state._jsPrettyPrint.lastContentBeforeBlock=savedState.lastContentBeforeBlock;}else{var shouldDedent=true;var lexical=state.lexical.prev;while(lexical){if(lexical._jsPrettyPrintMarker){shouldDedent=false;break;}
lexical=lexical.prev;}
if(shouldDedent){state._jsPrettyPrint.shouldDedent=true;state._jsPrettyPrint.dedentSize=state._jsPrettyPrint.indentCount;}}}
if(token&&state.lexical.type==="form"&&state.lexical.prev&&state.lexical.prev!=="form"&&/\bkeyword\b/.test(token))
state._jsPrettyPrint.enteringIf=(content==="if");},modifyStateForTokenPost:function(lastToken,lastContent,token,state,content,isComment)
{if(state._jsPrettyPrint.shouldIndent)
state._jsPrettyPrint.shouldIndent=false;if(state._jsPrettyPrint.shouldDedent){state._jsPrettyPrint.indentCount-=state._jsPrettyPrint.dedentSize;state._jsPrettyPrint.dedentSize=0;state._jsPrettyPrint.shouldDedent=false;}
if((content==="+"||content==="-"||content==="~")&&(lastContent===")"||lastContent==="]"||/\b(?:variable|number)\b/.test(lastToken)))
state._jsPrettyPrint.unaryOperatorHadLeadingExpr=true;else
state._jsPrettyPrint.unaryOperatorHadLeadingExpr=false;}});CodeMirror.extendMode("css",{shouldHaveSpaceBeforeToken:function(lastToken,lastContent,token,state,content,isComment)
{if(!token){if(content==="{")
return true;return">+~-*/".indexOf(content)>=0;}
if(isComment)
return true;if(/\bkeyword\b/.test(token)){if(content.charAt(0)==="!")
return true;return false;}
return false;},shouldHaveSpaceAfterLastToken:function(lastToken,lastContent,token,state,content,isComment)
{if(!lastToken){if(lastContent===",")
return true;if(lastContent===":")
return state.state==="prop";if(lastContent===")"&&(content!==")"&&content!==",")){if(/\bnumber\b/.test(token))
return true;if(state.state==="prop")
return true;if(state.state==="media"||state.state==="atBlock_parens")
return true;return false;}
return">+~-*/".indexOf(lastContent)>=0;}
if(/\bcomment\b/.test(lastToken))
return true;if(/\bkeyword\b/.test(lastToken))
return state.state==="media"||(state.state==="atBlock_parens"&&content!==")");return false;},newlinesAfterToken:function(lastToken,lastContent,token,state,content,isComment)
{if(!token){if(content===";")
return 1;if(content===","){if((state.state==="top"||state.state==="media")&&state._cssPrettyPrint.lineLength>60){state._cssPrettyPrint.lineLength=0;return 1;}
return 0;}
if(content==="{")
return 1;if(content==="}")
return 2;return 0;}
if(isComment)
return 1;return 0;},removeLastWhitespace:function(lastToken,lastContent,token,state,content,isComment)
{return false;},removeLastNewline:function(lastToken,lastContent,token,state,content,isComment,firstTokenOnLine)
{if(isComment){if(!firstTokenOnLine&&lastContent===";")
return true;return false;}
return content==="}"&&(lastContent==="{"||lastContent==="}");},indentAfterToken:function(lastToken,lastContent,token,state,content,isComment)
{return content==="{";},newlineBeforeToken:function(lastToken,lastContent,token,state,content,isComment)
{return content==="}"&&(lastContent!=="{"&&lastContent!=="}");},indentBeforeToken:function(lastToken,lastContent,token,state,content,isComment)
{return false;},dedentsBeforeToken:function(lastToken,lastContent,token,state,content,isComment)
{return content==="}"?1:0;},modifyStateForTokenPost:function(lastToken,lastContent,token,state,content,isComment)
{if(!state._cssPrettyPrint)
state._cssPrettyPrint={lineLength:0};if(!isComment&&(state.state==="top"||state.state==="media"||state.state==="pseudo"))
state._cssPrettyPrint.lineLength+=content.length;else
state._cssPrettyPrint.lineLength=0;}});CodeMirror.extendMode("css-rule",{shouldHaveSpaceBeforeToken:function(lastToken,lastContent,token,state,content,isComment)
{if(lastContent===":"&&!lastToken)
return true;var tokenRegExp=/\b(?:keyword|atom|number)\b/;if(tokenRegExp.test(lastToken)&&tokenRegExp.test(token))
return true;return false;},shouldHaveSpaceAfterLastToken:function(lastToken,lastContent,token,state,content,isComment)
{return lastContent===","&&!lastToken;},newlinesAfterToken:function(lastToken,lastContent,token,state,content,isComment)
{return 0;},removeLastWhitespace:function(lastToken,lastContent,token,state,content,isComment)
{if(isComment)
return true;if(!lastToken)
return lastContent===";";if(!token)
return content===";"||content===":";if(/\bcomment\b/.test(lastToken))
return true;return false;},removeLastNewline:function(lastToken,lastContent,token,state,content,isComment,firstTokenOnLine)
{return true;},indentAfterToken:function(lastToken,lastContent,token,state,content,isComment)
{return false;},newlineBeforeToken:function(lastToken,lastContent,token,state,content,isComment)
{if(isComment)
return true;if(state.state==="block")
return/\bmeta\b/.test(token); if(/\bcomment\b/.test(lastToken))
return true;if(/\bproperty\b/.test(token))
return!(/\bmeta\b/.test(lastToken));if(state.state==="maybeprop"&&/\bvariable-2\b/.test(token))
return true;return false;},indentBeforeToken:function(lastToken,lastContent,token,state,content,isComment)
{return false;},dedentsBeforeToken:function(lastToken,lastContent,token,state,content,isComment)
{return 0;}});CodeMirror.defineMode("regex",function(){function characterSetTokenizer(stream,state){let context=state.currentContext();if(context.negatedCharacterSet===undefined){context.negatedCharacterSet=stream.eat("^");if(context.negatedCharacterSet)
return"regex-character-set-negate";}
while(stream.peek()){if(stream.eat("\\"))
return consumeEscapeSequence(stream);if(stream.eat("]")){state.tokenize=tokenBase;return state.popContext();}
stream.next();}
return"error";}
function consumeEscapeSequence(stream){if(stream.match(/[bBdDwWsStrnvf0]/))
return"regex-special";if(stream.eat("x")){if(stream.match(/[0-9a-fA-F]{2}/))
return"regex-escape";return"error";}
if(stream.eat("u")){if(stream.match(/[0-9a-fA-F]{4}/))
return"regex-escape-2";return"error";}
if(stream.eat("c")){if(stream.match(/[A-Z]/))
return"regex-escape-3";return"error";}
if(stream.match(/[1-9]/))
return"regex-backreference";if(stream.next())
return"regex-literal";return"error";}
function tokenBase(stream,state){let ch=stream.next();if(ch==="\\")
return consumeEscapeSequence(stream);if(ch==="("){let style;if(stream.match(/\?[=!]/))
style="regex-lookahead";else{stream.match(/\?:/);style="regex-group";}
return state.pushContext(stream,style,")");}
let context=state.currentContext();if(context&&context.type===ch)
return state.popContext();if(/[*+?]/.test(ch))
return"regex-quantifier";if(ch==="{"){if(stream.match(/\d+}/))
return"regex-quantifier";let matches=stream.match(/(\d+),(\d+)?}/);if(!matches)
return"error";let minimum=parseInt(matches[1]);let maximum=parseInt(matches[2]);if(minimum>maximum)
return"error";return"regex-quantifier";}
if(ch==="["){state.tokenize=characterSetTokenizer;return state.pushContext(stream,"regex-character-set");}
if(/[.^$|]/.test(ch))
return"regex-special";return null;}
return{startState:function(){let contextStack=[];return{currentContext:function(){return contextStack.length?contextStack[contextStack.length-1]:null;},pushContext:function(stream,data,type){let context={data,type};contextStack.push(context);return data;},popContext:function(){return contextStack.pop().data;},tokenize:tokenBase,};},token:function(stream,state){return state.tokenize(stream,state);}};});CodeMirror.defineMIME("text/x-regex","regex");function createCodeMirrorTextMarkers(type,pattern,matchFunction,codeMirror,range,callback)
{var createdMarkers=[];var start=range instanceof WebInspector.TextRange?range.startLine:0;var end=range instanceof WebInspector.TextRange?range.endLine+1:codeMirror.lineCount();for(var lineNumber=start;lineNumber<end;++lineNumber){var lineContent=codeMirror.getLine(lineNumber);var match=pattern.exec(lineContent);while(match){if(typeof matchFunction==="function"&&!matchFunction(lineContent,match)){match=pattern.exec(lineContent);continue;}
var from={line:lineNumber,ch:match.index};var to={line:lineNumber,ch:match.index+match[0].length};var foundMarker=false;var markers=codeMirror.findMarksAt(to);for(var j=0;j<markers.length;++j){if(WebInspector.TextMarker.textMarkerForCodeMirrorTextMarker(markers[j]).type===WebInspector.TextMarker.Type[type]){foundMarker=true;break;}}
if(foundMarker){match=pattern.exec(lineContent);continue;}
var tokenType=codeMirror.getTokenTypeAt(from);if(tokenType&&!tokenType.includes("keyword")){match=pattern.exec(lineContent);continue;}
let valueString=match[1];let value=WebInspector[type]?WebInspector[type].fromString(valueString):null;if(WebInspector[type]&&!value){match=pattern.exec(lineContent);continue;}
var marker=codeMirror.markText(from,to);marker=new WebInspector.TextMarker(marker,WebInspector.TextMarker.Type[type]);createdMarkers.push(marker);if(typeof callback==="function")
callback(marker,value,valueString);match=pattern.exec(lineContent);}}
return createdMarkers;}
function createCodeMirrorColorTextMarkers(codeMirror,range,callback)
{ let colorRegex=/((?:rgb|hsl)a?\([^)]+\)|#[0-9a-fA-F]{8}|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3,4}|\b\w+\b(?![-.]))/g;function matchFunction(lineContent,match){if(!lineContent||!lineContent.length)
return false;
let openParenthesis=0;let index=match.index;let c=null;while(c=lineContent[index]){if(c==="(")
++openParenthesis;if(c===")")
--openParenthesis;if(openParenthesis>0)
break;--index;if(index<0)
break;}
if(/(repeating-)?(linear|radial)-gradient$/.test(lineContent.substring(0,index)))
return false;return!(match.index>0&&/[-.\"\']/.test(lineContent[match.index-1]));}
return createCodeMirrorTextMarkers("Color",colorRegex,matchFunction,codeMirror,range,callback);}
function createCodeMirrorGradientTextMarkers(codeMirror,range,callback)
{var createdMarkers=[];var start=range instanceof WebInspector.TextRange?range.startLine:0;var end=range instanceof WebInspector.TextRange?range.endLine+1:codeMirror.lineCount();var gradientRegex=/(repeating-)?(linear|radial)-gradient\s*\(\s*/g;for(var lineNumber=start;lineNumber<end;++lineNumber){var lineContent=codeMirror.getLine(lineNumber);var match=gradientRegex.exec(lineContent);while(match){var startLine=lineNumber;var startChar=match.index;var endChar=match.index+match[0].length;var openParentheses=0;var c=null;while(c=lineContent[endChar]){if(c==="(")
openParentheses++;if(c===")")
openParentheses--;if(openParentheses===-1){endChar++;break;}
endChar++;if(endChar>=lineContent.length){lineNumber++;endChar=0;lineContent=codeMirror.getLine(lineNumber);if(!lineContent)
break;}}
if(openParentheses!==-1){match=gradientRegex.exec(lineContent);continue;}
var from={line:startLine,ch:startChar};var to={line:lineNumber,ch:endChar};var gradientString=codeMirror.getRange(from,to);var gradient=WebInspector.Gradient.fromString(gradientString);if(!gradient){match=gradientRegex.exec(lineContent);continue;}
var marker=new WebInspector.TextMarker(codeMirror.markText(from,to),WebInspector.TextMarker.Type.Gradient);createdMarkers.push(marker);if(typeof callback==="function")
callback(marker,gradient,gradientString);match=gradientRegex.exec(lineContent);}}
return createdMarkers;}
function createCodeMirrorCubicBezierTextMarkers(codeMirror,range,callback)
{var cubicBezierRegex=/(cubic-bezier\([^)]+\)|\b\w+\b(?:-\b\w+\b){0,2})/g;return createCodeMirrorTextMarkers("CubicBezier",cubicBezierRegex,null,codeMirror,range,callback);}
function createCodeMirrorSpringTextMarkers(codeMirror,range,callback)
{const springRegex=/(spring\([^)]+\))/g;return createCodeMirrorTextMarkers("Spring",springRegex,null,codeMirror,range,callback);}
function createCodeMirrorVariableTextMarkers(codeMirror,range,callback)
{const variableRegex=/var\((--[\w-]+)\)/g;return createCodeMirrorTextMarkers("Variable",variableRegex,null,codeMirror,range,callback);}
WebInspector.CollectionContentView=class CollectionContentView extends WebInspector.ContentView
{constructor(collection)
{super(collection);this.representedObject.addEventListener(WebInspector.Collection.Event.ItemAdded,this._handleItemAdded,this);this.representedObject.addEventListener(WebInspector.Collection.Event.ItemRemoved,this._handleItemRemoved,this);this._contentViewMap=new WeakMap;this._handleClickMap=new WeakMap;this._contentViewConstructor=null;let title="";switch(this.representedObject.typeVerifier){case WebInspector.Collection.TypeVerifier.Frame:title=WebInspector.UIString("Frames");break;case WebInspector.Collection.TypeVerifier.ContentFlow:title=WebInspector.UIString("Flows");break;case WebInspector.Collection.TypeVerifier.Script:title=WebInspector.UIString("Extra Scripts");break;case WebInspector.Collection.TypeVerifier.Resource:title=WebInspector.UIString("Resource");break;case WebInspector.ResourceCollection.TypeVerifier.Document:title=WebInspector.Resource.displayNameForType(WebInspector.Resource.Type.Document,true);break;case WebInspector.ResourceCollection.TypeVerifier.Stylesheet:title=WebInspector.Resource.displayNameForType(WebInspector.Resource.Type.Stylesheet,true);break;case WebInspector.ResourceCollection.TypeVerifier.Image:this._contentViewConstructor=WebInspector.ImageResourceContentView;title=WebInspector.Resource.displayNameForType(WebInspector.Resource.Type.Image,true);break;case WebInspector.ResourceCollection.TypeVerifier.Font:title=WebInspector.Resource.displayNameForType(WebInspector.Resource.Type.Font,true);break;case WebInspector.ResourceCollection.TypeVerifier.Script:title=WebInspector.Resource.displayNameForType(WebInspector.Resource.Type.Script,true);break;case WebInspector.ResourceCollection.TypeVerifier.XHR:title=WebInspector.Resource.displayNameForType(WebInspector.Resource.Type.XHR,true);break;case WebInspector.ResourceCollection.TypeVerifier.Fetch:title=WebInspector.Resource.displayNameForType(WebInspector.Resource.Type.Fetch,true);break;case WebInspector.ResourceCollection.TypeVerifier.WebSocket:title=WebInspector.Resource.displayNameForType(WebInspector.Resource.Type.WebSocket,true);break;case WebInspector.ResourceCollection.TypeVerifier.Other:title=WebInspector.Resource.displayNameForType(WebInspector.Resource.Type.Other,true);break;}
this._contentPlaceholder=new WebInspector.TitleView(title);this.element.classList.add("collection");}
initialLayout()
{let items=this.representedObject.items;if(this._contentViewConstructor&&items.size){for(let item of items)
this._addContentViewForItem(item);}else
this.addSubview(this._contentPlaceholder);}
_addContentViewForItem(item)
{if(!this._contentViewConstructor)
return;if(this._contentPlaceholder.parentView)
this.removeSubview(this._contentPlaceholder);let contentView=new this._contentViewConstructor(item);contentView.addEventListener(WebInspector.ResourceContentView.Event.ContentError,this._handleContentError,this);let handleClick=(event)=>{if(event.button!==0||event.ctrlKey)
return;WebInspector.showRepresentedObject(item);};this._handleClickMap.set(item,handleClick);contentView.element.addEventListener("click",handleClick);contentView.element.title=WebInspector.displayNameForURL(item.url,item.urlComponents);this.addSubview(contentView);this._contentViewMap.set(item,contentView);}
_removeContentViewForItem(item)
{if(!this._contentViewConstructor)
return;let contentView=this._contentViewMap.get(item);if(!contentView)
return;this.removeSubview(contentView);this._contentViewMap.delete(item);contentView.removeEventListener(null,null,this);let handleClick=this._handleClickMap.get(item);if(handleClick){contentView.element.removeEventListener("click",handleClick);this._handleClickMap.delete(item);}
if(!this.representedObject.resources.length)
this.addSubview(this._contentPlaceholder);}
_handleItemAdded(event)
{let item=event.data.item;if(!item)
return;this._addContentViewForItem(item);}
_handleItemRemoved(event)
{let item=event.data.item;if(!item)
return;this._removeContentViewForItem(item);}
_handleContentError(event)
{if(event&&event.target)
this._removeContentViewForItem(event.target.representedObject);}};WebInspector.ColorPicker=class ColorPicker extends WebInspector.Object
{constructor()
{super();this._colorWheel=new WebInspector.ColorWheel;this._colorWheel.delegate=this;this._colorWheel.dimension=200;this._brightnessSlider=new WebInspector.Slider;this._brightnessSlider.delegate=this;this._brightnessSlider.element.classList.add("brightness");this._opacitySlider=new WebInspector.Slider;this._opacitySlider.delegate=this;this._opacitySlider.element.classList.add("opacity");let colorInputsContainerElement=document.createElement("div");colorInputsContainerElement.classList.add("color-inputs");function createColorInput(label,{min:min=0,max:max=100,step:step=1,units}={}){let containerElement=colorInputsContainerElement.createChild("div");containerElement.append(label);let numberInputElement=containerElement.createChild("input");numberInputElement.type="number";numberInputElement.min=min;numberInputElement.max=max;numberInputElement.step=step;numberInputElement.addEventListener("input",this._handleColorInputInput.bind(this));if(units&&units.length)
containerElement.append(units);return{containerElement,numberInputElement};}
this._colorInputs=new Map([["R",createColorInput.call(this,"R",{max:255})],["G",createColorInput.call(this,"G",{max:255})],["B",createColorInput.call(this,"B",{max:255})],["H",createColorInput.call(this,"H",{max:360})],["S",createColorInput.call(this,"S",{units:"%"})],["L",createColorInput.call(this,"L",{units:"%"})],["A",createColorInput.call(this,"A"),{max:1,step:0.01}]]);this._element=document.createElement("div");this._element.classList.add("color-picker");this._element.appendChild(this._colorWheel.element);this._element.appendChild(this._brightnessSlider.element);this._element.appendChild(this._opacitySlider.element);this._element.appendChild(colorInputsContainerElement);this._opacity=0;this._opacityPattern="url(Images/Checkers.svg)";this._color=WebInspector.Color.fromString("white");this._dontUpdateColor=false;this._enableColorComponentInputs=true;}
get element()
{return this._element;}
set brightness(brightness)
{if(brightness===this._brightness)
return;this._colorWheel.brightness=brightness;this._updateColor();this._updateSliders(this._colorWheel.rawColor,this._colorWheel.tintedColor);}
set opacity(opacity)
{if(opacity===this._opacity)
return;this._opacity=opacity;this._updateColor();}
get colorWheel()
{return this._colorWheel;}
get color()
{return this._color;}
set color(color)
{this._dontUpdateColor=true;let formatChanged=!this._color||this._color.format!==color.format;this._color=color;this._colorWheel.tintedColor=this._color;this._brightnessSlider.value=this._colorWheel.brightness;this._opacitySlider.value=this._color.alpha;this._updateSliders(this._colorWheel.rawColor,this._color);this._showColorComponentInputs();if(formatChanged)
this._handleFormatChange();this._dontUpdateColor=false;}
set enableColorComponentInputs(value)
{this._enableColorComponentInputs=value;this._showColorComponentInputs();}
colorWheelColorDidChange(colorWheel)
{this._updateColor();this._updateSliders(this._colorWheel.rawColor,this._colorWheel.tintedColor);}
sliderValueDidChange(slider,value)
{if(slider===this._opacitySlider)
this.opacity=value;else if(slider===this._brightnessSlider)
this.brightness=value;}
_updateColor()
{if(this._dontUpdateColor)
return;let opacity=Math.round(this._opacity*100)/100;let format=this._color.format;let components=null;if(format===WebInspector.Color.Format.HSL||format===WebInspector.Color.Format.HSLA){components=this._colorWheel.tintedColor.hsl.concat(opacity);if(opacity!==1)
format=WebInspector.Color.Format.HSLA;}else{components=this._colorWheel.tintedColor.rgb.concat(opacity);if(opacity!==1&&format===WebInspector.Color.Format.RGB)
format=WebInspector.Color.Format.RGBA;}
let formatChanged=this._color.format===format;this._color=new WebInspector.Color(format,components);this._showColorComponentInputs();this.dispatchEventToListeners(WebInspector.ColorPicker.Event.ColorChanged,{color:this._color});if(formatChanged)
this._handleFormatChange();}
_updateSliders(rawColor,tintedColor)
{var rgb=this._colorWheel.tintedColor.rgb;var opaque=new WebInspector.Color(WebInspector.Color.Format.RGBA,rgb.concat(1)).toString();var transparent=new WebInspector.Color(WebInspector.Color.Format.RGBA,rgb.concat(0)).toString();this._opacitySlider.element.style.backgroundImage="linear-gradient(90deg, "+transparent+", "+opaque+"), "+this._opacityPattern;this._brightnessSlider.element.style.backgroundImage="linear-gradient(90deg, black, "+rawColor+")";}
_handleFormatChange()
{this._element.classList.toggle("hide-inputs",this._color.format!==WebInspector.Color.Format.Keyword&&this._color.format!==WebInspector.Color.Format.RGB&&this._color.format!==WebInspector.Color.Format.RGBA&&this._color.format!==WebInspector.Color.Format.HEX&&this._color.format!==WebInspector.Color.Format.ShortHEX&&this._color.format!==WebInspector.Color.Format.HEXAlpha&&this._color.format!==WebInspector.Color.Format.ShortHEXAlpha&&this._color.format!==WebInspector.Color.Format.HSL&&this._color.format!==WebInspector.Color.Format.HSLA);this.dispatchEventToListeners(WebInspector.ColorPicker.Event.FormatChanged);}
_showColorComponentInputs()
{for(let{containerElement}of this._colorInputs.values())
containerElement.hidden=true;if(!this._enableColorComponentInputs)
return;function updateColorInput(key,value){let{containerElement,numberInputElement}=this._colorInputs.get(key);numberInputElement.value=value;containerElement.hidden=false;}
switch(this._color.format){case WebInspector.Color.Format.RGB:case WebInspector.Color.Format.RGBA:case WebInspector.Color.Format.HEX:case WebInspector.Color.Format.ShortHEX:case WebInspector.Color.Format.HEXAlpha:case WebInspector.Color.Format.ShortHEXAlpha:case WebInspector.Color.Format.Keyword:var[r,g,b]=this._color.rgb;updateColorInput.call(this,"R",r);updateColorInput.call(this,"G",g);updateColorInput.call(this,"B",b);break;case WebInspector.Color.Format.HSL:case WebInspector.Color.Format.HSLA:var[h,s,l]=this._color.hsl;updateColorInput.call(this,"H",h);updateColorInput.call(this,"S",s);updateColorInput.call(this,"L",l);break;default:return;}
if((this._color.format===WebInspector.Color.Format.Keyword&&this._color.alpha!==1)||this._color.format===WebInspector.Color.Format.RGBA||this._color.format===WebInspector.Color.Format.HSLA||this._color.format===WebInspector.Color.Format.HEXAlpha||this._color.format===WebInspector.Color.Format.ShortHEXAlpha){updateColorInput.call(this,"A",this._color.alpha);}}
_handleColorInputInput(event)
{if(!this._enableColorComponentInputs){WebInspector.reportInternalError("Input event fired for disabled color component input");return;}
let r=this._colorInputs.get("R").numberInputElement.value;let g=this._colorInputs.get("G").numberInputElement.value;let b=this._colorInputs.get("B").numberInputElement.value;let h=this._colorInputs.get("H").numberInputElement.value;let s=this._colorInputs.get("S").numberInputElement.value;let l=this._colorInputs.get("L").numberInputElement.value;let a=this._colorInputs.get("A").numberInputElement.value;let colorString="";let oldFormat=this._color.format;switch(oldFormat){case WebInspector.Color.Format.RGB:case WebInspector.Color.Format.HEX:case WebInspector.Color.Format.ShortHEX:case WebInspector.Color.Format.Keyword:colorString=`rgb(${r}, ${g}, ${b})`;break;case WebInspector.Color.Format.RGBA:case WebInspector.Color.Format.HEXAlpha:case WebInspector.Color.Format.ShortHEXAlpha:colorString=`rgba(${r}, ${g}, ${b}, ${a})`;break;case WebInspector.Color.Format.HSL:colorString=`hsl(${h}, ${s}%, ${l}%)`;break;case WebInspector.Color.Format.HSLA:colorString=`hsla(${h}, ${s}%, ${l}%, ${a})`;break;default:WebInspector.reportInternalError(`Input event fired for invalid color format "${this._color.format}"`);return;}
this.color=WebInspector.Color.fromString(colorString);this._color.format=oldFormat;this.dispatchEventToListeners(WebInspector.ColorPicker.Event.ColorChanged,{color:this._color});}};WebInspector.ColorPicker.Event={ColorChanged:"css-color-picker-color-changed",FormatChanged:"css-color-picker-format-changed",};WebInspector.ColorWheel=class ColorWheel extends WebInspector.Object
{constructor()
{super();this._rawCanvas=document.createElement("canvas");this._tintedCanvas=document.createElement("canvas");this._finalCanvas=document.createElement("canvas");this._crosshair=document.createElement("div");this._crosshair.className="crosshair";this._element=document.createElement("div");this._element.className="color-wheel";this._element.appendChild(this._finalCanvas);this._element.appendChild(this._crosshair);this._finalCanvas.addEventListener("mousedown",this);}
set dimension(dimension)
{this._element.style.width=this.element.style.height=`${dimension}px`;this._finalCanvas.width=this._tintedCanvas.width=this._rawCanvas.width=dimension*window.devicePixelRatio;this._finalCanvas.height=this._tintedCanvas.height=this._rawCanvas.height=dimension*window.devicePixelRatio;this._finalCanvas.style.width=this._finalCanvas.style.height=dimension+"px";this._dimension=dimension;this._radius=dimension/2-2;this._setCrosshairPosition(new WebInspector.Point(dimension/2,dimension/2));this._drawRawCanvas();this._draw();}
get element()
{return this._element;}
get brightness()
{return this._brightness;}
set brightness(brightness)
{this._brightness=brightness;this._draw();}
get tintedColor()
{if(this._crosshairPosition)
return this._colorAtPointWithBrightness(this._crosshairPosition.x*window.devicePixelRatio,this._crosshairPosition.y*window.devicePixelRatio,this._brightness);return new WebInspector.Color(WebInspector.Color.Format.RGBA,[0,0,0,0]);}
set tintedColor(tintedColor)
{var data=this._tintedColorToPointAndBrightness(tintedColor);this._setCrosshairPosition(data.point);this.brightness=data.brightness;}
get rawColor()
{if(this._crosshairPosition)
return this._colorAtPointWithBrightness(this._crosshairPosition.x*window.devicePixelRatio,this._crosshairPosition.y*window.devicePixelRatio,1);return new WebInspector.Color(WebInspector.Color.Format.RGBA,[0,0,0,0]);}
handleEvent(event)
{switch(event.type){case"mousedown":this._handleMousedown(event);break;case"mousemove":this._handleMousemove(event);break;case"mouseup":this._handleMouseup(event);break;}}
_handleMousedown(event)
{window.addEventListener("mousemove",this,true);window.addEventListener("mouseup",this,true);this._updateColorForMouseEvent(event);}
_handleMousemove(event)
{this._updateColorForMouseEvent(event);}
_handleMouseup(event)
{window.removeEventListener("mousemove",this,true);window.removeEventListener("mouseup",this,true);}
_pointInCircleForEvent(event)
{function distance(a,b)
{return Math.sqrt(Math.pow(a.x-b.x,2)+Math.pow(a.y-b.y,2));}
function angleFromCenterToPoint(center,point)
{return Math.atan2(point.y-center.y,point.x-center.x);}
function pointOnCircumference(c,r,a)
{return new WebInspector.Point(c.x+r*Math.cos(a),c.y+r*Math.sin(a));}
var dimension=this._dimension;var point=window.webkitConvertPointFromPageToNode(this._finalCanvas,new WebKitPoint(event.pageX,event.pageY));var center=new WebInspector.Point(dimension/2,dimension/2);if(distance(point,center)>this._radius){var angle=angleFromCenterToPoint(center,point);point=pointOnCircumference(center,this._radius,angle);}
return point;}
_updateColorForMouseEvent(event)
{var point=this._pointInCircleForEvent(event);this._setCrosshairPosition(point);if(this.delegate&&typeof this.delegate.colorWheelColorDidChange==="function")
this.delegate.colorWheelColorDidChange(this);}
_setCrosshairPosition(point)
{this._crosshairPosition=point;this._crosshair.style.webkitTransform="translate("+Math.round(point.x)+"px, "+Math.round(point.y)+"px)";}
_tintedColorToPointAndBrightness(color)
{var rgb=color.rgb;var hsv=WebInspector.Color.rgb2hsv(rgb[0],rgb[1],rgb[2]);var cosHue=Math.cos(hsv[0]*Math.PI/180);var sinHue=Math.sin(hsv[0]*Math.PI/180);var center=this._dimension/2;var x=center+(center*cosHue*hsv[1]);var y=center-(center*sinHue*hsv[1]);return{point:new WebInspector.Point(x,y),brightness:hsv[2]};}
_drawRawCanvas(){var ctx=this._rawCanvas.getContext("2d");var dimension=this._dimension*window.devicePixelRatio;ctx.fillStyle="white";ctx.fillRect(0,0,dimension,dimension);var imageData=ctx.getImageData(0,0,dimension,dimension);var data=imageData.data;for(var j=0;j<dimension;++j){for(var i=0;i<dimension;++i){var color=this._colorAtPointWithBrightness(i,j,1);if(!color)
continue;var pos=(j*dimension+i)*4;data[pos]=color.rgb[0];data[pos+1]=color.rgb[1];data[pos+2]=color.rgb[2];}}
ctx.putImageData(imageData,0,0);}
_colorAtPointWithBrightness(x,y,brightness)
{var center=this._dimension/2*window.devicePixelRatio;var xDis=x-center;var yDis=y-center;var distance=Math.sqrt(xDis*xDis+yDis*yDis);if(distance-center>0.001)
return new WebInspector.Color(WebInspector.Color.Format.RGBA,[0,0,0,0]);var h=Math.atan2(y-center,center-x)*180/Math.PI;h=(h+180)%360;var v=brightness;var s=Math.max(0,distance)/center;var rgb=WebInspector.Color.hsv2rgb(h,s,v);return new WebInspector.Color(WebInspector.Color.Format.RGBA,[Math.round(rgb[0]*255),Math.round(rgb[1]*255),Math.round(rgb[2]*255),1]);}
_drawTintedCanvas()
{var ctx=this._tintedCanvas.getContext("2d");var dimension=this._dimension*window.devicePixelRatio;ctx.save();ctx.drawImage(this._rawCanvas,0,0,dimension,dimension);if(this._brightness!==1){ctx.globalAlpha=1-this._brightness;ctx.fillStyle="black";ctx.fillRect(0,0,dimension,dimension);}
ctx.restore();}
_draw()
{this._drawTintedCanvas();var ctx=this._finalCanvas.getContext("2d");var dimension=this._dimension*window.devicePixelRatio;var radius=this._radius*window.devicePixelRatio;ctx.save();ctx.clearRect(0,0,dimension,dimension);ctx.beginPath();ctx.arc(dimension/2,dimension/2,radius+1,0,Math.PI*2,true);ctx.closePath();ctx.clip();ctx.drawImage(this._tintedCanvas,0,0,dimension,dimension);ctx.restore();}};WebInspector.CompletionSuggestionsView=class CompletionSuggestionsView extends WebInspector.Object
{constructor(delegate)
{super();this._delegate=delegate||null;this._selectedIndex=NaN;this._element=document.createElement("div");this._element.classList.add("completion-suggestions",WebInspector.Popover.IgnoreAutoDismissClassName);this._containerElement=document.createElement("div");this._containerElement.classList.add("completion-suggestions-container");this._containerElement.addEventListener("mousedown",this._mouseDown.bind(this));this._containerElement.addEventListener("mouseup",this._mouseUp.bind(this));this._containerElement.addEventListener("click",this._itemClicked.bind(this));this._element.appendChild(this._containerElement);}
get delegate()
{return this._delegate;}
get visible()
{return!!this._element.parentNode;}
get selectedIndex()
{return this._selectedIndex;}
set selectedIndex(index)
{var selectedItemElement=this._selectedItemElement;if(selectedItemElement)
selectedItemElement.classList.remove(WebInspector.CompletionSuggestionsView.SelectedItemStyleClassName);this._selectedIndex=index;selectedItemElement=this._selectedItemElement;if(!selectedItemElement)
return;selectedItemElement.classList.add(WebInspector.CompletionSuggestionsView.SelectedItemStyleClassName);selectedItemElement.scrollIntoViewIfNeeded(false);}
selectNext()
{var count=this._containerElement.children.length;if(isNaN(this._selectedIndex)||this._selectedIndex===count-1)
this.selectedIndex=0;else
++this.selectedIndex;var selectedItemElement=this._selectedItemElement;if(selectedItemElement&&this._delegate&&typeof this._delegate.completionSuggestionsSelectedCompletion==="function")
this._delegate.completionSuggestionsSelectedCompletion(this,selectedItemElement.textContent);}
selectPrevious()
{if(isNaN(this._selectedIndex)||this._selectedIndex===0)
this.selectedIndex=this._containerElement.children.length-1;else
--this.selectedIndex;var selectedItemElement=this._selectedItemElement;if(selectedItemElement&&this._delegate&&typeof this._delegate.completionSuggestionsSelectedCompletion==="function")
this._delegate.completionSuggestionsSelectedCompletion(this,selectedItemElement.textContent);}
isHandlingClickEvent()
{return this._mouseIsDown;}
show(anchorBounds)
{this._containerElement.style.position="absolute";document.body.appendChild(this._containerElement);var containerWidth=this._containerElement.offsetWidth;var containerHeight=this._containerElement.offsetHeight;this._containerElement.removeAttribute("style");this._element.appendChild(this._containerElement);var margin=10;var horizontalPadding=22;var absoluteMaximumHeight=160;var x=anchorBounds.origin.x;var y=anchorBounds.origin.y+anchorBounds.size.height;var maximumWidth=window.innerWidth-anchorBounds.origin.x-margin;var width=Math.min(containerWidth,maximumWidth-horizontalPadding)+horizontalPadding;var paddedWidth=containerWidth+horizontalPadding;if(width<paddedWidth){maximumWidth=window.innerWidth-margin;width=Math.min(containerWidth,maximumWidth-horizontalPadding)+horizontalPadding;x=document.body.offsetWidth-width;}
var aboveHeight=anchorBounds.origin.y;var underHeight=window.innerHeight-anchorBounds.origin.y-anchorBounds.size.height;var maximumHeight=Math.min(absoluteMaximumHeight,Math.max(underHeight,aboveHeight)-margin);var height=Math.min(containerHeight,maximumHeight);if(underHeight-height<0)
y=aboveHeight-height;this._element.style.left=x+"px";this._element.style.top=y+"px";this._element.style.width=width+"px";this._element.style.height=height+"px";document.body.appendChild(this._element);}
hide()
{this._element.remove();}
update(completions,selectedIndex)
{this._containerElement.removeChildren();if(typeof selectedIndex==="number")
this._selectedIndex=selectedIndex;for(var i=0;i<completions.length;++i){var itemElement=document.createElement("div");itemElement.className=WebInspector.CompletionSuggestionsView.ItemElementStyleClassName;itemElement.textContent=completions[i];if(i===this._selectedIndex)
itemElement.classList.add(WebInspector.CompletionSuggestionsView.SelectedItemStyleClassName);this._containerElement.appendChild(itemElement);if(this._delegate&&typeof this._delegate.completionSuggestionsViewCustomizeCompletionElement==="function")
this._delegate.completionSuggestionsViewCustomizeCompletionElement(this,itemElement,completions[i]);}}
get _selectedItemElement()
{if(isNaN(this._selectedIndex))
return null;var element=this._containerElement.children[this._selectedIndex]||null;return element;}
_mouseDown(event)
{if(event.button!==0)
return;this._mouseIsDown=true;}
_mouseUp(event)
{if(event.button!==0)
return;this._mouseIsDown=false;}
_itemClicked(event)
{if(event.button!==0)
return;var itemElement=event.target.enclosingNodeOrSelfWithClass(WebInspector.CompletionSuggestionsView.ItemElementStyleClassName);if(!itemElement)
return;if(this._delegate&&typeof this._delegate.completionSuggestionsClickedCompletion==="function")
this._delegate.completionSuggestionsClickedCompletion(this,itemElement.textContent);}};WebInspector.CompletionSuggestionsView.ItemElementStyleClassName="item";WebInspector.CompletionSuggestionsView.SelectedItemStyleClassName="selected";WebInspector.ComputedStyleDetailsPanel=class ComputedStyleDetailsPanel extends WebInspector.StyleDetailsPanel
{constructor(delegate)
{super(delegate,WebInspector.ComputedStyleDetailsPanel.StyleClassName,"computed",WebInspector.UIString("Styles \u2014 Computed"));this._computedStyleShowAllSetting=new WebInspector.Setting("computed-style-show-all",false);this.cssStyleDeclarationTextEditorShouldAddPropertyGoToArrows=true;}
get regionFlow(){return this._regionFlow;}
set regionFlow(regionFlow)
{this._regionFlow=regionFlow;this._regionFlowNameLabelValue.textContent=regionFlow?regionFlow.name:"";this._regionFlowNameRow.value=regionFlow?this._regionFlowFragment:null;this._updateFlowNamesSectionVisibility();}
get contentFlow(){return this._contentFlow;}
set contentFlow(contentFlow)
{this._contentFlow=contentFlow;this._contentFlowNameLabelValue.textContent=contentFlow?contentFlow.name:"";this._contentFlowNameRow.value=contentFlow?this._contentFlowFragment:null;this._updateFlowNamesSectionVisibility();}
get containerRegions(){return this._containerRegions;}
set containerRegions(regions)
{this._containerRegions=regions;if(!regions||!regions.length){this._containerRegionsFlowSection.element.classList.add("hidden");return;}
this._containerRegionsDataGrid.removeChildren();for(var regionNode of regions)
this._containerRegionsDataGrid.appendChild(new WebInspector.DOMTreeDataGridNode(regionNode));this._containerRegionsFlowSection.element.classList.remove("hidden");this._containerRegionsDataGrid.updateLayoutIfNeeded();}
cssStyleDeclarationTextEditorShowProperty(property,showSource)
{function delegateShowProperty(){if(typeof this._delegate.computedStyleDetailsPanelShowProperty==="function")
this._delegate.computedStyleDetailsPanelShowProperty(property);}
if(!showSource){delegateShowProperty.call(this);return;}
let effectiveProperty=this._nodeStyles.effectivePropertyForName(property.name);if(!effectiveProperty||!effectiveProperty.styleSheetTextRange){if(!effectiveProperty.relatedShorthandProperty){delegateShowProperty.call(this);return;}
effectiveProperty=effectiveProperty.relatedShorthandProperty;}
let ownerRule=effectiveProperty.ownerStyle.ownerRule;if(!ownerRule){delegateShowProperty.call(this);return;}
let sourceCode=ownerRule.sourceCodeLocation.sourceCode;let{startLine,startColumn}=effectiveProperty.styleSheetTextRange;const options={ignoreNetworkTab:true,ignoreSearchTab:true,};WebInspector.showSourceCodeLocation(sourceCode.createSourceCodeLocation(startLine,startColumn),options);}
refresh(significantChange)
{
if(!significantChange){super.refresh();return;}
this._propertiesTextEditor.style=this.nodeStyles.computedStyle;this._variablesTextEditor.style=this.nodeStyles.computedStyle;this._refreshFlowDetails(this.nodeStyles.node);this._boxModelDiagramRow.nodeStyles=this.nodeStyles;super.refresh();this._variablesSection.element.classList.toggle("hidden",!this._variablesTextEditor.shownProperties.length);}
filterDidChange(filterBar)
{let filterText=filterBar.filters.text;this._propertiesTextEditor.removeNonMatchingProperties(filterText);this._variablesTextEditor.removeNonMatchingProperties(filterText);}
initialLayout()
{let computedStyleShowAllLabel=document.createElement("label");computedStyleShowAllLabel.textContent=WebInspector.UIString("Show All");this._computedStyleShowAllCheckbox=document.createElement("input");this._computedStyleShowAllCheckbox.type="checkbox";this._computedStyleShowAllCheckbox.checked=this._computedStyleShowAllSetting.value;this._computedStyleShowAllCheckbox.addEventListener("change",this._computedStyleShowAllCheckboxValueChanged.bind(this));computedStyleShowAllLabel.appendChild(this._computedStyleShowAllCheckbox);this._propertiesTextEditor=new WebInspector.CSSStyleDeclarationTextEditor(this);this._propertiesTextEditor.propertyVisibilityMode=WebInspector.CSSStyleDeclarationTextEditor.PropertyVisibilityMode.HideVariables;this._propertiesTextEditor.showsImplicitProperties=this._computedStyleShowAllSetting.value;this._propertiesTextEditor.alwaysShowPropertyNames=["display","width","height"];this._propertiesTextEditor.sortProperties=true;let propertiesRow=new WebInspector.DetailsSectionRow;let propertiesGroup=new WebInspector.DetailsSectionGroup([propertiesRow]);let propertiesSection=new WebInspector.DetailsSection("computed-style-properties",WebInspector.UIString("Properties"),[propertiesGroup],computedStyleShowAllLabel);propertiesSection.addEventListener(WebInspector.DetailsSection.Event.CollapsedStateChanged,this._handlePropertiesSectionCollapsedStateChanged,this);this.addSubview(this._propertiesTextEditor);propertiesRow.element.appendChild(this._propertiesTextEditor.element);this._variablesTextEditor=new WebInspector.CSSStyleDeclarationTextEditor(this);this._variablesTextEditor.propertyVisibilityMode=WebInspector.CSSStyleDeclarationTextEditor.PropertyVisibilityMode.HideNonVariables;this._variablesTextEditor.sortProperties=true;let variablesRow=new WebInspector.DetailsSectionRow;let variablesGroup=new WebInspector.DetailsSectionGroup([variablesRow]);this._variablesSection=new WebInspector.DetailsSection("computed-style-properties",WebInspector.UIString("Variables"),[variablesGroup]);this._variablesSection.addEventListener(WebInspector.DetailsSection.Event.CollapsedStateChanged,this._handleVariablesSectionCollapsedStateChanged,this);this.addSubview(this._variablesTextEditor);variablesRow.element.appendChild(this._variablesTextEditor.element);this._regionFlowFragment=document.createElement("span");this._regionFlowFragment.appendChild(document.createElement("img")).className="icon";this._regionFlowNameLabelValue=this._regionFlowFragment.appendChild(document.createElement("span"));let goToRegionFlowButton=this._regionFlowFragment.appendChild(WebInspector.createGoToArrowButton());goToRegionFlowButton.addEventListener("click",this._goToRegionFlowArrowWasClicked.bind(this));this._regionFlowNameRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Region Flow"));this._regionFlowNameRow.element.classList.add("content-flow-link");this._contentFlowFragment=document.createElement("span");this._contentFlowFragment.appendChild(document.createElement("img")).className="icon";this._contentFlowNameLabelValue=this._contentFlowFragment.appendChild(document.createElement("span"));let goToContentFlowButton=this._contentFlowFragment.appendChild(WebInspector.createGoToArrowButton());goToContentFlowButton.addEventListener("click",this._goToContentFlowArrowWasClicked.bind(this));this._contentFlowNameRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Content Flow"));this._contentFlowNameRow.element.classList.add("content-flow-link");let flowNamesGroup=new WebInspector.DetailsSectionGroup([this._regionFlowNameRow,this._contentFlowNameRow]);this._flowNamesSection=new WebInspector.DetailsSection("content-flow",WebInspector.UIString("Flows"),[flowNamesGroup]);this._containerRegionsDataGrid=new WebInspector.DOMTreeDataGrid;this._containerRegionsDataGrid.headerVisible=false;this._containerRegionsRow=new WebInspector.DetailsSectionDataGridRow(this._containerRegionsDataGrid);let containerRegionsGroup=new WebInspector.DetailsSectionGroup([this._containerRegionsRow]);this._containerRegionsFlowSection=new WebInspector.DetailsSection("container-regions",WebInspector.UIString("Container Regions"),[containerRegionsGroup]);this.element.appendChild(propertiesSection.element);this.element.appendChild(this._variablesSection.element);this.element.appendChild(this._flowNamesSection.element);this.element.appendChild(this._containerRegionsFlowSection.element);this._resetFlowDetails();this._boxModelDiagramRow=new WebInspector.BoxModelDetailsSectionRow;let boxModelGroup=new WebInspector.DetailsSectionGroup([this._boxModelDiagramRow]);let boxModelSection=new WebInspector.DetailsSection("style-box-model",WebInspector.UIString("Box Model"),[boxModelGroup]);this.element.appendChild(boxModelSection.element);}
sizeDidChange()
{super.sizeDidChange(); this._containerRegionsRow.sizeDidChange();}
_computedStyleShowAllCheckboxValueChanged(event)
{let checked=this._computedStyleShowAllCheckbox.checked;this._computedStyleShowAllSetting.value=checked;this._propertiesTextEditor.showsImplicitProperties=checked;this._propertiesTextEditor.updateLayout();}
_handlePropertiesSectionCollapsedStateChanged(event)
{if(event&&event.data&&!event.data.collapsed)
this._propertiesTextEditor.refresh();}
_handleVariablesSectionCollapsedStateChanged(event)
{if(event&&event.data&&!event.data.collapsed)
this._variablesTextEditor.refresh();}
_updateFlowNamesSectionVisibility()
{this._flowNamesSection.element.classList.toggle("hidden",!this._contentFlow&&!this._regionFlow);}
_resetFlowDetails()
{this.regionFlow=null;this.contentFlow=null;this.containerRegions=null;}
_refreshFlowDetails(domNode)
{this._resetFlowDetails();if(!domNode)
return;function contentFlowInfoReady(error,flowData)
{if(error||!flowData){this._resetFlowDetails();return;}
this.regionFlow=flowData.regionFlow;this.contentFlow=flowData.contentFlow;this.containerRegions=flowData.regions;}
WebInspector.domTreeManager.getNodeContentFlowInfo(domNode,contentFlowInfoReady.bind(this));}
_goToRegionFlowArrowWasClicked()
{WebInspector.showRepresentedObject(this._regionFlow);}
_goToContentFlowArrowWasClicked()
{WebInspector.showRepresentedObject(this._contentFlow,{nodeToSelect:this.nodeStyles.node});}};WebInspector.ComputedStyleDetailsPanel.StyleClassName="computed";WebInspector.ConsoleDrawer=class ConsoleDrawer extends WebInspector.ContentBrowser
{constructor(element)
{const delegate=null;const disableBackForward=true;const disableFindBanner=false;super(element,delegate,disableBackForward,disableFindBanner);this.element.classList.add("console-drawer");this._drawerHeightSetting=new WebInspector.Setting("console-drawer-height",150);this.navigationBar.element.addEventListener("mousedown",this._consoleResizerMouseDown.bind(this));this._toggleDrawerButton=new WebInspector.ToggleButtonNavigationItem("toggle-drawer",WebInspector.UIString("Hide Console"),WebInspector.UIString("Show Console"),"Images/HideConsoleDrawer.svg","Images/ShowConsoleDrawer.svg");this._toggleDrawerButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,()=>{WebInspector.toggleSplitConsole();});this.navigationBar.insertNavigationItem(this._toggleDrawerButton,0);this.collapsed=true;WebInspector.TabBrowser.addEventListener(WebInspector.TabBrowser.Event.SelectedTabContentViewDidChange,this._selectedTabContentViewDidChange,this);}
get collapsed()
{return this._collapsed;}
set collapsed(flag)
{if(flag===this._collapsed)
return;this._collapsed=flag||false;this._toggleDrawerButton.toggled=this._collapsed;this.element.classList.toggle("hidden",this._collapsed);if(this._collapsed)
this.hidden();else
this.shown();this.dispatchEventToListeners(WebInspector.ConsoleDrawer.Event.CollapsedStateChanged);}
get height()
{return this.element.offsetHeight;}
shown()
{super.shown();this._restoreDrawerHeight();}
layout()
{if(this._collapsed)
return;if(this.layoutReason!==WebInspector.View.LayoutReason.Resize)
return;super.layout();let height=this.height;this._restoreDrawerHeight();if(height!==this.height)
this.dispatchEventToListeners(WebInspector.ConsoleDrawer.Event.Resized);}
_consoleResizerMouseDown(event)
{if(event.button!==0||event.ctrlKey)
return;if(event.target!==this.navigationBar.element&&!event.target.classList.contains("flexible-space"))
return;let resizerElement=event.target;let mouseOffset=resizerElement.offsetHeight-(event.pageY-resizerElement.totalOffsetTop);function dockedResizerDrag(event)
{let height=window.innerHeight-event.pageY-mouseOffset;this._drawerHeightSetting.value=height;this._updateDrawerHeight(height);this.collapsed=false;}
function dockedResizerDragEnd(event)
{if(event.button!==0)
return;WebInspector.elementDragEnd(event);}
WebInspector.elementDragStart(resizerElement,dockedResizerDrag.bind(this),dockedResizerDragEnd.bind(this),event,"row-resize");}
_restoreDrawerHeight()
{this._updateDrawerHeight(this._drawerHeightSetting.value);}
_updateDrawerHeight(height)
{const minimumHeight=64;const maximumHeight=this.element.parentNode.offsetHeight-100;height=Number.constrain(height,minimumHeight,maximumHeight);if(height===this.element.style.height)
return;this.element.style.height=height+"px";this.dispatchEventToListeners(WebInspector.ConsoleDrawer.Event.Resized);}
_selectedTabContentViewDidChange()
{if(WebInspector.doesCurrentTabSupportSplitContentBrowser())
return;this.element.classList.add("hidden");}};WebInspector.ConsoleDrawer.Event={CollapsedStateChanged:"console-drawer-collapsed-state-changed",Resized:"console-drawer-resized",};WebInspector.ConsoleGroup=class ConsoleGroup extends WebInspector.Object
{constructor(parentGroup)
{super();this._parentGroup=parentGroup;}
get parentGroup()
{return this._parentGroup;}
render(messageView)
{var groupElement=document.createElement("div");groupElement.className="console-group";groupElement.group=this;this.element=groupElement;var titleElement=messageView.element;titleElement.classList.add(WebInspector.LogContentView.ItemWrapperStyleClassName);titleElement.addEventListener("click",this._titleClicked.bind(this));titleElement.addEventListener("mousedown",this._titleMouseDown.bind(this));if(groupElement&&messageView.message.type===WebInspector.ConsoleMessage.MessageType.StartGroupCollapsed)
groupElement.classList.add("collapsed");groupElement.appendChild(titleElement);var messagesElement=document.createElement("div");this._messagesElement=messagesElement;messagesElement.className="console-group-messages";groupElement.appendChild(messagesElement);return groupElement;}
addMessageView(messageView)
{var element=messageView.element;element.classList.add(WebInspector.LogContentView.ItemWrapperStyleClassName);this.append(element);}
append(messageOrGroupElement)
{this._messagesElement.appendChild(messageOrGroupElement);}
_titleMouseDown(event)
{event.preventDefault();}
_titleClicked(event)
{var groupTitleElement=event.target.enclosingNodeOrSelfWithClass("console-group-title");if(groupTitleElement){var groupElement=groupTitleElement.enclosingNodeOrSelfWithClass("console-group");if(groupElement)
if(groupElement.classList.contains("collapsed"))
groupElement.classList.remove("collapsed");else
groupElement.classList.add("collapsed");groupTitleElement.scrollIntoViewIfNeeded(true);}}};WebInspector.ConsolePrompt=class ConsolePrompt extends WebInspector.View
{constructor(delegate,mimeType)
{super();mimeType=parseMIMEType(mimeType).type;this.element.classList.add("console-prompt",WebInspector.SyntaxHighlightedStyleClassName);this._delegate=delegate||null;this._codeMirror=WebInspector.CodeMirrorEditor.create(this.element,{lineWrapping:true,mode:{name:mimeType,globalVars:true},indentWithTabs:true,indentUnit:4,matchBrackets:true});var keyMap={"Up":this._handlePreviousKey.bind(this),"Down":this._handleNextKey.bind(this),"Ctrl-P":this._handlePreviousKey.bind(this),"Ctrl-N":this._handleNextKey.bind(this),"Enter":this._handleEnterKey.bind(this),"Cmd-Enter":this._handleCommandEnterKey.bind(this),"Tab":this._handleTabKey.bind(this),"Esc":this._handleEscapeKey.bind(this)};this._codeMirror.addKeyMap(keyMap);this._completionController=new WebInspector.CodeMirrorCompletionController(this._codeMirror,this);this._completionController.addExtendedCompletionProvider("javascript",WebInspector.javaScriptRuntimeCompletionProvider);this._history=[{}];this._historyIndex=0;}
get delegate()
{return this._delegate;}
set delegate(delegate)
{this._delegate=delegate||null;}
set escapeKeyHandlerWhenEmpty(handler)
{this._escapeKeyHandlerWhenEmpty=handler;}
get text()
{return this._codeMirror.getValue();}
set text(text)
{this._codeMirror.setValue(text||"");this._codeMirror.clearHistory();this._codeMirror.markClean();}
get history()
{this._history[this._historyIndex]=this._historyEntryForCurrentText();return this._history;}
set history(history)
{this._history=history instanceof Array?history.slice(0,WebInspector.ConsolePrompt.MaximumHistorySize):[{}];this._historyIndex=0;this._restoreHistoryEntry(0);}
get focused()
{return this._codeMirror.getWrapperElement().classList.contains("CodeMirror-focused");}
focus()
{this._codeMirror.focus();}
updateCompletions(completions,implicitSuffix)
{this._completionController.updateCompletions(completions,implicitSuffix);}
pushHistoryItem(text)
{this._commitHistoryEntry({text});}
completionControllerCompletionsNeeded(completionController,prefix,defaultCompletions,base,suffix,forced)
{if(this.delegate&&typeof this.delegate.consolePromptCompletionsNeeded==="function")
this.delegate.consolePromptCompletionsNeeded(this,defaultCompletions,base,prefix,suffix,forced);else
this._completionController.updateCompletions(defaultCompletions);}
completionControllerShouldAllowEscapeCompletion(completionController)
{
return!!this.text;}
layout()
{this._codeMirror.refresh();}
_handleTabKey(codeMirror)
{var cursor=codeMirror.getCursor();var line=codeMirror.getLine(cursor.line);if(!line.trim().length)
return CodeMirror.Pass;var firstNonSpace=line.search(/[^\s]/);if(cursor.ch<=firstNonSpace)
return CodeMirror.Pass;this._completionController.completeAtCurrentPositionIfNeeded().then(function(result){if(result===WebInspector.CodeMirrorCompletionController.UpdatePromise.NoCompletionsFound)
InspectorFrontendHost.beep();});}
_handleEscapeKey(codeMirror)
{if(this.text)
return CodeMirror.Pass;if(!this._escapeKeyHandlerWhenEmpty)
return CodeMirror.Pass;this._escapeKeyHandlerWhenEmpty();}
_handlePreviousKey(codeMirror)
{if(this._codeMirror.somethingSelected())
return CodeMirror.Pass;if(this._codeMirror.getCursor().line)
return CodeMirror.Pass;var historyEntry=this._history[this._historyIndex+1];if(!historyEntry)
return CodeMirror.Pass;this._rememberCurrentTextInHistory();++this._historyIndex;this._restoreHistoryEntry(this._historyIndex);}
_handleNextKey(codeMirror)
{if(this._codeMirror.somethingSelected())
return CodeMirror.Pass;if(this._codeMirror.getCursor().line!==this._codeMirror.lastLine())
return CodeMirror.Pass;var historyEntry=this._history[this._historyIndex-1];if(!historyEntry)
return CodeMirror.Pass;this._rememberCurrentTextInHistory();--this._historyIndex;this._restoreHistoryEntry(this._historyIndex);}
_handleEnterKey(codeMirror,forceCommit,keepCurrentText)
{var currentText=this.text;if(!currentText.trim())
return;var cursor=this._codeMirror.getCursor();var lastLine=this._codeMirror.lastLine();var lastLineLength=this._codeMirror.getLine(lastLine).length;var cursorIsAtLastPosition=positionsEqual(cursor,{line:lastLine,ch:lastLineLength});function positionsEqual(a,b)
{return a.line===b.line&&a.ch===b.ch;}
function commitTextOrInsertNewLine(commit)
{if(!commit){if(positionsEqual(cursor,this._codeMirror.getCursor()))
CodeMirror.commands.newlineAndIndent(this._codeMirror);return;}
this._commitHistoryEntry(this._historyEntryForCurrentText());if(!keepCurrentText){this._codeMirror.setValue("");this._codeMirror.clearHistory();}
if(this.delegate&&typeof this.delegate.consolePromptHistoryDidChange==="function")
this.delegate.consolePromptHistoryDidChange(this);if(this.delegate&&typeof this.delegate.consolePromptTextCommitted==="function")
this.delegate.consolePromptTextCommitted(this,currentText);}
if(!forceCommit&&this.delegate&&typeof this.delegate.consolePromptShouldCommitText==="function"){this.delegate.consolePromptShouldCommitText(this,currentText,cursorIsAtLastPosition,commitTextOrInsertNewLine.bind(this));return;}
commitTextOrInsertNewLine.call(this,true);}
_commitHistoryEntry(historyEntry)
{if(this._history[1]&&(!this._history[1].text||this._history[1].text===historyEntry.text)){this._history[1]=historyEntry;this._history[0]={};}else{this._history[0]=historyEntry;this._history.unshift({});if(this._history.length>WebInspector.ConsolePrompt.MaximumHistorySize)
this._history=this._history.slice(0,WebInspector.ConsolePrompt.MaximumHistorySize);}
this._historyIndex=0;}
_handleCommandEnterKey(codeMirror)
{this._handleEnterKey(codeMirror,true,true);}
_restoreHistoryEntry(index)
{var historyEntry=this._history[index];this._codeMirror.setValue(historyEntry.text||"");if(historyEntry.undoHistory)
this._codeMirror.setHistory(historyEntry.undoHistory);else
this._codeMirror.clearHistory();this._codeMirror.setCursor(historyEntry.cursor||{line:0});}
_historyEntryForCurrentText()
{return{text:this.text,undoHistory:this._codeMirror.getHistory(),cursor:this._codeMirror.getCursor()};}
_rememberCurrentTextInHistory()
{this._history[this._historyIndex]=this._historyEntryForCurrentText();if(this.delegate&&typeof this.delegate.consolePromptHistoryDidChange==="function")
this.delegate.consolePromptHistoryDidChange(this);}};WebInspector.ConsolePrompt.MaximumHistorySize=30;WebInspector.ConsoleSession=class ConsoleSession extends WebInspector.Object
{constructor(data)
{super();this._hasMessages=false;let element=document.createElement("div");element.className="console-session";let header=document.createElement("div");header.classList.add("console-session-header");let headerText="";switch(data.newSessionReason){case WebInspector.ConsoleSession.NewSessionReason.PageReloaded:headerText=WebInspector.UIString("Page reloaded at %s");break;case WebInspector.ConsoleSession.NewSessionReason.PageNavigated:headerText=WebInspector.UIString("Page navigated at %s");break;case WebInspector.ConsoleSession.NewSessionReason.ConsoleCleared:headerText=WebInspector.UIString("Console cleared at %s");break;default:headerText=WebInspector.UIString("Console opened at %s");break;}
let timestamp=data.timestamp||Date.now();header.textContent=headerText.format(new Date(timestamp).toLocaleTimeString());element.append(header);this.element=element;this._messagesElement=element;}
addMessageView(messageView)
{var messageElement=messageView.element;messageElement.classList.add(WebInspector.LogContentView.ItemWrapperStyleClassName);this.append(messageElement);}
append(messageOrGroupElement)
{this._hasMessages=true;this._messagesElement.append(messageOrGroupElement);}
hasMessages()
{return this._hasMessages;}};WebInspector.ConsoleSession.NewSessionReason={PageReloaded:Symbol("Page reloaded"),PageNavigated:Symbol("Page navigated"),ConsoleCleared:Symbol("Console cleared"),};WebInspector.ContentFlowDOMTreeContentView=class ContentFlowDOMTreeContentView extends WebInspector.DOMTreeContentView
{constructor(contentFlow)
{super(contentFlow);contentFlow.addEventListener(WebInspector.ContentFlow.Event.ContentNodeWasAdded,this._contentNodeWasAdded,this);contentFlow.addEventListener(WebInspector.ContentFlow.Event.ContentNodeWasRemoved,this._contentNodeWasRemoved,this);this._createContentTrees();}
closed()
{this.representedObject.removeEventListener(null,null,this);super.closed();}
getSearchContextNodes(callback)
{callback(this.domTreeOutline.children.map(function(treeOutline){return treeOutline.representedObject.id;}));}
_createContentTrees()
{var contentNodes=this.representedObject.contentNodes;for(var contentNode of contentNodes)
this.domTreeOutline.appendChild(new WebInspector.DOMTreeElement(contentNode));var documentURL=contentNodes.length?contentNodes[0].ownerDocument.documentURL:null;this._restoreSelectedNodeAfterUpdate(documentURL,contentNodes[0]);}
_contentNodeWasAdded(event)
{var treeElement=new WebInspector.DOMTreeElement(event.data.node);if(!event.data.before){this.domTreeOutline.appendChild(treeElement);return;}
var beforeElement=this.domTreeOutline.findTreeElement(event.data.before);var index=this.domTreeOutline.children.indexOf(beforeElement);this.domTreeOutline.insertChild(treeElement,index);}
_contentNodeWasRemoved(event)
{var treeElement=this.domTreeOutline.findTreeElement(event.data.node);this.domTreeOutline.removeChild(treeElement);}};WebInspector.ContentFlowTreeElement=class ContentFlowTreeElement extends WebInspector.GeneralTreeElement
{constructor(representedObject)
{super("content-flow-icon",representedObject.name,null,representedObject,false);}};WebInspector.ContentViewContainer=class ContentViewContainer extends WebInspector.View
{constructor()
{super();this.element.classList.add("content-view-container");this._backForwardList=[];this._currentIndex=-1;}
get currentIndex()
{return this._currentIndex;}
get backForwardList()
{return this._backForwardList;}
get currentContentView()
{if(this._currentIndex<0||this._currentIndex>this._backForwardList.length-1)
return null;return this._backForwardList[this._currentIndex].contentView;}
get currentBackForwardEntry()
{if(this._currentIndex<0||this._currentIndex>this._backForwardList.length-1)
return null;return this._backForwardList[this._currentIndex];}
contentViewForRepresentedObject(representedObject,onlyExisting,extraArguments)
{return WebInspector.ContentView.contentViewForRepresentedObject(representedObject,onlyExisting,extraArguments);}
showContentViewForRepresentedObject(representedObject,extraArguments)
{var contentView=this.contentViewForRepresentedObject(representedObject,false,extraArguments);if(!contentView)
return null;this.showContentView(contentView);return contentView;}
showContentView(contentView,cookie)
{if(!(contentView instanceof WebInspector.ContentView))
return null;
if(contentView.parentContainer!==this)
this._takeOwnershipOfContentView(contentView);let currentEntry=this.currentBackForwardEntry;
let provisionalEntry=null;for(let i=this._backForwardList.length-1;i>=0;--i){if(this._backForwardList[i].contentView===contentView){provisionalEntry=this._backForwardList[i].makeCopy(cookie);break;}}
if(!provisionalEntry)
provisionalEntry=new WebInspector.BackForwardEntry(contentView,cookie);if(provisionalEntry.isEqual(currentEntry)){const shouldCallShown=false;currentEntry.prepareToShow(shouldCallShown);return currentEntry.contentView;}
let newIndex=this._currentIndex+1;let removedEntries=this._backForwardList.splice(newIndex,this._backForwardList.length-newIndex,provisionalEntry);for(let i=0;i<removedEntries.length;++i){let shouldDissociateContentView=!this._backForwardList.some((existingEntry)=>existingEntry.contentView===removedEntries[i].contentView);if(shouldDissociateContentView)
this._disassociateFromContentView(removedEntries[i].contentView,removedEntries[i].tombstone);}
contentView._parentContainer=this;this.showBackForwardEntryForIndex(newIndex);return contentView;}
showBackForwardEntryForIndex(index)
{if(index<0||index>this._backForwardList.length-1)
return;if(this._currentIndex===index)
return;var previousEntry=this.currentBackForwardEntry;this._currentIndex=index;var currentEntry=this.currentBackForwardEntry;var isNewContentView=!previousEntry||!currentEntry.contentView.visible;if(isNewContentView){if(previousEntry)
this._hideEntry(previousEntry);this._showEntry(currentEntry,true);}else
this._showEntry(currentEntry,false);this.dispatchEventToListeners(WebInspector.ContentViewContainer.Event.CurrentContentViewDidChange);}
replaceContentView(oldContentView,newContentView)
{if(!(oldContentView instanceof WebInspector.ContentView))
return;if(!(newContentView instanceof WebInspector.ContentView))
return;if(oldContentView.parentContainer!==this)
return;if(newContentView.parentContainer&&newContentView.parentContainer!==this)
return;var currentlyShowing=this.currentContentView===oldContentView;if(currentlyShowing)
this._hideEntry(this.currentBackForwardEntry);this._disassociateFromContentView(oldContentView,false);newContentView._parentContainer=this;for(var i=0;i<this._backForwardList.length;++i){if(this._backForwardList[i].contentView===oldContentView){let currentCookie=this._backForwardList[i].cookie;this._backForwardList[i]=new WebInspector.BackForwardEntry(newContentView,currentCookie);}}
this._removeIdenticalAdjacentBackForwardEntries();if(currentlyShowing){this._showEntry(this.currentBackForwardEntry,true);this.dispatchEventToListeners(WebInspector.ContentViewContainer.Event.CurrentContentViewDidChange);}}
closeContentView(contentViewToClose)
{if(!this._backForwardList.length){return;}
var allSameContentView=true;for(var i=this._backForwardList.length-1;i>=0;--i){if(this._backForwardList[i].contentView!==contentViewToClose){allSameContentView=false;break;}}
if(allSameContentView){this.closeAllContentViews();return;}
var visibleContentView=this.currentContentView;var backForwardListDidChange=false;for(var i=this._backForwardList.length-1;i>=0;--i){var entry=this._backForwardList[i];if(entry.contentView!==contentViewToClose)
continue;if(entry.contentView===visibleContentView)
this._hideEntry(entry);if(this._currentIndex>=i){
--this._currentIndex;}
this._disassociateFromContentView(entry.contentView,entry.tombstone);this._backForwardList.splice(i,1);backForwardListDidChange=true;}
if(backForwardListDidChange)
this._removeIdenticalAdjacentBackForwardEntries();var currentEntry=this.currentBackForwardEntry;if(currentEntry&&currentEntry.contentView!==visibleContentView||backForwardListDidChange){this._showEntry(currentEntry,true);this.dispatchEventToListeners(WebInspector.ContentViewContainer.Event.CurrentContentViewDidChange);}}
closeAllContentViews()
{if(!this._backForwardList.length){return;}
var visibleContentView=this.currentContentView;for(var i=0;i<this._backForwardList.length;++i){var entry=this._backForwardList[i];if(entry.contentView===visibleContentView)
this._hideEntry(entry);this._disassociateFromContentView(entry.contentView,entry.tombstone);}
this._backForwardList=[];this._currentIndex=-1;this.dispatchEventToListeners(WebInspector.ContentViewContainer.Event.CurrentContentViewDidChange);}
canGoBack()
{return this._currentIndex>0;}
canGoForward()
{return this._currentIndex<this._backForwardList.length-1;}
goBack()
{if(!this.canGoBack())
return;this.showBackForwardEntryForIndex(this._currentIndex-1);}
goForward()
{if(!this.canGoForward())
return;this.showBackForwardEntryForIndex(this._currentIndex+1);}
shown()
{var currentEntry=this.currentBackForwardEntry;if(!currentEntry)
return;this._showEntry(currentEntry,true);}
hidden()
{var currentEntry=this.currentBackForwardEntry;if(!currentEntry)
return;this._hideEntry(currentEntry);}
_takeOwnershipOfContentView(contentView)
{if(contentView.parentContainer===this)
return;if(contentView.parentContainer)
contentView.parentContainer._placeTombstonesForContentView(contentView);contentView._parentContainer=this;this._clearTombstonesForContentView(contentView);contentView.dispatchEventToListeners(WebInspector.ContentView.Event.NavigationItemsDidChange);}
_placeTombstonesForContentView(contentView)
{let tombstoneContentViewContainers=this._tombstoneContentViewContainersForContentView(contentView);let visibleContentView=this.currentContentView;for(let entry of this._backForwardList){if(entry.contentView!==contentView)
continue;if(entry.contentView===visibleContentView){this._hideEntry(entry);visibleContentView=null;}
entry.tombstone=true;tombstoneContentViewContainers.push(this);}}
_clearTombstonesForContentView(contentView)
{let tombstoneContentViewContainers=this._tombstoneContentViewContainersForContentView(contentView);const onlyFirst=false;tombstoneContentViewContainers.remove(this,onlyFirst);for(let entry of this._backForwardList){if(entry.contentView!==contentView)
continue;entry.tombstone=false;}}
_disassociateFromContentView(contentView,isTombstone)
{if(isTombstone){let tombstoneContentViewContainers=this._tombstoneContentViewContainersForContentView(contentView);const onlyFirst=true;tombstoneContentViewContainers.remove(this,onlyFirst);return;}
if(!contentView._parentContainer)
return;contentView._parentContainer=null;
let tombstoneContentViewContainers=this._tombstoneContentViewContainersForContentView(contentView);if(tombstoneContentViewContainers&&tombstoneContentViewContainers.length){tombstoneContentViewContainers[0]._takeOwnershipOfContentView(contentView);return;}
contentView.closed();if(contentView.representedObject)
WebInspector.ContentView.closedContentViewForRepresentedObject(contentView.representedObject);}
_showEntry(entry,shouldCallShown)
{
if(entry.tombstone){this._takeOwnershipOfContentView(entry.contentView);}
if(!this.subviews.includes(entry.contentView))
this.addSubview(entry.contentView);entry.prepareToShow(shouldCallShown);}
_hideEntry(entry)
{
if(entry.tombstone)
return;entry.prepareToHide();if(this.subviews.includes(entry.contentView))
this.removeSubview(entry.contentView);}
_tombstoneContentViewContainersForContentView(contentView)
{let tombstoneContentViewContainers=contentView[WebInspector.ContentViewContainer.TombstoneContentViewContainersSymbol];if(!tombstoneContentViewContainers)
tombstoneContentViewContainers=contentView[WebInspector.ContentViewContainer.TombstoneContentViewContainersSymbol]=[];return tombstoneContentViewContainers;}
_removeIdenticalAdjacentBackForwardEntries()
{if(this._backForwardList.length<2)
return;let previousEntry;for(let i=this._backForwardList.length-1;i>=0;--i){let entry=this._backForwardList[i];if(!entry.isEqual(previousEntry)){previousEntry=entry;continue;}
if(this._currentIndex>=i){
--this._currentIndex;}
this._backForwardList.splice(i,1);}}};WebInspector.ContentViewContainer.Event={CurrentContentViewDidChange:"content-view-container-current-content-view-did-change"};WebInspector.ContentViewContainer.TombstoneContentViewContainersSymbol=Symbol("content-view-container-tombstone-content-view-containers");WebInspector.ContextMenuItem=class ContextMenuItem extends WebInspector.Object
{constructor(topLevelMenu,type,label,disabled,checked)
{super();this._type=type;this._label=label;this._disabled=disabled;this._checked=checked;this._contextMenu=topLevelMenu||this;if(type==="item"||type==="checkbox")
this._id=topLevelMenu.nextId();}
id()
{return this._id;}
type()
{return this._type;}
isEnabled()
{return!this._disabled;}
setEnabled(enabled)
{this._disabled=!enabled;}
_buildDescriptor()
{switch(this._type){case"item":return{type:"item",id:this._id,label:this._label,enabled:!this._disabled};case"separator":return{type:"separator"};case"checkbox":return{type:"checkbox",id:this._id,label:this._label,checked:!!this._checked,enabled:!this._disabled};}}};WebInspector.ContextSubMenuItem=class ContextSubMenuItem extends WebInspector.ContextMenuItem
{constructor(topLevelMenu,label,disabled)
{super(topLevelMenu,"subMenu",label,disabled);this._items=[];}
appendItem(label,handler,disabled)
{let item=new WebInspector.ContextMenuItem(this._contextMenu,"item",label,disabled);this._pushItem(item);this._contextMenu._setHandler(item.id(),handler);return item;}
appendSubMenuItem(label,disabled)
{let item=new WebInspector.ContextSubMenuItem(this._contextMenu,label,disabled);this._pushItem(item);return item;}
appendCheckboxItem(label,handler,checked,disabled)
{let item=new WebInspector.ContextMenuItem(this._contextMenu,"checkbox",label,disabled,checked);this._pushItem(item);this._contextMenu._setHandler(item.id(),handler);return item;}
appendSeparator()
{if(this._items.length)
this._pendingSeparator=true;}
_pushItem(item)
{if(this._pendingSeparator){this._items.push(new WebInspector.ContextMenuItem(this._contextMenu,"separator"));this._pendingSeparator=null;}
this._items.push(item);}
isEmpty()
{return!this._items.length;}
_buildDescriptor()
{let subItems=this._items.map((item)=>item._buildDescriptor());return{type:"subMenu",label:this._label,enabled:!this._disabled,subItems};}};WebInspector.ContextMenu=class ContextMenu extends WebInspector.ContextSubMenuItem
{constructor(event)
{super(null,"");this._event=event;this._handlers={};this._id=0;}
static createFromEvent(event,onlyExisting=false)
{if(!event[WebInspector.ContextMenu.ProposedMenuSymbol]&&!onlyExisting)
event[WebInspector.ContextMenu.ProposedMenuSymbol]=new WebInspector.ContextMenu(event);return event[WebInspector.ContextMenu.ProposedMenuSymbol]||null;}
static contextMenuItemSelected(id)
{if(WebInspector.ContextMenu._lastContextMenu)
WebInspector.ContextMenu._lastContextMenu._itemSelected(id);}
static contextMenuCleared()
{
}
nextId()
{return this._id++;}
show()
{let menuObject=this._buildDescriptor();if(menuObject.length){WebInspector.ContextMenu._lastContextMenu=this;if(this._event.type!=="contextmenu"&&typeof InspectorFrontendHost.dispatchEventAsContextMenuEvent==="function"){this._menuObject=menuObject;this._event.target.addEventListener("contextmenu",this,true);InspectorFrontendHost.dispatchEventAsContextMenuEvent(this._event);}else
InspectorFrontendHost.showContextMenu(this._event,menuObject);}
if(this._event)
this._event.stopImmediatePropagation();}
handleEvent(event)
{this._event.target.removeEventListener("contextmenu",this,true);InspectorFrontendHost.showContextMenu(event,this._menuObject);this._menuObject=null;event.stopImmediatePropagation();}
_setHandler(id,handler)
{if(handler)
this._handlers[id]=handler;}
_buildDescriptor()
{return this._items.map((item)=>item._buildDescriptor());}
_itemSelected(id)
{if(this._handlers[id])
this._handlers[id].call(this);}};WebInspector.ContextMenu.ProposedMenuSymbol=Symbol("context-menu-proposed-menu");WebInspector.appendContextMenuItemsForSourceCode=function(contextMenu,sourceCodeOrLocation)
{if(!(contextMenu instanceof WebInspector.ContextMenu))
return;let sourceCode=sourceCodeOrLocation;let location=null;if(sourceCodeOrLocation instanceof WebInspector.SourceCodeLocation){sourceCode=sourceCodeOrLocation.sourceCode;location=sourceCodeOrLocation;}
if(!(sourceCode instanceof WebInspector.SourceCode))
return;contextMenu.appendSeparator();if(sourceCode.url){contextMenu.appendItem(WebInspector.UIString("Open in New Tab"),()=>{const frame=null;WebInspector.openURL(sourceCode.url,frame,{alwaysOpenExternally:true});});if(WebInspector.frameResourceManager.resourceForURL(sourceCode.url)&&!WebInspector.isShowingResourcesTab()){contextMenu.appendItem(WebInspector.UIString("Reveal in Resources Tab"),()=>{const options={ignoreNetworkTab:true};if(location)
WebInspector.showSourceCodeLocation(location,options);else
WebInspector.showSourceCode(sourceCode,options);});}
contextMenu.appendItem(WebInspector.UIString("Copy Link Address"),()=>{InspectorFrontendHost.copyText(sourceCode.url);});}
if(sourceCode instanceof WebInspector.Resource){if(sourceCode.urlComponents.scheme!=="data"){contextMenu.appendItem(WebInspector.UIString("Copy as cURL"),()=>{sourceCode.generateCURLCommand();});}}
contextMenu.appendItem(WebInspector.UIString("Save File"),()=>{sourceCode.requestContent().then(()=>{const forceSaveAs=true;WebInspector.saveDataToFile({url:sourceCode.url||"",content:sourceCode.content},forceSaveAs);});});contextMenu.appendSeparator();if(location&&(sourceCode instanceof WebInspector.Script||(sourceCode instanceof WebInspector.Resource&&sourceCode.type===WebInspector.Resource.Type.Script))){let existingBreakpoint=WebInspector.debuggerManager.breakpointForSourceCodeLocation(location);if(existingBreakpoint){contextMenu.appendItem(WebInspector.UIString("Delete Breakpoint"),()=>{WebInspector.debuggerManager.removeBreakpoint(existingBreakpoint);});}else{contextMenu.appendItem(WebInspector.UIString("Add Breakpoint"),()=>{WebInspector.debuggerManager.addBreakpoint(new WebInspector.Breakpoint(location));});}
contextMenu.appendSeparator();}};WebInspector.appendContextMenuItemsForDOMNode=function(contextMenu,domNode,options={})
{if(!(contextMenu instanceof WebInspector.ContextMenu))
return;if(!(domNode instanceof WebInspector.DOMNode))
return;let isElement=domNode.nodeType()===Node.ELEMENT_NODE;contextMenu.appendSeparator();if(domNode.ownerDocument&&isElement){contextMenu.appendItem(WebInspector.UIString("Copy Selector Path"),()=>{let cssPath=WebInspector.cssPath(domNode);InspectorFrontendHost.copyText(cssPath);});}
if(domNode.ownerDocument&&!domNode.isPseudoElement()){contextMenu.appendItem(WebInspector.UIString("Copy XPath"),()=>{let xpath=WebInspector.xpath(domNode);InspectorFrontendHost.copyText(xpath);});}
if(domNode.isCustomElement()){contextMenu.appendSeparator();contextMenu.appendItem(WebInspector.UIString("Jump to Definition"),()=>{function didGetFunctionDetails(error,response){if(error)
return;let location=response.location;let sourceCode=WebInspector.debuggerManager.scriptForIdentifier(location.scriptId,WebInspector.mainTarget);if(!sourceCode)
return;let sourceCodeLocation=sourceCode.createSourceCodeLocation(location.lineNumber,location.columnNumber||0);WebInspector.showSourceCodeLocation(sourceCodeLocation,{ignoreNetworkTab:true,ignoreSearchTab:true,});}
function didGetProperty(error,result,wasThrown){if(error||result.type!=="function")
return;DebuggerAgent.getFunctionDetails(result.objectId,didGetFunctionDetails);result.release();}
function didResolveNode(remoteObject){if(!remoteObject)
return;remoteObject.getProperty("constructor",didGetProperty);remoteObject.release();}
WebInspector.RemoteObject.resolveNode(domNode,"",didResolveNode);});}
if(WebInspector.domDebuggerManager.supported&&isElement&&!domNode.isPseudoElement()&&domNode.ownerDocument){contextMenu.appendSeparator();const allowEditing=false;WebInspector.DOMBreakpointTreeController.appendBreakpointContextMenuItems(contextMenu,domNode,allowEditing);}
contextMenu.appendSeparator();if(!options.excludeRevealElement&&domNode.ownerDocument){contextMenu.appendItem(WebInspector.UIString("Reveal in DOM Tree"),()=>{WebInspector.domTreeManager.inspectElement(domNode.id);});}
if(!options.excludeLogElement&&!domNode.isInUserAgentShadowTree()&&!domNode.isPseudoElement()){let label=isElement?WebInspector.UIString("Log Element"):WebInspector.UIString("Log Node");contextMenu.appendItem(label,()=>{WebInspector.RemoteObject.resolveNode(domNode,WebInspector.RuntimeManager.ConsoleObjectGroup,(remoteObject)=>{if(!remoteObject)
return;let text=isElement?WebInspector.UIString("Selected Element"):WebInspector.UIString("Selected Node");const addSpecialUserLogClass=true;WebInspector.consoleLogViewController.appendImmediateExecutionWithResult(text,remoteObject,addSpecialUserLogClass);});});}};WebInspector.ControlToolbarItem=class ControlToolbarItem extends WebInspector.ButtonNavigationItem
{constructor(identifier,toolTip,image,imageWidth,imageHeight)
{super(identifier,toolTip,image,imageWidth,imageHeight,false);}
get additionalClassNames()
{return["control"];}};WebInspector.CookieStorageContentView=class CookieStorageContentView extends WebInspector.ContentView
{constructor(representedObject)
{super(representedObject);this.element.classList.add("cookie-storage");this._refreshButtonNavigationItem=new WebInspector.ButtonNavigationItem("cookie-storage-refresh",WebInspector.UIString("Refresh"),"Images/ReloadFull.svg",13,13);this._refreshButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._refreshButtonClicked,this);this.update();}
get navigationItems()
{return[this._refreshButtonNavigationItem];}
update()
{PageAgent.getCookies().then((payload)=>{this._cookies=this._filterCookies(payload.cookies);this._rebuildTable();}).catch((error)=>{console.error("Could not fetch cookies: ",error);});}
saveToCookie(cookie)
{cookie.type=WebInspector.ContentViewCookieType.CookieStorage;cookie.host=this.representedObject.host;}
get scrollableElements()
{if(!this._dataGrid)
return[];return[this._dataGrid.scrollContainer];}
_rebuildTable()
{if(!this._dataGrid){var columns={name:{},value:{},domain:{},path:{},expires:{},size:{},http:{},secure:{}};columns.name.title=WebInspector.UIString("Name");columns.name.sortable=true;columns.name.width="24%";columns.name.locked=true;columns.value.title=WebInspector.UIString("Value");columns.value.sortable=true;columns.value.width="34%";columns.value.locked=true;columns.domain.title=WebInspector.UIString("Domain");columns.domain.sortable=true;columns.domain.width="7%";columns.path.title=WebInspector.UIString("Path");columns.path.sortable=true;columns.path.width="7%";columns.expires.title=WebInspector.UIString("Expires");columns.expires.sortable=true;columns.expires.width="7%";columns.size.title=WebInspector.UIString("Size");columns.size.aligned="right";columns.size.sortable=true;columns.size.width="7%";columns.http.title=WebInspector.UIString("HTTP");columns.http.aligned="centered";columns.http.sortable=true;columns.http.width="7%";columns.secure.title=WebInspector.UIString("Secure");columns.secure.aligned="centered";columns.secure.sortable=true;columns.secure.width="7%";this._dataGrid=new WebInspector.DataGrid(columns,null,this._deleteCallback.bind(this));this._dataGrid.columnChooserEnabled=true;this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SortChanged,this._sortDataGrid,this);this.addSubview(this._dataGrid);this._dataGrid.updateLayout();}
this._dataGrid.removeChildren();for(var cookie of this._cookies){const checkmark="\u2713";var data={"name":cookie.name,"value":cookie.value,"domain":cookie.domain||"","path":cookie.path||"","expires":"","size":Number.bytesToString(cookie.size),"http":cookie.httpOnly?checkmark:"","secure":cookie.secure?checkmark:"",};if(cookie.type!==WebInspector.CookieType.Request)
data["expires"]=cookie.session?WebInspector.UIString("Session"):new Date(cookie.expires).toLocaleString();var node=new WebInspector.DataGridNode(data);node.cookie=cookie;this._dataGrid.appendChild(node);}
this._dataGrid.sortColumnIdentifier="name";this._dataGrid.createSettings("cookie-storage-content-view");}
_filterCookies(cookies)
{let resourceMatchesStorageDomain=(resource)=>{let urlComponents=resource.urlComponents;return urlComponents&&urlComponents.host&&urlComponents.host===this.representedObject.host;};let allResources=[];for(let frame of WebInspector.frameResourceManager.frames){allResources.push(frame.mainResource);allResources=allResources.concat(frame.resourceCollection.toArray());}
let resourcesForDomain=allResources.filter(resourceMatchesStorageDomain);let cookiesForDomain=cookies.filter((cookie)=>{return resourcesForDomain.some((resource)=>{return WebInspector.CookieStorageObject.cookieMatchesResourceURL(cookie,resource.url);});});return cookiesForDomain;}
_sortDataGrid()
{function localeCompare(field,nodeA,nodeB)
{return(nodeA.data[field]+"").extendedLocaleCompare(nodeB.data[field]+"");}
function numberCompare(field,nodeA,nodeB)
{return nodeA.cookie[field]-nodeB.cookie[field];}
function expiresCompare(nodeA,nodeB)
{if(nodeA.cookie.session!==nodeB.cookie.session)
return nodeA.cookie.session?-1:1;if(nodeA.cookie.session)
return 0;return nodeA.cookie.expires-nodeB.cookie.expires;}
var comparator;switch(this._dataGrid.sortColumnIdentifier){case"value":comparator=localeCompare.bind(this,"value");break;case"domain":comparator=localeCompare.bind(this,"domain");break;case"path":comparator=localeCompare.bind(this,"path");break;case"expires":comparator=expiresCompare;break;case"size":comparator=numberCompare.bind(this,"size");break;case"http":comparator=localeCompare.bind(this,"http");break;case"secure":comparator=localeCompare.bind(this,"secure");break;case"name":default:comparator=localeCompare.bind(this,"name");break;}
this._dataGrid.sortNodes(comparator);}
_deleteCallback(node)
{if(!node||!node.cookie)
return;var cookie=node.cookie;var cookieURL=(cookie.secure?"https://":"http://")+cookie.domain+cookie.path;PageAgent.deleteCookie(cookie.name,cookieURL);this.update();}
_refreshButtonClicked(event)
{this.update();}};WebInspector.CookieType={Request:0,Response:1};WebInspector.CookieStorageTreeElement=class CookieStorageTreeElement extends WebInspector.StorageTreeElement
{constructor(representedObject)
{super("cookie-icon",WebInspector.displayNameForHost(representedObject.host),representedObject);}
get name()
{return this.representedObject.host;}
get categoryName()
{return WebInspector.UIString("Cookies");}};WebInspector.DOMBreakpointTreeElement=class DOMBreakpointTreeElement extends WebInspector.GeneralTreeElement
{constructor(breakpoint,className,title)
{if(!className)
className=WebInspector.BreakpointTreeElement.GenericLineIconStyleClassName;if(!title)
title=WebInspector.DOMBreakpointTreeElement.displayNameForType(breakpoint.type);super(["breakpoint",className],title,null,breakpoint);this._statusImageElement=document.createElement("img");this._statusImageElement.classList.add("status-image","resolved");this.status=this._statusImageElement;breakpoint.addEventListener(WebInspector.DOMBreakpoint.Event.DisabledStateDidChange,this._updateStatus,this);this._updateStatus();}
static displayNameForType(type)
{switch(type){case WebInspector.DOMBreakpoint.Type.SubtreeModified:return WebInspector.UIString("Subtree Modified");case WebInspector.DOMBreakpoint.Type.AttributeModified:return WebInspector.UIString("Attribute Modified");case WebInspector.DOMBreakpoint.Type.NodeRemoved:return WebInspector.UIString("Node Removed");default:console.error("Unexpected DOM breakpoint type: "+type);return null;}}
onattach()
{super.onattach();this._boundStatusImageElementClicked=this._statusImageElementClicked.bind(this);this._boundStatusImageElementFocused=this._statusImageElementFocused.bind(this);this._boundStatusImageElementMouseDown=this._statusImageElementMouseDown.bind(this);this._statusImageElement.addEventListener("click",this._boundStatusImageElementClicked);this._statusImageElement.addEventListener("focus",this._boundStatusImageElementFocused);this._statusImageElement.addEventListener("mousedown",this._boundStatusImageElementMouseDown);}
ondetach()
{super.ondetach();this._statusImageElement.removeEventListener("click",this._boundStatusImageElementClicked);this._statusImageElement.removeEventListener("focus",this._boundStatusImageElementFocused);this._statusImageElement.removeEventListener("mousedown",this._boundStatusImageElementMouseDown);this._boundStatusImageElementClicked=null;this._boundStatusImageElementFocused=null;this._boundStatusImageElementMouseDown=null;}
ondelete()
{WebInspector.domDebuggerManager.removeDOMBreakpoint(this.representedObject);return true;}
onenter()
{this._toggleBreakpoint();return true;}
onspace()
{this._toggleBreakpoint();return true;}
populateContextMenu(contextMenu,event)
{let breakpoint=this.representedObject;let label=breakpoint.disabled?WebInspector.UIString("Enable Breakpoint"):WebInspector.UIString("Disable Breakpoint");contextMenu.appendItem(label,this._toggleBreakpoint.bind(this));contextMenu.appendSeparator();contextMenu.appendItem(WebInspector.UIString("Delete Breakpoint"),function(){WebInspector.domDebuggerManager.removeDOMBreakpoint(breakpoint);});}
_statusImageElementClicked(event)
{this._toggleBreakpoint();}
_statusImageElementFocused(event)
{event.stopPropagation();}
_statusImageElementMouseDown(event)
{event.stopPropagation();}
_toggleBreakpoint()
{this.representedObject.disabled=!this.representedObject.disabled;}
_updateStatus()
{this._statusImageElement.classList.toggle("disabled",this.representedObject.disabled);}};WebInspector.DOMNodeDetailsSidebarPanel=class DOMNodeDetailsSidebarPanel extends WebInspector.DOMDetailsSidebarPanel
{constructor()
{super("dom-node-details",WebInspector.UIString("Node"));this._eventListenerGroupingMethodSetting=new WebInspector.Setting("dom-node-event-listener-grouping-method",WebInspector.DOMNodeDetailsSidebarPanel.EventListenerGroupingMethod.Event);this.element.classList.add("dom-node");this._nodeRemoteObject=null;}
initialLayout()
{super.initialLayout();WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.AttributeModified,this._attributesChanged,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.AttributeRemoved,this._attributesChanged,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.CharacterDataModified,this._characterDataModified,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.CustomElementStateChanged,this._customElementStateChanged,this);this._identityNodeTypeRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Type"));this._identityNodeNameRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Name"));this._identityNodeValueRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Value"));this._identityNodeContentSecurityPolicyHashRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("CSP Hash"));var identityGroup=new WebInspector.DetailsSectionGroup([this._identityNodeTypeRow,this._identityNodeNameRow,this._identityNodeValueRow,this._identityNodeContentSecurityPolicyHashRow]);var identitySection=new WebInspector.DetailsSection("dom-node-identity",WebInspector.UIString("Identity"),[identityGroup]);this._attributesDataGridRow=new WebInspector.DetailsSectionDataGridRow(null,WebInspector.UIString("No Attributes"));var attributesGroup=new WebInspector.DetailsSectionGroup([this._attributesDataGridRow]);var attributesSection=new WebInspector.DetailsSection("dom-node-attributes",WebInspector.UIString("Attributes"),[attributesGroup]);this._propertiesRow=new WebInspector.DetailsSectionRow;var propertiesGroup=new WebInspector.DetailsSectionGroup([this._propertiesRow]);var propertiesSection=new WebInspector.DetailsSection("dom-node-properties",WebInspector.UIString("Properties"),[propertiesGroup]);let eventListenersFilterElement=useSVGSymbol("Images/FilterFieldGlyph.svg","filter",WebInspector.UIString("Grouping Method"));let eventListenersGroupMethodSelectElement=eventListenersFilterElement.appendChild(document.createElement("select"));eventListenersGroupMethodSelectElement.addEventListener("change",(event)=>{this._eventListenerGroupingMethodSetting.value=eventListenersGroupMethodSelectElement.value;this._refreshEventListeners();});function createOption(text,value){let optionElement=eventListenersGroupMethodSelectElement.appendChild(document.createElement("option"));optionElement.value=value;optionElement.textContent=text;}
createOption(WebInspector.UIString("Group by Event"),WebInspector.DOMNodeDetailsSidebarPanel.EventListenerGroupingMethod.Event);createOption(WebInspector.UIString("Group by Node"),WebInspector.DOMNodeDetailsSidebarPanel.EventListenerGroupingMethod.Node);eventListenersGroupMethodSelectElement.value=this._eventListenerGroupingMethodSetting.value;this._eventListenersSectionGroup=new WebInspector.DetailsSectionGroup;let eventListenersSection=new WebInspector.DetailsSection("dom-node-event-listeners",WebInspector.UIString("Event Listeners"),[this._eventListenersSectionGroup],eventListenersFilterElement);this.contentView.element.appendChild(identitySection.element);this.contentView.element.appendChild(attributesSection.element);this.contentView.element.appendChild(propertiesSection.element);this.contentView.element.appendChild(eventListenersSection.element);if(this._accessibilitySupported()){this._accessibilityEmptyRow=new WebInspector.DetailsSectionRow(WebInspector.UIString("No Accessibility Information"));this._accessibilityNodeActiveDescendantRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Shared Focus"));this._accessibilityNodeBusyRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Busy"));this._accessibilityNodeCheckedRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Checked"));this._accessibilityNodeChildrenRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Children"));this._accessibilityNodeControlsRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Controls"));this._accessibilityNodeCurrentRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Current"));this._accessibilityNodeDisabledRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Disabled"));this._accessibilityNodeExpandedRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Expanded"));this._accessibilityNodeFlowsRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Flows"));this._accessibilityNodeFocusedRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Focused"));this._accessibilityNodeHeadingLevelRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Heading Level"));this._accessibilityNodehierarchyLevelRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Hierarchy Level"));this._accessibilityNodeIgnoredRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Ignored"));this._accessibilityNodeInvalidRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Invalid"));this._accessibilityNodeLiveRegionStatusRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Live"));this._accessibilityNodeMouseEventRow=new WebInspector.DetailsSectionSimpleRow("");this._accessibilityNodeLabelRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Label"));this._accessibilityNodeOwnsRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Owns"));this._accessibilityNodeParentRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Parent"));this._accessibilityNodePressedRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Pressed"));this._accessibilityNodeReadonlyRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Readonly"));this._accessibilityNodeRequiredRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Required"));this._accessibilityNodeRoleRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Role"));this._accessibilityNodeSelectedRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Selected"));this._accessibilityNodeSelectedChildrenRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Selected Items"));this._accessibilityGroup=new WebInspector.DetailsSectionGroup([this._accessibilityEmptyRow]);var accessibilitySection=new WebInspector.DetailsSection("dom-node-accessibility",WebInspector.UIString("Accessibility"),[this._accessibilityGroup]);this.contentView.element.appendChild(accessibilitySection.element);}}
layout()
{super.layout();if(!this.domNode)
return;this._refreshIdentity();this._refreshAttributes();this._refreshProperties();this._refreshEventListeners();this._refreshAccessibility();}
sizeDidChange()
{super.sizeDidChange(); this._attributesDataGridRow.sizeDidChange();}
_accessibilitySupported()
{return window.DOMAgent&&DOMAgent.getAccessibilityPropertiesForNode;}
_refreshIdentity()
{const domNode=this.domNode;this._identityNodeTypeRow.value=this._nodeTypeDisplayName();this._identityNodeNameRow.value=domNode.nodeNameInCorrectCase();this._identityNodeValueRow.value=domNode.nodeValue();this._identityNodeContentSecurityPolicyHashRow.value=domNode.contentSecurityPolicyHash();}
_refreshAttributes()
{let domNode=this.domNode;if(!domNode||!domNode.hasAttributes()){this._attributesDataGridRow.dataGrid=null;return;}
let dataGrid=this._attributesDataGridRow.dataGrid;if(!dataGrid){const columns={name:{title:WebInspector.UIString("Name"),width:"30%"},value:{title:WebInspector.UIString("Value")},};dataGrid=this._attributesDataGridRow.dataGrid=new WebInspector.DataGrid(columns);}
dataGrid.removeChildren();let attributes=domNode.attributes();attributes.sort((a,b)=>a.name.extendedLocaleCompare(b.name));for(let attribute of attributes){let dataGridNode=new WebInspector.EditableDataGridNode(attribute);dataGridNode.addEventListener(WebInspector.EditableDataGridNode.Event.ValueChanged,this._attributeNodeValueChanged,this);dataGrid.appendChild(dataGridNode);}
dataGrid.updateLayoutIfNeeded();}
_refreshProperties()
{if(this._nodeRemoteObject){this._nodeRemoteObject.release();this._nodeRemoteObject=null;}
let domNode=this.domNode;RuntimeAgent.releaseObjectGroup(WebInspector.DOMNodeDetailsSidebarPanel.PropertiesObjectGroupName);WebInspector.RemoteObject.resolveNode(domNode,WebInspector.DOMNodeDetailsSidebarPanel.PropertiesObjectGroupName,nodeResolved.bind(this));function nodeResolved(object)
{if(!object)
return;if(this.domNode!==domNode)
return;this._nodeRemoteObject=object;function inspectedPage_node_collectPrototypes()
{
var prototype=this;var result=[];var counter=1;while(prototype){result[counter++]=prototype;prototype=prototype.__proto__;}
return result;}
const args=undefined;const generatePreview=false;object.callFunction(inspectedPage_node_collectPrototypes,args,generatePreview,nodePrototypesReady.bind(this));}
function nodePrototypesReady(error,object,wasThrown)
{if(error||wasThrown||!object)
return;if(this.domNode!==domNode)
return;object.deprecatedGetOwnProperties(fillSection.bind(this));}
function fillSection(prototypes)
{if(!prototypes)
return;if(this.domNode!==domNode)
return;let element=this._propertiesRow.element;element.removeChildren();let propertyPath=new WebInspector.PropertyPath(this._nodeRemoteObject,"node");let initialSection=true;for(let i=0;i<prototypes.length;++i){if(!parseInt(prototypes[i].name,10))
continue;let prototype=prototypes[i].value;let prototypeName=prototype.description;let title=prototypeName;if(/Prototype$/.test(title)){prototypeName=prototypeName.replace(/Prototype$/,"");title=prototypeName+WebInspector.UIString(" (Prototype)");}else if(title==="Object")
title=title+WebInspector.UIString(" (Prototype)");let mode=initialSection?WebInspector.ObjectTreeView.Mode.Properties:WebInspector.ObjectTreeView.Mode.PureAPI;let objectTree=new WebInspector.ObjectTreeView(prototype,mode,propertyPath);objectTree.showOnlyProperties();objectTree.setPrototypeNameOverride(prototypeName);let detailsSection=new WebInspector.DetailsSection(prototype.description.hash+"-prototype-properties",title,null,null,true);detailsSection.groups[0].rows=[new WebInspector.ObjectPropertiesDetailSectionRow(objectTree,detailsSection)];element.appendChild(detailsSection.element);initialSection=false;}}}
_refreshEventListeners()
{var domNode=this.domNode;if(!domNode)
return;function createEventListenerSection(title,eventListeners,options={}){let groups=eventListeners.map((eventListener)=>new WebInspector.EventListenerSectionGroup(eventListener,options));const optionsElement=null;const defaultCollapsedSettingValue=true;let section=new WebInspector.DetailsSection(`${title}-event-listener-section`,title,groups,optionsElement,defaultCollapsedSettingValue);section.element.classList.add("event-listener-section");return section;}
function generateGroupsByEvent(eventListeners){let eventListenerTypes=new Map;for(let eventListener of eventListeners){eventListener.node=WebInspector.domTreeManager.nodeForId(eventListener.nodeId);let eventListenersForType=eventListenerTypes.get(eventListener.type);if(!eventListenersForType)
eventListenerTypes.set(eventListener.type,eventListenersForType=[]);eventListenersForType.push(eventListener);}
let rows=[];let types=Array.from(eventListenerTypes.keys());types.sort();for(let type of types)
rows.push(createEventListenerSection(type,eventListenerTypes.get(type),{hideType:true}));return rows;}
function generateGroupsByNode(eventListeners){let eventListenerNodes=new Map;for(let eventListener of eventListeners){eventListener.node=WebInspector.domTreeManager.nodeForId(eventListener.nodeId);let eventListenersForNode=eventListenerNodes.get(eventListener.node);if(!eventListenersForNode)
eventListenerNodes.set(eventListener.node,eventListenersForNode=[]);eventListenersForNode.push(eventListener);}
let rows=[];let currentNode=domNode;do{let eventListenersForNode=eventListenerNodes.get(currentNode);if(!eventListenersForNode)
continue;eventListenersForNode.sort((a,b)=>a.type.toLowerCase().extendedLocaleCompare(b.type.toLowerCase()));rows.push(createEventListenerSection(currentNode.displayName,eventListenersForNode,{hideNode:true}));}while(currentNode=currentNode.parentNode);return rows;}
function eventListenersCallback(error,eventListeners)
{if(error)
return;if(this.domNode!==domNode)
return;if(!eventListeners.length){var emptyRow=new WebInspector.DetailsSectionRow(WebInspector.UIString("No Event Listeners"));emptyRow.showEmptyMessage();this._eventListenersSectionGroup.rows=[emptyRow];return;}
switch(this._eventListenerGroupingMethodSetting.value){case WebInspector.DOMNodeDetailsSidebarPanel.EventListenerGroupingMethod.Event:this._eventListenersSectionGroup.rows=generateGroupsByEvent.call(this,eventListeners);break;case WebInspector.DOMNodeDetailsSidebarPanel.EventListenerGroupingMethod.Node:this._eventListenersSectionGroup.rows=generateGroupsByNode.call(this,eventListeners);break;}}
domNode.getEventListeners(eventListenersCallback.bind(this));}
_refreshAccessibility()
{if(!this._accessibilitySupported())
return;var domNode=this.domNode;if(!domNode)
return;var properties={};function booleanValueToLocalizedStringIfTrue(property){if(properties[property])
return WebInspector.UIString("Yes");return"";}
function booleanValueToLocalizedStringIfPropertyDefined(property){if(properties[property]!==undefined){if(properties[property])
return WebInspector.UIString("Yes");else
return WebInspector.UIString("No");}
return"";}
function linkForNodeId(nodeId){var link=null;if(nodeId!==undefined&&typeof nodeId==="number"){var node=WebInspector.domTreeManager.nodeForId(nodeId);if(node)
link=WebInspector.linkifyAccessibilityNodeReference(node);}
return link;}
function linkListForNodeIds(nodeIds){if(!nodeIds)
return null;const itemsToShow=5;let hasLinks=false;let listItemCount=0;let container=document.createElement("div");container.classList.add("list-container");let linkList=container.createChild("ul","node-link-list");let initiallyHiddenItems=[];for(let nodeId of nodeIds){let node=WebInspector.domTreeManager.nodeForId(nodeId);if(!node)
continue;let link=WebInspector.linkifyAccessibilityNodeReference(node);hasLinks=true;let li=linkList.createChild("li");li.appendChild(link);if(listItemCount>=itemsToShow){li.hidden=true;initiallyHiddenItems.push(li);}
listItemCount++;}
container.appendChild(linkList);if(listItemCount>itemsToShow){let moreNodesButton=container.createChild("button","expand-list-button");moreNodesButton.textContent=WebInspector.UIString("%d More\u2026").format(listItemCount-itemsToShow);moreNodesButton.addEventListener("click",()=>{initiallyHiddenItems.forEach((element)=>{element.hidden=false;});moreNodesButton.remove();});}
if(hasLinks)
return container;return null;}
function accessibilityPropertiesCallback(accessibilityProperties){if(this.domNode!==domNode)
return;properties=accessibilityProperties;if(accessibilityProperties&&accessibilityProperties.exists){var activeDescendantLink=linkForNodeId(accessibilityProperties.activeDescendantNodeId);var busy=booleanValueToLocalizedStringIfPropertyDefined("busy");var checked="";if(accessibilityProperties.checked!==undefined){if(accessibilityProperties.checked===DOMAgent.AccessibilityPropertiesChecked.True)
checked=WebInspector.UIString("Yes");else if(accessibilityProperties.checked===DOMAgent.AccessibilityPropertiesChecked.Mixed)
checked=WebInspector.UIString("Mixed");else
checked=WebInspector.UIString("No");}
var childNodeLinkList=linkListForNodeIds(accessibilityProperties.childNodeIds);var controlledNodeLinkList=linkListForNodeIds(accessibilityProperties.controlledNodeIds);var current="";switch(accessibilityProperties.current){case DOMAgent.AccessibilityPropertiesCurrent.True:current=WebInspector.UIString("True");break;case DOMAgent.AccessibilityPropertiesCurrent.Page:current=WebInspector.UIString("Page");break;case DOMAgent.AccessibilityPropertiesCurrent.Location:current=WebInspector.UIString("Location");break;case DOMAgent.AccessibilityPropertiesCurrent.Step:current=WebInspector.UIString("Step");break;case DOMAgent.AccessibilityPropertiesCurrent.Date:current=WebInspector.UIString("Date");break;case DOMAgent.AccessibilityPropertiesCurrent.Time:current=WebInspector.UIString("Time");break;default:current="";}
var disabled=booleanValueToLocalizedStringIfTrue("disabled");var expanded=booleanValueToLocalizedStringIfPropertyDefined("expanded");var flowedNodeLinkList=linkListForNodeIds(accessibilityProperties.flowedNodeIds);var focused=booleanValueToLocalizedStringIfPropertyDefined("focused");var ignored="";if(accessibilityProperties.ignored){ignored=WebInspector.UIString("Yes");if(accessibilityProperties.hidden)
ignored=WebInspector.UIString("%s (hidden)").format(ignored);else if(accessibilityProperties.ignoredByDefault)
ignored=WebInspector.UIString("%s (default)").format(ignored);}
var invalid="";if(accessibilityProperties.invalid===DOMAgent.AccessibilityPropertiesInvalid.True)
invalid=WebInspector.UIString("Yes");else if(accessibilityProperties.invalid===DOMAgent.AccessibilityPropertiesInvalid.Grammar)
invalid=WebInspector.UIString("Grammar");else if(accessibilityProperties.invalid===DOMAgent.AccessibilityPropertiesInvalid.Spelling)
invalid=WebInspector.UIString("Spelling");var label=accessibilityProperties.label;var liveRegionStatus="";var liveRegionStatusNode=null;var liveRegionStatusToken=accessibilityProperties.liveRegionStatus;switch(liveRegionStatusToken){case DOMAgent.AccessibilityPropertiesLiveRegionStatus.Assertive:liveRegionStatus=WebInspector.UIString("Assertive");break;case DOMAgent.AccessibilityPropertiesLiveRegionStatus.Polite:liveRegionStatus=WebInspector.UIString("Polite");break;default:liveRegionStatus="";}
if(liveRegionStatus){var liveRegionRelevant=accessibilityProperties.liveRegionRelevant;if(liveRegionRelevant&&liveRegionRelevant.length){if(liveRegionRelevant.length===3&&liveRegionRelevant[0]===DOMAgent.LiveRegionRelevant.Additions&&liveRegionRelevant[1]===DOMAgent.LiveRegionRelevant.Removals&&liveRegionRelevant[2]===DOMAgent.LiveRegionRelevant.Text)
liveRegionRelevant=[WebInspector.UIString("All Changes")];else{liveRegionRelevant=liveRegionRelevant.map(function(value){switch(value){case DOMAgent.LiveRegionRelevant.Additions:return WebInspector.UIString("Additions");case DOMAgent.LiveRegionRelevant.Removals:return WebInspector.UIString("Removals");case DOMAgent.LiveRegionRelevant.Text:return WebInspector.UIString("Text");default:return"\""+value+"\"";}});}
liveRegionStatus+=" ("+liveRegionRelevant.join(", ")+")";}
if(accessibilityProperties.liveRegionAtomic){liveRegionStatusNode=document.createElement("div");liveRegionStatusNode.className="value-with-clarification";liveRegionStatusNode.setAttribute("role","text");liveRegionStatusNode.append(liveRegionStatus);var clarificationNode=document.createElement("div");clarificationNode.className="clarification";clarificationNode.append(WebInspector.UIString("Region announced in its entirety."));liveRegionStatusNode.appendChild(clarificationNode);}}
var mouseEventNodeId=accessibilityProperties.mouseEventNodeId;var mouseEventTextValue="";var mouseEventNodeLink=null;if(mouseEventNodeId){if(mouseEventNodeId===accessibilityProperties.nodeId)
mouseEventTextValue=WebInspector.UIString("Yes");else
mouseEventNodeLink=linkForNodeId(mouseEventNodeId);}
var ownedNodeLinkList=linkListForNodeIds(accessibilityProperties.ownedNodeIds);var parentNodeLink=linkForNodeId(accessibilityProperties.parentNodeId);var pressed=booleanValueToLocalizedStringIfPropertyDefined("pressed");var readonly=booleanValueToLocalizedStringIfTrue("readonly");var required=booleanValueToLocalizedStringIfPropertyDefined("required");var role=accessibilityProperties.role;let hasPopup=accessibilityProperties.isPopupButton;let roleType=null;let buttonType=null;let buttonTypePopupString=WebInspector.UIString("popup");let buttonTypeToggleString=WebInspector.UIString("toggle");let buttonTypePopupToggleString=WebInspector.UIString("popup, toggle");if(role===""||role==="unknown")
role=WebInspector.UIString("No matching ARIA role");else if(role){if(role==="button"){if(pressed)
buttonType=buttonTypeToggleString;
if(hasPopup)
buttonType=buttonType?buttonTypePopupToggleString:buttonTypePopupString;}
if(!domNode.getAttribute("role"))
roleType=WebInspector.UIString("default");else if(buttonType||domNode.getAttribute("role")!==role)
roleType=WebInspector.UIString("computed");if(buttonType&&roleType)
role=WebInspector.UIString("%s (%s, %s)").format(role,buttonType,roleType);else if(roleType||buttonType){let extraInfo=roleType||buttonType;role=WebInspector.UIString("%s (%s)").format(role,extraInfo);}}
var selected=booleanValueToLocalizedStringIfTrue("selected");var selectedChildNodeLinkList=linkListForNodeIds(accessibilityProperties.selectedChildNodeIds);var headingLevel=accessibilityProperties.headingLevel;var hierarchyLevel=accessibilityProperties.hierarchyLevel;this._accessibilityNodeActiveDescendantRow.value=activeDescendantLink||"";this._accessibilityNodeBusyRow.value=busy;this._accessibilityNodeCheckedRow.value=checked;this._accessibilityNodeChildrenRow.value=childNodeLinkList||"";this._accessibilityNodeControlsRow.value=controlledNodeLinkList||"";this._accessibilityNodeCurrentRow.value=current;this._accessibilityNodeDisabledRow.value=disabled;this._accessibilityNodeExpandedRow.value=expanded;this._accessibilityNodeFlowsRow.value=flowedNodeLinkList||"";this._accessibilityNodeFocusedRow.value=focused;this._accessibilityNodeHeadingLevelRow.value=headingLevel||"";this._accessibilityNodehierarchyLevelRow.value=hierarchyLevel||"";this._accessibilityNodeIgnoredRow.value=ignored;this._accessibilityNodeInvalidRow.value=invalid;this._accessibilityNodeLabelRow.value=label;this._accessibilityNodeLiveRegionStatusRow.value=liveRegionStatusNode||liveRegionStatus;this._accessibilityNodeMouseEventRow.label=mouseEventNodeLink?WebInspector.UIString("Click Listener"):WebInspector.UIString("Clickable");this._accessibilityNodeMouseEventRow.value=mouseEventNodeLink||mouseEventTextValue;this._accessibilityNodeOwnsRow.value=ownedNodeLinkList||"";this._accessibilityNodeParentRow.value=parentNodeLink||"";this._accessibilityNodePressedRow.value=pressed;this._accessibilityNodeReadonlyRow.value=readonly;this._accessibilityNodeRequiredRow.value=required;this._accessibilityNodeRoleRow.value=role;this._accessibilityNodeSelectedRow.value=selected;this._accessibilityNodeSelectedChildrenRow.label=WebInspector.UIString("Selected Items");this._accessibilityNodeSelectedChildrenRow.value=selectedChildNodeLinkList||"";if(selectedChildNodeLinkList&&accessibilityProperties.selectedChildNodeIds.length===1)
this._accessibilityNodeSelectedChildrenRow.label=WebInspector.UIString("Selected Item");this._accessibilityGroup.rows=[this._accessibilityNodeIgnoredRow,this._accessibilityNodeRoleRow,this._accessibilityNodeLabelRow,this._accessibilityNodeParentRow,this._accessibilityNodeActiveDescendantRow,this._accessibilityNodeSelectedChildrenRow,this._accessibilityNodeChildrenRow,this._accessibilityNodeOwnsRow,this._accessibilityNodeControlsRow,this._accessibilityNodeFlowsRow,this._accessibilityNodeMouseEventRow,this._accessibilityNodeFocusedRow,this._accessibilityNodeHeadingLevelRow,this._accessibilityNodehierarchyLevelRow,this._accessibilityNodeBusyRow,this._accessibilityNodeLiveRegionStatusRow,this._accessibilityNodeCurrentRow,this._accessibilityNodeDisabledRow,this._accessibilityNodeInvalidRow,this._accessibilityNodeRequiredRow,this._accessibilityNodeCheckedRow,this._accessibilityNodeExpandedRow,this._accessibilityNodePressedRow,this._accessibilityNodeReadonlyRow,this._accessibilityNodeSelectedRow];this._accessibilityEmptyRow.hideEmptyMessage();}else{this._accessibilityGroup.rows=[this._accessibilityEmptyRow];this._accessibilityEmptyRow.showEmptyMessage();}}
domNode.accessibilityProperties(accessibilityPropertiesCallback.bind(this));}
_attributesChanged(event)
{if(event.data.node!==this.domNode)
return;this._refreshAttributes();this._refreshAccessibility();}
_attributeNodeValueChanged(event)
{let change=event.data;let data=event.target.data;if(change.columnIdentifier==="name"){this.domNode.removeAttribute(data[change.columnIdentifier],(error)=>{this.domNode.setAttribute(change.value,`${change.value}="${data.value}"`);});}else if(change.columnIdentifier==="value")
this.domNode.setAttributeValue(data.name,change.value);}
_characterDataModified(event)
{if(event.data.node!==this.domNode)
return;this._identityNodeValueRow.value=this.domNode.nodeValue();}
_customElementStateChanged(event)
{if(event.data.node!==this.domNode)
return;this._refreshIdentity();}
_nodeTypeDisplayName()
{switch(this.domNode.nodeType()){case Node.ELEMENT_NODE:{const nodeName=WebInspector.UIString("Element");const state=this._customElementState();return state===null?nodeName:`${nodeName} (${state})`;}
case Node.TEXT_NODE:return WebInspector.UIString("Text Node");case Node.COMMENT_NODE:return WebInspector.UIString("Comment");case Node.DOCUMENT_NODE:return WebInspector.UIString("Document");case Node.DOCUMENT_TYPE_NODE:return WebInspector.UIString("Document Type");case Node.DOCUMENT_FRAGMENT_NODE:return WebInspector.UIString("Document Fragment");case Node.CDATA_SECTION_NODE:return WebInspector.UIString("Character Data");case Node.PROCESSING_INSTRUCTION_NODE:return WebInspector.UIString("Processing Instruction");default:console.error("Unknown DOM node type: ",this.domNode.nodeType());return this.domNode.nodeType();}}
_customElementState()
{const state=this.domNode.customElementState();switch(state){case WebInspector.DOMNode.CustomElementState.Builtin:return null;case WebInspector.DOMNode.CustomElementState.Custom:return WebInspector.UIString("Custom");case WebInspector.DOMNode.CustomElementState.Waiting:return WebInspector.UIString("Undefined custom element");case WebInspector.DOMNode.CustomElementState.Failed:return WebInspector.UIString("Failed to upgrade");}
console.error("Unknown DOM custom element state: ",state);return null;}};WebInspector.DOMNodeDetailsSidebarPanel.EventListenerGroupingMethod={Event:"event",Node:"node",};WebInspector.DOMNodeDetailsSidebarPanel.PropertiesObjectGroupName="dom-node-details-sidebar-properties-object-group";WebInspector.DOMNodeTreeElement=class DOMNodeTreeElement extends WebInspector.GeneralTreeElement
{constructor(domNode)
{super("dom-node",domNode.displayName,null,domNode,true);this.status=WebInspector.linkifyNodeReferenceElement(domNode,WebInspector.createGoToArrowButton());}
ondelete()
{WebInspector.domDebuggerManager.removeDOMBreakpointsForNode(this.representedObject);return true;}
populateContextMenu(contextMenu,event)
{contextMenu.appendSeparator();const allowEditing=true;WebInspector.DOMBreakpointTreeController.appendBreakpointContextMenuItems(contextMenu,this.representedObject,allowEditing);contextMenu.appendSeparator();contextMenu.appendItem(WebInspector.UIString("Reveal in DOM Tree"),()=>{WebInspector.domTreeManager.inspectElement(this.representedObject.id);});}};WebInspector.DOMStorageContentView=class DOMStorageContentView extends WebInspector.ContentView
{constructor(representedObject)
{super(representedObject);this.element.classList.add("dom-storage");representedObject.addEventListener(WebInspector.DOMStorageObject.Event.ItemsCleared,this.itemsCleared,this);representedObject.addEventListener(WebInspector.DOMStorageObject.Event.ItemAdded,this.itemAdded,this);representedObject.addEventListener(WebInspector.DOMStorageObject.Event.ItemRemoved,this.itemRemoved,this);representedObject.addEventListener(WebInspector.DOMStorageObject.Event.ItemUpdated,this.itemUpdated,this);let columns={};columns.key={title:WebInspector.UIString("Key"),sortable:true};columns.value={title:WebInspector.UIString("Value"),sortable:true};this._dataGrid=new WebInspector.DataGrid(columns,this._editingCallback.bind(this),this._deleteCallback.bind(this));this._dataGrid.sortOrder=WebInspector.DataGrid.SortOrder.Ascending;this._dataGrid.sortColumnIdentifier="key";this._dataGrid.createSettings("dom-storage-content-view");this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SortChanged,this._sortDataGrid,this);this.addSubview(this._dataGrid);this._populate();}
saveToCookie(cookie)
{cookie.type=WebInspector.ContentViewCookieType.DOMStorage;cookie.isLocalStorage=this.representedObject.isLocalStorage();cookie.host=this.representedObject.host;}
get scrollableElements()
{return[this._dataGrid.scrollContainer];}
itemsCleared(event)
{this._dataGrid.removeChildren();this._dataGrid.addPlaceholderNode();}
itemRemoved(event)
{for(let node of this._dataGrid.children){if(node.data.key===event.data.key)
return this._dataGrid.removeChild(node);}
return null;}
itemAdded(event)
{let{key,value}=event.data;value=this._truncateValue(value);for(let node of this._dataGrid.children){if(node.data.key===key)
return;}
this._dataGrid.appendChild(new WebInspector.DataGridNode({key,value},false));this._sortDataGrid();}
itemUpdated(event)
{let{key,value}=event.data;value=this._truncateValue(value);let keyFound=false;for(let childNode of this._dataGrid.children){if(childNode.data.key===key){if(keyFound){this._dataGrid.removeChild(childNode);continue;}
keyFound=true;childNode.data.value=value;childNode.refresh();}}
this._sortDataGrid();}
_truncateValue(value)
{return value.truncate(200);}
_populate()
{this.representedObject.getEntries(function(error,entries){if(error)
return;for(let[key,value]of entries){if(!key||!value)
continue;value=this._truncateValue(value);let node=new WebInspector.DataGridNode({key,value},false);this._dataGrid.appendChild(node);}
this._sortDataGrid();this._dataGrid.addPlaceholderNode();this._dataGrid.updateLayout();}.bind(this));}
_sortDataGrid()
{let sortColumnIdentifier=this._dataGrid.sortColumnIdentifier||"key";function comparator(a,b)
{return a.data[sortColumnIdentifier].extendedLocaleCompare(b.data[sortColumnIdentifier]);}
this._dataGrid.sortNodesImmediately(comparator);}
_deleteCallback(node)
{if(!node||node.isPlaceholderNode)
return;this._dataGrid.removeChild(node);this.representedObject.removeItem(node.data["key"]);}
_editingCallback(editingNode,columnIdentifier,oldText,newText,moveDirection)
{var key=editingNode.data["key"].trim().removeWordBreakCharacters();var value=editingNode.data["value"].trim().removeWordBreakCharacters();var previousValue=oldText.trim().removeWordBreakCharacters();var enteredValue=newText.trim().removeWordBreakCharacters();var hasUncommittedEdits=editingNode.__hasUncommittedEdits;var hasChange=previousValue!==enteredValue;var isEditingKey=columnIdentifier==="key";var isEditingValue=!isEditingKey;var domStorage=this.representedObject;if(!hasChange&&!hasUncommittedEdits)
return;if(hasChange&&!editingNode.__hasUncommittedEdits){editingNode.__hasUncommittedEdits=true;editingNode.__originalKey=isEditingKey?previousValue:key;editingNode.__originalValue=isEditingValue?previousValue:value;}
function cleanup()
{editingNode.element.classList.remove(WebInspector.DOMStorageContentView.MissingKeyStyleClassName);editingNode.element.classList.remove(WebInspector.DOMStorageContentView.MissingValueStyleClassName);editingNode.element.classList.remove(WebInspector.DOMStorageContentView.DuplicateKeyStyleClassName);editingNode.__hasUncommittedEdits=undefined;editingNode.__originalKey=undefined;editingNode.__originalValue=undefined;}
if(isEditingKey){if(key.length)
editingNode.element.classList.remove(WebInspector.DOMStorageContentView.MissingKeyStyleClassName);else
editingNode.element.classList.add(WebInspector.DOMStorageContentView.MissingKeyStyleClassName);}else if(isEditingValue){if(value.length)
editingNode.element.classList.remove(WebInspector.DOMStorageContentView.MissingValueStyleClassName);else
editingNode.element.classList.add(WebInspector.DOMStorageContentView.MissingValueStyleClassName);}
var keyChanged=key!==editingNode.__originalKey;if(keyChanged){if(domStorage.entries.has(key))
editingNode.element.classList.add(WebInspector.DOMStorageContentView.DuplicateKeyStyleClassName);else
editingNode.element.classList.remove(WebInspector.DOMStorageContentView.DuplicateKeyStyleClassName);}
var columnIndex=this._dataGrid.orderedColumns.indexOf(columnIdentifier);var mayMoveToNextRow=moveDirection==="forward"&&columnIndex===this._dataGrid.orderedColumns.length-1;var mayMoveToPreviousRow=moveDirection==="backward"&&columnIndex===0;var doneEditing=mayMoveToNextRow||mayMoveToPreviousRow||!moveDirection;if(!doneEditing)
return;if(!key.length&&!value.length&&!editingNode.isPlaceholderNode){this._dataGrid.removeChild(editingNode);domStorage.removeItem(editingNode.__originalKey);return;}
var isDuplicate=editingNode.element.classList.contains(WebInspector.DOMStorageContentView.DuplicateKeyStyleClassName);if(!key.length||!value.length||isDuplicate)
return;if(keyChanged&&!editingNode.isPlaceholderNode)
domStorage.removeItem(editingNode.__originalKey);if(editingNode.isPlaceholderNode)
this._dataGrid.addPlaceholderNode();cleanup();domStorage.setItem(key,value);}};WebInspector.DOMStorageContentView.DuplicateKeyStyleClassName="duplicate-key";WebInspector.DOMStorageContentView.MissingKeyStyleClassName="missing-key";WebInspector.DOMStorageContentView.MissingValueStyleClassName="missing-value";WebInspector.DOMStorageTreeElement=class DOMStorageTreeElement extends WebInspector.StorageTreeElement
{constructor(representedObject)
{if(representedObject.isLocalStorage())
var className=WebInspector.DOMStorageTreeElement.LocalStorageIconStyleClassName;else
var className=WebInspector.DOMStorageTreeElement.SessionStorageIconStyleClassName;super(className,WebInspector.displayNameForHost(representedObject.host),representedObject);}
get name()
{return WebInspector.displayNameForHost(this.representedObject.host);}
get categoryName()
{if(this.representedObject.isLocalStorage())
return WebInspector.UIString("Local Storage");return WebInspector.UIString("Session Storage");}};WebInspector.DOMStorageTreeElement.LocalStorageIconStyleClassName="local-storage-icon";WebInspector.DOMStorageTreeElement.SessionStorageIconStyleClassName="session-storage-icon";WebInspector.DOMTreeDataGrid=class DOMTreeDataGrid extends WebInspector.DataGrid
{constructor()
{super({name:{title:WebInspector.UIString("Node"),sortable:false,icon:true}});this._previousHoveredElement=null;this.inline=true;this.element.classList.add("dom-tree-data-grid");this.element.addEventListener("mousemove",this._onmousemove.bind(this),false);this.element.addEventListener("mouseout",this._onmouseout.bind(this),false);}
_onmousemove(event)
{var gridNode=this.dataGridNodeFromNode(event.target);if(!gridNode||this._previousHoveredElement===gridNode.domNode)
return;this._previousHoveredElement=gridNode.domNode;WebInspector.domTreeManager.highlightDOMNode(gridNode.domNode.id);}
_onmouseout(event){if(!this._previousHoveredElement)
return;WebInspector.domTreeManager.hideDOMNodeHighlight();this._previousHoveredElement=null;}};WebInspector.DOMTreeDataGridNode=class DOMTreeDataGridNode extends WebInspector.DataGridNode
{constructor(domNode)
{super();this._domNode=domNode;}
get domNode()
{return this._domNode;}
createCellContent(columnIdentifier,cell)
{if(columnIdentifier!=="name")
return super.createCellContent(columnIdentifier,cell);return this._createNameCellDocumentFragment();}
_createNameCellDocumentFragment()
{let fragment=document.createDocumentFragment();let mainTitle=this._domNode.displayName;fragment.append(mainTitle);let goToButton=fragment.appendChild(WebInspector.createGoToArrowButton());goToButton.addEventListener("click",this._goToArrowWasClicked.bind(this),false);return fragment;}
_goToArrowWasClicked()
{WebInspector.showMainFrameDOMTree(this._domNode);}};WebInspector.DOMTreeElement=class DOMTreeElement extends WebInspector.TreeElement
{constructor(node,elementCloseTag)
{super("",node);this._elementCloseTag=elementCloseTag;this.hasChildren=!elementCloseTag&&this._hasVisibleChildren();if(this.representedObject.nodeType()===Node.ELEMENT_NODE&&!elementCloseTag)
this._canAddAttributes=true;this._searchQuery=null;this._expandedChildrenLimit=WebInspector.DOMTreeElement.InitialChildrenLimit;this._breakpointStatus=WebInspector.DOMTreeElement.BreakpointStatus.None;this._animatingHighlight=false;this._shouldHighlightAfterReveal=false;this._boundHighlightAnimationEnd=this._highlightAnimationEnd.bind(this);this._subtreeBreakpointCount=0;this._recentlyModifiedAttributes=[];this._boundNodeChangedAnimationEnd=this._nodeChangedAnimationEnd.bind(this);node.addEventListener(WebInspector.DOMNode.Event.EnabledPseudoClassesChanged,this._nodePseudoClassesDidChange,this);}
static shadowRootTypeDisplayName(type)
{switch(type){case WebInspector.DOMNode.ShadowRootType.UserAgent:return WebInspector.UIString("User Agent");case WebInspector.DOMNode.ShadowRootType.Open:return WebInspector.UIString("Open");case WebInspector.DOMNode.ShadowRootType.Closed:return WebInspector.UIString("Closed");}}
get breakpointStatus()
{return this._breakpointStatus;}
set breakpointStatus(status)
{if(this._breakpointStatus===status)
return;let increment;if(this._breakpointStatus===WebInspector.DOMTreeElement.BreakpointStatus.None)
increment=1;else if(status===WebInspector.DOMTreeElement.BreakpointStatus.None)
increment=-1;this._breakpointStatus=status;this._updateBreakpointStatus();if(!increment)
return;let parentElement=this.parent;while(parentElement&&!parentElement.root){parentElement.subtreeBreakpointCountDidChange(increment);parentElement=parentElement.parent;}}
revealAndHighlight()
{if(this._animatingHighlight)
return;this._shouldHighlightAfterReveal=true;this.reveal();}
subtreeBreakpointCountDidChange(increment)
{this._subtreeBreakpointCount+=increment;this._updateBreakpointStatus();}
isCloseTag()
{return this._elementCloseTag;}
highlightSearchResults(searchQuery)
{if(this._searchQuery!==searchQuery){this._updateSearchHighlight(false);this._highlightResult=undefined;}
this._searchQuery=searchQuery;this._searchHighlightsVisible=true;this.updateTitle(true);}
hideSearchHighlights()
{this._searchHighlightsVisible=false;this._updateSearchHighlight(false);}
emphasizeSearchHighlight()
{var highlightElement=this.title.querySelector("."+WebInspector.DOMTreeElement.SearchHighlightStyleClassName);if(!highlightElement)
return;if(this._bouncyHighlightElement)
this._bouncyHighlightElement.remove();this._bouncyHighlightElement=document.createElement("div");this._bouncyHighlightElement.className=WebInspector.DOMTreeElement.BouncyHighlightStyleClassName;this._bouncyHighlightElement.textContent=highlightElement.textContent;var highlightElementRect=highlightElement.getBoundingClientRect();var treeOutlineRect=this.treeOutline.element.getBoundingClientRect();this._bouncyHighlightElement.style.top=(highlightElementRect.top-treeOutlineRect.top)+"px";this._bouncyHighlightElement.style.left=(highlightElementRect.left-treeOutlineRect.left)+"px";this.title.appendChild(this._bouncyHighlightElement);function animationEnded()
{if(!this._bouncyHighlightElement)
return;this._bouncyHighlightElement.remove();this._bouncyHighlightElement=null;}
this._bouncyHighlightElement.addEventListener("animationend",animationEnded.bind(this));}
_updateSearchHighlight(show)
{if(!this._highlightResult)
return;function updateEntryShow(entry)
{switch(entry.type){case"added":entry.parent.insertBefore(entry.node,entry.nextSibling);break;case"changed":entry.node.textContent=entry.newText;break;}}
function updateEntryHide(entry)
{switch(entry.type){case"added":entry.node.remove();break;case"changed":entry.node.textContent=entry.oldText;break;}}
var updater=show?updateEntryShow:updateEntryHide;for(var i=0,size=this._highlightResult.length;i<size;++i)
updater(this._highlightResult[i]);}
get hovered()
{return this._hovered;}
set hovered(value)
{if(this._hovered===value)
return;this._hovered=value;if(this.listItemElement){this.listItemElement.classList.toggle("hovered",this._hovered);this.updateSelectionArea();}}
get editable()
{let node=this.representedObject;if(node.isShadowRoot()||node.isInUserAgentShadowTree())
return false;if(node.isPseudoElement())
return false;return this.treeOutline.editable;}
get expandedChildrenLimit()
{return this._expandedChildrenLimit;}
set expandedChildrenLimit(x)
{if(this._expandedChildrenLimit===x)
return;this._expandedChildrenLimit=x;if(this.treeOutline&&!this._updateChildrenInProgress)
this._updateChildren(true);}
get expandedChildCount()
{var count=this.children.length;if(count&&this.children[count-1]._elementCloseTag)
count--;if(count&&this.children[count-1].expandAllButton)
count--;return count;}
attributeDidChange(name)
{this._recentlyModifiedAttributes.push({name});}
showChildNode(node)
{if(this._elementCloseTag)
return null;var index=this._visibleChildren().indexOf(node);if(index===-1)
return null;if(index>=this.expandedChildrenLimit){this._expandedChildrenLimit=index+1;this._updateChildren(true);}
return this.children[index];}
_createTooltipForNode()
{var node=this.representedObject;if(!node.nodeName()||node.nodeName().toLowerCase()!=="img")
return;function setTooltip(error,result,wasThrown)
{if(error||wasThrown||!result||result.type!=="string")
return;try{var properties=JSON.parse(result.description);var offsetWidth=properties[0];var offsetHeight=properties[1];var naturalWidth=properties[2];var naturalHeight=properties[3];if(offsetHeight===naturalHeight&&offsetWidth===naturalWidth)
this.tooltip=WebInspector.UIString("%d \xd7 %d pixels").format(offsetWidth,offsetHeight);else
this.tooltip=WebInspector.UIString("%d \xd7 %d pixels (Natural: %d \xd7 %d pixels)").format(offsetWidth,offsetHeight,naturalWidth,naturalHeight);}catch(e){console.error(e);}}
function resolvedNode(object)
{if(!object)
return;function dimensions()
{return"["+this.offsetWidth+","+this.offsetHeight+","+this.naturalWidth+","+this.naturalHeight+"]";}
object.callFunction(dimensions,undefined,false,setTooltip.bind(this));object.release();}
WebInspector.RemoteObject.resolveNode(node,"",resolvedNode.bind(this));}
updateSelectionArea()
{let listItemElement=this.listItemElement;if(!listItemElement)
return;let indicatesTreeOutlineState=this.treeOutline&&(this.treeOutline.dragOverTreeElement===this||this.treeOutline.selectedTreeElement===this||this._animatingHighlight);if(!this.hovered&&!this.pseudoClassesEnabled&&!indicatesTreeOutlineState){if(this._selectionElement){this._selectionElement.remove();this._selectionElement=null;}
return;}
if(!this._selectionElement){this._selectionElement=document.createElement("div");this._selectionElement.className="selection-area";listItemElement.insertBefore(this._selectionElement,listItemElement.firstChild);}
this._selectionElement.style.height=listItemElement.offsetHeight+"px";}
onattach()
{if(this.hovered)
this.listItemElement.classList.add("hovered");this.updateTitle();if(this.editable){this.listItemElement.draggable=true;this.listItemElement.addEventListener("dragstart",this);}}
onpopulate()
{if(this.children.length||!this._hasVisibleChildren()||this._elementCloseTag)
return;this.updateChildren();}
expandRecursively()
{this.representedObject.getSubtree(-1,super.expandRecursively.bind(this,Number.MAX_VALUE));}
updateChildren(fullRefresh)
{if(this._elementCloseTag)
return;this.representedObject.getChildNodes(this._updateChildren.bind(this,fullRefresh));}
insertChildElement(child,index,closingTag)
{var newElement=new WebInspector.DOMTreeElement(child,closingTag);newElement.selectable=this.treeOutline._selectEnabled;this.insertChild(newElement,index);return newElement;}
moveChild(child,targetIndex)
{if(this.children[targetIndex]===child)
return;var originalSelectedChild=this.treeOutline.selectedTreeElement;this.removeChild(child);this.insertChild(child,targetIndex);if(originalSelectedChild!==this.treeOutline.selectedTreeElement)
originalSelectedChild.select();}
_updateChildren(fullRefresh)
{if(this._updateChildrenInProgress||!this.treeOutline._visible)
return;this._updateChildrenInProgress=true;var node=this.representedObject;var selectedNode=this.treeOutline.selectedDOMNode();var originalScrollTop=0;var hasVisibleChildren=this._hasVisibleChildren();if(fullRefresh||!hasVisibleChildren){var treeOutlineContainerElement=this.treeOutline.element.parentNode;originalScrollTop=treeOutlineContainerElement.scrollTop;var selectedTreeElement=this.treeOutline.selectedTreeElement;if(selectedTreeElement&&selectedTreeElement.hasAncestor(this))
this.select();this.removeChildren();if(!hasVisibleChildren){this.hasChildren=false;this.updateTitle();this._updateChildrenInProgress=false;return;}}
if(!this.hasChildren){this.hasChildren=true;this.updateTitle();}
var existingChildTreeElements=new Map;for(var i=this.children.length-1;i>=0;--i){var currentChildTreeElement=this.children[i];var currentNode=currentChildTreeElement.representedObject;var currentParentNode=currentNode.parentNode;if(currentParentNode===node){existingChildTreeElements.set(currentNode,currentChildTreeElement);continue;}
this.removeChildAtIndex(i);}
var elementToSelect=null;var visibleChildren=this._visibleChildren();for(var i=0;i<visibleChildren.length&&i<this.expandedChildrenLimit;++i){var childNode=visibleChildren[i];var existingChildTreeElement=existingChildTreeElements.get(childNode);if(existingChildTreeElement){this.moveChild(existingChildTreeElement,i);continue;}
var newChildTreeElement=this.insertChildElement(childNode,i);if(childNode===selectedNode)
elementToSelect=newChildTreeElement;if(this.expandedChildCount>this.expandedChildrenLimit)
this.expandedChildrenLimit++;}
this.adjustCollapsedRange();var lastChild=this.children.lastValue;if(node.nodeType()===Node.ELEMENT_NODE&&(!lastChild||!lastChild._elementCloseTag))
this.insertChildElement(this.representedObject,this.children.length,true);if(fullRefresh&&elementToSelect){elementToSelect.select();if(treeOutlineContainerElement&&originalScrollTop<=treeOutlineContainerElement.scrollHeight)
treeOutlineContainerElement.scrollTop=originalScrollTop;}
this._updateChildrenInProgress=false;}
adjustCollapsedRange()
{
if(this.expandAllButtonElement&&this.expandAllButtonElement.__treeElement.parent)
this.removeChild(this.expandAllButtonElement.__treeElement);if(!this._hasVisibleChildren())
return;var visibleChildren=this._visibleChildren();var totalChildrenCount=visibleChildren.length;for(var i=this.expandedChildCount,limit=Math.min(this.expandedChildrenLimit,totalChildrenCount);i<limit;++i)
this.insertChildElement(visibleChildren[i],i);var expandedChildCount=this.expandedChildCount;if(totalChildrenCount>this.expandedChildCount){var targetButtonIndex=expandedChildCount;if(!this.expandAllButtonElement){var button=document.createElement("button");button.className="show-all-nodes";button.value="";var item=new WebInspector.TreeElement(button,null,false);item.selectable=false;item.expandAllButton=true;this.insertChild(item,targetButtonIndex);this.expandAllButtonElement=button;this.expandAllButtonElement.__treeElement=item;this.expandAllButtonElement.addEventListener("click",this.handleLoadAllChildren.bind(this),false);}else if(!this.expandAllButtonElement.__treeElement.parent)
this.insertChild(this.expandAllButtonElement.__treeElement,targetButtonIndex);this.expandAllButtonElement.textContent=WebInspector.UIString("Show All Nodes (%d More)").format(totalChildrenCount-expandedChildCount);}else if(this.expandAllButtonElement)
this.expandAllButtonElement=null;}
handleLoadAllChildren()
{var visibleChildren=this._visibleChildren();this.expandedChildrenLimit=Math.max(visibleChildren.length,this.expandedChildrenLimit+WebInspector.DOMTreeElement.InitialChildrenLimit);}
onexpand()
{if(this._elementCloseTag)
return;if(!this.listItemElement)
return;this.updateTitle();}
oncollapse()
{if(this._elementCloseTag)
return;this.updateTitle();}
onreveal()
{let listItemElement=this.listItemElement;if(!listItemElement)
return;let tagSpans=listItemElement.getElementsByClassName("html-tag-name");if(tagSpans.length)
tagSpans[0].scrollIntoViewIfNeeded(false);else
listItemElement.scrollIntoViewIfNeeded(false);if(!this._shouldHighlightAfterReveal)
return;this._shouldHighlightAfterReveal=false;this._animatingHighlight=true;this.updateSelectionArea();listItemElement.addEventListener("animationend",this._boundHighlightAnimationEnd);listItemElement.classList.add(WebInspector.DOMTreeElement.HighlightStyleClassName);}
onselect(treeElement,selectedByUser)
{this.treeOutline.suppressRevealAndSelect=true;this.treeOutline.selectDOMNode(this.representedObject,selectedByUser);if(selectedByUser)
WebInspector.domTreeManager.highlightDOMNode(this.representedObject.id);this.treeOutline.updateSelection();this.treeOutline.suppressRevealAndSelect=false;}
ondeselect(treeElement)
{this.treeOutline.selectDOMNode(null);}
ondelete()
{if(!this.editable)
return false;var startTagTreeElement=this.treeOutline.findTreeElement(this.representedObject);if(startTagTreeElement)
startTagTreeElement.remove();else
this.remove();return true;}
onenter()
{if(!this.editable)
return false;
if(this.treeOutline.editing)
return false;this._startEditing(); return true;}
selectOnMouseDown(event)
{super.selectOnMouseDown(event);if(this._editing)
return;if(event.detail>=2)
event.preventDefault();}
ondblclick(event)
{if(!this.editable)
return false;if(this._editing||this._elementCloseTag)
return;if(this._startEditingTarget(event.target))
return;if(this.hasChildren&&!this.expanded)
this.expand();}
_insertInLastAttributePosition(tag,node)
{if(tag.getElementsByClassName("html-attribute").length>0)
tag.insertBefore(node,tag.lastChild);else{var nodeName=tag.textContent.match(/^<(.*?)>$/)[1];tag.textContent="";tag.append("<"+nodeName,node,">");}
this.updateSelectionArea();}
_startEditingTarget(eventTarget)
{if(this.treeOutline.selectedDOMNode()!==this.representedObject)
return false;if(this.representedObject.isShadowRoot()||this.representedObject.isInUserAgentShadowTree())
return false;if(this.representedObject.isPseudoElement())
return false;if(this.representedObject.nodeType()!==Node.ELEMENT_NODE&&this.representedObject.nodeType()!==Node.TEXT_NODE)
return false;var textNode=eventTarget.enclosingNodeOrSelfWithClass("html-text-node");if(textNode)
return this._startEditingTextNode(textNode);var attribute=eventTarget.enclosingNodeOrSelfWithClass("html-attribute");if(attribute)
return this._startEditingAttribute(attribute,eventTarget);var tagName=eventTarget.enclosingNodeOrSelfWithClass("html-tag-name");if(tagName)
return this._startEditingTagName(tagName);return false;}
_populateTagContextMenu(contextMenu,event)
{let node=this.representedObject;if(!node.isInUserAgentShadowTree()){let attribute=event.target.enclosingNodeOrSelfWithClass("html-attribute");if(event.target&&event.target.tagName==="A"){let url=event.target.href;contextMenu.appendItem(WebInspector.UIString("Open in New Tab"),()=>{const frame=null;WebInspector.openURL(url,frame,{alwaysOpenExternally:true});});if(WebInspector.frameResourceManager.resourceForURL(url)){contextMenu.appendItem(WebInspector.UIString("Reveal in Resources Tab"),()=>{let frame=WebInspector.frameResourceManager.frameForIdentifier(node.frameIdentifier);const options={ignoreNetworkTab:true,ignoreSearchTab:true,};WebInspector.openURL(url,frame,options);});}
contextMenu.appendItem(WebInspector.UIString("Copy Link Address"),()=>{InspectorFrontendHost.copyText(url);});contextMenu.appendSeparator();}
if(this.editable){contextMenu.appendItem(WebInspector.UIString("Add Attribute"),this._addNewAttribute.bind(this));if(attribute)
contextMenu.appendItem(WebInspector.UIString("Edit Attribute"),this._startEditingAttribute.bind(this,attribute,event.target));contextMenu.appendSeparator();}
if(WebInspector.cssStyleManager.canForcePseudoClasses()){let pseudoSubMenu=contextMenu.appendSubMenuItem(WebInspector.UIString("Forced Pseudo-Classes"));this._populateForcedPseudoStateItems(pseudoSubMenu);contextMenu.appendSeparator();}}
this._populateNodeContextMenu(contextMenu);}
_populateForcedPseudoStateItems(subMenu)
{var node=this.representedObject;var enabledPseudoClasses=node.enabledPseudoClasses;WebInspector.CSSStyleManager.ForceablePseudoClasses.forEach(function(pseudoClass){var label=pseudoClass.capitalize();var enabled=enabledPseudoClasses.includes(pseudoClass);subMenu.appendCheckboxItem(label,function(){node.setPseudoClassEnabled(pseudoClass,!enabled);},enabled,false);});}
_populateTextContextMenu(contextMenu,textNode)
{if(this.editable)
contextMenu.appendItem(WebInspector.UIString("Edit Text"),this._startEditingTextNode.bind(this,textNode));this._populateNodeContextMenu(contextMenu);}
_populateNodeContextMenu(contextMenu)
{let node=this.representedObject;if(this.editable)
contextMenu.appendItem(WebInspector.UIString("Edit as HTML"),this._editAsHTML.bind(this));if(!node.isPseudoElement())
contextMenu.appendItem(WebInspector.UIString("Copy as HTML"),this._copyHTML.bind(this));if(this.editable)
contextMenu.appendItem(WebInspector.UIString("Delete Node"),this.remove.bind(this));if(node.nodeType()===Node.ELEMENT_NODE)
contextMenu.appendItem(WebInspector.UIString("Scroll Into View"),this._scrollIntoView.bind(this));}
_startEditing()
{if(this.treeOutline.selectedDOMNode()!==this.representedObject)
return false;if(!this.editable)
return false;var listItem=this.listItemElement;if(this._canAddAttributes){var attribute=listItem.getElementsByClassName("html-attribute")[0];if(attribute)
return this._startEditingAttribute(attribute,attribute.getElementsByClassName("html-attribute-value")[0]);return this._addNewAttribute();}
if(this.representedObject.nodeType()===Node.TEXT_NODE){var textNode=listItem.getElementsByClassName("html-text-node")[0];if(textNode)
return this._startEditingTextNode(textNode);return false;}}
_addNewAttribute()
{
var container=document.createElement("span");this._buildAttributeDOM(container," ","");var attr=container.firstChild;attr.style.marginLeft="2px"; attr.style.marginRight="2px"; var tag=this.listItemElement.getElementsByClassName("html-tag")[0];this._insertInLastAttributePosition(tag,attr);return this._startEditingAttribute(attr,attr);}
_triggerEditAttribute(attributeName)
{var attributeElements=this.listItemElement.getElementsByClassName("html-attribute-name");for(var i=0,len=attributeElements.length;i<len;++i){if(attributeElements[i].textContent===attributeName){for(var elem=attributeElements[i].nextSibling;elem;elem=elem.nextSibling){if(elem.nodeType!==Node.ELEMENT_NODE)
continue;if(elem.classList.contains("html-attribute-value"))
return this._startEditingAttribute(elem.parentNode,elem);}}}}
_startEditingAttribute(attribute,elementForSelection)
{if(WebInspector.isBeingEdited(attribute))
return true;var attributeNameElement=attribute.getElementsByClassName("html-attribute-name")[0];if(!attributeNameElement)
return false;var attributeName=attributeNameElement.textContent;function removeZeroWidthSpaceRecursive(node)
{if(node.nodeType===Node.TEXT_NODE){node.nodeValue=node.nodeValue.replace(/\u200B/g,"");return;}
if(node.nodeType!==Node.ELEMENT_NODE)
return;for(var child=node.firstChild;child;child=child.nextSibling)
removeZeroWidthSpaceRecursive(child);}
removeZeroWidthSpaceRecursive(attribute);var config=new WebInspector.EditingConfig(this._attributeEditingCommitted.bind(this),this._editingCancelled.bind(this),attributeName);config.setNumberCommitHandler(this._attributeNumberEditingCommitted.bind(this));this._editing=WebInspector.startEditing(attribute,config);window.getSelection().setBaseAndExtent(elementForSelection,0,elementForSelection,1);return true;}
_startEditingTextNode(textNode)
{if(WebInspector.isBeingEdited(textNode))
return true;var config=new WebInspector.EditingConfig(this._textNodeEditingCommitted.bind(this),this._editingCancelled.bind(this));config.spellcheck=true;this._editing=WebInspector.startEditing(textNode,config);window.getSelection().setBaseAndExtent(textNode,0,textNode,1);return true;}
_startEditingTagName(tagNameElement)
{if(!tagNameElement){tagNameElement=this.listItemElement.getElementsByClassName("html-tag-name")[0];if(!tagNameElement)
return false;}
var tagName=tagNameElement.textContent;if(WebInspector.DOMTreeElement.EditTagBlacklist[tagName.toLowerCase()])
return false;if(WebInspector.isBeingEdited(tagNameElement))
return true;let closingTagElement=this._distinctClosingTagElement();let originalClosingTagTextContent=closingTagElement?closingTagElement.textContent:"";function keyupListener(event)
{if(closingTagElement)
closingTagElement.textContent="</"+tagNameElement.textContent+">";}
function editingComitted(element,newTagName)
{tagNameElement.removeEventListener("keyup",keyupListener,false);this._tagNameEditingCommitted.apply(this,arguments);}
function editingCancelled()
{if(closingTagElement)
closingTagElement.textContent=originalClosingTagTextContent;tagNameElement.removeEventListener("keyup",keyupListener,false);this._editingCancelled.apply(this,arguments);}
tagNameElement.addEventListener("keyup",keyupListener,false);var config=new WebInspector.EditingConfig(editingComitted.bind(this),editingCancelled.bind(this),tagName);this._editing=WebInspector.startEditing(tagNameElement,config);window.getSelection().setBaseAndExtent(tagNameElement,0,tagNameElement,1);return true;}
_startEditingAsHTML(commitCallback,error,initialValue)
{if(error)
return;if(this._htmlEditElement&&WebInspector.isBeingEdited(this._htmlEditElement))
return;this._htmlEditElement=document.createElement("div");this._htmlEditElement.textContent=initialValue;var child=this.listItemElement.firstChild;while(child){child.style.display="none";child=child.nextSibling;}
if(this._childrenListNode)
this._childrenListNode.style.display="none";this.listItemElement.appendChild(this._htmlEditElement);this.updateSelectionArea();function commit()
{commitCallback(this._htmlEditElement.textContent);dispose.call(this);}
function dispose()
{this._editing=false;this.listItemElement.removeChild(this._htmlEditElement);this._htmlEditElement=null;if(this._childrenListNode)
this._childrenListNode.style.removeProperty("display");var child=this.listItemElement.firstChild;while(child){child.style.removeProperty("display");child=child.nextSibling;}
this.updateSelectionArea();}
var config=new WebInspector.EditingConfig(commit.bind(this),dispose.bind(this));config.setMultiline(true);this._editing=WebInspector.startEditing(this._htmlEditElement,config);}
_attributeEditingCommitted(element,newText,oldText,attributeName,moveDirection)
{this._editing=false;if(!newText.trim())
element.remove();if(!moveDirection&&newText===oldText)
return;var treeOutline=this.treeOutline;function moveToNextAttributeIfNeeded(error)
{if(error)
this._editingCancelled(element,attributeName);if(!moveDirection)
return;treeOutline._updateModifiedNodes();var attributes=this.representedObject.attributes();for(var i=0;i<attributes.length;++i){if(attributes[i].name!==attributeName)
continue;if(moveDirection==="backward"){if(i===0)
this._startEditingTagName();else
this._triggerEditAttribute(attributes[i-1].name);}else{if(i===attributes.length-1)
this._addNewAttribute();else
this._triggerEditAttribute(attributes[i+1].name);}
return;}
if(moveDirection==="backward"){if(newText===" "){ if(attributes.length)
this._triggerEditAttribute(attributes.lastValue.name);}else{ if(attributes.length>1)
this._triggerEditAttribute(attributes[attributes.length-2].name);}}else if(moveDirection==="forward"){if(!/^\s*$/.test(newText))
this._addNewAttribute();else
this._startEditingTagName();}}
this.representedObject.setAttribute(attributeName,newText,moveToNextAttributeIfNeeded.bind(this));}
_attributeNumberEditingCommitted(element,newText,oldText,attributeName,moveDirection)
{if(newText===oldText)
return;this.representedObject.setAttribute(attributeName,newText);}
_tagNameEditingCommitted(element,newText,oldText,tagName,moveDirection)
{this._editing=false;var self=this;function cancel()
{var closingTagElement=self._distinctClosingTagElement();if(closingTagElement)
closingTagElement.textContent="</"+tagName+">";self._editingCancelled(element,tagName);moveToNextAttributeIfNeeded.call(self);}
function moveToNextAttributeIfNeeded()
{if(moveDirection!=="forward"){this._addNewAttribute();return;}
var attributes=this.representedObject.attributes();if(attributes.length>0)
this._triggerEditAttribute(attributes[0].name);else
this._addNewAttribute();}
newText=newText.trim();if(newText===oldText){cancel();return;}
var treeOutline=this.treeOutline;var wasExpanded=this.expanded;function changeTagNameCallback(error,nodeId)
{if(error||!nodeId){cancel();return;}
var node=WebInspector.domTreeManager.nodeForId(nodeId);treeOutline._updateModifiedNodes();treeOutline.selectDOMNode(node,true);var newTreeItem=treeOutline.findTreeElement(node);if(wasExpanded)
newTreeItem.expand();moveToNextAttributeIfNeeded.call(newTreeItem);}
this.representedObject.setNodeName(newText,changeTagNameCallback);}
_textNodeEditingCommitted(element,newText)
{this._editing=false;var textNode;if(this.representedObject.nodeType()===Node.ELEMENT_NODE){
textNode=this.representedObject.firstChild;}else if(this.representedObject.nodeType()===Node.TEXT_NODE)
textNode=this.representedObject;textNode.setNodeValue(newText,this.updateTitle.bind(this));}
_editingCancelled(element,context)
{this._editing=false;this.updateTitle();}
_distinctClosingTagElement()
{
if(this.expanded){var closers=this._childrenListNode.querySelectorAll(".close");return closers[closers.length-1];}
var tags=this.listItemElement.getElementsByClassName("html-tag");return tags.length===1?null:tags[tags.length-1];}
updateTitle(onlySearchQueryChanged)
{if(this._editing)
return;if(onlySearchQueryChanged){if(this._highlightResult)
this._updateSearchHighlight(false);}else{this.title=document.createElement("span");this.title.appendChild(this._nodeTitleInfo().titleDOM);this._highlightResult=undefined;}
this._selectionElement=null;this.updateSelectionArea();this._highlightSearchResults();this._updateBreakpointStatus();}
_buildAttributeDOM(parentElement,name,value,node)
{let hasText=value.length>0;let attrSpanElement=parentElement.createChild("span","html-attribute");let attrNameElement=attrSpanElement.createChild("span","html-attribute-name");attrNameElement.textContent=name;let attrValueElement=null;if(hasText)
attrSpanElement.append("=\u200B\"");if(name==="src"||/\bhref\b/.test(name)){let baseURL=node.ownerDocument?node.ownerDocument.documentURL:null;let rewrittenURL=absoluteURL(value,baseURL);value=value.insertWordBreakCharacters();if(!rewrittenURL){attrValueElement=attrSpanElement.createChild("span","html-attribute-value");attrValueElement.textContent=value;}else{if(value.startsWith("data:"))
value=value.trimMiddle(60);attrValueElement=document.createElement("a");attrValueElement.href=rewrittenURL;attrValueElement.textContent=value;attrSpanElement.appendChild(attrValueElement);}}else if(name==="srcset"){let baseURL=node.ownerDocument?node.ownerDocument.documentURL:null;attrValueElement=attrSpanElement.createChild("span","html-attribute-value");let groups=value.split(/\s*,\s*/);for(let i=0;i<groups.length;++i){let string=groups[i].trim();let spaceIndex=string.search(/\s/);if(spaceIndex===-1){let linkText=string;let rewrittenURL=absoluteURL(string,baseURL);let linkElement=attrValueElement.appendChild(document.createElement("a"));linkElement.href=rewrittenURL;linkElement.textContent=linkText.insertWordBreakCharacters();}else{let linkText=string.substring(0,spaceIndex);let descriptorText=string.substring(spaceIndex).insertWordBreakCharacters();let rewrittenURL=absoluteURL(linkText,baseURL);let linkElement=attrValueElement.appendChild(document.createElement("a"));linkElement.href=rewrittenURL;linkElement.textContent=linkText.insertWordBreakCharacters();let descriptorElement=attrValueElement.appendChild(document.createElement("span"));descriptorElement.textContent=descriptorText;}
if(i<groups.length-1){let commaElement=attrValueElement.appendChild(document.createElement("span"));commaElement.textContent=", ";}}}else{value=value.insertWordBreakCharacters();attrValueElement=attrSpanElement.createChild("span","html-attribute-value");attrValueElement.textContent=value;}
if(hasText)
attrSpanElement.append("\"");for(let attribute of this._recentlyModifiedAttributes){if(attribute.name===name)
attribute.element=hasText?attrValueElement:attrNameElement;}}
_buildTagDOM(parentElement,tagName,isClosingTag,isDistinctTreeElement)
{var node=this.representedObject;var classes=["html-tag"];if(isClosingTag&&isDistinctTreeElement)
classes.push("close");var tagElement=parentElement.createChild("span",classes.join(" "));tagElement.append("<");var tagNameElement=tagElement.createChild("span",isClosingTag?"":"html-tag-name");tagNameElement.textContent=(isClosingTag?"/":"")+tagName;if(!isClosingTag&&node.hasAttributes()){var attributes=node.attributes();for(var i=0;i<attributes.length;++i){var attr=attributes[i];tagElement.append(" ");this._buildAttributeDOM(tagElement,attr.name,attr.value,node);}}
tagElement.append(">");parentElement.append("\u200B");}
_nodeTitleInfo()
{var node=this.representedObject;var info={titleDOM:document.createDocumentFragment(),hasChildren:this.hasChildren};function trimedNodeValue()
{
return node.nodeValue().replace(/^[\n\r]*/,"").replace(/\s*$/,"");}
switch(node.nodeType()){case Node.DOCUMENT_FRAGMENT_NODE:var fragmentElement=info.titleDOM.createChild("span","html-fragment");if(node.shadowRootType()){fragmentElement.textContent=WebInspector.UIString("Shadow Content (%s)").format(WebInspector.DOMTreeElement.shadowRootTypeDisplayName(node.shadowRootType()));this.listItemElement.classList.add("shadow");}else if(node.parentNode&&node.parentNode.templateContent()===node){fragmentElement.textContent=WebInspector.UIString("Template Content");this.listItemElement.classList.add("template");}else{fragmentElement.textContent=WebInspector.UIString("Document Fragment");this.listItemElement.classList.add("fragment");}
break;case Node.ATTRIBUTE_NODE:var value=node.value||"\u200B";this._buildAttributeDOM(info.titleDOM,node.name,value);break;case Node.ELEMENT_NODE:if(node.isPseudoElement()){var pseudoElement=info.titleDOM.createChild("span","html-pseudo-element");pseudoElement.textContent="::"+node.pseudoType();info.titleDOM.appendChild(document.createTextNode("\u200B"));info.hasChildren=false;break;}
var tagName=node.nodeNameInCorrectCase();if(this._elementCloseTag){this._buildTagDOM(info.titleDOM,tagName,true,true);info.hasChildren=false;break;}
this._buildTagDOM(info.titleDOM,tagName,false,false);var textChild=this._singleTextChild(node);var showInlineText=textChild&&textChild.nodeValue().length<WebInspector.DOMTreeElement.MaximumInlineTextChildLength;if(!this.expanded&&(!showInlineText&&(this.treeOutline.isXMLMimeType||!WebInspector.DOMTreeElement.ForbiddenClosingTagElements[tagName]))){if(this.hasChildren){var textNodeElement=info.titleDOM.createChild("span","html-text-node");textNodeElement.textContent=ellipsis;info.titleDOM.append("\u200B");}
this._buildTagDOM(info.titleDOM,tagName,true,false);}
if(showInlineText){var textNodeElement=info.titleDOM.createChild("span","html-text-node");var nodeNameLowerCase=node.nodeName().toLowerCase();if(nodeNameLowerCase==="script")
textNodeElement.appendChild(WebInspector.syntaxHighlightStringAsDocumentFragment(textChild.nodeValue().trim(),"text/javascript"));else if(nodeNameLowerCase==="style")
textNodeElement.appendChild(WebInspector.syntaxHighlightStringAsDocumentFragment(textChild.nodeValue().trim(),"text/css"));else
textNodeElement.textContent=textChild.nodeValue();info.titleDOM.append("\u200B");this._buildTagDOM(info.titleDOM,tagName,true,false);info.hasChildren=false;}
break;case Node.TEXT_NODE:if(node.parentNode&&node.parentNode.nodeName().toLowerCase()==="script"){var newNode=info.titleDOM.createChild("span","html-text-node large");newNode.appendChild(WebInspector.syntaxHighlightStringAsDocumentFragment(trimedNodeValue(),"text/javascript"));}else if(node.parentNode&&node.parentNode.nodeName().toLowerCase()==="style"){var newNode=info.titleDOM.createChild("span","html-text-node large");newNode.appendChild(WebInspector.syntaxHighlightStringAsDocumentFragment(trimedNodeValue(),"text/css"));}else{info.titleDOM.append("\"");var textNodeElement=info.titleDOM.createChild("span","html-text-node");textNodeElement.textContent=node.nodeValue();info.titleDOM.append("\"");}
break;case Node.COMMENT_NODE:var commentElement=info.titleDOM.createChild("span","html-comment");commentElement.append("<!--"+node.nodeValue()+"-->");break;case Node.DOCUMENT_TYPE_NODE:var docTypeElement=info.titleDOM.createChild("span","html-doctype");docTypeElement.append("<!DOCTYPE "+node.nodeName());if(node.publicId){docTypeElement.append(" PUBLIC \""+node.publicId+"\"");if(node.systemId)
docTypeElement.append(" \""+node.systemId+"\"");}else if(node.systemId)
docTypeElement.append(" SYSTEM \""+node.systemId+"\"");docTypeElement.append(">");break;case Node.CDATA_SECTION_NODE:var cdataElement=info.titleDOM.createChild("span","html-text-node");cdataElement.append("<![CDATA["+node.nodeValue()+"]]>");break;case Node.PROCESSING_INSTRUCTION_NODE:var processingInstructionElement=info.titleDOM.createChild("span","html-processing-instruction");var data=node.nodeValue();var dataString=data.length?" "+data:"";var title="<?"+node.nodeNameInCorrectCase()+dataString+"?>";processingInstructionElement.append(title);break;default:info.titleDOM.append(node.nodeNameInCorrectCase().collapseWhitespace());}
return info;}
_singleTextChild(node)
{if(!node)
return null;var firstChild=node.firstChild;if(!firstChild||firstChild.nodeType()!==Node.TEXT_NODE)
return null;if(node.hasShadowRoots())
return null;if(node.templateContent())
return null;if(node.hasPseudoElements())
return null;var sibling=firstChild.nextSibling;return sibling?null:firstChild;}
_showInlineText(node)
{if(node.nodeType()===Node.ELEMENT_NODE){var textChild=this._singleTextChild(node);if(textChild&&textChild.nodeValue().length<WebInspector.DOMTreeElement.MaximumInlineTextChildLength)
return true;}
return false;}
_hasVisibleChildren()
{var node=this.representedObject;if(this._showInlineText(node))
return false;if(node.hasChildNodes())
return true;if(node.templateContent())
return true;if(node.hasPseudoElements())
return true;return false;}
_visibleChildren()
{var node=this.representedObject;var visibleChildren=[];var templateContent=node.templateContent();if(templateContent)
visibleChildren.push(templateContent);var beforePseudoElement=node.beforePseudoElement();if(beforePseudoElement)
visibleChildren.push(beforePseudoElement);if(node.childNodeCount&&node.children)
visibleChildren=visibleChildren.concat(node.children);var afterPseudoElement=node.afterPseudoElement();if(afterPseudoElement)
visibleChildren.push(afterPseudoElement);return visibleChildren;}
remove()
{var parentElement=this.parent;if(!parentElement)
return;var self=this;function removeNodeCallback(error,removedNodeId)
{if(error)
return;if(!self.parent)
return;parentElement.removeChild(self);parentElement.adjustCollapsedRange();}
this.representedObject.removeNode(removeNodeCallback);}
_scrollIntoView()
{function resolvedNode(object)
{if(!object)
return;function scrollIntoView()
{this.scrollIntoViewIfNeeded(true);}
object.callFunction(scrollIntoView,undefined,false,function(){});object.release();}
let node=this.representedObject;WebInspector.RemoteObject.resolveNode(node,"",resolvedNode);}
_editAsHTML()
{var treeOutline=this.treeOutline;var node=this.representedObject;var parentNode=node.parentNode;var index=node.index;var wasExpanded=this.expanded;function selectNode(error,nodeId)
{if(error)
return;treeOutline._updateModifiedNodes();var newNode=parentNode?parentNode.children[index]||parentNode:null;if(!newNode)
return;treeOutline.selectDOMNode(newNode,true);if(wasExpanded){var newTreeItem=treeOutline.findTreeElement(newNode);if(newTreeItem)
newTreeItem.expand();}}
function commitChange(value)
{node.setOuterHTML(value,selectNode);}
node.getOuterHTML(this._startEditingAsHTML.bind(this,commitChange));}
_copyHTML()
{this.representedObject.copyNode();}
_highlightSearchResults()
{if(!this.title||!this._searchQuery||!this._searchHighlightsVisible)
return;if(this._highlightResult){this._updateSearchHighlight(true);return;}
var text=this.title.textContent;var searchRegex=new RegExp(this._searchQuery.escapeForRegExp(),"gi");var match=searchRegex.exec(text);var matchRanges=[];while(match){matchRanges.push({offset:match.index,length:match[0].length});match=searchRegex.exec(text);}
if(!matchRanges.length)
matchRanges.push({offset:0,length:text.length});this._highlightResult=[];WebInspector.highlightRangesWithStyleClass(this.title,matchRanges,WebInspector.DOMTreeElement.SearchHighlightStyleClassName,this._highlightResult);}
_markNodeChanged()
{for(let attribute of this._recentlyModifiedAttributes){let element=attribute.element;if(!element)
continue;element.classList.remove("node-state-changed");element.addEventListener("animationend",this._boundNodeChangedAnimationEnd);element.classList.add("node-state-changed");}}
_nodeChangedAnimationEnd(event)
{let element=event.target;element.classList.remove("node-state-changed");element.removeEventListener("animationend",this._boundNodeChangedAnimationEnd);for(let i=this._recentlyModifiedAttributes.length-1;i>=0;--i){if(this._recentlyModifiedAttributes[i].element===element)
this._recentlyModifiedAttributes.splice(i,1);}}
get pseudoClassesEnabled()
{return!!this.representedObject.enabledPseudoClasses.length;}
_nodePseudoClassesDidChange(event)
{if(this._elementCloseTag)
return;this.updateSelectionArea();this.listItemElement.classList.toggle("pseudo-class-enabled",!!this.representedObject.enabledPseudoClasses.length);}
_fireDidChange()
{super._fireDidChange();this._markNodeChanged();}
handleEvent(event)
{if(event.type==="dragstart"&&this._editing)
event.preventDefault();}
_updateBreakpointStatus()
{let listItemElement=this.listItemElement;if(!listItemElement)
return;let hasBreakpoint=this._breakpointStatus!==WebInspector.DOMTreeElement.BreakpointStatus.None;let hasSubtreeBreakpoints=!!this._subtreeBreakpointCount;if(!hasBreakpoint&&!hasSubtreeBreakpoints){if(this._statusImageElement)
this._statusImageElement.remove();return;}
if(!this._statusImageElement){this._statusImageElement=useSVGSymbol("Images/DOMBreakpoint.svg","status-image");this._statusImageElement.classList.add("breakpoint");this._statusImageElement.addEventListener("click",this._statusImageClicked.bind(this));this._statusImageElement.addEventListener("contextmenu",this._statusImageContextmenu.bind(this));this._statusImageElement.addEventListener("mousedown",(event)=>{event.stopPropagation();});}
this._statusImageElement.classList.toggle("subtree",!hasBreakpoint&&hasSubtreeBreakpoints);this.listItemElement.insertBefore(this._statusImageElement,this.listItemElement.firstChild);let disabled=this._breakpointStatus===WebInspector.DOMTreeElement.BreakpointStatus.DisabledBreakpoint;this._statusImageElement.classList.toggle("disabled",disabled);}
_statusImageClicked(event)
{if(this._breakpointStatus===WebInspector.DOMTreeElement.BreakpointStatus.None)
return;if(event.button!==0||event.ctrlKey)
return;let breakpoints=WebInspector.domDebuggerManager.domBreakpointsForNode(this.representedObject);if(!breakpoints||!breakpoints.length)
return;let shouldEnable=breakpoints.some((breakpoint)=>breakpoint.disabled);breakpoints.forEach((breakpoint)=>breakpoint.disabled=!shouldEnable);}
_statusImageContextmenu(event)
{let hasBreakpoint=this._breakpointStatus!==WebInspector.DOMTreeElement.BreakpointStatus.None;let hasSubtreeBreakpoints=!!this._subtreeBreakpointCount;if(!hasBreakpoint&&!hasSubtreeBreakpoints)
return;let contextMenu=WebInspector.ContextMenu.createFromEvent(event);if(hasBreakpoint){const allowEditing=true;WebInspector.DOMBreakpointTreeController.appendBreakpointContextMenuItems(contextMenu,this.representedObject,allowEditing);return;}
contextMenu.appendItem(WebInspector.UIString("Reveal Breakpoint"),()=>{let breakpointTreeElement=this.selfOrDescendant((treeElement)=>treeElement.breakpointStatus&&treeElement.breakpointStatus!==WebInspector.DOMTreeElement.BreakpointStatus.None);if(!breakpointTreeElement)
return;breakpointTreeElement.revealAndHighlight();});}
_highlightAnimationEnd()
{let listItemElement=this.listItemElement;if(!listItemElement)
return;listItemElement.removeEventListener("animationend",this._boundHighlightAnimationEnd);listItemElement.classList.remove(WebInspector.DOMTreeElement.HighlightStyleClassName);this._animatingHighlight=false;}};WebInspector.DOMTreeElement.InitialChildrenLimit=500;WebInspector.DOMTreeElement.MaximumInlineTextChildLength=80;
WebInspector.DOMTreeElement.ForbiddenClosingTagElements=["area","base","basefont","br","canvas","col","command","embed","frame","hr","img","input","keygen","link","meta","param","source","wbr","track","menuitem"].keySet();WebInspector.DOMTreeElement.EditTagBlacklist=["html","head","body"].keySet();WebInspector.DOMTreeElement.ChangeType={Attribute:"dom-tree-element-change-type-attribute"};WebInspector.DOMTreeElement.BreakpointStatus={None:Symbol("none"),Breakpoint:Symbol("breakpoint"),DisabledBreakpoint:Symbol("disabled-breakpoint"),};WebInspector.DOMTreeElement.HighlightStyleClassName="highlight";WebInspector.DOMTreeElement.SearchHighlightStyleClassName="search-highlight";WebInspector.DOMTreeElement.BouncyHighlightStyleClassName="bouncy-highlight";WebInspector.DOMTreeElementPathComponent=class DOMTreeElementPathComponent extends WebInspector.HierarchicalPathComponent
{constructor(domTreeElement,representedObject)
{var node=domTreeElement.representedObject;var title=null;var className=null;switch(node.nodeType()){case Node.ELEMENT_NODE:if(node.isPseudoElement()){className=WebInspector.DOMTreeElementPathComponent.DOMPseudoElementIconStyleClassName;title="::"+node.pseudoType();}else{className=WebInspector.DOMTreeElementPathComponent.DOMElementIconStyleClassName;title=node.displayName;}
break;case Node.TEXT_NODE:className=WebInspector.DOMTreeElementPathComponent.DOMTextNodeIconStyleClassName;title="\""+node.nodeValue().trimEnd(32)+"\"";break;case Node.COMMENT_NODE:className=WebInspector.DOMTreeElementPathComponent.DOMCommentIconStyleClassName;title="<!--"+node.nodeValue().trimEnd(32)+"-->";break;case Node.DOCUMENT_TYPE_NODE:className=WebInspector.DOMTreeElementPathComponent.DOMDocumentTypeIconStyleClassName;title="<!DOCTYPE>";break;case Node.DOCUMENT_NODE:className=WebInspector.DOMTreeElementPathComponent.DOMDocumentIconStyleClassName;title=node.nodeNameInCorrectCase();break;case Node.CDATA_SECTION_NODE:className=WebInspector.DOMTreeElementPathComponent.DOMCharacterDataIconStyleClassName;title="<![CDATA["+node.trimEnd(32)+"]]>";break;case Node.DOCUMENT_FRAGMENT_NODE: className=WebInspector.DOMTreeElementPathComponent.DOMDocumentTypeIconStyleClassName;if(node.shadowRootType())
title=WebInspector.UIString("Shadow Content");else
title=node.displayName;break;case Node.PROCESSING_INSTRUCTION_NODE:className=WebInspector.DOMTreeElementPathComponent.DOMDocumentTypeIconStyleClassName;title=node.nodeNameInCorrectCase();break;default:console.error("Unknown DOM node type: ",node.nodeType());className=WebInspector.DOMTreeElementPathComponent.DOMNodeIconStyleClassName;title=node.nodeNameInCorrectCase();}
super(title,className,representedObject||domTreeElement.representedObject);this._domTreeElement=domTreeElement;}
get domTreeElement()
{return this._domTreeElement;}
get previousSibling()
{if(!this._domTreeElement.previousSibling)
return null;return new WebInspector.DOMTreeElementPathComponent(this._domTreeElement.previousSibling);}
get nextSibling()
{if(!this._domTreeElement.nextSibling)
return null;if(this._domTreeElement.nextSibling.isCloseTag())
return null;return new WebInspector.DOMTreeElementPathComponent(this._domTreeElement.nextSibling);}
mouseOver()
{var nodeId=this._domTreeElement.representedObject.id;WebInspector.domTreeManager.highlightDOMNode(nodeId);}
mouseOut()
{WebInspector.domTreeManager.hideDOMNodeHighlight();}};WebInspector.DOMTreeElementPathComponent.DOMElementIconStyleClassName="dom-element-icon";WebInspector.DOMTreeElementPathComponent.DOMPseudoElementIconStyleClassName="dom-pseudo-element-icon";WebInspector.DOMTreeElementPathComponent.DOMTextNodeIconStyleClassName="dom-text-node-icon";WebInspector.DOMTreeElementPathComponent.DOMCommentIconStyleClassName="dom-comment-icon";WebInspector.DOMTreeElementPathComponent.DOMDocumentTypeIconStyleClassName="dom-document-type-icon";WebInspector.DOMTreeElementPathComponent.DOMDocumentIconStyleClassName="dom-document-icon";WebInspector.DOMTreeElementPathComponent.DOMCharacterDataIconStyleClassName="dom-character-data-icon";WebInspector.DOMTreeElementPathComponent.DOMNodeIconStyleClassName="dom-node-icon";WebInspector.DOMTreeOutline=class DOMTreeOutline extends WebInspector.TreeOutline
{constructor(omitRootDOMNode,selectEnabled,excludeRevealElementContextMenu)
{super();this.element.addEventListener("mousedown",this._onmousedown.bind(this),false);this.element.addEventListener("mousemove",this._onmousemove.bind(this),false);this.element.addEventListener("mouseout",this._onmouseout.bind(this),false);this.element.addEventListener("dragstart",this._ondragstart.bind(this),false);this.element.addEventListener("dragover",this._ondragover.bind(this),false);this.element.addEventListener("dragleave",this._ondragleave.bind(this),false);this.element.addEventListener("drop",this._ondrop.bind(this),false);this.element.addEventListener("dragend",this._ondragend.bind(this),false);this.element.classList.add("dom",WebInspector.SyntaxHighlightedStyleClassName);this._includeRootDOMNode=!omitRootDOMNode;this._selectEnabled=selectEnabled;this._excludeRevealElementContextMenu=excludeRevealElementContextMenu;this._rootDOMNode=null;this._selectedDOMNode=null;this._editable=false;this._editing=false;this._visible=false;this._hideElementKeyboardShortcut=new WebInspector.KeyboardShortcut(null,"H",this._hideElement.bind(this),this.element);this._hideElementKeyboardShortcut.implicitlyPreventsDefault=false;WebInspector.showShadowDOMSetting.addEventListener(WebInspector.Setting.Event.Changed,this._showShadowDOMSettingChanged,this);}
wireToDomAgent()
{this._elementsTreeUpdater=new WebInspector.DOMTreeUpdater(this);}
close()
{WebInspector.showShadowDOMSetting.removeEventListener(null,null,this);if(this._elementsTreeUpdater){this._elementsTreeUpdater.close();this._elementsTreeUpdater=null;}}
setVisible(visible,omitFocus)
{this._visible=visible;if(!this._visible)
return;this._updateModifiedNodes();if(this._selectedDOMNode)
this._revealAndSelectNode(this._selectedDOMNode,omitFocus);this.update();}
get rootDOMNode()
{return this._rootDOMNode;}
set rootDOMNode(x)
{if(this._rootDOMNode===x)
return;this._rootDOMNode=x;this._isXMLMimeType=x&&x.isXMLNode();this.update();}
get isXMLMimeType()
{return this._isXMLMimeType;}
selectedDOMNode()
{return this._selectedDOMNode;}
selectDOMNode(node,focus)
{if(this._selectedDOMNode===node){this._revealAndSelectNode(node,!focus);return;}
this._selectedDOMNode=node;this._revealAndSelectNode(node,!focus);
if(!node||this._selectedDOMNode===node)
this._selectedNodeChanged();}
get editable()
{return this._editable;}
set editable(x)
{this._editable=x;}
get editing()
{return this._editing;}
update()
{if(!this.rootDOMNode)
return;let selectedNode=this.selectedTreeElement?this.selectedTreeElement.representedObject:null;this.removeChildren();var treeElement;if(this._includeRootDOMNode){treeElement=new WebInspector.DOMTreeElement(this.rootDOMNode);treeElement.selectable=this._selectEnabled;this.appendChild(treeElement);}else{ var node=this.rootDOMNode.firstChild;while(node){treeElement=new WebInspector.DOMTreeElement(node);treeElement.selectable=this._selectEnabled;this.appendChild(treeElement);node=node.nextSibling;if(treeElement.hasChildren&&!treeElement.expanded)
treeElement.expand();}}
if(selectedNode)
this._revealAndSelectNode(selectedNode,true);}
updateSelection()
{
if(this.selectedTreeElement)
this.selectedTreeElement.updateSelectionArea();}
_selectedNodeChanged()
{this.dispatchEventToListeners(WebInspector.DOMTreeOutline.Event.SelectedNodeChanged);}
findTreeElement(node)
{let isAncestorNode=(ancestor,node)=>ancestor.isAncestor(node);let parentNode=(node)=>node.parentNode;let treeElement=super.findTreeElement(node,isAncestorNode,parentNode);if(!treeElement&&node.nodeType()===Node.TEXT_NODE){treeElement=super.findTreeElement(node.parentNode,isAncestorNode,parentNode);}
return treeElement;}
createTreeElementFor(node)
{var treeElement=this.findTreeElement(node);if(treeElement)
return treeElement;if(!node.parentNode)
return null;treeElement=this.createTreeElementFor(node.parentNode);if(!treeElement)
return null;return treeElement.showChildNode(node);}
set suppressRevealAndSelect(x)
{if(this._suppressRevealAndSelect===x)
return;this._suppressRevealAndSelect=x;}
populateContextMenu(contextMenu,event,treeElement)
{let tag=event.target.enclosingNodeOrSelfWithClass("html-tag");let textNode=event.target.enclosingNodeOrSelfWithClass("html-text-node");let commentNode=event.target.enclosingNodeOrSelfWithClass("html-comment");let pseudoElement=event.target.enclosingNodeOrSelfWithClass("html-pseudo-element");if(tag&&treeElement._populateTagContextMenu){contextMenu.appendSeparator();treeElement._populateTagContextMenu(contextMenu,event);}else if(textNode&&treeElement._populateTextContextMenu){contextMenu.appendSeparator();treeElement._populateTextContextMenu(contextMenu,textNode);}else if((commentNode||pseudoElement)&&treeElement._populateNodeContextMenu){contextMenu.appendSeparator();treeElement._populateNodeContextMenu(contextMenu);}
const options={excludeRevealElement:this._excludeRevealElementContextMenu};WebInspector.appendContextMenuItemsForDOMNode(contextMenu,treeElement.representedObject,options);super.populateContextMenu(contextMenu,event,treeElement);}
adjustCollapsedRange()
{}
_revealAndSelectNode(node,omitFocus)
{if(!node||this._suppressRevealAndSelect)
return;if(!WebInspector.showShadowDOMSetting.value){while(node&&node.isInShadowTree())
node=node.parentNode;if(!node)
return;}
var treeElement=this.createTreeElementFor(node);if(!treeElement)
return;treeElement.revealAndSelect(omitFocus);}
_onmousedown(event)
{let element=this.treeElementFromEvent(event);if(!element||element.isEventWithinDisclosureTriangle(event)){event.preventDefault();return;}
element.select();}
_onmousemove(event)
{let element=this.treeElementFromEvent(event);if(element&&this._previousHoveredElement===element)
return;if(this._previousHoveredElement){this._previousHoveredElement.hovered=false;this._previousHoveredElement=null;}
if(element){element.hovered=true;this._previousHoveredElement=element;if(element.representedObject&&!element.tooltip&&element._createTooltipForNode)
element._createTooltipForNode();}
WebInspector.domTreeManager.highlightDOMNode(element?element.representedObject.id:0);}
_onmouseout(event)
{var nodeUnderMouse=document.elementFromPoint(event.pageX,event.pageY);if(nodeUnderMouse&&nodeUnderMouse.isDescendant(this.element))
return;if(this._previousHoveredElement){this._previousHoveredElement.hovered=false;this._previousHoveredElement=null;}
WebInspector.domTreeManager.hideDOMNodeHighlight();}
_ondragstart(event)
{let treeElement=this.treeElementFromEvent(event);if(!treeElement)
return false;if(!this._isValidDragSourceOrTarget(treeElement))
return false;if(treeElement.representedObject.nodeName()==="BODY"||treeElement.representedObject.nodeName()==="HEAD")
return false;event.dataTransfer.setData("text/plain",treeElement.listItemElement.textContent);event.dataTransfer.effectAllowed="copyMove";this._nodeBeingDragged=treeElement.representedObject;WebInspector.domTreeManager.hideDOMNodeHighlight();return true;}
_ondragover(event)
{if(event.dataTransfer.types.includes(WebInspector.CSSStyleDetailsSidebarPanel.ToggledClassesDragType)){event.preventDefault();event.dataTransfer.dropEffect="copy";return false;}
if(!this._nodeBeingDragged)
return false;let treeElement=this.treeElementFromEvent(event);if(!this._isValidDragSourceOrTarget(treeElement))
return false;let node=treeElement.representedObject;while(node){if(node===this._nodeBeingDragged)
return false;node=node.parentNode;}
this.dragOverTreeElement=treeElement;treeElement.listItemElement.classList.add("elements-drag-over");treeElement.updateSelectionArea();event.preventDefault();event.dataTransfer.dropEffect="move";return false;}
_ondragleave(event)
{this._clearDragOverTreeElementMarker();event.preventDefault();return false;}
_isValidDragSourceOrTarget(treeElement)
{if(!treeElement)
return false;var node=treeElement.representedObject;if(!(node instanceof WebInspector.DOMNode))
return false;if(!node.parentNode||node.parentNode.nodeType()!==Node.ELEMENT_NODE)
return false;return true;}
_ondrop(event)
{event.preventDefault();function callback(error,newNodeId)
{if(error)
return;this._updateModifiedNodes();var newNode=WebInspector.domTreeManager.nodeForId(newNodeId);if(newNode)
this.selectDOMNode(newNode,true);}
let treeElement=this.treeElementFromEvent(event);if(this._nodeBeingDragged&&treeElement){let parentNode=null;let anchorNode=null;if(treeElement._elementCloseTag){parentNode=treeElement.representedObject;}else{let dragTargetNode=treeElement.representedObject;parentNode=dragTargetNode.parentNode;anchorNode=dragTargetNode;}
this._nodeBeingDragged.moveTo(parentNode,anchorNode,callback.bind(this));}else{let className=event.dataTransfer.getData(WebInspector.CSSStyleDetailsSidebarPanel.ToggledClassesDragType);if(className&&treeElement)
treeElement.representedObject.toggleClass(className,true);}
delete this._nodeBeingDragged;}
_ondragend(event)
{event.preventDefault();this._clearDragOverTreeElementMarker();delete this._nodeBeingDragged;}
_clearDragOverTreeElementMarker()
{if(this.dragOverTreeElement){let element=this.dragOverTreeElement;this.dragOverTreeElement=null;element.listItemElement.classList.remove("elements-drag-over");element.updateSelectionArea();}}
_updateModifiedNodes()
{if(this._elementsTreeUpdater)
this._elementsTreeUpdater._updateModifiedNodes();}
_showShadowDOMSettingChanged(event)
{var nodeToSelect=this.selectedTreeElement?this.selectedTreeElement.representedObject:null;while(nodeToSelect){if(!nodeToSelect.isInShadowTree())
break;nodeToSelect=nodeToSelect.parentNode;}
this.children.forEach(function(child){child.updateChildren(true);});if(nodeToSelect)
this.selectDOMNode(nodeToSelect);}
_hideElement(event,keyboardShortcut)
{if(!this.selectedTreeElement||WebInspector.isEditingAnyField())
return;event.preventDefault();var effectiveNode=this.selectedTreeElement.representedObject;if(!effectiveNode)
return;if(effectiveNode.isPseudoElement()){effectiveNode=effectiveNode.parentNode;if(!effectiveNode)
return;}
if(effectiveNode.nodeType()!==Node.ELEMENT_NODE)
return;function resolvedNode(object)
{if(!object)
return;function injectStyleAndToggleClass()
{var hideElementStyleSheetIdOrClassName="__WebInspectorHideElement__";var styleElement=document.getElementById(hideElementStyleSheetIdOrClassName);if(!styleElement){styleElement=document.createElement("style");styleElement.id=hideElementStyleSheetIdOrClassName;styleElement.textContent="."+hideElementStyleSheetIdOrClassName+" { visibility: hidden !important; }";document.head.appendChild(styleElement);}
this.classList.toggle(hideElementStyleSheetIdOrClassName);}
object.callFunction(injectStyleAndToggleClass,undefined,false,function(){});object.release();}
WebInspector.RemoteObject.resolveNode(effectiveNode,"",resolvedNode);}};WebInspector.DOMTreeOutline.Event={SelectedNodeChanged:"dom-tree-outline-selected-node-changed"};WebInspector.DOMTreeUpdater=function(treeOutline)
{WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.NodeInserted,this._nodeInserted,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.NodeRemoved,this._nodeRemoved,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.AttributeModified,this._attributesUpdated,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.AttributeRemoved,this._attributesUpdated,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.CharacterDataModified,this._characterDataModified,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.DocumentUpdated,this._documentUpdated,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.ChildNodeCountUpdated,this._childNodeCountUpdated,this);this._treeOutline=treeOutline;this._recentlyInsertedNodes=new Map;this._recentlyDeletedNodes=new Map;this._recentlyModifiedNodes=new Set;this._recentlyModifiedAttributes=new Map;this._textContentAttributeSymbol=Symbol("text-content-attribute");};WebInspector.DOMTreeUpdater.prototype={close:function()
{WebInspector.domTreeManager.removeEventListener(null,null,this);},_documentUpdated:function(event)
{this._reset();},_attributesUpdated:function(event)
{let{node,name}=event.data;this._nodeAttributeModified(node,name);},_characterDataModified:function(event)
{let{node}=event.data;this._nodeAttributeModified(node,this._textContentAttributeSymbol);},_nodeAttributeModified:function(node,attribute)
{if(!this._recentlyModifiedAttributes.has(attribute))
this._recentlyModifiedAttributes.set(attribute,new Set);this._recentlyModifiedAttributes.get(attribute).add(node);this._recentlyModifiedNodes.add(node);if(this._treeOutline._visible)
this.onNextFrame._updateModifiedNodes();},_nodeInserted:function(event)
{this._recentlyInsertedNodes.set(event.data.node,{parent:event.data.parent});if(this._treeOutline._visible)
this.onNextFrame._updateModifiedNodes();},_nodeRemoved:function(event)
{this._recentlyDeletedNodes.set(event.data.node,{parent:event.data.parent});if(this._treeOutline._visible)
this.onNextFrame._updateModifiedNodes();},_childNodeCountUpdated:function(event)
{var treeElement=this._treeOutline.findTreeElement(event.data);if(treeElement)
treeElement.hasChildren=event.data.hasChildNodes();},_updateModifiedNodes:function()
{
let parentElementsToUpdate=new Set;let markNodeParentForUpdate=(value,key,map)=>{let parentNode=value.parent;let parentTreeElement=this._treeOutline.findTreeElement(parentNode);if(parentTreeElement)
parentElementsToUpdate.add(parentTreeElement);};this._recentlyInsertedNodes.forEach(markNodeParentForUpdate);this._recentlyDeletedNodes.forEach(markNodeParentForUpdate);for(let parentTreeElement of parentElementsToUpdate){parentTreeElement.updateTitle();parentTreeElement.updateChildren();}
for(let node of this._recentlyModifiedNodes.values()){let nodeTreeElement=this._treeOutline.findTreeElement(node);if(!nodeTreeElement)
return;for(let[attribute,nodes]of this._recentlyModifiedAttributes.entries()){if(attribute===this._textContentAttributeSymbol)
continue;if(nodes.has(node))
nodeTreeElement.attributeDidChange(attribute);}
nodeTreeElement.updateTitle();}
this._recentlyInsertedNodes.clear();this._recentlyDeletedNodes.clear();this._recentlyModifiedNodes.clear();this._recentlyModifiedAttributes.clear();},_reset:function()
{WebInspector.domTreeManager.hideDOMNodeHighlight();this._recentlyInsertedNodes.clear();this._recentlyDeletedNodes.clear();this._recentlyModifiedNodes.clear();this._recentlyModifiedAttributes.clear();}};WebInspector.DashboardContainerView=class DashboardContainerView extends WebInspector.Object
{constructor()
{super();this._toolbarItem=new WebInspector.NavigationItem("dashboard-container","group",WebInspector.UIString("Activity Viewer"));this._advanceForwardArrowElement=this._toolbarItem.element.appendChild(document.createElement("div"));this._advanceForwardArrowElement.className="advance-arrow advance-forward";this._advanceBackwardArrowElement=this._toolbarItem.element.appendChild(document.createElement("div"));this._advanceBackwardArrowElement.className="advance-arrow advance-backward";this._advanceForwardArrowElement.addEventListener("click",this._advanceForwardArrowClicked.bind(this));this._advanceBackwardArrowElement.addEventListener("click",this._advanceBackwardArrowClicked.bind(this));this._dashboardStack=[];this._currentIndex=-1;this._updateAdvanceArrowVisibility();}
get toolbarItem()
{return this._toolbarItem;}
get currentDashboardView()
{if(this._currentIndex===-1)
return null;return this._dashboardStack[this._currentIndex];}
showDashboardViewForRepresentedObject(representedObject)
{var dashboardView=this._dashboardViewForRepresentedObject(representedObject);if(!dashboardView)
return null;if(this.currentDashboardView===dashboardView)
return dashboardView;var index=this._dashboardStack.indexOf(dashboardView);this._showDashboardAtIndex(index);return dashboardView;}
hideDashboardViewForRepresentedObject(representedObject)
{var onlyReturnExistingViews=true;var dashboardView=this._dashboardViewForRepresentedObject(representedObject,onlyReturnExistingViews);if(this.currentDashboardView!==dashboardView)
return;this._showDashboardAtIndex(this._currentIndex-1);}
closeDashboardViewForRepresentedObject(representedObject)
{var onlyReturnExistingViews=true;var dashboardView=this._dashboardViewForRepresentedObject(representedObject,onlyReturnExistingViews);if(!dashboardView)
return;this._closeDashboardView(dashboardView);}
_advanceForwardArrowClicked()
{this._showDashboardAtIndex(this._currentIndex+1);}
_advanceBackwardArrowClicked()
{this._showDashboardAtIndex(this._currentIndex-1);}
_dismissAdvanceArrows()
{this._advanceForwardArrowElement.classList.add(WebInspector.DashboardContainerView.InactiveStyleClassName);this._advanceBackwardArrowElement.classList.add(WebInspector.DashboardContainerView.InactiveStyleClassName);}
_updateAdvanceArrowVisibility()
{var canAdvanceForward=this._currentIndex<this._dashboardStack.length-1;var canAdvanceBackward=this._currentIndex>0;this._advanceForwardArrowElement.classList.toggle(WebInspector.DashboardContainerView.InactiveStyleClassName,!canAdvanceForward);this._advanceBackwardArrowElement.classList.toggle(WebInspector.DashboardContainerView.InactiveStyleClassName,!canAdvanceBackward);}
_dashboardViewForRepresentedObject(representedObject,onlyReturnExistingViews)
{for(var dashboardView of this._dashboardStack){if(dashboardView.representedObject===representedObject)
return dashboardView;}
if(onlyReturnExistingViews)
return null;dashboardView=WebInspector.DashboardView.create(representedObject);if(!dashboardView)
return null;this._dashboardStack.push(dashboardView);this._toolbarItem.element.appendChild(dashboardView.element);return dashboardView;}
_showDashboardAtIndex(index)
{if(this._currentIndex===index)
return;var advanceDirection=null;if(this._currentIndex<index)
advanceDirection=WebInspector.DashboardContainerView.AdvanceDirection.Forward;else
advanceDirection=WebInspector.DashboardContainerView.AdvanceDirection.Backward;var initialDirection=WebInspector.DashboardContainerView.AdvanceDirection.None;var isInitialDashboard=this._currentIndex===-1;if(!isInitialDashboard)
this._hideDashboardView(this.currentDashboardView,advanceDirection);this._currentIndex=index;this._showDashboardView(this.currentDashboardView,isInitialDashboard?initialDirection:advanceDirection);}
_showDashboardView(dashboardView,advanceDirection)
{dashboardView.shown();this._dismissAdvanceArrows();var animationClass=null;if(advanceDirection===WebInspector.DashboardContainerView.AdvanceDirection.Forward)
animationClass=WebInspector.DashboardContainerView.ForwardIncomingDashboardStyleClassName;if(advanceDirection===WebInspector.DashboardContainerView.AdvanceDirection.Backward)
animationClass=WebInspector.DashboardContainerView.BackwardIncomingDashboardStyleClassName;var container=this;dashboardView.element.classList.add(WebInspector.DashboardContainerView.VisibleDashboardStyleClassName);function animationEnded(event){if(event.target!==dashboardView.element)
return;dashboardView.element.removeEventListener("animationend",animationEnded);dashboardView.element.classList.remove(animationClass);container._updateAdvanceArrowVisibility();}
if(animationClass){dashboardView.element.classList.add(animationClass);dashboardView.element.addEventListener("animationend",animationEnded);}
return dashboardView;}
_hideDashboardView(dashboardView,advanceDirection,callback)
{dashboardView.hidden();this._dismissAdvanceArrows();var animationClass=null;if(advanceDirection===WebInspector.DashboardContainerView.AdvanceDirection.Forward)
animationClass=WebInspector.DashboardContainerView.ForwardOutgoingDashboardStyleClassName;if(advanceDirection===WebInspector.DashboardContainerView.AdvanceDirection.Backward)
animationClass=WebInspector.DashboardContainerView.BackwardOutgoingDashboardStyleClassName;var container=this;function animationEnded(event){if(event.target!==dashboardView.element)
return;dashboardView.element.removeEventListener("animationend",animationEnded);dashboardView.element.classList.remove(animationClass);dashboardView.element.classList.remove(WebInspector.DashboardContainerView.VisibleDashboardStyleClassName);container._updateAdvanceArrowVisibility();if(typeof callback==="function")
callback();}
if(animationClass){dashboardView.element.classList.add(animationClass);dashboardView.element.addEventListener("animationend",animationEnded);}else
dashboardView.element.classList.remove(WebInspector.DashboardContainerView.VisibleDashboardStyleClassName);}
_closeDashboardView(dashboardView)
{function dissociateDashboardView(){dashboardView.closed();dashboardView.element.parentNode.removeChild(dashboardView.element);}
var index=this._dashboardStack.indexOf(dashboardView);if(this.currentDashboardView===dashboardView){var direction=WebInspector.DashboardContainerView.AdvanceDirection.Backward;this._hideDashboardView(this.currentDashboardView,direction,dissociateDashboardView);this._dashboardStack.splice(index,1);--this._currentIndex;this._showDashboardView(this.currentDashboardView,direction);return;}
this._dashboardStack.splice(index,1);if(this._currentIndex>index)
--this._currentIndex;dissociateDashboardView.call(this);this._updateAdvanceArrowVisibility();}};WebInspector.DashboardContainerView.VisibleDashboardStyleClassName="visible";WebInspector.DashboardContainerView.InactiveStyleClassName="inactive";WebInspector.DashboardContainerView.AdvanceDirection={Forward:Symbol("dashboard-container-view-advance-direction-forward"),Backward:Symbol("dashboard-container-view-advance-direction-backward"),None:Symbol("dashboard-container-view-advance-direction-none")};WebInspector.DashboardContainerView.ForwardIncomingDashboardStyleClassName="slide-in-down";WebInspector.DashboardContainerView.BackwardIncomingDashboardStyleClassName="slide-in-up";WebInspector.DashboardContainerView.ForwardOutgoingDashboardStyleClassName="slide-out-down";WebInspector.DashboardContainerView.BackwardOutgoingDashboardStyleClassName="slide-out-up";WebInspector.DashboardView=class DashboardView extends WebInspector.Object
{constructor(representedObject,identifier)
{super();this._representedObject=representedObject;this._element=document.createElement("div");this._element.classList.add("dashboard");this._element.classList.add(identifier);}
static create(representedObject)
{if(representedObject instanceof WebInspector.DefaultDashboard)
return new WebInspector.DefaultDashboardView(representedObject);if(representedObject instanceof WebInspector.DebuggerDashboard)
return new WebInspector.DebuggerDashboardView(representedObject);throw"Can't make a DashboardView for an unknown representedObject.";}
get element()
{return this._element;}
get representedObject()
{return this._representedObject;}
shown()
{}
hidden()
{}
closed()
{}};WebInspector.DatabaseContentView=class DatabaseContentView extends WebInspector.ContentView
{constructor(representedObject)
{super(representedObject);this.database=representedObject;this.element.classList.add("storage-view","query","monospace");this._prompt=new WebInspector.ConsolePrompt(this,"text/x-sql");this.addSubview(this._prompt);this.element.addEventListener("click",this._messagesClicked.bind(this),true);}
saveToCookie(cookie)
{cookie.type=WebInspector.ContentViewCookieType.Database;cookie.host=this.representedObject.host;cookie.name=this.representedObject.name;}
consolePromptCompletionsNeeded(prompt,defaultCompletions,base,prefix,suffix)
{let results=[];prefix=prefix.toLowerCase();function accumulateMatches(textArray)
{for(let text of textArray){if(text.toLowerCase().startsWith(prefix))
results.push(text);}}
function tableNamesCallback(tableNames)
{accumulateMatches(tableNames);accumulateMatches(["SELECT","FROM","WHERE","LIMIT","DELETE FROM","CREATE","DROP","TABLE","INDEX","UPDATE","INSERT INTO","VALUES"]);this._prompt.updateCompletions(results," ");}
this.database.getTableNames(tableNamesCallback.bind(this));}
consolePromptTextCommitted(prompt,query)
{this.database.executeSQL(query,this._queryFinished.bind(this,query),this._queryError.bind(this,query));}
_messagesClicked()
{this._prompt.focus();}
_queryFinished(query,columnNames,values)
{let trimmedQuery=query.trim();let queryView=new WebInspector.DatabaseUserQuerySuccessView(trimmedQuery,columnNames,values);this.insertSubviewBefore(queryView,this._prompt);if(queryView.dataGrid)
queryView.dataGrid.autoSizeColumns(5);this._prompt.element.scrollIntoView(false);if(trimmedQuery.match(/^create /i)||trimmedQuery.match(/^drop table /i))
this.dispatchEventToListeners(WebInspector.DatabaseContentView.Event.SchemaUpdated,this.database);}
_queryError(query,error)
{let message;if(error.message)
message=error.message;else if(error.code===2)
message=WebInspector.UIString("Database no longer has expected version.");else
message=WebInspector.UIString("An unexpected error %s occurred.").format(error.code);let queryView=new WebInspector.DatabaseUserQueryErrorView(query,message);this.insertSubviewBefore(queryView,this._prompt);this._prompt.element.scrollIntoView(false);}};WebInspector.DatabaseContentView.Event={SchemaUpdated:"SchemaUpdated"};WebInspector.DatabaseHostTreeElement=class DatabaseHostTreeElement extends WebInspector.StorageTreeElement
{constructor(host)
{super(WebInspector.FolderTreeElement.FolderIconStyleClassName,WebInspector.displayNameForHost(host),null);this._host=host;this.hasChildren=true;this.expanded=true;}
get name()
{return WebInspector.displayNameForHost(this._host);}
get categoryName()
{return WebInspector.UIString("Databases");}};WebInspector.DatabaseTableContentView=class DatabaseTableContentView extends WebInspector.ContentView
{constructor(representedObject)
{super(representedObject);this.element.classList.add("database-table");this._refreshButtonNavigationItem=new WebInspector.ButtonNavigationItem("database-table-refresh",WebInspector.UIString("Refresh"),"Images/ReloadFull.svg",13,13);this._refreshButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._refreshButtonClicked,this);this._messageTextViewElement=null;this.update();}
get navigationItems()
{return[this._refreshButtonNavigationItem];}
update()
{this.representedObject.database.executeSQL("SELECT * FROM \""+this._escapeTableName(this.representedObject.name)+"\"",this._queryFinished.bind(this),this._queryError.bind(this));}
saveToCookie(cookie)
{cookie.type=WebInspector.ContentViewCookieType.DatabaseTable;cookie.host=this.representedObject.host;cookie.name=this.representedObject.name;cookie.database=this.representedObject.database.name;}
get scrollableElements()
{if(!this._dataGrid)
return[];return[this._dataGrid.scrollContainer];}
_escapeTableName(name)
{return name.replace(/\"/g,"\"\"");}
_queryFinished(columnNames,values)
{
if(this._dataGrid){this.removeSubview(this._dataGrid);this._dataGrid=null;}
if(this._messageTextViewElement)
this._messageTextViewElement.remove();if(columnNames.length){this._dataGrid=WebInspector.DataGrid.createSortableDataGrid(columnNames,values);this.addSubview(this._dataGrid);this._dataGrid.updateLayout();return;}
this._messageTextViewElement=WebInspector.createMessageTextView(WebInspector.UIString("The “%s”\ntable is empty.").format(this.representedObject.name),false);this.element.appendChild(this._messageTextViewElement);}
_queryError(error)
{if(this._dataGrid){this.removeSubview(this._dataGrid);this._dataGrid=null;}
if(this._messageTextViewElement)
this._messageTextViewElement.remove();this._messageTextViewElement=WebInspector.createMessageTextView(WebInspector.UIString("An error occurred trying to read the “%s” table.").format(this.representedObject.name),true);this.element.appendChild(this._messageTextViewElement);}
_refreshButtonClicked()
{this.update();}};WebInspector.DatabaseTableTreeElement=class DatabaseTableTreeElement extends WebInspector.GeneralTreeElement
{constructor(representedObject)
{super("database-table-icon",representedObject.name,null,representedObject,false);}};WebInspector.DatabaseTreeElement=class DatabaseTreeElement extends WebInspector.GeneralTreeElement
{constructor(representedObject)
{super("database-icon",representedObject.name,null,representedObject,true);this.hasChildren=false;
this.onpopulate();}
oncollapse()
{this.shouldRefreshChildren=true;}
onpopulate()
{if(this.children.length&&!this.shouldRefreshChildren)
return;this.shouldRefreshChildren=false;this.removeChildren();function tableNamesCallback(tableNames)
{for(var i=0;i<tableNames.length;++i){var databaseTable=new WebInspector.DatabaseTableObject(tableNames[i],this.representedObject);this.appendChild(new WebInspector.DatabaseTableTreeElement(databaseTable));}
this.hasChildren=tableNames.length;}
this.representedObject.getTableNames(tableNamesCallback.bind(this));}};WebInspector.DebuggerDashboardView=class DebuggerDashboardView extends WebInspector.DashboardView
{constructor(representedObject)
{super(representedObject,"debugger");WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange,this._rebuildLocation,this);this._navigationBar=new WebInspector.NavigationBar;this.element.appendChild(this._navigationBar.element);var tooltip=WebInspector.UIString("Continue script execution (%s or %s)").format(WebInspector.pauseOrResumeKeyboardShortcut.displayName,WebInspector.pauseOrResumeAlternateKeyboardShortcut.displayName);this._debuggerResumeButtonItem=new WebInspector.ActivateButtonNavigationItem("debugger-dashboard-pause",tooltip,tooltip,"Images/Resume.svg",15,15);this._debuggerResumeButtonItem.activated=true;this._debuggerResumeButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._resumeButtonClicked,this);this._navigationBar.addNavigationItem(this._debuggerResumeButtonItem);var message=this._messageElement=document.createElement("div");message.classList.add("message");message.title=message.textContent=WebInspector.UIString("Debugger Paused");this.element.appendChild(message);var dividerElement=document.createElement("div");dividerElement.classList.add("divider");this.element.appendChild(dividerElement);var locationElement=this._locationElement=document.createElement("div");locationElement.classList.add("location");this.element.appendChild(locationElement);this._rebuildLocation();}
_rebuildLocation()
{if(!WebInspector.debuggerManager.activeCallFrame)
return;this._locationElement.removeChildren();var callFrame=WebInspector.debuggerManager.activeCallFrame;var functionName=callFrame.functionName||WebInspector.UIString("(anonymous function)");var iconClassName=WebInspector.DebuggerDashboardView.FunctionIconStyleClassName;
if(callFrame.functionName&&callFrame.functionName.startsWith("on")&&callFrame.functionName.length>=5)
iconClassName=WebInspector.DebuggerDashboardView.EventListenerIconStyleClassName;var iconElement=document.createElement("div");iconElement.classList.add(iconClassName);this._locationElement.appendChild(iconElement);var iconImageElement=document.createElement("img");iconImageElement.className="icon";iconElement.appendChild(iconImageElement);var nameElement=document.createElement("div");nameElement.append(functionName);nameElement.classList.add("function-name");this._locationElement.appendChild(nameElement);const options={dontFloat:true,ignoreNetworkTab:true,ignoreSearchTab:true,};let linkElement=WebInspector.createSourceCodeLocationLink(WebInspector.debuggerManager.activeCallFrame.sourceCodeLocation,options);this._locationElement.appendChild(linkElement);}
_resumeButtonClicked()
{WebInspector.debuggerManager.resume();}};WebInspector.DebuggerDashboardView.FunctionIconStyleClassName=WebInspector.CallFrameView.FunctionIconStyleClassName;WebInspector.DebuggerDashboardView.EventListenerIconStyleClassName=WebInspector.CallFrameView.EventListenerIconStyleClassName;WebInspector.DebuggerSidebarPanel=class DebuggerSidebarPanel extends WebInspector.NavigationSidebarPanel
{constructor(contentBrowser)
{super("debugger",WebInspector.UIString("Debugger"),true);this.contentBrowser=contentBrowser;WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ResourceWasAdded,this._resourceAdded,this);WebInspector.Target.addEventListener(WebInspector.Target.Event.ResourceAdded,this._resourceAdded,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.BreakpointsEnabledDidChange,this._breakpointsEnabledDidChange,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.BreakpointAdded,this._breakpointAdded,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.BreakpointRemoved,this._breakpointRemoved,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptAdded,this._scriptAdded,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptRemoved,this._scriptRemoved,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptsCleared,this._scriptsCleared,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.Paused,this._debuggerDidPause,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.Resumed,this._debuggerDidResume,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.CallFramesDidChange,this._debuggerCallFramesDidChange,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange,this._debuggerActiveCallFrameDidChange,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.WaitingToPause,this._debuggerWaitingToPause,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.CapturingWillStart,this._timelineCapturingWillStart,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.CapturingStopped,this._timelineCapturingStopped,this);WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event.TargetAdded,this._targetAdded,this);WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event.TargetRemoved,this._targetRemoved,this);this._timelineRecordingWarningElement=document.createElement("div");this._timelineRecordingWarningElement.classList.add("warning-banner");this._timelineRecordingWarningElement.append(WebInspector.UIString("Debugger disabled during Timeline recording")," ");let stopRecordingLink=this._timelineRecordingWarningElement.appendChild(document.createElement("a"));stopRecordingLink.textContent=WebInspector.UIString("Stop recording");stopRecordingLink.addEventListener("click",()=>{WebInspector.timelineManager.stopCapturing();});this._breakpointsDisabledWarningElement=document.createElement("div");this._breakpointsDisabledWarningElement.classList.add("warning-banner");this._breakpointsDisabledWarningElement.append(WebInspector.UIString("Breakpoints disabled"),document.createElement("br"));let enableBreakpointsLink=this._breakpointsDisabledWarningElement.appendChild(document.createElement("a"));enableBreakpointsLink.textContent=WebInspector.UIString("Enable breakpoints");enableBreakpointsLink.addEventListener("click",()=>{WebInspector.debuggerToggleBreakpoints();});this._navigationBar=new WebInspector.NavigationBar;this.addSubview(this._navigationBar);var breakpointsImage={src:"Images/Breakpoints.svg",width:15,height:15};var pauseImage={src:"Images/Pause.svg",width:15,height:15};var resumeImage={src:"Images/Resume.svg",width:15,height:15};var stepOverImage={src:"Images/StepOver.svg",width:15,height:15};var stepIntoImage={src:"Images/StepInto.svg",width:15,height:15};var stepOutImage={src:"Images/StepOut.svg",width:15,height:15};var toolTip=WebInspector.UIString("Enable all breakpoints (%s)").format(WebInspector.toggleBreakpointsKeyboardShortcut.displayName);var altToolTip=WebInspector.UIString("Disable all breakpoints (%s)").format(WebInspector.toggleBreakpointsKeyboardShortcut.displayName);this._debuggerBreakpointsButtonItem=new WebInspector.ActivateButtonNavigationItem("debugger-breakpoints",toolTip,altToolTip,breakpointsImage.src,breakpointsImage.width,breakpointsImage.height);this._debuggerBreakpointsButtonItem.activated=WebInspector.debuggerManager.breakpointsEnabled;this._debuggerBreakpointsButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,WebInspector.debuggerToggleBreakpoints,this);this._navigationBar.addNavigationItem(this._debuggerBreakpointsButtonItem);toolTip=WebInspector.UIString("Pause script execution (%s or %s)").format(WebInspector.pauseOrResumeKeyboardShortcut.displayName,WebInspector.pauseOrResumeAlternateKeyboardShortcut.displayName);altToolTip=WebInspector.UIString("Continue script execution (%s or %s)").format(WebInspector.pauseOrResumeKeyboardShortcut.displayName,WebInspector.pauseOrResumeAlternateKeyboardShortcut.displayName);this._debuggerPauseResumeButtonItem=new WebInspector.ToggleButtonNavigationItem("debugger-pause-resume",toolTip,altToolTip,pauseImage.src,resumeImage.src,pauseImage.width,pauseImage.height);this._debuggerPauseResumeButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,WebInspector.debuggerPauseResumeToggle,this);this._navigationBar.addNavigationItem(this._debuggerPauseResumeButtonItem);this._debuggerStepOverButtonItem=new WebInspector.ButtonNavigationItem("debugger-step-over",WebInspector.UIString("Step over (%s or %s)").format(WebInspector.stepOverKeyboardShortcut.displayName,WebInspector.stepOverAlternateKeyboardShortcut.displayName),stepOverImage.src,stepOverImage.width,stepOverImage.height);this._debuggerStepOverButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,WebInspector.debuggerStepOver,this);this._debuggerStepOverButtonItem.enabled=false;this._navigationBar.addNavigationItem(this._debuggerStepOverButtonItem);this._debuggerStepIntoButtonItem=new WebInspector.ButtonNavigationItem("debugger-step-into",WebInspector.UIString("Step into (%s or %s)").format(WebInspector.stepIntoKeyboardShortcut.displayName,WebInspector.stepIntoAlternateKeyboardShortcut.displayName),stepIntoImage.src,stepIntoImage.width,stepIntoImage.height);this._debuggerStepIntoButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,WebInspector.debuggerStepInto,this);this._debuggerStepIntoButtonItem.enabled=false;this._navigationBar.addNavigationItem(this._debuggerStepIntoButtonItem);this._debuggerStepOutButtonItem=new WebInspector.ButtonNavigationItem("debugger-step-out",WebInspector.UIString("Step out (%s or %s)").format(WebInspector.stepOutKeyboardShortcut.displayName,WebInspector.stepOutAlternateKeyboardShortcut.displayName),stepOutImage.src,stepOutImage.width,stepOutImage.height);this._debuggerStepOutButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,WebInspector.debuggerStepOut,this);this._debuggerStepOutButtonItem.enabled=false;this._navigationBar.addNavigationItem(this._debuggerStepOutButtonItem);this.element.classList.add(WebInspector.DebuggerSidebarPanel.OffsetSectionsStyleClassName);this._allExceptionsBreakpointTreeElement=new WebInspector.BreakpointTreeElement(WebInspector.debuggerManager.allExceptionsBreakpoint,WebInspector.DebuggerSidebarPanel.ExceptionIconStyleClassName,WebInspector.UIString("All Exceptions"));this._allUncaughtExceptionsBreakpointTreeElement=new WebInspector.BreakpointTreeElement(WebInspector.debuggerManager.allUncaughtExceptionsBreakpoint,WebInspector.DebuggerSidebarPanel.ExceptionIconStyleClassName,WebInspector.UIString("Uncaught Exceptions"));this._assertionsBreakpointTreeElement=new WebInspector.BreakpointTreeElement(WebInspector.debuggerManager.assertionsBreakpoint,WebInspector.DebuggerSidebarPanel.AssertionIconStyleClassName,WebInspector.UIString("Assertion Failures"));this.suppressFilteringOnTreeElements([this._allExceptionsBreakpointTreeElement,this._allUncaughtExceptionsBreakpointTreeElement,this._assertionsBreakpointTreeElement]);this.filterBar.placeholder=WebInspector.UIString("Filter List");function showResourcesWithIssuesOnlyFilterFunction(treeElement)
{if(treeElement.treeOutline!==this._scriptsContentTreeOutline)
return true;if(treeElement instanceof WebInspector.IssueTreeElement)
return true;if(treeElement.hasChildren){for(let child of treeElement.children){if(child instanceof WebInspector.IssueTreeElement)
return true;}}
return false;}
this.filterBar.addFilterBarButton("debugger-show-resources-with-issues-only",showResourcesWithIssuesOnlyFilterFunction.bind(this),false,WebInspector.UIString("Only show resources with issues"),WebInspector.UIString("Show all resources"),"Images/Errors.svg",15,15);this._breakpointsContentTreeOutline=this.contentTreeOutline;let breakpointsRow=new WebInspector.DetailsSectionRow;breakpointsRow.element.appendChild(this._breakpointsContentTreeOutline.element);let breakpointsGroup=new WebInspector.DetailsSectionGroup([breakpointsRow]);let breakpointsSection=new WebInspector.DetailsSection("breakpoints",WebInspector.UIString("Breakpoints"),[breakpointsGroup]);this.contentView.element.appendChild(breakpointsSection.element);this._breakpointSectionElement=breakpointsSection.element;this._breakpointsContentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._treeSelectionDidChange,this);this._breakpointsContentTreeOutline.ondelete=this._breakpointTreeOutlineDeleteTreeElement.bind(this);this._breakpointsContentTreeOutline.populateContextMenu=function(contextMenu,event,treeElement){this._breakpointTreeOutlineContextMenuTreeElement(contextMenu,event,treeElement);WebInspector.TreeOutline.prototype.populateContextMenu(contextMenu,event,treeElement);}.bind(this);this._breakpointsContentTreeOutline.appendChild(this._allExceptionsBreakpointTreeElement);this._breakpointsContentTreeOutline.appendChild(this._allUncaughtExceptionsBreakpointTreeElement);if(DebuggerAgent.setPauseOnAssertions)
this._breakpointsContentTreeOutline.appendChild(this._assertionsBreakpointTreeElement);if(WebInspector.domDebuggerManager.supported){this._domBreakpointsContentTreeOutline=this.createContentTreeOutline(true);this._domBreakpointsContentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementAdded,this._domBreakpointAddedOrRemoved,this);this._domBreakpointsContentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementRemoved,this._domBreakpointAddedOrRemoved,this);this._domBreakpointTreeController=new WebInspector.DOMBreakpointTreeController(this._domBreakpointsContentTreeOutline);this._domBreakpointsRow=new WebInspector.DetailsSectionRow(WebInspector.UIString("No Breakpoints"));this._domBreakpointsRow.element.appendChild(this._domBreakpointsContentTreeOutline.element);this._domBreakpointsRow.showEmptyMessage();const defaultCollapsed=true;let domBreakpointsGroup=new WebInspector.DetailsSectionGroup([this._domBreakpointsRow]);this._domBreakpointsSection=new WebInspector.DetailsSection("dom-breakpoints",WebInspector.UIString("DOM Breakpoints"),[domBreakpointsGroup],null,defaultCollapsed);this.contentView.element.appendChild(this._domBreakpointsSection.element);this._xhrBreakpointsContentTreeOutline=this.createContentTreeOutline(true);this._xhrBreakpointTreeController=new WebInspector.XHRBreakpointTreeController(this._xhrBreakpointsContentTreeOutline);this._xhrBreakpointsRow=new WebInspector.DetailsSectionRow;this._xhrBreakpointsRow.element.appendChild(this._xhrBreakpointsContentTreeOutline.element);let navigationBar=new WebInspector.NavigationBar;let navigationBarWrapper=document.createElement("div");navigationBarWrapper.appendChild(navigationBar.element);let addXHRBreakpointButton=new WebInspector.ButtonNavigationItem("add-xhr-breakpoint",WebInspector.UIString("Add XHR Breakpoint"),"Images/Plus13.svg",13,13);addXHRBreakpointButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._addXHRBreakpointButtonClicked,this);navigationBar.addNavigationItem(addXHRBreakpointButton);let xhrBreakpointsGroup=new WebInspector.DetailsSectionGroup([this._xhrBreakpointsRow]);let xhrBreakpointsSection=new WebInspector.DetailsSection("xhr-breakpoints",WebInspector.UIString("XHR Breakpoints"),[xhrBreakpointsGroup],navigationBarWrapper,defaultCollapsed);this.contentView.element.appendChild(xhrBreakpointsSection.element);}
this._scriptsContentTreeOutline=this.createContentTreeOutline();this._scriptsContentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._treeSelectionDidChange,this);this._scriptsContentTreeOutline.includeSourceMapResourceChildren=true;let scriptsRow=new WebInspector.DetailsSectionRow;scriptsRow.element.appendChild(this._scriptsContentTreeOutline.element);let scriptsGroup=new WebInspector.DetailsSectionGroup([scriptsRow]);this._scriptsSection=new WebInspector.DetailsSection("scripts",WebInspector.UIString("Sources"),[scriptsGroup]);this.contentView.element.appendChild(this._scriptsSection.element);const suppressFiltering=true;this._callStackTreeOutline=this.createContentTreeOutline(suppressFiltering);this._callStackTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._treeSelectionDidChange,this);this._mainTargetTreeElement=new WebInspector.ThreadTreeElement(WebInspector.mainTarget);this._callStackTreeOutline.appendChild(this._mainTargetTreeElement);this._updateCallStackTreeOutline();this._callStackRow=new WebInspector.DetailsSectionRow;this._callStackRow.element.appendChild(this._callStackTreeOutline.element);this._callStackGroup=new WebInspector.DetailsSectionGroup([this._callStackRow]);this._callStackSection=new WebInspector.DetailsSection("call-stack",WebInspector.UIString("Call Stack"),[this._callStackGroup]);this._showingSingleThreadCallStack=true;this._activeCallFrameTreeElement=null;this._pauseReasonTreeOutline=null;this._pauseReasonLinkContainerElement=document.createElement("span");this._pauseReasonTextRow=new WebInspector.DetailsSectionTextRow;this._pauseReasonGroup=new WebInspector.DetailsSectionGroup([this._pauseReasonTextRow]);this._pauseReasonSection=new WebInspector.DetailsSection("paused-reason",WebInspector.UIString("Pause Reason"),[this._pauseReasonGroup],this._pauseReasonLinkContainerElement);WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.DisplayLocationDidChange,this._handleDebuggerObjectDisplayLocationDidChange,this);WebInspector.IssueMessage.addEventListener(WebInspector.IssueMessage.Event.DisplayLocationDidChange,this._handleDebuggerObjectDisplayLocationDidChange,this);WebInspector.issueManager.addEventListener(WebInspector.IssueManager.Event.IssueWasAdded,this._handleIssueAdded,this);WebInspector.issueManager.addEventListener(WebInspector.IssueManager.Event.Cleared,this._handleIssuesCleared,this);if(WebInspector.frameResourceManager.mainFrame)
this._addResourcesRecursivelyForFrame(WebInspector.frameResourceManager.mainFrame);for(var script of WebInspector.debuggerManager.knownNonResourceScripts)
this._addScript(script);if(WebInspector.debuggerManager.paused)
this._debuggerDidPause(null);if(WebInspector.timelineManager.isCapturing()&&WebInspector.debuggerManager.breakpointsDisabledTemporarily)
this._timelineCapturingWillStart(null);this._updateBreakpointsDisabledBanner();}
get minimumWidth()
{return this._navigationBar.minimumWidth;}
closed()
{super.closed();this._domBreakpointTreeController.disconnect();this._domBreakpointTreeController=null;WebInspector.Frame.removeEventListener(null,null,this);WebInspector.debuggerManager.removeEventListener(null,null,this);WebInspector.Breakpoint.removeEventListener(null,null,this);WebInspector.IssueMessage.removeEventListener(null,null,this);}
showDefaultContentView()
{if(WebInspector.frameResourceManager.mainFrame){let mainTreeElement=this._scriptsContentTreeOutline.findTreeElement(WebInspector.frameResourceManager.mainFrame.mainResource);if(mainTreeElement&&this.showDefaultContentViewForTreeElement(mainTreeElement))
return;}
let currentTreeElement=this._scriptsContentTreeOutline.children[0];while(currentTreeElement&&!currentTreeElement.root){if(currentTreeElement instanceof WebInspector.ResourceTreeElement||currentTreeElement instanceof WebInspector.ScriptTreeElement){if(this.showDefaultContentViewForTreeElement(currentTreeElement))
return;}
currentTreeElement=currentTreeElement.traverseNextTreeElement(false,null,true);}}
treeElementForRepresentedObject(representedObject)
{if(representedObject instanceof WebInspector.Frame)
representedObject=representedObject.mainResource;let treeElement=this._breakpointsContentTreeOutline.findTreeElement(representedObject);if(!treeElement)
treeElement=this._scriptsContentTreeOutline.findTreeElement(representedObject);if(treeElement)
return treeElement;if(!(representedObject instanceof WebInspector.Script)){console.error("Didn't find a TreeElement for representedObject",representedObject);return null;}
if(representedObject.url){console.error("Didn't find a ScriptTreeElement for a Script with a URL.");return null;}
return this._addScript(representedObject);}
saveStateToCookie(cookie)
{var selectedTreeElement=this._breakpointsContentTreeOutline.selectedTreeElement;if(!selectedTreeElement){super.saveStateToCookie(cookie);return;}
var representedObject=selectedTreeElement.representedObject;if(representedObject===WebInspector.debuggerManager.allExceptionsBreakpoint){cookie[WebInspector.DebuggerSidebarPanel.SelectedAllExceptionsCookieKey]=true;return;}
if(representedObject===WebInspector.debuggerManager.allUncaughtExceptionsBreakpoint){cookie[WebInspector.DebuggerSidebarPanel.SelectedAllUncaughtExceptionsCookieKey]=true;return;}
if(representedObject===WebInspector.debuggerManager.assertionsBreakpoint){cookie[WebInspector.DebuggerSidebarPanel.SelectedAssertionsCookieKey]=true;return;}
if(representedObject===WebInspector.domDebuggerManager.allRequestsBreakpoint){cookie[WebInspector.DebuggerSidebarPanel.SelectedAllRequestsCookieKey]=true;return;}
super.saveStateToCookie(cookie);}
restoreStateFromCookie(cookie,relaxedMatchDelay)
{if(cookie[WebInspector.DebuggerSidebarPanel.SelectedAllExceptionsCookieKey])
this._allExceptionsBreakpointTreeElement.revealAndSelect();else if(cookie[WebInspector.DebuggerSidebarPanel.SelectedAllUncaughtExceptionsCookieKey])
this._allUncaughtExceptionsBreakpointTreeElement.revealAndSelect();else if(cookie[WebInspector.DebuggerSidebarPanel.SelectedAssertionsCookieKey])
this._assertionsBreakpointTreeElement.revealAndSelect();else if(cookie[WebInspector.DebuggerSidebarPanel.SelectedAllRequestsCookieKey])
this._xhrBreakpointTreeController.revealAndSelect(WebInspector.domDebuggerManager.allRequestsBreakpoint);else
super.restoreStateFromCookie(cookie,relaxedMatchDelay);}
_debuggerWaitingToPause(event)
{this._debuggerPauseResumeButtonItem.enabled=false;}
_debuggerDidPause(event)
{this.contentView.element.insertBefore(this._callStackSection.element,this.contentView.element.firstChild);if(this._updatePauseReason())
this.contentView.element.insertBefore(this._pauseReasonSection.element,this.contentView.element.firstChild);this._debuggerPauseResumeButtonItem.enabled=true;this._debuggerPauseResumeButtonItem.toggled=true;this._debuggerStepOverButtonItem.enabled=true;this._debuggerStepIntoButtonItem.enabled=true;this._debuggerStepOutButtonItem.enabled=true;this.element.classList.add(WebInspector.DebuggerSidebarPanel.DebuggerPausedStyleClassName);}
_debuggerDidResume(event)
{this._callStackSection.element.remove();this._pauseReasonSection.element.remove();this._debuggerPauseResumeButtonItem.enabled=true;this._debuggerPauseResumeButtonItem.toggled=false;this._debuggerStepOverButtonItem.enabled=false;this._debuggerStepIntoButtonItem.enabled=false;this._debuggerStepOutButtonItem.enabled=false;this.element.classList.remove(WebInspector.DebuggerSidebarPanel.DebuggerPausedStyleClassName);}
_breakpointsEnabledDidChange(event)
{this._debuggerBreakpointsButtonItem.activated=WebInspector.debuggerManager.breakpointsEnabled;this._updateBreakpointsDisabledBanner();}
_addBreakpoint(breakpoint)
{let sourceCode=breakpoint.sourceCodeLocation.displaySourceCode;if(!sourceCode)
return null;if(this._breakpointsContentTreeOutline.findTreeElement(breakpoint))
return;let parentTreeElement=this._addTreeElementForSourceCodeToTreeOutline(sourceCode,this._breakpointsContentTreeOutline);
if(breakpoint.disabled)
breakpoint.resolved=true;let breakpointTreeElement=new WebInspector.BreakpointTreeElement(breakpoint);parentTreeElement.insertChild(breakpointTreeElement,insertionIndexForObjectInListSortedByFunction(breakpointTreeElement,parentTreeElement.children,this._compareTreeElements));if(parentTreeElement.children.length===1)
parentTreeElement.expand();return breakpointTreeElement;}
_addBreakpointsForSourceCode(sourceCode)
{var breakpoints=WebInspector.debuggerManager.breakpointsForSourceCode(sourceCode);for(var i=0;i<breakpoints.length;++i)
this._addBreakpoint(breakpoints[i],sourceCode);}
_addIssuesForSourceCode(sourceCode)
{var issues=WebInspector.issueManager.issuesForSourceCode(sourceCode);for(var issue of issues)
this._addIssue(issue);}
_addTreeElementForSourceCodeToTreeOutline(sourceCode,treeOutline)
{let treeElement=treeOutline.getCachedTreeElement(sourceCode);if(!treeElement){if(sourceCode instanceof WebInspector.SourceMapResource)
treeElement=new WebInspector.SourceMapResourceTreeElement(sourceCode);else if(sourceCode instanceof WebInspector.Resource)
treeElement=new WebInspector.ResourceTreeElement(sourceCode);else if(sourceCode instanceof WebInspector.Script)
treeElement=new WebInspector.ScriptTreeElement(sourceCode);}
if(!treeElement){console.error("Unknown sourceCode instance",sourceCode);return null;}
if(!treeElement.parent){treeElement.hasChildren=false;treeElement.expand();treeOutline.insertChild(treeElement,insertionIndexForObjectInListSortedByFunction(treeElement,treeOutline.children,this._compareTopLevelTreeElements.bind(this)));}
return treeElement;}
_addResourcesRecursivelyForFrame(frame)
{this._addResource(frame.mainResource);for(let resource of frame.resourceCollection.items)
this._addResource(resource);for(let childFrame of frame.childFrameCollection.items)
this._addResourcesRecursivelyForFrame(childFrame);}
_resourceAdded(event)
{this._addResource(event.data.resource);}
_addResource(resource)
{if(![WebInspector.Resource.Type.Document,WebInspector.Resource.Type.Script].includes(resource.type))
return;let treeElement=this._addTreeElementForSourceCodeToTreeOutline(resource,this._scriptsContentTreeOutline);this._addBreakpointsForSourceCode(resource);this._addIssuesForSourceCode(resource);if(this.parentSidebar&&!this.contentBrowser.currentContentView)
this.showDefaultContentViewForTreeElement(treeElement);}
_mainResourceDidChange(event)
{if(event.target.isMainFrame()){
this.pruneStaleResourceTreeElements();this.contentBrowser.contentViewContainer.closeAllContentViews();}
if(!event.data.oldMainResource){var resource=event.target.mainResource;this._addTreeElementForSourceCodeToTreeOutline(resource,this._scriptsContentTreeOutline);this._addBreakpointsForSourceCode(resource);this._addIssuesForSourceCode(resource);}}
_timelineCapturingWillStart(event)
{this._debuggerBreakpointsButtonItem.enabled=false;this._debuggerPauseResumeButtonItem.enabled=false;this.contentView.element.insertBefore(this._timelineRecordingWarningElement,this.contentView.element.firstChild);this._updateBreakpointsDisabledBanner();}
_timelineCapturingStopped(event)
{this._debuggerBreakpointsButtonItem.enabled=true;this._debuggerPauseResumeButtonItem.enabled=true;this._timelineRecordingWarningElement.remove();this._updateBreakpointsDisabledBanner();}
_updateBreakpointsDisabledBanner()
{let breakpointsEnabled=WebInspector.debuggerManager.breakpointsEnabled;let timelineWarningShowing=!!this._timelineRecordingWarningElement.parentElement;if(!breakpointsEnabled&&!timelineWarningShowing)
this.contentView.element.insertBefore(this._breakpointsDisabledWarningElement,this.contentView.element.firstChild);else
this._breakpointsDisabledWarningElement.remove();}
_scriptAdded(event)
{this._addScript(event.data.script);}
_addScript(script)
{if(!script.url&&!script.sourceURL)
return null;if(script.dynamicallyAddedScriptElement&&!script.sourceURL)
return null;
if(script.resource)
return null;let treeElement=this._addTreeElementForSourceCodeToTreeOutline(script,this._scriptsContentTreeOutline);this._addBreakpointsForSourceCode(script);this._addIssuesForSourceCode(script);if(this.parentSidebar&&!this.contentBrowser.currentContentView)
this.showDefaultContentViewForTreeElement(treeElement);return treeElement;}
_scriptRemoved(event)
{function removeScript(script,treeOutline)
{let scriptTreeElement=treeOutline.getCachedTreeElement(script);if(scriptTreeElement)
scriptTreeElement.parent.removeChild(scriptTreeElement);}
let script=event.data.script;removeScript(script,this._breakpointsContentTreeOutline);removeScript(script,this._scriptsContentTreeOutline);}
_scriptsCleared(event)
{for(var i=this._breakpointsContentTreeOutline.children.length-1;i>=0;--i){var treeElement=this._breakpointsContentTreeOutline.children[i];if(!(treeElement instanceof WebInspector.ScriptTreeElement))
continue;this._breakpointsContentTreeOutline.removeChildAtIndex(i,true,true);}
this._scriptsContentTreeOutline.removeChildren();this._addResourcesRecursivelyForFrame(WebInspector.frameResourceManager.mainFrame);}
_breakpointAdded(event)
{var breakpoint=event.data.breakpoint;this._addBreakpoint(breakpoint);}
_breakpointRemoved(event)
{var breakpoint=event.data.breakpoint;if(this._pauseReasonTreeOutline){var pauseReasonBreakpointTreeElement=this._pauseReasonTreeOutline.getCachedTreeElement(breakpoint);if(pauseReasonBreakpointTreeElement)
pauseReasonBreakpointTreeElement.removeStatusImage();}
var breakpointTreeElement=this._breakpointsContentTreeOutline.getCachedTreeElement(breakpoint);if(!breakpointTreeElement)
return;this._removeDebuggerTreeElement(breakpointTreeElement);}
_findThreadTreeElementForTarget(target)
{for(let child of this._callStackTreeOutline.children){if(child.target===target)
return child;}
return null;}
_targetAdded(event)
{let target=event.data.target;let treeElement=new WebInspector.ThreadTreeElement(target);this._callStackTreeOutline.appendChild(treeElement);this._updateCallStackTreeOutline();}
_targetRemoved(event)
{let target=event.data.target;let treeElement=this._findThreadTreeElementForTarget(target);this._callStackTreeOutline.removeChild(treeElement);this._updateCallStackTreeOutline();}
_updateCallStackTreeOutline()
{let singleThreadShowing=WebInspector.targets.size===1;this._callStackTreeOutline.element.classList.toggle("single-thread",singleThreadShowing);this._mainTargetTreeElement.selectable=!singleThreadShowing;}
_handleDebuggerObjectDisplayLocationDidChange(event)
{var debuggerObject=event.target;if(event.data.oldDisplaySourceCode===debuggerObject.sourceCodeLocation.displaySourceCode)
return;var debuggerTreeElement=this._breakpointsContentTreeOutline.getCachedTreeElement(debuggerObject);if(!debuggerTreeElement)
return;
var wasSelected=debuggerTreeElement.selected;this._removeDebuggerTreeElement(debuggerTreeElement);var newDebuggerTreeElement=this._addDebuggerObject(debuggerObject);if(newDebuggerTreeElement&&wasSelected)
newDebuggerTreeElement.revealAndSelect(true,false,true,true);}
_removeDebuggerTreeElement(debuggerTreeElement)
{
if(!debuggerTreeElement.__deletedViaDeleteKeyboardShortcut)
debuggerTreeElement.deselect();let parentTreeElement=debuggerTreeElement.parent;parentTreeElement.removeChild(debuggerTreeElement);if(parentTreeElement.children.length)
return;parentTreeElement.treeOutline.removeChild(parentTreeElement);}
_debuggerCallFramesDidChange(event)
{let target=event.data.target;let treeElement=this._findThreadTreeElementForTarget(target);treeElement.refresh();}
_debuggerActiveCallFrameDidChange()
{if(this._activeCallFrameTreeElement){this._activeCallFrameTreeElement.isActiveCallFrame=false;this._activeCallFrameTreeElement=null;}
if(!WebInspector.debuggerManager.activeCallFrame)
return;this._activeCallFrameTreeElement=this._callStackTreeOutline.findTreeElement(WebInspector.debuggerManager.activeCallFrame);if(this._activeCallFrameTreeElement)
this._activeCallFrameTreeElement.isActiveCallFrame=true;}
_breakpointsBeneathTreeElement(treeElement)
{if(!(treeElement instanceof WebInspector.ResourceTreeElement)&&!(treeElement instanceof WebInspector.ScriptTreeElement))
return[];var breakpoints=[];var breakpointTreeElements=treeElement.children;for(var i=0;i<breakpointTreeElements.length;++i){var breakpoint=breakpointTreeElements[i].breakpoint;if(breakpoint)
breakpoints.push(breakpoint);}
return breakpoints;}
_removeAllBreakpoints(breakpoints)
{for(var i=0;i<breakpoints.length;++i){var breakpoint=breakpoints[i];if(WebInspector.debuggerManager.isBreakpointRemovable(breakpoint))
WebInspector.debuggerManager.removeBreakpoint(breakpoint);}}
_toggleAllBreakpoints(breakpoints,disabled)
{for(var i=0;i<breakpoints.length;++i)
breakpoints[i].disabled=disabled;}
_breakpointTreeOutlineDeleteTreeElement(treeElement)
{if(!(treeElement instanceof WebInspector.ResourceTreeElement)&&!(treeElement instanceof WebInspector.ScriptTreeElement))
return false;var wasTopResourceTreeElement=treeElement.previousSibling===this._assertionsBreakpointTreeElement||treeElement.previousSibling===this._allUncaughtExceptionsBreakpointTreeElement;var nextSibling=treeElement.nextSibling;var breakpoints=this._breakpointsBeneathTreeElement(treeElement);this._removeAllBreakpoints(breakpoints);if(wasTopResourceTreeElement&&nextSibling)
nextSibling.select(true,true);return true;}
_breakpointTreeOutlineContextMenuTreeElement(contextMenu,event,treeElement)
{
if(!(treeElement instanceof WebInspector.ResourceTreeElement)&&!(treeElement instanceof WebInspector.ScriptTreeElement))
return;let breakpoints=this._breakpointsBeneathTreeElement(treeElement);let shouldDisable=breakpoints.some((breakpoint)=>!breakpoint.disabled);let removeAllResourceBreakpoints=()=>{this._removeAllBreakpoints(breakpoints);};let toggleAllResourceBreakpoints=()=>{this._toggleAllBreakpoints(breakpoints,shouldDisable);};if(shouldDisable)
contextMenu.appendItem(WebInspector.UIString("Disable Breakpoints"),toggleAllResourceBreakpoints);else
contextMenu.appendItem(WebInspector.UIString("Enable Breakpoints"),toggleAllResourceBreakpoints);contextMenu.appendItem(WebInspector.UIString("Delete Breakpoints"),removeAllResourceBreakpoints);}
_treeSelectionDidChange(event)
{if(!this.visible)
return;let treeElement=event.data.selectedElement;if(!treeElement)
return;const options={ignoreNetworkTab:true,ignoreSearchTab:true,};if(treeElement instanceof WebInspector.ResourceTreeElement||treeElement instanceof WebInspector.ScriptTreeElement){WebInspector.showSourceCode(treeElement.representedObject,options);return;}
if(treeElement instanceof WebInspector.CallFrameTreeElement){let callFrame=treeElement.callFrame;if(callFrame.id)
WebInspector.debuggerManager.activeCallFrame=callFrame;if(callFrame.sourceCodeLocation)
WebInspector.showSourceCodeLocation(callFrame.sourceCodeLocation,options);return;}
if(treeElement instanceof WebInspector.IssueTreeElement){WebInspector.showSourceCodeLocation(treeElement.issueMessage.sourceCodeLocation,options);return;}
if(!(treeElement instanceof WebInspector.BreakpointTreeElement))
return;let breakpoint=treeElement.breakpoint;if(treeElement.treeOutline===this._pauseReasonTreeOutline){WebInspector.showSourceCodeLocation(breakpoint.sourceCodeLocation,options);return;}
if(!treeElement.parent.representedObject)
return;if(!(treeElement.parent.representedObject instanceof WebInspector.SourceCode))
return;WebInspector.showSourceCodeLocation(breakpoint.sourceCodeLocation,options);}
_compareTopLevelTreeElements(a,b)
{function isSpecialBreakpoint(treeElement)
{return treeElement.representedObject===WebInspector.debuggerManager.allExceptionsBreakpoint||treeElement.representedObject===WebInspector.debuggerManager.allUncaughtExceptionsBreakpoint||treeElement.representedObject===WebInspector.debuggerManager.assertionsBreakpoint;}
if(isSpecialBreakpoint(a))
return-1;if(isSpecialBreakpoint(b))
return 1;return a.mainTitle.extendedLocaleCompare(b.mainTitle);}
_compareTreeElements(a,b)
{if(!a.representedObject||!b.representedObject)
return 0;let aLocation=a.representedObject.sourceCodeLocation;let bLocation=b.representedObject.sourceCodeLocation;if(!aLocation||!bLocation)
return 0;var comparisonResult=aLocation.displayLineNumber-bLocation.displayLineNumber;if(comparisonResult!==0)
return comparisonResult;return aLocation.displayColumnNumber-bLocation.displayColumnNumber;}
_updatePauseReason()
{this._pauseReasonTreeOutline=null;this._updatePauseReasonGotoArrow();return this._updatePauseReasonSection();}
_updatePauseReasonSection()
{let target=WebInspector.debuggerManager.activeCallFrame.target;let targetData=WebInspector.debuggerManager.dataForTarget(target);let{pauseReason,pauseData}=targetData;switch(pauseReason){case WebInspector.DebuggerManager.PauseReason.Assertion:if(pauseData&&pauseData.message){this._pauseReasonTextRow.text=WebInspector.UIString("Assertion with message: %s").format(pauseData.message);return true;}
this._pauseReasonTextRow.text=WebInspector.UIString("Assertion Failed");this._pauseReasonGroup.rows=[this._pauseReasonTextRow];return true;case WebInspector.DebuggerManager.PauseReason.Breakpoint:if(pauseData&&pauseData.breakpointId){const suppressFiltering=true;this._pauseReasonTreeOutline=this.createContentTreeOutline(suppressFiltering);this._pauseReasonTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._treeSelectionDidChange,this);let breakpoint=WebInspector.debuggerManager.breakpointForIdentifier(pauseData.breakpointId);let breakpointTreeElement=new WebInspector.BreakpointTreeElement(breakpoint,WebInspector.DebuggerSidebarPanel.PausedBreakpointIconStyleClassName,WebInspector.UIString("Triggered Breakpoint"));let breakpointDetailsSection=new WebInspector.DetailsSectionRow;this._pauseReasonTreeOutline.appendChild(breakpointTreeElement);breakpointDetailsSection.element.appendChild(this._pauseReasonTreeOutline.element);this._pauseReasonGroup.rows=[breakpointDetailsSection];return true;}
break;case WebInspector.DebuggerManager.PauseReason.CSPViolation:if(pauseData){this._pauseReasonTextRow.text=WebInspector.UIString("Content Security Policy violation of directive: %s").format(pauseData.directive||pauseData.directiveText);this._pauseReasonGroup.rows=[this._pauseReasonTextRow];return true;}
break;case WebInspector.DebuggerManager.PauseReason.DebuggerStatement:this._pauseReasonTextRow.text=WebInspector.UIString("Debugger Statement");this._pauseReasonGroup.rows=[this._pauseReasonTextRow];return true;case WebInspector.DebuggerManager.PauseReason.DOM:if(pauseData&&pauseData.nodeId){let domNode=WebInspector.domTreeManager.nodeForId(pauseData.nodeId);let domBreakpoints=WebInspector.domDebuggerManager.domBreakpointsForNode(domNode);let domBreakpoint;for(let breakpoint of domBreakpoints){if(breakpoint.type===pauseData.type){domBreakpoint=breakpoint;break;}}
if(!domBreakpoint)
return;const suppressFiltering=true;this._pauseReasonTreeOutline=this.createContentTreeOutline(suppressFiltering);let type=WebInspector.DOMBreakpointTreeElement.displayNameForType(domBreakpoint.type);let domBreakpointTreeElement=new WebInspector.DOMBreakpointTreeElement(domBreakpoint,WebInspector.DebuggerSidebarPanel.PausedBreakpointIconStyleClassName,type);let domBreakpointRow=new WebInspector.DetailsSectionRow;this._pauseReasonTreeOutline.appendChild(domBreakpointTreeElement);domBreakpointRow.element.appendChild(this._pauseReasonTreeOutline.element);let ownerElementRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Element"),WebInspector.linkifyNodeReference(domNode));this._pauseReasonGroup.rows=[domBreakpointRow,ownerElementRow];if(domBreakpoint.type!==WebInspector.DOMBreakpoint.Type.SubtreeModified)
return true;let remoteObject=WebInspector.RemoteObject.fromPayload(pauseData.targetNode,target);remoteObject.pushNodeToFrontend((nodeId)=>{if(!nodeId)
return;let node=WebInspector.domTreeManager.nodeForId(nodeId);if(!node)
return;let fragment=document.createDocumentFragment();let description=pauseData.insertion?WebInspector.UIString("Child added to "):WebInspector.UIString("Removed descendant ");fragment.append(description,WebInspector.linkifyNodeReference(node));let targetDescriptionRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Details"),fragment);targetDescriptionRow.element.classList.add("target-description");this._pauseReasonGroup.rows=this._pauseReasonGroup.rows.concat(targetDescriptionRow);});return true;}
break;case WebInspector.DebuggerManager.PauseReason.Exception:if(pauseData){var data=WebInspector.RemoteObject.fromPayload(pauseData,target);this._pauseReasonTextRow.text=WebInspector.UIString("Exception with thrown value: %s").format(data.description);this._pauseReasonGroup.rows=[this._pauseReasonTextRow];return true;}
break;case WebInspector.DebuggerManager.PauseReason.PauseOnNextStatement:this._pauseReasonTextRow.text=WebInspector.UIString("Immediate Pause Requested");this._pauseReasonGroup.rows=[this._pauseReasonTextRow];return true;case WebInspector.DebuggerManager.PauseReason.XHR:if(pauseData){if(pauseData.breakpointURL){let xhrBreakpoint=WebInspector.domDebuggerManager.xhrBreakpointForURL(pauseData.breakpointURL);this._pauseReasonTreeOutline=this.createContentTreeOutline(true);let xhrBreakpointTreeElement=new WebInspector.XHRBreakpointTreeElement(xhrBreakpoint,WebInspector.DebuggerSidebarPanel.PausedBreakpointIconStyleClassName,WebInspector.UIString("Triggered XHR Breakpoint"));let xhrBreakpointRow=new WebInspector.DetailsSectionRow;this._pauseReasonTreeOutline.appendChild(xhrBreakpointTreeElement);xhrBreakpointRow.element.appendChild(this._pauseReasonTreeOutline.element);this._pauseReasonTextRow.text=pauseData.url;this._pauseReasonGroup.rows=[xhrBreakpointRow,this._pauseReasonTextRow];}else{this._pauseReasonTextRow.text=WebInspector.UIString("Requesting: %s").format(pauseData.url);this._pauseReasonGroup.rows=[this._pauseReasonTextRow];}
this._pauseReasonTextRow.element.title=pauseData.url;return true;}
break;case WebInspector.DebuggerManager.PauseReason.Other:console.error("Paused for unknown reason. We should always have a reason.");break;}
return false;}
_updatePauseReasonGotoArrow()
{this._pauseReasonLinkContainerElement.removeChildren();var activeCallFrame=WebInspector.debuggerManager.activeCallFrame;if(!activeCallFrame)
return;var sourceCodeLocation=activeCallFrame.sourceCodeLocation;if(!sourceCodeLocation)
return;const options={useGoToArrowButton:true,ignoreNetworkTab:true,ignoreSearchTab:true,};let linkElement=WebInspector.createSourceCodeLocationLink(sourceCodeLocation,options);this._pauseReasonLinkContainerElement.appendChild(linkElement);}
_addDebuggerObject(debuggerObject)
{if(debuggerObject instanceof WebInspector.Breakpoint)
return this._addBreakpoint(debuggerObject);if(debuggerObject instanceof WebInspector.IssueMessage)
return this._addIssue(debuggerObject);return null;}
_addIssue(issueMessage)
{let issueTreeElement=this._scriptsContentTreeOutline.findTreeElement(issueMessage);if(issueTreeElement)
return issueTreeElement;let parentTreeElement=this._addTreeElementForSourceCodeToTreeOutline(issueMessage.sourceCodeLocation.sourceCode,this._scriptsContentTreeOutline);if(!parentTreeElement)
return null;issueTreeElement=new WebInspector.IssueTreeElement(issueMessage);parentTreeElement.insertChild(issueTreeElement,insertionIndexForObjectInListSortedByFunction(issueTreeElement,parentTreeElement.children,this._compareTreeElements));if(parentTreeElement.children.length===1)
parentTreeElement.expand();return issueTreeElement;}
_handleIssueAdded(event)
{var issue=event.data.issue;if(!issue.sourceCodeLocation||!issue.sourceCodeLocation.sourceCode||(issue.source!=="javascript"&&issue.source!=="console-api"))
return;this._addIssue(issue);}
_handleIssuesCleared(event)
{let currentTreeElement=this._scriptsContentTreeOutline.children[0];let issueTreeElements=[];while(currentTreeElement&&!currentTreeElement.root){if(currentTreeElement instanceof WebInspector.IssueTreeElement)
issueTreeElements.push(currentTreeElement);currentTreeElement=currentTreeElement.traverseNextTreeElement(false,null,true);}
issueTreeElements.forEach((treeElement)=>treeElement.parent.removeChild(treeElement));}
_domBreakpointAddedOrRemoved(event)
{if(!this._domBreakpointsContentTreeOutline.children.length){this._domBreakpointsRow.showEmptyMessage();return;}
if(this._domBreakpointsContentTreeOutline.element.parent)
return;this._domBreakpointsRow.hideEmptyMessage();this._domBreakpointsRow.element.append(this._domBreakpointsContentTreeOutline.element);this._domBreakpointsSection.collapsed=false;}
_addXHRBreakpointButtonClicked(event)
{let popover=new WebInspector.XHRBreakpointPopover(this);popover.show(event.target.element,[WebInspector.RectEdge.MAX_Y,WebInspector.RectEdge.MIN_Y,WebInspector.RectEdge.MAX_X]);}
willDismissPopover(popover)
{if(popover.result!==WebInspector.InputPopover.Result.Committed)
return;let url=popover.value;if(!url)
return;WebInspector.domDebuggerManager.addXHRBreakpoint(new WebInspector.XHRBreakpoint(popover.type,url));}};WebInspector.DebuggerSidebarPanel.DebuggerPausedStyleClassName="paused";WebInspector.DebuggerSidebarPanel.ExceptionIconStyleClassName="breakpoint-exception-icon";WebInspector.DebuggerSidebarPanel.AssertionIconStyleClassName="breakpoint-assertion-icon";WebInspector.DebuggerSidebarPanel.PausedBreakpointIconStyleClassName="breakpoint-paused-icon";WebInspector.DebuggerSidebarPanel.SelectedAllExceptionsCookieKey="debugger-sidebar-panel-all-exceptions-breakpoint";WebInspector.DebuggerSidebarPanel.SelectedAllUncaughtExceptionsCookieKey="debugger-sidebar-panel-all-uncaught-exceptions-breakpoint";WebInspector.DebuggerSidebarPanel.SelectedAssertionsCookieKey="debugger-sidebar-panel-assertions-breakpoint";WebInspector.DebuggerSidebarPanel.SelectedAllRequestsCookieKey="debugger-sidebar-panel-all-requests-breakpoint";WebInspector.DefaultDashboardView=class DefaultDashboardView extends WebInspector.DashboardView
{constructor(representedObject)
{super(representedObject,"default");representedObject.addEventListener(WebInspector.DefaultDashboard.Event.DataDidChange,()=>{this._updateDisplaySoon();});this._scheduledUpdateIdentifier=undefined;this._items={resourcesCount:{tooltip:WebInspector.UIString("Show page resources"),handler:this._resourcesItemWasClicked},resourcesSize:{tooltip:WebInspector.UIString("Show network information"),handler:this._networkItemWasClicked},time:{tooltip:WebInspector.UIString("Show page load timing"),handler:this._timelineItemWasClicked},logs:{tooltip:WebInspector.UIString("Show messages logged to the Console"),handler:this._consoleItemWasClicked.bind(this,WebInspector.LogContentView.Scopes.Logs)},errors:{tooltip:WebInspector.UIString("Show errors logged to the Console"),handler:this._consoleItemWasClicked.bind(this,WebInspector.LogContentView.Scopes.Errors)},issues:{tooltip:WebInspector.UIString("Show warnings logged to the Console"),handler:this._consoleItemWasClicked.bind(this,WebInspector.LogContentView.Scopes.Warnings)}};for(var name in this._items)
this._appendElementForNamedItem(name);}
_updateDisplaySoon()
{if(this._scheduledUpdateIdentifier)
return;this._scheduledUpdateIdentifier=requestAnimationFrame(this._updateDisplay.bind(this));}
_updateDisplay()
{this._scheduledUpdateIdentifier=undefined;var dashboard=this.representedObject;for(var category of["logs","issues","errors"])
this._setConsoleItemValue(category,dashboard[category]);var timeItem=this._items.time;timeItem.text=dashboard.time?Number.secondsToString(dashboard.time):emDash;this._setItemEnabled(timeItem,dashboard.time>0);var countItem=this._items.resourcesCount;countItem.text=Number.abbreviate(dashboard.resourcesCount);this._setItemEnabled(countItem,dashboard.resourcesCount>0);var sizeItem=this._items.resourcesSize;sizeItem.text=dashboard.resourcesSize?Number.bytesToString(dashboard.resourcesSize,false):emDash;this._setItemEnabled(sizeItem,dashboard.resourcesSize>0);}
_appendElementForNamedItem(name)
{var item=this._items[name];item.container=this._element.appendChild(document.createElement("div"));item.container.className="item "+name;item.container.appendChild(document.createElement("img"));item.outlet=item.container.appendChild(document.createElement("div"));Object.defineProperty(item,"text",{set:function(newText)
{newText=newText.toString();if(newText===item.outlet.textContent)
return;item.outlet.textContent=newText;}});item.container.addEventListener("click",(event)=>{this._itemWasClicked(name);});}
_itemWasClicked(name)
{var item=this._items[name];if(!item.container.classList.contains(WebInspector.DefaultDashboardView.EnabledItemStyleClassName))
return;if(item.handler)
item.handler.call(this);}
_resourcesItemWasClicked()
{WebInspector.showResourcesTab();}
_networkItemWasClicked()
{WebInspector.showNetworkTab();}
_timelineItemWasClicked()
{WebInspector.showTimelineTab();}
_consoleItemWasClicked(scope)
{WebInspector.showConsoleTab(scope);}
_setConsoleItemValue(itemName,newValue)
{var iVarName="_"+itemName;var previousValue=this[iVarName];this[iVarName]=newValue;var item=this._items[itemName];item.text=Number.abbreviate(newValue);this._setItemEnabled(item,newValue>0);if(newValue<=previousValue)
return;var container=item.container;function animationEnded(event)
{if(event.target===container){container.classList.remove("pulsing");container.removeEventListener("animationend",animationEnded);}}
if(container.classList.contains("pulsing")){container.classList.remove("pulsing");container.recalculateStyles();}else
container.addEventListener("animationend",animationEnded);container.classList.add("pulsing");}
_setItemEnabled(item,enabled)
{if(enabled){item.container.title=item.tooltip;item.container.classList.add(WebInspector.DefaultDashboardView.EnabledItemStyleClassName);}else{item.container.title="";item.container.classList.remove(WebInspector.DefaultDashboardView.EnabledItemStyleClassName);}}};WebInspector.DefaultDashboardView.EnabledItemStyleClassName="enabled";WebInspector.DividerNavigationItem=class DividerNavigationItem extends WebInspector.NavigationItem
{ get additionalClassNames()
{return["divider"];}};WebInspector.EditableDataGridNode=class EditableDataGridNode extends WebInspector.DataGridNode
{constructor(data)
{const hasChildren=false;super(data,hasChildren);}
get element()
{let element=super.element;if(element)
element.classList.add("editable");return element;}
createCellContent(columnIdentifier,cell)
{let content=super.createCellContent(columnIdentifier,cell);if(typeof content!=="string")
return content;let inputElement=document.createElement("input");inputElement.value=content;inputElement.addEventListener("keypress",this._handleKeyPress.bind(this,columnIdentifier));inputElement.addEventListener("blur",this._handleBlur.bind(this,columnIdentifier));return inputElement;}
_handleKeyPress(columnIdentifier,event)
{if(event.keyCode===WebInspector.KeyboardShortcut.Key.Escape.keyCode)
this.dataGrid.element.focus();if(event.keyCode===WebInspector.KeyboardShortcut.Key.Enter.keyCode)
this._notifyInputElementValueChanged(columnIdentifier,event.target.value);}
_handleBlur(columnIdentifier,event)
{this._notifyInputElementValueChanged(columnIdentifier,event.target.value);}
_notifyInputElementValueChanged(columnIdentifier,value)
{if(value!==this.data[columnIdentifier])
this.dispatchEventToListeners(WebInspector.EditableDataGridNode.Event.ValueChanged,{value,columnIdentifier});}};WebInspector.EditableDataGridNode.Event={ValueChanged:"editable-data-grid-node-value-changed",};WebInspector.isBeingEdited=function(element)
{while(element){if(element.__editing)
return true;element=element.parentNode;}
return false;};WebInspector.markBeingEdited=function(element,value)
{if(value){if(element.__editing)
return false;element.__editing=true;WebInspector.__editingCount=(WebInspector.__editingCount||0)+1;}else{if(!element.__editing)
return false;delete element.__editing;--WebInspector.__editingCount;}
return true;};WebInspector.isEditingAnyField=function()
{return!!WebInspector.__editingCount;};WebInspector.isEventTargetAnEditableField=function(event)
{var textInputTypes={"text":true,"search":true,"tel":true,"url":true,"email":true,"password":true};if(event.target instanceof HTMLInputElement)
return event.target.type in textInputTypes;var codeMirrorEditorElement=event.target.enclosingNodeOrSelfWithClass("CodeMirror");if(codeMirrorEditorElement&&codeMirrorEditorElement.CodeMirror)
return!codeMirrorEditorElement.CodeMirror.getOption("readOnly");if(event.target instanceof HTMLTextAreaElement)
return true;if(event.target.enclosingNodeOrSelfWithClass("text-prompt"))
return true;if(WebInspector.isBeingEdited(event.target))
return true;return false;};WebInspector.EditingConfig=class EditingConfig
{constructor(commitHandler,cancelHandler,context)
{this.commitHandler=commitHandler;this.cancelHandler=cancelHandler;this.context=context;this.spellcheck=false;}
setPasteHandler(pasteHandler)
{this.pasteHandler=pasteHandler;}
setMultiline(multiline)
{this.multiline=multiline;}
setCustomFinishHandler(customFinishHandler)
{this.customFinishHandler=customFinishHandler;}
setNumberCommitHandler(numberCommitHandler)
{this.numberCommitHandler=numberCommitHandler;}};WebInspector.startEditing=function(element,config)
{if(!WebInspector.markBeingEdited(element,true))
return null;config=config||new WebInspector.EditingConfig(function(){},function(){});var committedCallback=config.commitHandler;var cancelledCallback=config.cancelHandler;var pasteCallback=config.pasteHandler;var context=config.context;var oldText=getContent(element);var moveDirection="";element.classList.add("editing");element.contentEditable="plaintext-only";var oldSpellCheck=element.hasAttribute("spellcheck")?element.spellcheck:undefined;element.spellcheck=config.spellcheck;if(config.multiline)
element.classList.add("multiline");var oldTabIndex=element.tabIndex;if(element.tabIndex<0)
element.tabIndex=0;function blurEventListener(){editingCommitted.call(element);}
function getContent(element){if(element.tagName==="INPUT"&&element.type==="text")
return element.value;else
return element.textContent;}
function cleanUpAfterEditing()
{WebInspector.markBeingEdited(element,false);this.classList.remove("editing");this.contentEditable=false;this.scrollTop=0;this.scrollLeft=0;if(oldSpellCheck===undefined)
element.removeAttribute("spellcheck");else
element.spellcheck=oldSpellCheck;if(oldTabIndex===-1)
this.removeAttribute("tabindex");else
this.tabIndex=oldTabIndex;element.removeEventListener("blur",blurEventListener,false);element.removeEventListener("keydown",keyDownEventListener,true);if(pasteCallback)
element.removeEventListener("paste",pasteEventListener,true);WebInspector.restoreFocusFromElement(element);}
function editingCancelled()
{if(this.tagName==="INPUT"&&this.type==="text")
this.value=oldText;else
this.textContent=oldText;cleanUpAfterEditing.call(this);cancelledCallback(this,context);}
function editingCommitted()
{cleanUpAfterEditing.call(this);committedCallback(this,getContent(this),oldText,context,moveDirection);}
function defaultFinishHandler(event)
{var hasOnlyMetaModifierKey=event.metaKey&&!event.shiftKey&&!event.ctrlKey&&!event.altKey;if(isEnterKey(event)&&(!config.multiline||hasOnlyMetaModifierKey))
return"commit";else if(event.keyCode===WebInspector.KeyboardShortcut.Key.Escape.keyCode||event.keyIdentifier==="U+001B")
return"cancel";else if(event.keyIdentifier==="U+0009")
return"move-"+(event.shiftKey?"backward":"forward");else if(event.altKey){if(event.keyIdentifier==="Up"||event.keyIdentifier==="Down")
return"modify-"+(event.keyIdentifier==="Up"?"up":"down");if(event.keyIdentifier==="PageUp"||event.keyIdentifier==="PageDown")
return"modify-"+(event.keyIdentifier==="PageUp"?"up-big":"down-big");}}
function handleEditingResult(result,event)
{if(result==="commit"){editingCommitted.call(element);event.preventDefault();event.stopPropagation();}else if(result==="cancel"){editingCancelled.call(element);event.preventDefault();event.stopPropagation();}else if(result&&result.startsWith("move-")){moveDirection=result.substring(5);if(event.keyIdentifier!=="U+0009")
blurEventListener();}else if(result&&result.startsWith("modify-")){let direction=result.substring(7);let modifyValue=direction.startsWith("up")?1:-1;if(direction.endsWith("big"))
modifyValue*=10;if(event.shiftKey)
modifyValue*=10;else if(event.ctrlKey)
modifyValue/=10;let selection=element.ownerDocument.defaultView.getSelection();if(!selection.rangeCount)
return;let range=selection.getRangeAt(0);if(!range.commonAncestorContainer.isSelfOrDescendant(element))
return false;let wordRange=range.startContainer.rangeOfWord(range.startOffset,WebInspector.EditingSupport.StyleValueDelimiters,element);let word=wordRange.toString();let wordPrefix="";let wordSuffix="";let nonNumberInWord=/[^\d-\.]+/.exec(word);if(nonNumberInWord){let nonNumberEndOffset=nonNumberInWord.index+nonNumberInWord[0].length;if(range.startOffset>wordRange.startOffset+nonNumberInWord.index&&nonNumberEndOffset<word.length&&range.startOffset!==wordRange.startOffset){wordPrefix=word.substring(0,nonNumberEndOffset);word=word.substring(nonNumberEndOffset);}else{wordSuffix=word.substring(nonNumberInWord.index);word=word.substring(0,nonNumberInWord.index);}}
let matches=WebInspector.EditingSupport.CSSNumberRegex.exec(word);if(!matches||matches.length!==4)
return;let replacement=matches[1]+(Math.round((parseFloat(matches[2])+modifyValue)*100)/100)+matches[3];selection.removeAllRanges();selection.addRange(wordRange);document.execCommand("insertText",false,wordPrefix+replacement+wordSuffix);let container=range.commonAncestorContainer;let startOffset=range.startOffset;
if(container.parentNode.classList.contains("editing")){container=container.nextSibling.firstChild;startOffset=0;}
startOffset+=wordPrefix.length;if(!container)
return;let replacementSelectionRange=document.createRange();replacementSelectionRange.setStart(container,startOffset);replacementSelectionRange.setEnd(container,startOffset+replacement.length);selection.removeAllRanges();selection.addRange(replacementSelectionRange);if(typeof config.numberCommitHandler==="function")
config.numberCommitHandler(element,getContent(element),oldText,context,moveDirection);event.preventDefault();}}
function pasteEventListener(event)
{var result=pasteCallback(event);handleEditingResult(result,event);}
function keyDownEventListener(event)
{var handler=config.customFinishHandler||defaultFinishHandler;var result=handler(event);handleEditingResult(result,event);}
element.addEventListener("blur",blurEventListener,false);element.addEventListener("keydown",keyDownEventListener,true);if(pasteCallback)
element.addEventListener("paste",pasteEventListener,true);element.focus();return{cancel:editingCancelled.bind(element),commit:editingCommitted.bind(element)};};WebInspector.EditingSupport={StyleValueDelimiters:" \xA0\t\n\"':;,/()",CSSNumberRegex:/(.*?)(-?(?:\d+(?:\.\d+)?|\.\d+))(.*)/,NumberRegex:/^(-?(?:\d+(?:\.\d+)?|\.\d+))$/};WebInspector.ErrorObjectView=class ErrorObjectView extends WebInspector.Object
{constructor(object)
{super();this._object=object;this._expanded=false;this._hasStackTrace=false;this._element=document.createElement("div");this._element.classList.add("error-object");var previewElement=WebInspector.FormattedValue.createElementForError(this._object);this._element.append(previewElement);previewElement.addEventListener("click",this._handlePreviewOrTitleElementClick.bind(this));this._outlineElement=this._element.appendChild(document.createElement("div"));this._outline=new WebInspector.TreeOutline(this._outlineElement);}
static makeSourceLinkWithPrefix(sourceURL,lineNumber,columnNumber)
{if(!sourceURL)
return null;var span=document.createElement("span");span.classList.add("error-object-link-container");span.textContent=" — ";const options={ignoreNetworkTab:true,ignoreSearchTab:true,};let a=WebInspector.linkifyLocation(sourceURL,new WebInspector.SourceCodePosition(parseInt(lineNumber)-1,parseInt(columnNumber)),options);a.classList.add("error-object-link");span.appendChild(a);return span;}
get object()
{return this._object;}
get element()
{return this._element;}
get treeOutline()
{return this._outline;}
get expanded()
{return this._expanded;}
update()
{this._object.getOwnPropertyDescriptorsAsObject((properties)=>{if(!this._hasStackTrace)
this._buildStackTrace(properties.stack.value.value);this._hasStackTrace=true;});}
expand()
{if(this._expanded)
return;this._expanded=true;this._element.classList.add("expanded");this.update();}
collapse()
{if(!this._expanded)
return;this._expanded=false;this._element.classList.remove("expanded");}
appendTitleSuffix(suffixElement)
{this._element.insertBefore(suffixElement,this._outlineElement);}
_handlePreviewOrTitleElementClick(event)
{if(!this._expanded)
this.expand();else
this.collapse();event.stopPropagation();}
_buildStackTrace(stackString)
{let stackTrace=WebInspector.StackTrace.fromString(this._object.target,stackString);let stackTraceElement=new WebInspector.StackTraceView(stackTrace).element;this._outlineElement.appendChild(stackTraceElement);}};WebInspector.EventListenerSectionGroup=class EventListenerSectionGroup extends WebInspector.DetailsSectionGroup
{constructor(eventListener,options={})
{super();this._eventListener=eventListener;var rows=[];if(!options.hideType)
rows.push(new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Event"),this._eventListener.type));if(!options.hideNode)
rows.push(new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Node"),this._nodeTextOrLink()));rows.push(new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Function"),this._functionTextOrLink()));if(this._eventListener.useCapture)
rows.push(new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Capturing"),WebInspector.UIString("Yes")));else
rows.push(new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Bubbling"),WebInspector.UIString("Yes")));if(this._eventListener.isAttribute)
rows.push(new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Attribute"),WebInspector.UIString("Yes")));if(this._eventListener.passive)
rows.push(new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Passive"),WebInspector.UIString("Yes")));if(this._eventListener.once)
rows.push(new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Once"),WebInspector.UIString("Yes")));this.rows=rows;}
_nodeTextOrLink()
{var node=this._eventListener.node;if(!node)
return"";if(node.nodeType()===Node.DOCUMENT_NODE)
return"document";return WebInspector.linkifyNodeReference(node);}
_functionTextOrLink()
{var match=this._eventListener.handlerBody.match(/function ([^\(]+?)\(/);if(match){var anonymous=false;var functionName=match[1];}else{var anonymous=true;var functionName=WebInspector.UIString("(anonymous function)");}
if(!this._eventListener.location)
return functionName;var sourceCode=WebInspector.debuggerManager.scriptForIdentifier(this._eventListener.location.scriptId,WebInspector.mainTarget);if(!sourceCode)
return functionName;var sourceCodeLocation=sourceCode.createSourceCodeLocation(this._eventListener.location.lineNumber,this._eventListener.location.columnNumber||0);const options={dontFloat:anonymous,ignoreNetworkTab:true,ignoreSearchTab:true,};let linkElement=WebInspector.createSourceCodeLocationLink(sourceCodeLocation,options);if(anonymous)
return linkElement;var fragment=document.createDocumentFragment();fragment.append(linkElement,functionName);return fragment;}};WebInspector.FilterBar=class FilterBar extends WebInspector.Object
{constructor(element)
{super();this._element=element||document.createElement("div");this._element.classList.add("filter-bar");this._filtersNavigationBar=new WebInspector.NavigationBar;this._element.appendChild(this._filtersNavigationBar.element);this._filterFunctionsMap=new Map;this._inputField=document.createElement("input");this._inputField.type="search";this._inputField.spellcheck=false;this._inputField.incremental=true;this._inputField.addEventListener("search",this._handleFilterChanged.bind(this),false);this._element.appendChild(this._inputField);this._lastFilterValue=this.filters;}
get element()
{return this._element;}
get placeholder()
{return this._inputField.getAttribute("placeholder");}
set placeholder(text)
{this._inputField.setAttribute("placeholder",text);}
get inputField()
{return this._inputField;}
get filters()
{return{text:this._inputField.value,functions:[...this._filterFunctionsMap.values()]};}
set filters(filters)
{filters=filters||{};var oldTextValue=this._inputField.value;this._inputField.value=filters.text||"";if(oldTextValue!==this._inputField.value)
this._handleFilterChanged();}
addFilterBarButton(identifier,filterFunction,activatedByDefault,defaultToolTip,activatedToolTip,image,imageWidth,imageHeight)
{var filterBarButton=new WebInspector.FilterBarButton(identifier,filterFunction,activatedByDefault,defaultToolTip,activatedToolTip,image,imageWidth,imageHeight);filterBarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._handleFilterBarButtonClicked,this);filterBarButton.addEventListener(WebInspector.FilterBarButton.Event.ActivatedStateToggled,this._handleFilterButtonToggled,this);this._filtersNavigationBar.addNavigationItem(filterBarButton);if(filterBarButton.activated){this._filterFunctionsMap.set(filterBarButton.identifier,filterBarButton.filterFunction);this._handleFilterChanged();}}
hasActiveFilters()
{return!!this._inputField.value||!!this._filterFunctionsMap.size;}
hasFilterChanged()
{var currentFunctions=this.filters.functions;if(this._lastFilterValue.text!==this._inputField.value||this._lastFilterValue.functions.length!==currentFunctions.length)
return true;for(var i=0;i<currentFunctions.length;++i){if(this._lastFilterValue.functions[i]!==currentFunctions[i])
return true;}
return false;}
_handleFilterBarButtonClicked(event)
{var filterBarButton=event.target;filterBarButton.toggle();}
_handleFilterButtonToggled(event)
{var filterBarButton=event.target;if(filterBarButton.activated)
this._filterFunctionsMap.set(filterBarButton.identifier,filterBarButton.filterFunction);else
this._filterFunctionsMap.delete(filterBarButton.identifier);this._handleFilterChanged();}
_handleFilterChanged()
{if(this.hasFilterChanged()){this._lastFilterValue=this.filters;this.dispatchEventToListeners(WebInspector.FilterBar.Event.FilterDidChange);}}};WebInspector.FilterBar.Event={FilterDidChange:"filter-bar-text-filter-did-change"};WebInspector.FilterBarButton=class FilterBarButton extends WebInspector.ActivateButtonNavigationItem
{constructor(identifier,filterFunction,activatedByDefault,defaultToolTip,activatedToolTip,image,imageWidth,imageHeight,role)
{super(identifier,defaultToolTip,activatedToolTip,image,imageWidth,imageHeight,role);this._filterFunction=filterFunction;this._activatedSetting=new WebInspector.Setting(identifier,activatedByDefault);this.activated=!!this._activatedSetting.value;}
get filterFunction()
{return this._filterFunction;}
toggle()
{this.activated=!this.activated;this._activatedSetting.value=this.activated;this.dispatchEventToListeners(WebInspector.FilterBarButton.Event.ActivatedStateToggled);}};WebInspector.FilterBarButton.Event={ActivatedStateToggled:"filter-bar-activated-state-toggled"};WebInspector.FilterBarNavigationItem=class FilterBarNavigationItem extends WebInspector.NavigationItem
{constructor()
{super();this._filterBar=new WebInspector.FilterBar(this.element);}
get filterBar()
{return this._filterBar;}};WebInspector.FindBanner=class FindBanner extends WebInspector.NavigationItem
{constructor(delegate,className,fixed=false)
{super();this._delegate=delegate||null;this.element.classList.add("find-banner");if(className)
this.element.classList.add(className);this._resultCountLabel=document.createElement("label");this.element.appendChild(this._resultCountLabel);this._inputField=document.createElement("input");this._inputField.type="search";this._inputField.spellcheck=false;this._inputField.incremental=true;this._inputField.setAttribute("results",5);this._inputField.setAttribute("autosave","inspector-search");this._inputField.addEventListener("keydown",this._inputFieldKeyDown.bind(this),false);this._inputField.addEventListener("keyup",this._inputFieldKeyUp.bind(this),false);this._inputField.addEventListener("search",this._inputFieldSearch.bind(this),false);this.element.appendChild(this._inputField);this._previousResultButton=document.createElement("button");this._previousResultButton.classList.add("segmented","previous-result");this._previousResultButton.disabled=true;this._previousResultButton.addEventListener("click",this._previousResultButtonClicked.bind(this));this.element.appendChild(this._previousResultButton);let previousResultButtonGlyphElement=document.createElement("div");previousResultButtonGlyphElement.classList.add(WebInspector.FindBanner.SegmentGlyphStyleClassName);this._previousResultButton.appendChild(previousResultButtonGlyphElement);this._nextResultButton=document.createElement("button");this._nextResultButton.classList.add("segmented","next-result");this._nextResultButton.disabled=true;this._nextResultButton.addEventListener("click",this._nextResultButtonClicked.bind(this));this.element.appendChild(this._nextResultButton);let nextResultButtonGlyphElement=document.createElement("div");nextResultButtonGlyphElement.classList.add(WebInspector.FindBanner.SegmentGlyphStyleClassName);this._nextResultButton.appendChild(nextResultButtonGlyphElement);if(fixed)
this._clearAndBlurKeyboardShortcut=new WebInspector.KeyboardShortcut(null,WebInspector.KeyboardShortcut.Key.Escape,this._clearAndBlur.bind(this),this.element);else{let doneButtonElement=document.createElement("button");doneButtonElement.textContent=WebInspector.UIString("Done");doneButtonElement.addEventListener("click",this._doneButtonClicked.bind(this));this.element.appendChild(doneButtonElement);this._hideKeyboardShortcut=new WebInspector.KeyboardShortcut(null,WebInspector.KeyboardShortcut.Key.Escape,this.hide.bind(this),this.element);}
this._numberOfResults=null;this._searchBackwards=false;this._searchKeyPressed=false;this._previousSearchValue="";this._populateFindKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"E",this._populateSearchQueryFromSelection.bind(this));this._populateFindKeyboardShortcut.implicitlyPreventsDefault=false;this._findNextKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"G",this._nextResultButtonClicked.bind(this));this._findPreviousKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.Shift|WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"G",this._previousResultButtonClicked.bind(this));this.disableKeyboardShortcuts();}
get delegate(){return this._delegate;}
set delegate(newDelegate){this._delegate=newDelegate||null;}
get inputField(){return this._inputField;}
get searchQuery(){return this._inputField.value||"";}
set searchQuery(query){this._inputField.value=query||"";}
get numberOfResults(){return this._numberOfResults;}
set numberOfResults(numberOfResults)
{if(numberOfResults===undefined||isNaN(numberOfResults))
numberOfResults=null;this._numberOfResults=numberOfResults;this._previousResultButton.disabled=this._nextResultButton.disabled=(numberOfResults<=0);if(numberOfResults===null)
this._resultCountLabel.textContent="";else if(numberOfResults<=0)
this._resultCountLabel.textContent=WebInspector.UIString("Not found");else if(numberOfResults===1)
this._resultCountLabel.textContent=WebInspector.UIString("1 match");else if(numberOfResults>1)
this._resultCountLabel.textContent=WebInspector.UIString("%d matches").format(numberOfResults);}
get targetElement()
{return this._targetElement;}
set targetElement(element)
{function delayedWork()
{oldTargetElement.classList.remove(WebInspector.FindBanner.NoTransitionStyleClassName);this.element.classList.remove(WebInspector.FindBanner.NoTransitionStyleClassName);}
if(this._targetElement){var oldTargetElement=this._targetElement;this._targetElement.classList.add(WebInspector.FindBanner.NoTransitionStyleClassName);this._targetElement.classList.remove(WebInspector.FindBanner.SupportsFindBannerStyleClassName);this._targetElement.classList.remove(WebInspector.FindBanner.ShowingFindBannerStyleClassName);this.element.classList.add(WebInspector.FindBanner.NoTransitionStyleClassName);this.element.classList.remove(WebInspector.FindBanner.ShowingStyleClassName);setTimeout(delayedWork.bind(this),0);}
this._targetElement=element||null;if(this._targetElement)
this._targetElement.classList.add(WebInspector.FindBanner.SupportsFindBannerStyleClassName);}
get showing()
{return this.element.classList.contains(WebInspector.FindBanner.ShowingStyleClassName);}
focus()
{if(!this._inputField.value.length)
this._inputField.focus();else
this._inputField.select();}
_clearAndBlur()
{this.numberOfResults=null;this._inputField.value="";this._previousSearchValue="";if(this._delegate.findBannerSearchCleared)
this._delegate.findBannerSearchCleared();if(this._delegate.findBannerWantsToClearAndBlur)
this._delegate.findBannerWantsToClearAndBlur();}
show()
{if(!this._targetElement)
return;if(!this._targetElement.parentNode)
return;if(this.element.parentNode!==this._targetElement.parentNode)
this._targetElement.parentNode.insertBefore(this.element,this._targetElement);function delayedWork()
{this._targetElement.classList.add(WebInspector.FindBanner.ShowingFindBannerStyleClassName);this.element.classList.add(WebInspector.FindBanner.ShowingStyleClassName);this._inputField.select();}
setTimeout(delayedWork.bind(this),0);this.dispatchEventToListeners(WebInspector.FindBanner.Event.DidShow);}
hide()
{if(!this._targetElement)
return;this._inputField.blur();this._targetElement.classList.remove(WebInspector.FindBanner.ShowingFindBannerStyleClassName);this.element.classList.remove(WebInspector.FindBanner.ShowingStyleClassName);this.dispatchEventToListeners(WebInspector.FindBanner.Event.DidHide);}
enableKeyboardShortcuts()
{this._populateFindKeyboardShortcut.disabled=false;this._findNextKeyboardShortcut.disabled=false;this._findPreviousKeyboardShortcut.disabled=false;}
disableKeyboardShortcuts()
{this._populateFindKeyboardShortcut.disabled=true;this._findNextKeyboardShortcut.disabled=true;this._findPreviousKeyboardShortcut.disabled=true;}
_inputFieldKeyDown(event)
{if(event.keyIdentifier==="Shift")
this._searchBackwards=true;else if(event.keyIdentifier==="Enter")
this._searchKeyPressed=true;}
_inputFieldKeyUp(event)
{if(event.keyIdentifier==="Shift")
this._searchBackwards=false;else if(event.keyIdentifier==="Enter")
this._searchKeyPressed=false;}
_inputFieldSearch(event)
{if(this._inputField.value){if(this._previousSearchValue!==this.searchQuery){if(this._delegate&&typeof this._delegate.findBannerPerformSearch==="function")
this._delegate.findBannerPerformSearch(this,this.searchQuery);}else if(this._searchKeyPressed&&this._numberOfResults>0){if(this._searchBackwards){if(this._delegate&&typeof this._delegate.findBannerRevealPreviousResult==="function")
this._delegate.findBannerRevealPreviousResult(this);}else{if(this._delegate&&typeof this._delegate.findBannerRevealNextResult==="function")
this._delegate.findBannerRevealNextResult(this);}}}else{this.numberOfResults=null;if(this._delegate&&typeof this._delegate.findBannerSearchCleared==="function")
this._delegate.findBannerSearchCleared(this);}
this._previousSearchValue=this.searchQuery;}
_populateSearchQueryFromSelection(event)
{if(this._delegate&&typeof this._delegate.findBannerSearchQueryForSelection==="function"){var query=this._delegate.findBannerSearchQueryForSelection(this);if(query){this.searchQuery=query;if(this._delegate&&typeof this._delegate.findBannerPerformSearch==="function")
this._delegate.findBannerPerformSearch(this,this.searchQuery);}}}
_previousResultButtonClicked(event)
{if(this._delegate&&typeof this._delegate.findBannerRevealPreviousResult==="function")
this._delegate.findBannerRevealPreviousResult(this);}
_nextResultButtonClicked(event)
{if(this._delegate&&typeof this._delegate.findBannerRevealNextResult==="function")
this._delegate.findBannerRevealNextResult(this);}
_doneButtonClicked(event)
{this.hide();}};WebInspector.FindBanner.SupportsFindBannerStyleClassName="supports-find-banner";WebInspector.FindBanner.ShowingFindBannerStyleClassName="showing-find-banner";WebInspector.FindBanner.NoTransitionStyleClassName="no-find-banner-transition";WebInspector.FindBanner.ShowingStyleClassName="showing";WebInspector.FindBanner.SegmentGlyphStyleClassName="glyph";WebInspector.FindBanner.Event={DidShow:"find-banner-did-show",DidHide:"find-banner-did-hide"};WebInspector.FlexibleSpaceNavigationItem=class FlexibleSpaceNavigationItem extends WebInspector.NavigationItem
{ get additionalClassNames()
{return["flexible-space"];}};WebInspector.FontResourceContentView=class FontResourceContentView extends WebInspector.ResourceContentView
{constructor(resource)
{super(resource,"font");this._styleElement=null;this._previewElement=null;}
get previewElement()
{return this._previewElement;}
sizeToFit()
{if(!this._previewElement)
return;for(var fontSize=WebInspector.FontResourceContentView.MaximumFontSize;fontSize>=WebInspector.FontResourceContentView.MinimumFontSize;fontSize-=5){this._previewElement.style.fontSize=fontSize+"px";if(this._previewElement.offsetWidth<=this.element.offsetWidth)
break;}}
contentAvailable(content,base64Encoded)
{this._fontObjectURL=this.resource.createObjectURL();if(!this._fontObjectURL){this.showGenericErrorMessage();return;}
const uniqueFontName="WebInspectorFontPreview"+(++WebInspector.FontResourceContentView._uniqueFontIdentifier);var format="";if(this.resource.mimeTypeComponents.type==="image/svg+xml")
format=" format(\"svg\")";if(this._styleElement&&this._styleElement.parentNode)
this._styleElement.parentNode.removeChild(this._styleElement);this.removeLoadingIndicator();this._styleElement=document.createElement("style");this._styleElement.textContent="@font-face { font-family: \""+uniqueFontName+"\"; src: url("+this._fontObjectURL+")"+format+"; }";if(this.visible)
document.head.appendChild(this._styleElement);this._previewElement=document.createElement("div");this._previewElement.className="preview";this._previewElement.style.fontFamily=uniqueFontName;function createMetricElement(className)
{var metricElement=document.createElement("div");metricElement.className="metric "+className;return metricElement;}
var lines=WebInspector.FontResourceContentView.PreviewLines;for(var i=0;i<lines.length;++i){var lineElement=document.createElement("div");lineElement.className="line";lineElement.appendChild(createMetricElement("top"));lineElement.appendChild(createMetricElement("xheight"));lineElement.appendChild(createMetricElement("middle"));lineElement.appendChild(createMetricElement("baseline"));lineElement.appendChild(createMetricElement("bottom"));var contentElement=document.createElement("div");contentElement.className="content";contentElement.textContent=lines[i];lineElement.appendChild(contentElement);this._previewElement.appendChild(lineElement);}
this.element.appendChild(this._previewElement);this.sizeToFit();}
shown()
{if(this._styleElement)
document.head.appendChild(this._styleElement);}
hidden()
{if(this._styleElement&&this._styleElement.parentNode)
this._styleElement.parentNode.removeChild(this._styleElement);}
closed()
{
if(this._fontObjectURL)
URL.revokeObjectURL(this._fontObjectURL);}
layout()
{this.sizeToFit();}};WebInspector.FontResourceContentView._uniqueFontIdentifier=0;WebInspector.FontResourceContentView.PreviewLines=["ABCDEFGHIJKLM","NOPQRSTUVWXYZ","abcdefghijklm","nopqrstuvwxyz","1234567890"];WebInspector.FontResourceContentView.MaximumFontSize=72;WebInspector.FontResourceContentView.MinimumFontSize=12;WebInspector.FormattedValue={};WebInspector.FormattedValue.classNameForTypes=function(type,subtype)
{return"formatted-"+(subtype?subtype:type);};WebInspector.FormattedValue.classNameForObject=function(object)
{return WebInspector.FormattedValue.classNameForTypes(object.type,object.subtype);};WebInspector.FormattedValue.createLinkifiedElementString=function(string)
{var span=document.createElement("span");span.className="formatted-string";span.append("\"",WebInspector.linkifyStringAsFragment(string.replace(/\\/g,"\\\\").replace(/"/g,"\\\"")),"\"");return span;};WebInspector.FormattedValue.createElementForNode=function(object)
{var span=document.createElement("span");span.className="formatted-node";object.pushNodeToFrontend(function(nodeId){if(!nodeId){span.textContent=object.description;return;}
var treeOutline=new WebInspector.DOMTreeOutline;treeOutline.setVisible(true);treeOutline.rootDOMNode=WebInspector.domTreeManager.nodeForId(nodeId);if(!treeOutline.children[0].hasChildren)
treeOutline.element.classList.add("single-node");span.appendChild(treeOutline.element);});return span;};WebInspector.FormattedValue.createElementForError=function(object)
{var span=document.createElement("span");span.classList.add("formatted-error");span.textContent=object.description;if(!object.preview)
return span;function previewToObject(preview)
{var result={};for(var property of preview.propertyPreviews)
result[property.name]=property.value;return result;}
var preview=previewToObject(object.preview);if(!preview.sourceURL)
return span;var sourceLinkWithPrefix=WebInspector.ErrorObjectView.makeSourceLinkWithPrefix(preview.sourceURL,preview.line,preview.column);span.append(sourceLinkWithPrefix);return span;};WebInspector.FormattedValue.createElementForNodePreview=function(preview)
{var value=preview.value||preview.description;var span=document.createElement("span");span.className="formatted-node-preview syntax-highlighted";if(value.startsWith("<!--")){var comment=span.appendChild(document.createElement("span"));comment.className="html-comment";comment.textContent=value;return span;}
if(value.startsWith("<!DOCTYPE")){var doctype=span.appendChild(document.createElement("span"));doctype.className="html-doctype";doctype.textContent=value;return span;}
var matches=value.match(/^<(\S+?)(?: (\S+?)="(.*?)")?>$/);if(!matches){span.textContent=value;return span;}
var tag=document.createElement("span");tag.className="html-tag";tag.append("<");var tagName=tag.appendChild(document.createElement("span"));tagName.className="html-tag-name";tagName.textContent=matches[1];if(matches[2]){tag.append(" ");var attribute=tag.appendChild(document.createElement("span"));attribute.className="html-attribute";var attributeName=attribute.appendChild(document.createElement("span"));attributeName.className="html-attribute-name";attributeName.textContent=matches[2];attribute.append("=\"");var attributeValue=attribute.appendChild(document.createElement("span"));attributeValue.className="html-attribute-value";attributeValue.textContent=matches[3];attribute.append("\"");}
tag.append(">");span.appendChild(tag);return span;};WebInspector.FormattedValue.createElementForFunctionWithName=function(description)
{var span=document.createElement("span");span.classList.add("formatted-function");span.textContent=description.substring(0,description.indexOf("("));return span;};WebInspector.FormattedValue.createElementForTypesAndValue=function(type,subtype,displayString,size,isPreview,hadException)
{var span=document.createElement("span");span.classList.add(WebInspector.FormattedValue.classNameForTypes(type,subtype));if(hadException){span.textContent="[Exception: "+displayString+"]";return span;}
if(type==="string"){displayString=displayString.truncate(WebInspector.FormattedValue.MAX_PREVIEW_STRING_LENGTH);span.textContent=doubleQuotedString(displayString.replace(/\n/g,"\u21B5"));return span;}
if(type==="function"){if(subtype==="class")
span.textContent=displayString;else
span.textContent=isPreview?"function":displayString;return span;}
span.textContent=displayString;if(size!==undefined&&(subtype==="array"||subtype==="set"||subtype==="map"||subtype==="weakmap"||subtype==="weakset")){var sizeElement=span.appendChild(document.createElement("span"));sizeElement.className="size";sizeElement.textContent=" ("+size+")";}
return span;};WebInspector.FormattedValue.createElementForRemoteObject=function(object,hadException)
{return WebInspector.FormattedValue.createElementForTypesAndValue(object.type,object.subtype,object.description,object.size,false,hadException);};WebInspector.FormattedValue.createElementForObjectPreview=function(objectPreview)
{return WebInspector.FormattedValue.createElementForTypesAndValue(objectPreview.type,objectPreview.subtype,objectPreview.description,objectPreview.size,true,false);};WebInspector.FormattedValue.createElementForPropertyPreview=function(propertyPreview)
{return WebInspector.FormattedValue.createElementForTypesAndValue(propertyPreview.type,propertyPreview.subtype,propertyPreview.value,undefined,true,false);};WebInspector.FormattedValue.createObjectPreviewOrFormattedValueForObjectPreview=function(objectPreview,previewViewMode)
{if(objectPreview.subtype==="node")
return WebInspector.FormattedValue.createElementForNodePreview(objectPreview);if(objectPreview.type==="function")
return WebInspector.FormattedValue.createElementForFunctionWithName(objectPreview.description);return new WebInspector.ObjectPreviewView(objectPreview,previewViewMode).element;};WebInspector.FormattedValue.createObjectPreviewOrFormattedValueForRemoteObject=function(object,previewViewMode)
{if(object.subtype==="node")
return WebInspector.FormattedValue.createElementForNode(object);if(object.subtype==="error")
return WebInspector.FormattedValue.createElementForError(object);if(object.preview)
return new WebInspector.ObjectPreviewView(object.preview,previewViewMode);return WebInspector.FormattedValue.createElementForRemoteObject(object);};WebInspector.FormattedValue.createObjectTreeOrFormattedValueForRemoteObject=function(object,propertyPath,forceExpanding)
{if(object.subtype==="node")
return WebInspector.FormattedValue.createElementForNode(object);if(object.subtype==="null")
return WebInspector.FormattedValue.createElementForRemoteObject(object);if(object.type==="object"||object.subtype==="class"){var objectTree=new WebInspector.ObjectTreeView(object,null,propertyPath,forceExpanding);return objectTree.element;}
return WebInspector.FormattedValue.createElementForRemoteObject(object);};WebInspector.FormattedValue.MAX_PREVIEW_STRING_LENGTH=140;WebInspector.FrameDOMTreeContentView=class FrameDOMTreeContentView extends WebInspector.DOMTreeContentView
{constructor(domTree)
{super(domTree);this._domTree=domTree;this._domTree.addEventListener(WebInspector.DOMTree.Event.RootDOMNodeInvalidated,this._rootDOMNodeInvalidated,this);this._requestRootDOMNode();}
get domTree()
{return this._domTree;}
closed()
{this._domTree.removeEventListener(null,null,this);super.closed();}
getSearchContextNodes(callback)
{this._domTree.requestRootDOMNode(function(rootDOMNode){callback([rootDOMNode.id]);});}
_rootDOMNodeAvailable(rootDOMNode)
{this.domTreeOutline.rootDOMNode=rootDOMNode;if(!rootDOMNode){this.domTreeOutline.selectDOMNode(null,false);return;}
this._restoreBreakpointsAfterUpdate();this._restoreSelectedNodeAfterUpdate(this._domTree.frame.url,rootDOMNode.body||rootDOMNode.documentElement||rootDOMNode.firstChild);}
_rootDOMNodeInvalidated(event)
{this._requestRootDOMNode();}
_requestRootDOMNode()
{this._domTree.requestRootDOMNode(this._rootDOMNodeAvailable.bind(this));}};WebInspector.FrameTreeElement=class FrameTreeElement extends WebInspector.ResourceTreeElement
{constructor(frame,representedObject)
{super(frame.mainResource,representedObject||frame);this._frame=frame;this._updateExpandedSetting();frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);frame.addEventListener(WebInspector.Frame.Event.ResourceWasAdded,this._resourceWasAdded,this);frame.addEventListener(WebInspector.Frame.Event.ResourceWasRemoved,this._resourceWasRemoved,this);frame.addEventListener(WebInspector.Frame.Event.ExtraScriptAdded,this._extraScriptAdded,this);frame.addEventListener(WebInspector.Frame.Event.ChildFrameWasAdded,this._childFrameWasAdded,this);frame.addEventListener(WebInspector.Frame.Event.ChildFrameWasRemoved,this._childFrameWasRemoved,this);frame.domTree.addEventListener(WebInspector.DOMTree.Event.ContentFlowWasAdded,this._childContentFlowWasAdded,this);frame.domTree.addEventListener(WebInspector.DOMTree.Event.ContentFlowWasRemoved,this._childContentFlowWasRemoved,this);frame.domTree.addEventListener(WebInspector.DOMTree.Event.RootDOMNodeInvalidated,this._rootDOMNodeInvalidated,this);this.shouldRefreshChildren=true;this.folderSettingsKey=this._frame.url.hash;this.registerFolderizeSettings("frames",WebInspector.UIString("Frames"),this._frame.childFrameCollection,WebInspector.FrameTreeElement);this.registerFolderizeSettings("flows",WebInspector.UIString("Flows"),this._frame.domTree.contentFlowCollection,WebInspector.ContentFlowTreeElement);this.registerFolderizeSettings("extra-scripts",WebInspector.UIString("Extra Scripts"),this._frame.extraScriptCollection,WebInspector.ScriptTreeElement);if(window.CanvasAgent&&WebInspector.settings.experimentalShowCanvasContextsInResources.value)
this.registerFolderizeSettings("canvases",WebInspector.UIString("Canvases"),this._frame.canvasCollection,WebInspector.CanvasTreeElement);function forwardingConstructor(representedObject,...extraArguments){if(representedObject instanceof WebInspector.CSSStyleSheet)
return new WebInspector.CSSStyleSheetTreeElement(representedObject,...extraArguments);return new WebInspector.ResourceTreeElement(representedObject,...extraArguments);}
for(let[key,value]of Object.entries(WebInspector.Resource.Type)){let folderName=WebInspector.Resource.displayNameForType(value,true);let treeElementConstructor=forwardingConstructor;if(value===WebInspector.Resource.Type.WebSocket)
treeElementConstructor=WebInspector.WebSocketResourceTreeElement;this.registerFolderizeSettings(key,folderName,this._frame.resourceCollectionForType(value),treeElementConstructor);}
this.updateParentStatus();}
get frame()
{return this._frame;}
descendantResourceTreeElementTypeDidChange(resourceTreeElement,oldType)
{
this._addTreeElement(resourceTreeElement);}
descendantResourceTreeElementMainTitleDidChange(resourceTreeElement,oldMainTitle)
{
this._addTreeElement(resourceTreeElement);}
updateSourceMapResources()
{if(!this.treeOutline||!this.treeOutline.includeSourceMapResourceChildren)
return;if(!this._frame)
return;this.updateParentStatus();if(this.resource&&this.resource.sourceMaps.length)
this.shouldRefreshChildren=true;}
onattach()
{WebInspector.GeneralTreeElement.prototype.onattach.call(this);WebInspector.cssStyleManager.addEventListener(WebInspector.CSSStyleManager.Event.StyleSheetAdded,this._styleSheetAdded,this);if(window.CanvasAgent&&WebInspector.settings.experimentalShowCanvasContextsInResources.value){this._frame.canvasCollection.addEventListener(WebInspector.Collection.Event.ItemAdded,this._canvasWasAdded,this);this._frame.canvasCollection.addEventListener(WebInspector.Collection.Event.ItemRemoved,this._canvasWasRemoved,this);}}
ondetach()
{WebInspector.cssStyleManager.removeEventListener(WebInspector.CSSStyleManager.Event.StyleSheetAdded,this._styleSheetAdded,this);if(window.CanvasAgent&&WebInspector.settings.experimentalShowCanvasContextsInResources.value){this._frame.canvasCollection.removeEventListener(WebInspector.Collection.Event.ItemAdded,this._canvasWasAdded,this);this._frame.canvasCollection.removeEventListener(WebInspector.Collection.Event.ItemRemoved,this._canvasWasRemoved,this);}
super.ondetach();}
compareChildTreeElements(a,b)
{if(a===b)
return 0;var aIsResource=a instanceof WebInspector.ResourceTreeElement;var bIsResource=b instanceof WebInspector.ResourceTreeElement;if(aIsResource&&bIsResource)
return WebInspector.ResourceTreeElement.compareResourceTreeElements(a,b);if(!aIsResource&&!bIsResource){return super.compareChildTreeElements(a,b);}
return aIsResource?1:-1;}
onpopulate()
{if(this.children.length&&!this.shouldRefreshChildren)
return;this.shouldRefreshChildren=false;this.removeChildren();this.updateParentStatus();this.prepareToPopulate();for(let frame of this._frame.childFrameCollection.items)
this.addChildForRepresentedObject(frame);for(let resource of this._frame.resourceCollection.items)
this.addChildForRepresentedObject(resource);var sourceMaps=this.resource&&this.resource.sourceMaps;for(var i=0;i<sourceMaps.length;++i){var sourceMap=sourceMaps[i];for(var j=0;j<sourceMap.resources.length;++j)
this.addChildForRepresentedObject(sourceMap.resources[j]);}
for(let contentFlow of this._frame.domTree.contentFlowCollection.items)
this.addChildForRepresentedObject(contentFlow);for(let extraScript of this._frame.extraScriptCollection.items){if(extraScript.sourceURL||extraScript.sourceMappingURL)
this.addChildForRepresentedObject(extraScript);}
if(window.CanvasAgent&&WebInspector.settings.experimentalShowCanvasContextsInResources.value){for(let canvas of this._frame.canvasCollection.items)
this.addChildForRepresentedObject(canvas);}
const doNotCreateIfMissing=true;WebInspector.cssStyleManager.preferredInspectorStyleSheetForFrame(this._frame,this.addRepresentedObjectToNewChildQueue.bind(this),doNotCreateIfMissing);}
onexpand()
{this._expandedSetting.value=true;this._frame.domTree.requestContentFlowList();}
oncollapse()
{if(this.hasChildren)
this._expandedSetting.value=false;}
_updateExpandedSetting()
{this._expandedSetting=new WebInspector.Setting("frame-expanded-"+this._frame.url.hash,this._frame.isMainFrame()?true:false);if(this._expandedSetting.value)
this.expand();else
this.collapse();}
_mainResourceDidChange(event)
{this._updateResource(this._frame.mainResource);this.updateParentStatus();this.removeChildren();
this._updateExpandedSetting();this.shouldRefreshChildren=true;}
_resourceWasAdded(event)
{this.addRepresentedObjectToNewChildQueue(event.data.resource);}
_resourceWasRemoved(event)
{this.removeChildForRepresentedObject(event.data.resource);}
_extraScriptAdded(event)
{let extraScript=event.data.script;if(extraScript.sourceURL||extraScript.sourceMappingURL)
this.addRepresentedObjectToNewChildQueue(extraScript);}
_childFrameWasAdded(event)
{this.addRepresentedObjectToNewChildQueue(event.data.childFrame);}
_childFrameWasRemoved(event)
{this.removeChildForRepresentedObject(event.data.childFrame);}
_childContentFlowWasAdded(event)
{this.addRepresentedObjectToNewChildQueue(event.data.flow);}
_childContentFlowWasRemoved(event)
{this.removeChildForRepresentedObject(event.data.flow);}
_rootDOMNodeInvalidated()
{if(this.expanded)
this._frame.domTree.requestContentFlowList();}
_styleSheetAdded(event)
{if(!event.data.styleSheet.isInspectorStyleSheet())
return;this.addRepresentedObjectToNewChildQueue(event.data.styleSheet);}
_canvasWasAdded(event)
{this.addRepresentedObjectToNewChildQueue(event.data.item);}
_canvasWasRemoved(event)
{this.removeChildForRepresentedObject(event.data.item);}};WebInspector.GeneralTreeElementPathComponent=class GeneralTreeElementPathComponent extends WebInspector.HierarchicalPathComponent
{constructor(generalTreeElement,representedObject)
{super(generalTreeElement.mainTitle,generalTreeElement.classNames,representedObject||generalTreeElement.representedObject);this._generalTreeElement=generalTreeElement;generalTreeElement.addEventListener(WebInspector.GeneralTreeElement.Event.MainTitleDidChange,this._mainTitleDidChange,this);}
get generalTreeElement()
{return this._generalTreeElement;}
get previousSibling()
{var previousSibling=this._generalTreeElement.previousSibling;while(previousSibling&&previousSibling.hidden)
previousSibling=previousSibling.previousSibling;if(!previousSibling)
return null;return new WebInspector.GeneralTreeElementPathComponent(previousSibling);}
get nextSibling()
{var nextSibling=this._generalTreeElement.nextSibling;while(nextSibling&&nextSibling.hidden)
nextSibling=nextSibling.nextSibling;if(!nextSibling)
return null;return new WebInspector.GeneralTreeElementPathComponent(nextSibling);}
_mainTitleDidChange(event)
{this.displayName=this._generalTreeElement.mainTitle;}};WebInspector.GenericResourceContentView=class GenericResourceContentView extends WebInspector.ResourceContentView
{constructor(resource)
{super(resource,"generic");}};WebInspector.GoToLineDialog=class GoToLineDialog extends WebInspector.Dialog
{constructor(delegate)
{super(delegate);this.element.classList.add("go-to-line-dialog");let field=this.element.appendChild(document.createElement("div"));this._input=field.appendChild(document.createElement("input"));this._input.type="text";this._input.placeholder=WebInspector.UIString("Line Number");this._input.spellcheck=false;this._clearIcon=field.appendChild(document.createElement("img"));this._input.addEventListener("input",this);this._input.addEventListener("keydown",this);this._input.addEventListener("blur",this);this._clearIcon.addEventListener("mousedown",this);this._clearIcon.addEventListener("click",this);this._dismissing=false;}
handleEvent(event)
{switch(event.type){case"input":this._handleInputEvent(event);break;case"keydown":this._handleKeydownEvent(event);break;case"blur":this._handleBlurEvent(event);break;case"mousedown":this._handleMousedownEvent(event);break;case"click":this._handleClickEvent(event);break;}}
didPresentDialog()
{this._input.focus();this._clear();}
_handleInputEvent(event)
{let force=this._input.value!=="";this.element.classList.toggle(WebInspector.GoToLineDialog.NonEmptyClassName,force);}
_handleKeydownEvent(event)
{if(event.keyCode===WebInspector.KeyboardShortcut.Key.Escape.keyCode){if(this._input.value==="")
this.dismiss();else
this._clear();event.preventDefault();}else if(event.keyCode===WebInspector.KeyboardShortcut.Key.Enter.keyCode){let value=parseInt(this._input.value,10);if(this.representedObjectIsValid(value)){this.dismiss(value);return;}
this._inputElement.select();InspectorFrontendHost.beep();}}
_handleBlurEvent(event)
{this.dismiss();}
_handleMousedownEvent(event)
{this._input.select();
event.preventDefault();}
_handleClickEvent(event)
{this._clear();}
_clear()
{this._input.value="";this.element.classList.remove(WebInspector.GoToLineDialog.NonEmptyClassName);}};WebInspector.GoToLineDialog.NonEmptyClassName="non-empty";WebInspector.GradientEditor=class GradientEditor extends WebInspector.Object
{constructor()
{super();this._element=document.createElement("div");this._element.classList.add("gradient-editor");this._gradient=null;this._gradientTypes={"linear-gradient":{type:WebInspector.LinearGradient,label:WebInspector.UIString("Linear Gradient"),repeats:false},"radial-gradient":{type:WebInspector.RadialGradient,label:WebInspector.UIString("Radial Gradient"),repeats:false},"repeating-linear-gradient":{type:WebInspector.LinearGradient,label:WebInspector.UIString("Repeating Linear Gradient"),repeats:true},"repeating-radial-gradient":{type:WebInspector.RadialGradient,label:WebInspector.UIString("Repeating Radial Gradient"),repeats:true}};this._editingColor=false;this._gradientTypePicker=this._element.appendChild(document.createElement("select"));this._gradientTypePicker.classList.add("gradient-type-select");for(let type in this._gradientTypes){let option=this._gradientTypePicker.appendChild(document.createElement("option"));option.value=type;option.text=this._gradientTypes[type].label;}
this._gradientTypePicker.addEventListener("change",this._gradientTypeChanged.bind(this));this._gradientSlider=new WebInspector.GradientSlider(this);this._element.appendChild(this._gradientSlider.element);this._colorPicker=new WebInspector.ColorPicker;this._colorPicker.colorWheel.dimension=190;this._colorPicker.enableColorComponentInputs=false;this._colorPicker.addEventListener(WebInspector.ColorPicker.Event.ColorChanged,this._colorPickerColorChanged,this);let angleContainerElement=this._element.appendChild(document.createElement("div"));angleContainerElement.classList.add("gradient-angle");angleContainerElement.append(WebInspector.UIString("Angle"));let boundAngleValueChanged=this._angleValueChanged.bind(this);this._angleSliderElement=angleContainerElement.appendChild(document.createElement("input"));this._angleSliderElement.type="range";this._angleSliderElement.addEventListener("input",boundAngleValueChanged);this._angleInputElement=angleContainerElement.appendChild(document.createElement("input"));this._angleInputElement.type="number";this._angleInputElement.addEventListener("input",boundAngleValueChanged);this._angleUnitsSelectElement=angleContainerElement.appendChild(document.createElement("select"));this._angleUnitsSelectElement.addEventListener("change",this._angleUnitsChanged.bind(this));const angleUnitsData=[{name:WebInspector.LinearGradient.AngleUnits.DEG,min:0,max:360,step:1},{name:WebInspector.LinearGradient.AngleUnits.RAD,min:0,max:2*Math.PI,step:0.01},{name:WebInspector.LinearGradient.AngleUnits.GRAD,min:0,max:400,step:1},{name:WebInspector.LinearGradient.AngleUnits.TURN,min:0,max:1,step:0.01}];this._angleUnitsConfiguration=new Map(angleUnitsData.map(({name,min,max,step})=>{let optionElement=this._angleUnitsSelectElement.appendChild(document.createElement("option"));optionElement.value=optionElement.textContent=name;return[name,{element:optionElement,min,max,step}];}));}
get element()
{return this._element;}
set gradient(gradient)
{if(!gradient)
return;const isLinear=gradient instanceof WebInspector.LinearGradient;const isRadial=gradient instanceof WebInspector.RadialGradient;if(!isLinear&&!isRadial)
return;this._gradient=gradient;this._gradientSlider.stops=this._gradient.stops;if(isLinear){this._gradientTypePicker.value=this._gradient.repeats?"repeating-linear-gradient":"linear-gradient";this._angleUnitsChanged();}else
this._gradientTypePicker.value=this._gradient.repeats?"repeating-radial-gradient":"radial-gradient";this._updateCSSClassForGradientType();}
get gradient()
{return this._gradient;}
gradientSliderStopsDidChange(gradientSlider)
{this._gradient.stops=gradientSlider.stops;this.dispatchEventToListeners(WebInspector.GradientEditor.Event.GradientChanged,{gradient:this._gradient});}
gradientSliderStopWasSelected(gradientSlider,stop)
{const selectedStop=gradientSlider.selectedStop;if(selectedStop&&!this._editingColor){this._element.appendChild(this._colorPicker.element);this._element.classList.add("editing-color");this._colorPicker.color=selectedStop.color;this._editingColor=true;}else if(!selectedStop){this._colorPicker.element.remove();this._element.classList.remove("editing-color");this._editingColor=false;}
this._angleInputElement.blur();this.dispatchEventToListeners(WebInspector.GradientEditor.Event.ColorPickerToggled);this.dispatchEventToListeners(WebInspector.GradientEditor.Event.GradientChanged,{gradient:this._gradient});}
_updateCSSClassForGradientType()
{const isRadial=this._gradient instanceof WebInspector.RadialGradient;this._element.classList.toggle("radial-gradient",isRadial);this.dispatchEventToListeners(WebInspector.GradientEditor.Event.ColorPickerToggled);}
_gradientTypeChanged(event)
{const descriptor=this._gradientTypes[this._gradientTypePicker.value];if(!(this._gradient instanceof descriptor.type)){if(descriptor.type===WebInspector.LinearGradient){this._gradient=new WebInspector.LinearGradient({value:180,units:WebInspector.LinearGradient.AngleUnits.DEG},this._gradient.stops);this._angleUnitsChanged();}else
this._gradient=new WebInspector.RadialGradient("",this._gradient.stops);this._updateCSSClassForGradientType();}
this._gradient.repeats=descriptor.repeats;this.dispatchEventToListeners(WebInspector.GradientEditor.Event.GradientChanged,{gradient:this._gradient});}
_colorPickerColorChanged(event)
{this._gradientSlider.selectedStop.color=event.target.color;this._gradientSlider.stops=this._gradient.stops;this.dispatchEventToListeners(WebInspector.GradientEditor.Event.GradientChanged,{gradient:this._gradient});}
_angleValueChanged(event)
{switch(event.target){case this._angleInputElement:this._gradient.angleValue=this._angleSliderElement.value=parseFloat(this._angleInputElement.value)||0;break;case this._angleSliderElement:this._gradient.angleValue=this._angleInputElement.value=parseFloat(this._angleSliderElement.value)||0;break;default:WebInspector.reportInternalError("Input event fired for disabled color component input");return;}
this.dispatchEventToListeners(WebInspector.GradientEditor.Event.GradientChanged,{gradient:this._gradient});}
_angleUnitsChanged(event)
{let units=this._angleUnitsSelectElement.value;let configuration=this._angleUnitsConfiguration.get(units);if(!configuration){WebInspector.reportInternalError(`Missing configuration data for selected angle units "${units}"`);return;}
this._gradient.angleUnits=units;this._angleInputElement.min=this._angleSliderElement.min=configuration.min;this._angleInputElement.max=this._angleSliderElement.max=configuration.max;this._angleInputElement.step=this._angleSliderElement.step=configuration.step;this._angleInputElement.value=this._angleSliderElement.value=this._gradient.angleValue;this.dispatchEventToListeners(WebInspector.GradientEditor.Event.GradientChanged,{gradient:this._gradient});}};WebInspector.GradientEditor.Event={GradientChanged:"gradient-editor-gradient-changed",ColorPickerToggled:"gradient-editor-color-picker-toggled"};WebInspector.GradientSlider=class GradientSlider extends WebInspector.Object
{constructor(delegate)
{super();this.delegate=delegate;this._element=null;this._stops=[];this._knobs=[];this._selectedKnob=null;this._canvas=document.createElement("canvas");this._keyboardShortcutEsc=new WebInspector.KeyboardShortcut(null,WebInspector.KeyboardShortcut.Key.Escape);}
get element()
{if(!this._element){this._element=document.createElement("div");this._element.className="gradient-slider";this._element.appendChild(this._canvas);this._addArea=this._element.appendChild(document.createElement("div"));this._addArea.addEventListener("mouseover",this);this._addArea.addEventListener("mousemove",this);this._addArea.addEventListener("mouseout",this);this._addArea.addEventListener("click",this);this._addArea.className=WebInspector.GradientSlider.AddAreaClassName;}
return this._element;}
get stops()
{return this._stops;}
set stops(stops)
{this._stops=stops;this._updateStops();}
get selectedStop()
{return this._selectedKnob?this._selectedKnob.stop:null;}
handleEvent(event)
{switch(event.type){case"mouseover":this._handleMouseover(event);break;case"mousemove":this._handleMousemove(event);break;case"mouseout":this._handleMouseout(event);break;case"click":this._handleClick(event);break;}}
handleKeydownEvent(event)
{if(!this._keyboardShortcutEsc.matchesEvent(event)||!this._selectedKnob||!this._selectedKnob.selected)
return false;this._selectedKnob.selected=false;return true;}
knobXDidChange(knob)
{knob.stop.offset=knob.x/WebInspector.GradientSlider.Width;this._sortStops();this._updateCanvas();}
knobCanDetach(knob)
{return this._knobs.length>2;}
knobWillDetach(knob)
{knob.element.classList.add(WebInspector.GradientSlider.DetachingClassName);this._stops.remove(knob.stop);this._knobs.remove(knob);this._sortStops();this._updateCanvas();}
knobSelectionChanged(knob)
{if(this._selectedKnob&&this._selectedKnob!==knob&&knob.selected)
this._selectedKnob.selected=false;this._selectedKnob=knob.selected?knob:null;if(this.delegate&&typeof this.delegate.gradientSliderStopWasSelected==="function")
this.delegate.gradientSliderStopWasSelected(this,knob.stop);if(this._selectedKnob)
WebInspector.addWindowKeydownListener(this);else
WebInspector.removeWindowKeydownListener(this);}
_handleMouseover(event)
{this._updateShadowKnob(event);}
_handleMousemove(event)
{this._updateShadowKnob(event);}
_handleMouseout(event)
{if(!this._shadowKnob)
return;this._shadowKnob.element.remove();delete this._shadowKnob;}
_handleClick(event)
{this._updateShadowKnob(event);this._knobs.push(this._shadowKnob);this._shadowKnob.element.classList.remove(WebInspector.GradientSlider.ShadowClassName);var stop={offset:this._shadowKnob.x/WebInspector.GradientSlider.Width,color:this._shadowKnob.wellColor};this._stops.push(stop);this._sortStops();this._updateStops();this._knobs[this._stops.indexOf(stop)].selected=true;delete this._shadowKnob;}
_updateShadowKnob(event)
{if(!this._shadowKnob){this._shadowKnob=new WebInspector.GradientSliderKnob(this);this._shadowKnob.element.classList.add(WebInspector.GradientSlider.ShadowClassName);this.element.appendChild(this._shadowKnob.element);}
this._shadowKnob.x=window.webkitConvertPointFromPageToNode(this.element,new WebKitPoint(event.pageX,event.pageY)).x;var colorData=this._canvas.getContext("2d").getImageData(this._shadowKnob.x-1,0,1,1).data;this._shadowKnob.wellColor=new WebInspector.Color(WebInspector.Color.Format.RGB,[colorData[0],colorData[1],colorData[2],colorData[3]/255]);}
_sortStops()
{this._stops.sort(function(a,b){return a.offset-b.offset;});}
_updateStops()
{this._updateCanvas();this._updateKnobs();}
_updateCanvas()
{var w=WebInspector.GradientSlider.Width;var h=WebInspector.GradientSlider.Height;this._canvas.width=w;this._canvas.height=h;var ctx=this._canvas.getContext("2d");var gradient=ctx.createLinearGradient(0,0,w,0);for(var stop of this._stops)
gradient.addColorStop(stop.offset,stop.color);ctx.clearRect(0,0,w,h);ctx.fillStyle=gradient;ctx.fillRect(0,0,w,h);if(this.delegate&&typeof this.delegate.gradientSliderStopsDidChange==="function")
this.delegate.gradientSliderStopsDidChange(this);}
_updateKnobs()
{var selectedStop=this._selectedKnob?this._selectedKnob.stop:null;while(this._knobs.length>this._stops.length)
this._knobs.pop().element.remove();while(this._knobs.length<this._stops.length){var knob=new WebInspector.GradientSliderKnob(this);this.element.appendChild(knob.element);this._knobs.push(knob);}
for(var i=0;i<this._stops.length;++i){var stop=this._stops[i];var knob=this._knobs[i];knob.stop=stop;knob.x=Math.round(stop.offset*WebInspector.GradientSlider.Width);knob.selected=stop===selectedStop;}}};WebInspector.GradientSlider.Width=238;WebInspector.GradientSlider.Height=19;WebInspector.GradientSlider.AddAreaClassName="add-area";WebInspector.GradientSlider.DetachingClassName="detaching";WebInspector.GradientSlider.ShadowClassName="shadow";WebInspector.GradientSliderKnob=class GradientSliderKnob extends WebInspector.Object
{constructor(delegate)
{super();this._x=0;this._y=0;this._stop=null;this.delegate=delegate;this._element=document.createElement("div");this._element.className="gradient-slider-knob";this._element.appendChild(document.createElement("img"));this._well=this._element.appendChild(document.createElement("div"));this._element.addEventListener("mousedown",this);}
get element()
{return this._element;}
get stop()
{return this._stop;}
set stop(stop)
{this.wellColor=stop.color;this._stop=stop;}
get x()
{return this._x;}
set x(x){this._x=x;this._updateTransform();}
get y()
{return this._x;}
set y(y){this._y=y;this._updateTransform();}
get wellColor()
{return this._wellColor;}
set wellColor(color)
{this._wellColor=color;this._well.style.backgroundColor=color;}
get selected()
{return this._element.classList.contains(WebInspector.GradientSliderKnob.SelectedClassName);}
set selected(selected)
{if(this.selected===selected)
return;this._element.classList.toggle(WebInspector.GradientSliderKnob.SelectedClassName,selected);if(this.delegate&&typeof this.delegate.knobSelectionChanged==="function")
this.delegate.knobSelectionChanged(this);}
handleEvent(event)
{event.preventDefault();event.stopPropagation();switch(event.type){case"mousedown":this._handleMousedown(event);break;case"mousemove":this._handleMousemove(event);break;case"mouseup":this._handleMouseup(event);break;case"transitionend":this._handleTransitionEnd(event);break;}}
_handleMousedown(event)
{this._moved=false;this._detaching=false;window.addEventListener("mousemove",this,true);window.addEventListener("mouseup",this,true);this._startX=this.x;this._startMouseX=event.pageX;this._startMouseY=event.pageY;}
_handleMousemove(event)
{var w=WebInspector.GradientSlider.Width;this._moved=true;if(!this._detaching&&Math.abs(event.pageY-this._startMouseY)>50){this._detaching=this.delegate&&typeof this.delegate.knobCanDetach==="function"&&this.delegate.knobCanDetach(this);if(this._detaching&&this.delegate&&typeof this.delegate.knobWillDetach==="function"){var translationFromParentToBody=window.webkitConvertPointFromNodeToPage(this.element.parentNode,new WebKitPoint(0,0));this._startMouseX-=translationFromParentToBody.x;this._startMouseY-=translationFromParentToBody.y;document.body.appendChild(this.element);this.delegate.knobWillDetach(this);}}
var x=this._startX+event.pageX-this._startMouseX;if(!this._detaching)
x=Math.min(Math.max(0,x),w);this.x=x;if(this._detaching)
this.y=event.pageY-this._startMouseY;else if(this.delegate&&typeof this.delegate.knobXDidChange==="function")
this.delegate.knobXDidChange(this);}
_handleMouseup(event)
{window.removeEventListener("mousemove",this,true);window.removeEventListener("mouseup",this,true);if(this._detaching){this.element.addEventListener("transitionend",this);this.element.classList.add(WebInspector.GradientSliderKnob.FadeOutClassName);this.selected=false;}else if(!this._moved)
this.selected=!this.selected;}
_handleTransitionEnd(event)
{this.element.removeEventListener("transitionend",this);this.element.classList.remove(WebInspector.GradientSliderKnob.FadeOutClassName);this.element.remove();}
_updateTransform()
{this.element.style.webkitTransform="translate3d("+this._x+"px, "+this._y+"px, 0)";}};WebInspector.GradientSliderKnob.SelectedClassName="selected";WebInspector.GradientSliderKnob.FadeOutClassName="fade-out";WebInspector.HeapAllocationsTimelineDataGridNode=class HeapAllocationsTimelineDataGridNode extends WebInspector.TimelineDataGridNode
{constructor(heapAllocationsTimelineRecord,zeroTime,heapAllocationsView)
{super(false,null);this._record=heapAllocationsTimelineRecord;this._heapAllocationsView=heapAllocationsView;this._data={name:this.displayName(),timestamp:zeroTime?this._record.timestamp-zeroTime:NaN,size:this._record.heapSnapshot.totalSize,liveSize:this._record.heapSnapshot.liveSize,};this._record.heapSnapshot.addEventListener(WebInspector.HeapSnapshotProxy.Event.CollectedNodes,this._heapSnapshotCollectedNodes,this);this._record.heapSnapshot.addEventListener(WebInspector.HeapSnapshotProxy.Event.Invalidated,this._heapSnapshotInvalidated,this);}
get record(){return this._record;}
get data(){return this._data;}
createCellContent(columnIdentifier,cell)
{switch(columnIdentifier){case"name":cell.classList.add(...this.iconClassNames());var fragment=document.createDocumentFragment();var titleElement=fragment.appendChild(document.createElement("span"));titleElement.textContent=this._data.name;if(!this._record.heapSnapshot.invalid){var goToButton=fragment.appendChild(WebInspector.createGoToArrowButton());goToButton.addEventListener("click",(event)=>{this._heapAllocationsView.showHeapSnapshotTimelineRecord(this._record);});}
return fragment;case"timestamp":return isNaN(this._data.timestamp)?emDash:Number.secondsToString(this._data.timestamp,true);case"size":return Number.bytesToString(this._data.size);case"liveSize":return Number.bytesToString(this._data.liveSize);}
return super.createCellContent(columnIdentifier,cell);}
markAsBaseline()
{this.element.classList.add("baseline");}
clearBaseline()
{this.element.classList.remove("baseline");}
updateTimestamp(zeroTime)
{this._data.timestamp=this._record.timestamp-zeroTime;this.needsRefresh();}
createCells()
{super.createCells();if(this._record.heapSnapshot.invalid)
this.element.classList.add("invalid");}
_heapSnapshotCollectedNodes()
{let oldSize=this._data.liveSize;let newSize=this._record.heapSnapshot.liveSize;if(oldSize===newSize)
return;this._data.liveSize=newSize;this.needsRefresh();}
_heapSnapshotInvalidated()
{this._data.liveSize=0;this.needsRefresh();}};WebInspector.HeapAllocationsTimelineDataGridNodePathComponent=class HeapAllocationsTimelineDataGridNodePathComponent extends WebInspector.TimelineDataGridNodePathComponent
{ get previousSibling()
{let previousSibling=this.timelineDataGridNode.previousSibling;while(previousSibling&&(previousSibling.hidden||previousSibling.record.heapSnapshot.invalid))
previousSibling=previousSibling.previousSibling;if(!previousSibling)
return null;return new WebInspector.HeapAllocationsTimelineDataGridNodePathComponent(previousSibling);}
get nextSibling()
{let nextSibling=this.timelineDataGridNode.nextSibling;while(nextSibling&&(nextSibling.hidden||nextSibling.record.heapSnapshot.invalid))
nextSibling=nextSibling.nextSibling;if(!nextSibling)
return null;return new WebInspector.HeapAllocationsTimelineDataGridNodePathComponent(nextSibling);}};WebInspector.HeapAllocationsTimelineOverviewGraph=class HeapAllocationsTimelineOverviewGraph extends WebInspector.TimelineOverviewGraph
{constructor(timeline,timelineOverview)
{super(timelineOverview);this.element.classList.add("heap-allocations");this._heapAllocationsTimeline=timeline;this._heapAllocationsTimeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._heapAllocationTimelineRecordAdded,this);this._selectedImageElement=null;this.reset();}
reset()
{super.reset();this.element.removeChildren();}
layout()
{if(!this.visible)
return;this.element.removeChildren();if(this._selectedImageElement){this._selectedImageElement.classList.remove("selected");this._selectedImageElement=null;}
let visibleRecords=this._heapAllocationsTimeline.recordsInTimeRange(this.startTime,this.endTime);if(!visibleRecords.length)
return;let graphStartTime=this.startTime;let secondsPerPixel=this.timelineOverview.secondsPerPixel;function xScale(time){return(time-graphStartTime)/secondsPerPixel;}
for(let record of visibleRecords){const halfImageWidth=8;let x=xScale(record.timestamp)-halfImageWidth;if(x<=1)
x=1;let imageElement=record[WebInspector.HeapAllocationsTimelineOverviewGraph.RecordElementAssociationSymbol];if(!imageElement){imageElement=record[WebInspector.HeapAllocationsTimelineOverviewGraph.RecordElementAssociationSymbol]=document.createElement("img");imageElement.classList.add("snapshot");imageElement.addEventListener("click",()=>{if(record.heapSnapshot.invalid)
return;this.selectedRecord=record;});}
imageElement.style.setProperty(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"right":"left",`${x}px`);if(record.heapSnapshot.invalid)
imageElement.classList.add("invalid");this.element.appendChild(imageElement);}
this._updateSnapshotMarkers();}
updateSelectedRecord()
{this._updateSnapshotMarkers();}
_updateSnapshotMarkers()
{if(this._selectedImageElement)
this._selectedImageElement.classList.remove("selected");if(!this.selectedRecord){this._selectedImageElement=null;return;}
let imageElement=this.selectedRecord[WebInspector.HeapAllocationsTimelineOverviewGraph.RecordElementAssociationSymbol];if(!imageElement)
return;imageElement.classList.add("selected");this._selectedImageElement=imageElement;}
_heapAllocationTimelineRecordAdded(event)
{this.needsLayout();}};WebInspector.HeapAllocationsTimelineOverviewGraph.RecordElementAssociationSymbol=Symbol("record-element-association");WebInspector.HeapAllocationsTimelineView=class HeapAllocationsTimelineView extends WebInspector.TimelineView
{constructor(timeline,extraArguments)
{super(timeline,extraArguments);this.element.classList.add("heap-allocations");let columns={name:{title:WebInspector.UIString("Name"),width:"150px",icon:true,},timestamp:{title:WebInspector.UIString("Time"),width:"80px",sortable:true,aligned:"right",},size:{title:WebInspector.UIString("Size"),width:"80px",sortable:true,aligned:"right",},liveSize:{title:WebInspector.UIString("Live Size"),width:"80px",sortable:true,aligned:"right",},};let snapshotTooltip=WebInspector.UIString("Take snapshot");this._takeHeapSnapshotButtonItem=new WebInspector.ButtonNavigationItem("take-snapshot",snapshotTooltip,"Images/Camera.svg",16,16);this._takeHeapSnapshotButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._takeHeapSnapshotClicked,this);let defaultToolTip=WebInspector.UIString("Compare snapshots");let activatedToolTip=WebInspector.UIString("Cancel comparison");this._compareHeapSnapshotsButtonItem=new WebInspector.ActivateButtonNavigationItem("compare-heap-snapshots",defaultToolTip,activatedToolTip,"Images/Compare.svg",16,16);this._compareHeapSnapshotsButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._compareHeapSnapshotsClicked,this);this._compareHeapSnapshotsButtonItem.enabled=false;this._compareHeapSnapshotsButtonItem.activated=false;this._compareHeapSnapshotHelpTextItem=new WebInspector.TextNavigationItem("compare-heap-snapshot-help-text","");this._selectingComparisonHeapSnapshots=false;this._baselineDataGridNode=null;this._baselineHeapSnapshotTimelineRecord=null;this._heapSnapshotDiff=null;this._snapshotListScrollTop=0;this._showingSnapshotList=true;this._snapshotListPathComponent=new WebInspector.HierarchicalPathComponent(WebInspector.UIString("Snapshot List"),"snapshot-list-icon","snapshot-list",false,false);this._snapshotListPathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.Clicked,this._snapshotListPathComponentClicked,this);this._dataGrid=new WebInspector.TimelineDataGrid(columns);this._dataGrid.sortColumnIdentifier="timestamp";this._dataGrid.sortOrder=WebInspector.DataGrid.SortOrder.Ascending;this._dataGrid.createSettings("heap-allocations-timeline-view");this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged,this._dataGridNodeSelected,this);this.addSubview(this._dataGrid);this._contentViewContainer=new WebInspector.ContentViewContainer;this._contentViewContainer.addEventListener(WebInspector.ContentViewContainer.Event.CurrentContentViewDidChange,this._currentContentViewDidChange,this);WebInspector.ContentView.addEventListener(WebInspector.ContentView.Event.SelectionPathComponentsDidChange,this._contentViewSelectionPathComponentDidChange,this);this._pendingRecords=[];this._pendingZeroTimeDataGridNodes=[];timeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._heapAllocationsTimelineRecordAdded,this);WebInspector.HeapSnapshotProxy.addEventListener(WebInspector.HeapSnapshotProxy.Event.Invalidated,this._heapSnapshotInvalidated,this);WebInspector.HeapSnapshotWorkerProxy.singleton().addEventListener("HeapSnapshot.CollectionEvent",this._heapSnapshotCollectionEvent,this);}
get scrollableElements()
{if(this._showingSnapshotList)
return[this._dataGrid.scrollContainer];if(this._contentViewContainer.currentContentView)
return this._contentViewContainer.currentContentView.scrollableElements;return[];}
showHeapSnapshotList()
{if(this._showingSnapshotList)
return;this._showingSnapshotList=true;this._heapSnapshotDiff=null;this._cancelSelectComparisonHeapSnapshots();this._contentViewContainer.hidden();this.removeSubview(this._contentViewContainer);this.addSubview(this._dataGrid);this._dataGrid.scrollContainer.scrollTop=this._snapshotListScrollTop;this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);this.dispatchEventToListeners(WebInspector.ContentView.Event.NavigationItemsDidChange);}
showHeapSnapshotTimelineRecord(heapSnapshotTimelineRecord)
{if(this._showingSnapshotList){this._snapshotListScrollTop=this._dataGrid.scrollContainer.scrollTop;this.removeSubview(this._dataGrid);this.addSubview(this._contentViewContainer);this._contentViewContainer.shown();}
this._showingSnapshotList=false;this._heapSnapshotDiff=null;this._cancelSelectComparisonHeapSnapshots();for(let dataGridNode of this._dataGrid.children){if(dataGridNode.record===heapSnapshotTimelineRecord){dataGridNode.select();break;}}
let shouldTriggerContentViewUpdate=this._contentViewContainer.currentContentView&&this._contentViewContainer.currentContentView.representedObject===heapSnapshotTimelineRecord.heapSnapshot;this._contentViewContainer.showContentViewForRepresentedObject(heapSnapshotTimelineRecord.heapSnapshot);if(shouldTriggerContentViewUpdate)
this._currentContentViewDidChange();}
showHeapSnapshotDiff(heapSnapshotDiff)
{if(this._showingSnapshotList){this.removeSubview(this._dataGrid);this.addSubview(this._contentViewContainer);this._contentViewContainer.shown();}
this._showingSnapshotList=false;this._heapSnapshotDiff=heapSnapshotDiff;this._contentViewContainer.showContentViewForRepresentedObject(heapSnapshotDiff);}
get showsFilterBar(){return this._showingSnapshotList;}
get navigationItems()
{if(this._showingSnapshotList){let items=[this._takeHeapSnapshotButtonItem,this._compareHeapSnapshotsButtonItem];if(this._selectingComparisonHeapSnapshots)
items.push(this._compareHeapSnapshotHelpTextItem);return items;}
return this._contentViewContainer.currentContentView.navigationItems;}
get selectionPathComponents()
{let components=[this._snapshotListPathComponent];if(this._showingSnapshotList)
return components;if(this._heapSnapshotDiff){let firstSnapshotIdentifier=this._heapSnapshotDiff.snapshot1.identifier;let secondSnapshotIdentifier=this._heapSnapshotDiff.snapshot2.identifier;let diffComponent=new WebInspector.HierarchicalPathComponent(WebInspector.UIString("Snapshot Comparison (%d and %d)").format(firstSnapshotIdentifier,secondSnapshotIdentifier),"snapshot-diff-icon","snapshot-diff");components.push(diffComponent);}else if(this._dataGrid.selectedNode){let heapSnapshotPathComponent=new WebInspector.HeapAllocationsTimelineDataGridNodePathComponent(this._dataGrid.selectedNode);heapSnapshotPathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this._snapshotPathComponentSelected,this);components.push(heapSnapshotPathComponent);}
return components.concat(this._contentViewContainer.currentContentView.selectionPathComponents);}
selectRecord(record)
{if(record)
this.showHeapSnapshotTimelineRecord(record);else
this.showHeapSnapshotList();}
shown()
{super.shown();this._dataGrid.shown();if(!this._showingSnapshotList)
this._contentViewContainer.shown();}
hidden()
{super.hidden();this._dataGrid.hidden();if(!this._showingSnapshotList)
this._contentViewContainer.hidden();}
closed()
{this.representedObject.removeEventListener(null,null,this);this._dataGrid.closed();this._contentViewContainer.closeAllContentViews();WebInspector.ContentView.removeEventListener(null,null,this);WebInspector.HeapSnapshotProxy.removeEventListener(null,null,this);WebInspector.HeapSnapshotWorkerProxy.singleton().removeEventListener("HeapSnapshot.CollectionEvent",this._heapSnapshotCollectionEvent,this);}
layout()
{if(this._pendingZeroTimeDataGridNodes.length&&this.zeroTime){for(let dataGridNode of this._pendingZeroTimeDataGridNodes)
dataGridNode.updateTimestamp(this.zeroTime);this._pendingZeroTimeDataGridNodes=[];this._dataGrid._sort();}
if(this._pendingRecords.length){for(let heapAllocationsTimelineRecord of this._pendingRecords){let dataGridNode=new WebInspector.HeapAllocationsTimelineDataGridNode(heapAllocationsTimelineRecord,this.zeroTime,this);this._dataGrid.addRowInSortOrder(null,dataGridNode);if(!this.zeroTime)
this._pendingZeroTimeDataGridNodes.push(dataGridNode);}
this._pendingRecords=[];this._updateCompareHeapSnapshotButton();}}
reset()
{super.reset();this._dataGrid.reset();this.showHeapSnapshotList();this._pendingRecords=[];this._pendingZeroTimeDataGridNodes=[];this._updateCompareHeapSnapshotButton();}
updateFilter(filters)
{this._dataGrid.filterText=filters?filters.text:"";}
_heapAllocationsTimelineRecordAdded(event)
{this._pendingRecords.push(event.data.record);this.needsLayout();}
_heapSnapshotCollectionEvent(event)
{function updateHeapSnapshotForEvent(heapSnapshot){if(heapSnapshot.invalid)
return;heapSnapshot.updateForCollectionEvent(event);}
for(let node of this._dataGrid.children)
updateHeapSnapshotForEvent(node.record.heapSnapshot);for(let record of this._pendingRecords)
updateHeapSnapshotForEvent(record.heapSnapshot);if(this._heapSnapshotDiff)
updateHeapSnapshotForEvent(this._heapSnapshotDiff);}
_snapshotListPathComponentClicked(event)
{this.showHeapSnapshotList();}
_snapshotPathComponentSelected(event)
{this.showHeapSnapshotTimelineRecord(event.data.pathComponent.representedObject);}
_currentContentViewDidChange(event)
{this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);this.dispatchEventToListeners(WebInspector.ContentView.Event.NavigationItemsDidChange);}
_contentViewSelectionPathComponentDidChange(event)
{if(event.target!==this._contentViewContainer.currentContentView)
return;this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);}
_heapSnapshotInvalidated(event)
{let heapSnapshot=event.target;if(this._baselineHeapSnapshotTimelineRecord){if(heapSnapshot===this._baselineHeapSnapshotTimelineRecord.heapSnapshot)
this._cancelSelectComparisonHeapSnapshots();}
if(this._heapSnapshotDiff){if(heapSnapshot===this._heapSnapshotDiff.snapshot1||heapSnapshot===this._heapSnapshotDiff.snapshot2)
this.showHeapSnapshotList();}else if(this._dataGrid.selectedNode){if(heapSnapshot===this._dataGrid.selectedNode.record.heapSnapshot)
this.showHeapSnapshotList();}
this._updateCompareHeapSnapshotButton();}
_updateCompareHeapSnapshotButton()
{let hasAtLeastTwoValidSnapshots=false;let count=0;for(let node of this._dataGrid.children){if(node.revealed&&!node.hidden&&!node.record.heapSnapshot.invalid){count++;if(count===2){hasAtLeastTwoValidSnapshots=true;break;}}}
this._compareHeapSnapshotsButtonItem.enabled=hasAtLeastTwoValidSnapshots;}
_takeHeapSnapshotClicked()
{HeapAgent.snapshot(function(error,timestamp,snapshotStringData){let workerProxy=WebInspector.HeapSnapshotWorkerProxy.singleton();workerProxy.createSnapshot(snapshotStringData,({objectId,snapshot:serializedSnapshot})=>{let snapshot=WebInspector.HeapSnapshotProxy.deserialize(objectId,serializedSnapshot);WebInspector.timelineManager.heapSnapshotAdded(timestamp,snapshot);});});}
_cancelSelectComparisonHeapSnapshots()
{if(!this._selectingComparisonHeapSnapshots)
return;if(this._baselineDataGridNode)
this._baselineDataGridNode.clearBaseline();this._selectingComparisonHeapSnapshots=false;this._baselineDataGridNode=null;this._baselineHeapSnapshotTimelineRecord=null;this._compareHeapSnapshotsButtonItem.activated=false;this.dispatchEventToListeners(WebInspector.ContentView.Event.NavigationItemsDidChange);}
_compareHeapSnapshotsClicked(event)
{let newActivated=!this._compareHeapSnapshotsButtonItem.activated;this._compareHeapSnapshotsButtonItem.activated=newActivated;if(!newActivated){this._cancelSelectComparisonHeapSnapshots();return;}
if(this._dataGrid.selectedNode)
this._dataGrid.selectedNode.deselect();this._selectingComparisonHeapSnapshots=true;this._baselineHeapSnapshotTimelineRecord=null;this._compareHeapSnapshotHelpTextItem.text=WebInspector.UIString("Select baseline snapshot");this.dispatchEventToListeners(WebInspector.ContentView.Event.NavigationItemsDidChange);}
_dataGridNodeSelected(event)
{if(!this._selectingComparisonHeapSnapshots)
return;let dataGridNode=this._dataGrid.selectedNode;if(!dataGridNode)
return;let heapAllocationsTimelineRecord=dataGridNode.record;if(heapAllocationsTimelineRecord.heapSnapshot.invalid||this._baselineHeapSnapshotTimelineRecord===heapAllocationsTimelineRecord){this._dataGrid.selectedNode.deselect();return;}
if(!this._baselineHeapSnapshotTimelineRecord){this._baselineDataGridNode=dataGridNode;this._baselineDataGridNode.markAsBaseline();this._baselineHeapSnapshotTimelineRecord=heapAllocationsTimelineRecord;this._dataGrid.selectedNode.deselect();this._compareHeapSnapshotHelpTextItem.text=WebInspector.UIString("Select comparison snapshot");this.dispatchEventToListeners(WebInspector.ContentView.Event.NavigationItemsDidChange);return;}
let snapshot1=this._baselineHeapSnapshotTimelineRecord.heapSnapshot;let snapshot2=heapAllocationsTimelineRecord.heapSnapshot;if(snapshot1.identifier>snapshot2.identifier)
[snapshot1,snapshot2]=[snapshot2,snapshot1];let workerProxy=WebInspector.HeapSnapshotWorkerProxy.singleton();workerProxy.createSnapshotDiff(snapshot1.proxyObjectId,snapshot2.proxyObjectId,({objectId,snapshotDiff:serializedSnapshotDiff})=>{let diff=WebInspector.HeapSnapshotDiffProxy.deserialize(objectId,serializedSnapshotDiff);this.showHeapSnapshotDiff(diff);});this._baselineDataGridNode.clearBaseline();this._baselineDataGridNode=null;this._selectingComparisonHeapSnapshots=false;this._compareHeapSnapshotsButtonItem.activated=false;}};WebInspector.HeapSnapshotClassDataGridNode=class HeapSnapshotClassDataGridNode extends WebInspector.DataGridNode
{constructor(data,tree)
{super(data,true);this._data=data;this._tree=tree;this._batched=false;this._instances=null;this.addEventListener("populate",this._populate,this);}
get data(){return this._data;}
createCellContent(columnIdentifier)
{if(columnIdentifier==="retainedSize"){let size=this._data.retainedSize;let fragment=document.createDocumentFragment();let sizeElement=fragment.appendChild(document.createElement("span"));sizeElement.classList.add("size");sizeElement.textContent=Number.bytesToString(size);let percentElement=fragment.appendChild(document.createElement("span"));percentElement.classList.add("percentage");percentElement.textContent=emDash;return fragment;}
if(columnIdentifier==="size")
return Number.bytesToString(this._data.size);if(columnIdentifier==="className"){let{className}=this._data;let fragment=document.createDocumentFragment();let iconElement=fragment.appendChild(document.createElement("img"));iconElement.classList.add("icon",WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName(className));let nameElement=fragment.appendChild(document.createElement("span"));nameElement.classList.add("class-name");nameElement.textContent=className;return fragment;}
return super.createCellContent(columnIdentifier);}
sort()
{if(this._batched){this._removeFetchMoreDataGridNode();this._sortInstances();this._updateBatchedChildren();this._appendFetchMoreDataGridNode();return;}
let children=this.children;children.sort(this._tree._sortComparator);for(let i=0;i<children.length;++i){children[i]._recalculateSiblings(i);children[i].sort();}}
removeCollectedNodes(collectedNodes)
{let nodesToRemove=[];this.forEachImmediateChild((dataGridNode)=>{if(dataGridNode instanceof WebInspector.HeapSnapshotInstanceDataGridNode){let heapSnapshotNode=dataGridNode.node;if(heapSnapshotNode.id in collectedNodes)
nodesToRemove.push(dataGridNode);}});if(nodesToRemove.length){for(let dataGridNode of nodesToRemove)
this.removeChild(dataGridNode);}
if(this._instances){this._instances=this._instances.filter((instance)=>!(instance.id in collectedNodes));this._fetchBatch(nodesToRemove.length);}}
updateCount(count)
{if(count===this._data.count)
return;if(!count){this._tree.removeChild(this);return;}
this._data.count=count;this.needsRefresh();}
_populate()
{this.removeEventListener("populate",this._populate,this);this._tree.heapSnapshot.instancesWithClassName(this._data.className,(instances)=>{ this._instances=instances.filter((instance)=>!instance.dead);this._sortInstances();if(instances.length>WebInspector.HeapSnapshotClassDataGridNode.ChildrenBatchLimit){this._batched=true;this._fetchBatch(WebInspector.HeapSnapshotClassDataGridNode.ChildrenBatchLimit);return;}
for(let instance of this._instances)
this.appendChild(new WebInspector.HeapSnapshotInstanceDataGridNode(instance,this._tree));});}
_fetchBatch(batchSize)
{if(this._batched&&this.children.length)
this._removeFetchMoreDataGridNode();let oldCount=this.children.length;let newCount=oldCount+batchSize;if(newCount>=this._instances.length){newCount=this._instances.length-1;this._batched=false;}
let count=newCount-oldCount;if(count){for(let i=0;i<=count;++i){let instance=this._instances[oldCount+i];this.appendChild(new WebInspector.HeapSnapshotInstanceDataGridNode(instance,this._tree));}}
if(this._batched)
this._appendFetchMoreDataGridNode();}
_sortInstances()
{this._instances.sort((a,b)=>{let fakeDataGridNodeA={data:a};let fakeDataGridNodeB={data:b};return this._tree._sortComparator(fakeDataGridNodeA,fakeDataGridNodeB);});}
_updateBatchedChildren()
{let count=this.children.length;this.removeChildren();for(let i=0;i<count;++i)
this.appendChild(new WebInspector.HeapSnapshotInstanceDataGridNode(this._instances[i],this._tree));}
_removeFetchMoreDataGridNode()
{this.removeChild(this.children[this.children.length-1]);}
_appendFetchMoreDataGridNode()
{let count=this.children.length;let totalCount=this._instances.length;let remainingCount=totalCount-count;let batchSize=remainingCount>=WebInspector.HeapSnapshotClassDataGridNode.ChildrenBatchLimit?WebInspector.HeapSnapshotClassDataGridNode.ChildrenBatchLimit:0;this.appendChild(new WebInspector.HeapSnapshotInstanceFetchMoreDataGridNode(this._tree,batchSize,remainingCount,this._fetchBatch.bind(this)));}};WebInspector.HeapSnapshotClassDataGridNode.ChildrenBatchLimit=100;WebInspector.HeapSnapshotClusterContentView=class HeapSnapshotClusterContentView extends WebInspector.ClusterContentView
{constructor(heapSnapshot)
{super(heapSnapshot);this._heapSnapshot=heapSnapshot;function createPathComponent(displayName,className,identifier)
{let pathComponent=new WebInspector.HierarchicalPathComponent(displayName,className,identifier,false,true);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this._pathComponentSelected,this);pathComponent.comparisonData=heapSnapshot;return pathComponent;}
this._shownInitialContent=false;this._instancesContentView=null;this._objectGraphContentView=null;this._instancesPathComponent=createPathComponent.call(this,WebInspector.UIString("Instances"),"heap-snapshot-instances-icon",WebInspector.HeapSnapshotClusterContentView.InstancesIdentifier);this._objectGraphPathComponent=createPathComponent.call(this,WebInspector.UIString("Object Graph"),"heap-snapshot-object-graph-icon",WebInspector.HeapSnapshotClusterContentView.ObjectGraphIdentifier);if(this._supportsObjectGraph()){this._instancesPathComponent.nextSibling=this._objectGraphPathComponent;this._objectGraphPathComponent.previousSibling=this._instancesPathComponent;}
this._currentContentViewSetting=new WebInspector.Setting("heap-snapshot-cluster-current-view",WebInspector.HeapSnapshotClusterContentView.InstancesIdentifier);}
static iconStyleClassNameForClassName(className,internal)
{if(internal)
return"native";switch(className){case"Object":case"Array":case"Map":case"Set":case"WeakMap":case"WeakSet":case"Promise":case"Error":case"Window":case"Map Iterator":case"Set Iterator":case"Math":case"JSON":case"GlobalObject":return"object";case"Function":return"function";case"RegExp":return"regex";case"Number":return"number";case"Boolean":return"boolean";case"String":case"string":return"string";case"Symbol":case"symbol":return"symbol";}
if(className.endsWith("Prototype"))
return"object";if(className.endsWith("Element")||className==="Node"||className==="Text")
return"node";return"native";}
get heapSnapshot(){return this._heapSnapshot;}
get instancesContentView()
{if(!this._instancesContentView)
this._instancesContentView=new WebInspector.HeapSnapshotInstancesContentView(this._heapSnapshot);return this._instancesContentView;}
get objectGraphContentView()
{if(!this._supportsObjectGraph())
return null;if(!this._objectGraphContentView)
this._objectGraphContentView=new WebInspector.HeapSnapshotObjectGraphContentView(this._heapSnapshot);return this._objectGraphContentView;}
get selectionPathComponents()
{let currentContentView=this._contentViewContainer.currentContentView;if(!currentContentView)
return[];let components=[this._pathComponentForContentView(currentContentView)];return components.concat(currentContentView.selectionPathComponents);}
shown()
{super.shown();if(this._shownInitialContent)
return;this._showContentViewForIdentifier(this._currentContentViewSetting.value);}
closed()
{super.closed();this._shownInitialContent=false;}
saveToCookie(cookie)
{cookie[WebInspector.HeapSnapshotClusterContentView.ContentViewIdentifierCookieKey]=this._currentContentViewSetting.value;}
restoreFromCookie(cookie)
{this._showContentViewForIdentifier(cookie[WebInspector.HeapSnapshotClusterContentView.ContentViewIdentifierCookieKey]);}
showInstances()
{this._shownInitialContent=true;return this._showContentViewForIdentifier(WebInspector.HeapSnapshotClusterContentView.InstancesIdentifier);}
showObjectGraph()
{this._shownInitialContent=true;return this._showContentViewForIdentifier(WebInspector.HeapSnapshotClusterContentView.ObjectGraphIdentifier);}
_supportsObjectGraph()
{return this._heapSnapshot instanceof WebInspector.HeapSnapshotProxy;}
_pathComponentForContentView(contentView)
{if(!contentView)
return null;if(contentView===this._instancesContentView)
return this._instancesPathComponent;if(contentView===this._objectGraphContentView)
return this._objectGraphPathComponent;console.error("Unknown contentView.");return null;}
_identifierForContentView(contentView)
{if(!contentView)
return null;if(contentView===this._instancesContentView)
return WebInspector.HeapSnapshotClusterContentView.InstancesIdentifier;if(contentView===this._objectGraphContentView)
return WebInspector.HeapSnapshotClusterContentView.ObjectGraphIdentifier;console.error("Unknown contentView.");return null;}
_showContentViewForIdentifier(identifier)
{let contentViewToShow=null;switch(identifier){case WebInspector.HeapSnapshotClusterContentView.InstancesIdentifier:contentViewToShow=this.instancesContentView;break;case WebInspector.HeapSnapshotClusterContentView.ObjectGraphIdentifier:contentViewToShow=this.objectGraphContentView;break;}
if(!contentViewToShow)
contentViewToShow=this.instancesContentView;this._shownInitialContent=true;this._currentContentViewSetting.value=this._identifierForContentView(contentViewToShow);return this.contentViewContainer.showContentView(contentViewToShow);}
_pathComponentSelected(event)
{this._showContentViewForIdentifier(event.data.pathComponent.representedObject);}};WebInspector.HeapSnapshotClusterContentView.ContentViewIdentifierCookieKey="heap-snapshot-cluster-content-view-identifier";WebInspector.HeapSnapshotClusterContentView.InstancesIdentifier="instances";WebInspector.HeapSnapshotClusterContentView.ObjectGraphIdentifier="object-graph";WebInspector.HeapSnapshotContentView=class HeapSnapshotContentView extends WebInspector.ContentView
{constructor(representedObject,identifier,columns,heapSnapshotDataGridTreeConstructor)
{super(representedObject);this.element.classList.add("heap-snapshot");this._dataGrid=new WebInspector.DataGrid(columns);this._dataGrid.sortColumnIdentifier="retainedSize";this._dataGrid.sortOrder=WebInspector.DataGrid.SortOrder.Descending;this._dataGrid.createSettings(identifier);this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SortChanged,this._sortDataGrid,this);let sortComparator=WebInspector.HeapSnapshotDataGridTree.buildSortComparator(this._dataGrid.sortColumnIdentifier,this._dataGrid.sortOrder);this._heapSnapshotDataGridTree=new heapSnapshotDataGridTreeConstructor(this.representedObject,sortComparator);this._heapSnapshotDataGridTree.addEventListener(WebInspector.HeapSnapshotDataGridTree.Event.DidPopulate,this._heapSnapshotDataGridTreeDidPopulate,this);for(let child of this._heapSnapshotDataGridTree.children)
this._dataGrid.appendChild(child);this.addSubview(this._dataGrid);this._dataGrid.updateLayout();}
shown()
{super.shown();this._heapSnapshotDataGridTree.shown();}
hidden()
{super.hidden();this._heapSnapshotDataGridTree.hidden();}
get scrollableElements()
{return[this._dataGrid.scrollContainer];}
_sortDataGrid()
{if(!this._heapSnapshotDataGridTree)
return;this._heapSnapshotDataGridTree.sortComparator=WebInspector.HeapSnapshotDataGridTree.buildSortComparator(this._dataGrid.sortColumnIdentifier,this._dataGrid.sortOrder);this._dataGrid.removeChildren();for(let child of this._heapSnapshotDataGridTree.children)
this._dataGrid.appendChild(child);}
_heapSnapshotDataGridTreeDidPopulate()
{this._dataGrid.removeChildren();for(let child of this._heapSnapshotDataGridTree.children)
this._dataGrid.appendChild(child);}};WebInspector.HeapSnapshotInstancesContentView=class HeapSnapshotInstancesContentView extends WebInspector.HeapSnapshotContentView
{constructor(representedObject)
{let columns={retainedSize:{title:WebInspector.UIString("Retained Size"),tooltip:WebInspector.UIString("Size of current object plus all objects it keeps alive"),width:"140px",aligned:"right",sortable:true,},size:{title:WebInspector.UIString("Self Size"),width:"90px",aligned:"right",sortable:true,},count:{title:WebInspector.UIString("Count"),width:"75px",aligned:"right",sortable:true,},className:{title:WebInspector.UIString("Name"),sortable:true,disclosure:true,}};super(representedObject,"heap-snapshot-instances-content-view",columns,WebInspector.HeapSnapshotInstancesDataGridTree);}};WebInspector.HeapSnapshotObjectGraphContentView=class HeapSnapshotObjectGraphContentView extends WebInspector.HeapSnapshotContentView
{constructor(representedObject)
{let columns={retainedSize:{title:WebInspector.UIString("Retained Size"),tooltip:WebInspector.UIString("Size of current object plus all objects it keeps alive"),width:"140px",aligned:"right",sortable:true,},size:{title:WebInspector.UIString("Self Size"),width:"90px",aligned:"right",sortable:true,},className:{title:WebInspector.UIString("Name"),sortable:true,disclosure:true,}};super(representedObject,"heap-snapshot-object-graph-content-view",columns,WebInspector.HeapSnapshotObjectGraphDataGridTree);}};WebInspector.HeapSnapshotDataGridTree=class HeapSnapshotDataGridTree extends WebInspector.Object
{constructor(heapSnapshot,sortComparator)
{super();this._heapSnapshot=heapSnapshot;this._heapSnapshot.addEventListener(WebInspector.HeapSnapshotProxy.Event.CollectedNodes,this._heapSnapshotCollectedNodes,this);this._children=[];this._sortComparator=sortComparator;this._visible=false;this._popover=null;this._popoverGridNode=null;this._popoverTargetElement=null;this.populateTopLevel();}
static buildSortComparator(columnIdentifier,sortOrder)
{let multiplier=sortOrder===WebInspector.DataGrid.SortOrder.Ascending?1:-1;let numberCompare=(columnIdentifier,a,b)=>multiplier*(a.data[columnIdentifier]-b.data[columnIdentifier]);let nameCompare=(a,b)=>{if(a.propertyName||b.propertyName){if(a.propertyName&&!b.propertyName)
return multiplier*-1;if(!a.propertyName&&b.propertyName)
return multiplier*1;let propertyNameCompare=a.propertyName.extendedLocaleCompare(b.propertyName);return multiplier*propertyNameCompare;}
let classNameCompare=a.data.className.extendedLocaleCompare(b.data.className);if(classNameCompare)
return multiplier*classNameCompare;if(a.data.id||b.data.id)
return multiplier*(a.data.id-b.data.id);return 0;};switch(columnIdentifier){case"retainedSize":return numberCompare.bind(this,"retainedSize");case"size":return numberCompare.bind(this,"size");case"count":return numberCompare.bind(this,"count");case"className":return nameCompare;}}
get heapSnapshot(){return this._heapSnapshot;}
get visible(){return this._visible;}
get popoverGridNode(){return this._popoverGridNode;}
set popoverGridNode(x){this._popoverGridNode=x;}
get popoverTargetElement(){return this._popoverTargetElement;}
set popoverTargetElement(x){this._popoverTargetElement=x;}
get popover()
{if(!this._popover){this._popover=new WebInspector.Popover(this);this._popover.windowResizeHandler=()=>{let bounds=WebInspector.Rect.rectFromClientRect(this._popoverTargetElement.getBoundingClientRect());this._popover.present(bounds.pad(2),[WebInspector.RectEdge.MAX_Y,WebInspector.RectEdge.MIN_Y,WebInspector.RectEdge.MAX_X]);};}
return this._popover;}
get children()
{return this._children;}
appendChild(node)
{this._children.push(node);}
insertChild(node,index)
{this._children.splice(index,0,node);}
removeChild(node)
{this._children.remove(node,true);}
removeChildren()
{this._children=[];}
set sortComparator(comparator)
{this._sortComparator=comparator;this.sort();}
sort()
{let children=this._children;children.sort(this._sortComparator);for(let i=0;i<children.length;++i){children[i]._recalculateSiblings(i);children[i].sort();}}
shown()
{this._visible=true;}
hidden()
{this._visible=false;if(this._popover&&this._popover.visible)
this._popover.dismiss();}
willDismissPopover(popover)
{this._popoverGridNode=null;this._popoverTargetElement=null;}
get alwaysShowRetainedSize()
{return false;}
populateTopLevel()
{}
removeCollectedNodes(collectedNodes)
{}
didPopulate()
{this.sort();this.dispatchEventToListeners(WebInspector.HeapSnapshotDataGridTree.Event.DidPopulate);}
_heapSnapshotCollectedNodes(event)
{this.removeCollectedNodes(event.data.collectedNodes);}};WebInspector.HeapSnapshotDataGridTree.Event={DidPopulate:"heap-snapshot-data-grid-tree-did-populate",};WebInspector.HeapSnapshotInstancesDataGridTree=class HeapSnapshotInstancesDataGridTree extends WebInspector.HeapSnapshotDataGridTree
{get alwaysShowRetainedSize()
{return false;}
populateTopLevel()
{for(let[className,{size,retainedSize,count,internalCount,deadCount}]of this.heapSnapshot.categories){if(count===internalCount)
continue; let liveCount=count-deadCount;if(!liveCount)
continue;this.appendChild(new WebInspector.HeapSnapshotClassDataGridNode({className,size,retainedSize,count:liveCount},this));}
this.didPopulate();}
removeCollectedNodes(collectedNodes)
{for(let classDataGridNode of this.children){let{count,deadCount}=this.heapSnapshot.categories.get(classDataGridNode.data.className);let liveCount=count-deadCount;classDataGridNode.updateCount(liveCount);if(liveCount)
classDataGridNode.removeCollectedNodes(collectedNodes);}
this.didPopulate();}};WebInspector.HeapSnapshotObjectGraphDataGridTree=class HeapSnapshotInstancesDataGridTree extends WebInspector.HeapSnapshotDataGridTree
{get alwaysShowRetainedSize()
{return true;}
populateTopLevel()
{this.heapSnapshot.instancesWithClassName("GlobalObject",(instances)=>{for(let instance of instances)
this.appendChild(new WebInspector.HeapSnapshotInstanceDataGridNode(instance,this));});this.heapSnapshot.instancesWithClassName("Window",(instances)=>{for(let instance of instances){
if(instance.dominatorNodeIdentifier===0)
this.appendChild(new WebInspector.HeapSnapshotInstanceDataGridNode(instance,this));}
this.didPopulate();});}};WebInspector.HeapSnapshotInstanceDataGridNode=class HeapSnapshotInstanceDataGridNode extends WebInspector.DataGridNode
{constructor(node,tree,edge,base)
{let hasChildren=node.hasChildren&&node.className!=="string";super(node,hasChildren);this._node=node;this._tree=tree;this._edge=edge||null;this._base=base||null;this.copyable=false;if(hasChildren)
this.addEventListener("populate",this._populate,this);}
static logHeapSnapshotNode(node)
{let heapObjectIdentifier=node.id;let shouldRevealConsole=true;let text=WebInspector.UIString("Heap Snapshot Object (%s)").format("@"+heapObjectIdentifier);node.shortestGCRootPath((gcRootPath)=>{if(gcRootPath.length){gcRootPath=gcRootPath.slice().reverse();let windowIndex=gcRootPath.findIndex((x)=>{return x instanceof WebInspector.HeapSnapshotNodeProxy&&x.className==="Window";});let heapSnapshotRootPath=WebInspector.HeapSnapshotRootPath.emptyPath();for(let i=windowIndex===-1?0:windowIndex;i<gcRootPath.length;++i){let component=gcRootPath[i];if(component instanceof WebInspector.HeapSnapshotNodeProxy){if(component.className==="Window")
heapSnapshotRootPath=heapSnapshotRootPath.appendGlobalScopeName(component,"window");}else if(component instanceof WebInspector.HeapSnapshotEdgeProxy)
heapSnapshotRootPath=heapSnapshotRootPath.appendEdge(component);}
if(!heapSnapshotRootPath.isFullPathImpossible())
text=heapSnapshotRootPath.fullPath;}
if(node.className==="string"){HeapAgent.getPreview(heapObjectIdentifier,function(error,string,functionDetails,objectPreviewPayload){let remoteObject=error?WebInspector.RemoteObject.fromPrimitiveValue(undefined):WebInspector.RemoteObject.fromPrimitiveValue(string);WebInspector.consoleLogViewController.appendImmediateExecutionWithResult(text,remoteObject,shouldRevealConsole);});}else{HeapAgent.getRemoteObject(heapObjectIdentifier,WebInspector.RuntimeManager.ConsoleObjectGroup,function(error,remoteObjectPayload){let remoteObject=error?WebInspector.RemoteObject.fromPrimitiveValue(undefined):WebInspector.RemoteObject.fromPayload(remoteObjectPayload,WebInspector.assumingMainTarget());WebInspector.consoleLogViewController.appendImmediateExecutionWithResult(text,remoteObject,shouldRevealConsole);});}});}
get data(){return this._node;}
get node(){return this._node;}
get propertyName()
{if(!this._edge)
return"";if(!this._propertyName)
this._propertyName=WebInspector.HeapSnapshotRootPath.pathComponentForIndividualEdge(this._edge);return this._propertyName;}
createCells()
{super.createCells();this.element.classList.add("instance");}
createCellContent(columnIdentifier)
{if(columnIdentifier==="retainedSize"){let subRetainedSize=false;if(this._base&&!this._tree.alwaysShowRetainedSize){if(this._isDominatedByNonBaseParent())
subRetainedSize=true;else if(!this._isDominatedByBase())
return emDash;}
let size=this._node.retainedSize;let fragment=document.createDocumentFragment();let sizeElement=fragment.appendChild(document.createElement("span"));sizeElement.classList.add("size");sizeElement.textContent=Number.bytesToString(size);let fraction=size/this._tree._heapSnapshot.totalSize;let percentElement=fragment.appendChild(document.createElement("span"));percentElement.classList.add("percentage");percentElement.textContent=Number.percentageString(fraction);if(subRetainedSize){sizeElement.classList.add("sub-retained");percentElement.classList.add("sub-retained");}
return fragment;}
if(columnIdentifier==="size")
return Number.bytesToString(this._node.size);if(columnIdentifier==="className"){let{className,id,internal}=this._node;let containerElement=document.createElement("span");containerElement.addEventListener("contextmenu",this._contextMenuHandler.bind(this));let iconElement=containerElement.appendChild(document.createElement("img"));iconElement.classList.add("icon",WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName(className,internal));if(this._edge){let nameElement=containerElement.appendChild(document.createElement("span"));let propertyName=this.propertyName;if(propertyName)
nameElement.textContent=propertyName+": "+this._node.className+" ";else
nameElement.textContent=this._node.className+" ";}
let idElement=containerElement.appendChild(document.createElement("span"));idElement.classList.add("object-id");idElement.textContent="@"+id;idElement.addEventListener("click",WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode.bind(null,this._node));idElement.addEventListener("mouseover",this._mouseoverHandler.bind(this));let spacerElement=containerElement.appendChild(document.createElement("span"));spacerElement.textContent=" ";if(className==="Window"&&this._node.dominatorNodeIdentifier===0){containerElement.append("Window ");this._populateWindowPreview(containerElement);}else
this._populatePreview(containerElement);return containerElement;}
return super.createCellContent(columnIdentifier);}
sort()
{let children=this.children;children.sort(this._tree._sortComparator);for(let i=0;i<children.length;++i){children[i]._recalculateSiblings(i);children[i].sort();}}
_isDominatedByBase()
{return this._node.dominatorNodeIdentifier===this._base.node.id;}
_isDominatedByNonBaseParent()
{for(let p=this.parent;p;p=p.parent){if(p===this._base)
return false;if(this._node.dominatorNodeIdentifier===p.node.id)
return true;}
return false;}
_populate()
{this.removeEventListener("populate",this._populate,this);function propertyName(edge){return edge?WebInspector.HeapSnapshotRootPath.pathComponentForIndividualEdge(edge):"";}
this._node.retainedNodes((instances,edges)=>{for(let i=0;i<instances.length;++i)
instances[i].__edge=edges[i];instances.sort((a,b)=>{let fakeDataGridNodeA={data:a,propertyName:propertyName(a.__edge)};let fakeDataGridNodeB={data:b,propertyName:propertyName(b.__edge)};return this._tree._sortComparator(fakeDataGridNodeA,fakeDataGridNodeB);});for(let instance of instances){if(instance.__edge&&instance.__edge.isPrivateSymbol())
continue;this.appendChild(new WebInspector.HeapSnapshotInstanceDataGridNode(instance,this._tree,instance.__edge,this._base||this));}});}
_contextMenuHandler(event)
{let contextMenu=WebInspector.ContextMenu.createFromEvent(event);contextMenu.appendSeparator();contextMenu.appendItem(WebInspector.UIString("Log Value"),WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode.bind(null,this._node));}
_populateError(containerElement)
{if(this._node.internal)
return;let previewErrorElement=containerElement.appendChild(document.createElement("span"));previewErrorElement.classList.add("preview-error");previewErrorElement.textContent=WebInspector.UIString("No preview available");}
_populateWindowPreview(containerElement)
{HeapAgent.getRemoteObject(this._node.id,(error,remoteObjectPayload)=>{if(error){this._populateError(containerElement);return;}
function inspectedPage_window_getLocationHref(){return this.location.href;}
let remoteObject=WebInspector.RemoteObject.fromPayload(remoteObjectPayload,WebInspector.assumingMainTarget());remoteObject.callFunctionJSON(inspectedPage_window_getLocationHref,undefined,(href)=>{remoteObject.release();if(!href)
this._populateError(containerElement);else{let primitiveRemoteObject=WebInspector.RemoteObject.fromPrimitiveValue(href);containerElement.appendChild(WebInspector.FormattedValue.createElementForRemoteObject(primitiveRemoteObject));}});});}
_populatePreview(containerElement)
{HeapAgent.getPreview(this._node.id,(error,string,functionDetails,objectPreviewPayload)=>{if(error){this._populateError(containerElement);return;}
if(string){let primitiveRemoteObject=WebInspector.RemoteObject.fromPrimitiveValue(string);containerElement.appendChild(WebInspector.FormattedValue.createElementForRemoteObject(primitiveRemoteObject));return;}
if(functionDetails){let{location,name,displayName}=functionDetails;let functionNameElement=containerElement.appendChild(document.createElement("span"));functionNameElement.classList.add("function-name");functionNameElement.textContent=name||displayName||WebInspector.UIString("(anonymous function)");let sourceCode=WebInspector.debuggerManager.scriptForIdentifier(location.scriptId,WebInspector.assumingMainTarget());if(sourceCode){let locationElement=containerElement.appendChild(document.createElement("span"));locationElement.classList.add("location");let sourceCodeLocation=sourceCode.createSourceCodeLocation(location.lineNumber,location.columnNumber);sourceCodeLocation.populateLiveDisplayLocationString(locationElement,"textContent",WebInspector.SourceCodeLocation.ColumnStyle.Hidden,WebInspector.SourceCodeLocation.NameStyle.Short);const options={dontFloat:true,useGoToArrowButton:true,ignoreNetworkTab:true,ignoreSearchTab:true,};let goToArrowButtonLink=WebInspector.createSourceCodeLocationLink(sourceCodeLocation,options);containerElement.appendChild(goToArrowButtonLink);}
return;}
if(objectPreviewPayload){let objectPreview=WebInspector.ObjectPreview.fromPayload(objectPreviewPayload);let previewElement=WebInspector.FormattedValue.createObjectPreviewOrFormattedValueForObjectPreview(objectPreview);containerElement.appendChild(previewElement);return;}});}
_mouseoverHandler(event)
{let targetFrame=WebInspector.Rect.rectFromClientRect(event.target.getBoundingClientRect());if(!targetFrame.size.width&&!targetFrame.size.height)
return;if(this._tree.popoverGridNode===this._node)
return;this._tree.popoverGridNode=this._node;this._tree.popoverTargetElement=event.target;let popoverContentElement=document.createElement("div");popoverContentElement.classList.add("heap-snapshot","heap-snapshot-instance-popover-content");function appendTitle(node){let idElement=document.createElement("span");idElement.classList.add("object-id");idElement.textContent="@"+node.id;idElement.addEventListener("click",WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode.bind(null,node));let title=popoverContentElement.appendChild(document.createElement("div"));title.classList.add("title");let localizedString=WebInspector.UIString("Shortest property path to %s").format("@@@");let[before,after]=localizedString.split(/\s*@@@\s*/);title.append(before+" ",idElement," "+after);}
function appendPath(path){let tableContainer=popoverContentElement.appendChild(document.createElement("div"));tableContainer.classList.add("table-container");let tableElement=tableContainer.appendChild(document.createElement("table"));path=path.slice().reverse();let windowIndex=path.findIndex((x)=>{return x instanceof WebInspector.HeapSnapshotNodeProxy&&x.className==="Window";});let edge=null;for(let i=windowIndex===-1?0:windowIndex;i<path.length;++i){let component=path[i];if(component instanceof WebInspector.HeapSnapshotEdgeProxy){edge=component;continue;}
appendPathRow(tableElement,edge,component);edge=null;}}
function appendPathRow(tableElement,edge,node){let tableRow=tableElement.appendChild(document.createElement("tr"));let pathDataElement=tableRow.appendChild(document.createElement("td"));pathDataElement.classList.add("edge-name");if(node.className==="Window")
pathDataElement.textContent="window";else if(edge){let edgeString=stringifyEdge(edge);pathDataElement.textContent=typeof edgeString==="string"?edgeString:emDash;}else
pathDataElement.textContent=emDash;if(pathDataElement.textContent.length>10)
pathDataElement.title=pathDataElement.textContent;let objectDataElement=tableRow.appendChild(document.createElement("td"));objectDataElement.classList.add("object-data");let containerElement=objectDataElement.appendChild(document.createElement("div"));containerElement.classList.add("node");let iconElement=containerElement.appendChild(document.createElement("img"));iconElement.classList.add("icon",WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName(node.className,node.internal));let classNameElement=containerElement.appendChild(document.createElement("span"));classNameElement.textContent=sanitizeClassName(node.className)+" ";let idElement=containerElement.appendChild(document.createElement("span"));idElement.classList.add("object-id");idElement.textContent="@"+node.id;idElement.addEventListener("click",WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode.bind(null,node));if(node.className==="Function"){let goToArrowPlaceHolderElement=containerElement.appendChild(document.createElement("span"));goToArrowPlaceHolderElement.style.display="inline-block";goToArrowPlaceHolderElement.style.width="10px";HeapAgent.getPreview(node.id,function(error,string,functionDetails,objectPreviewPayload){if(functionDetails){let location=functionDetails.location;let sourceCode=WebInspector.debuggerManager.scriptForIdentifier(location.scriptId,WebInspector.assumingMainTarget());if(sourceCode){let sourceCodeLocation=sourceCode.createSourceCodeLocation(location.lineNumber,location.columnNumber);const options={dontFloat:true,useGoToArrowButton:true,ignoreNetworkTab:true,ignoreSearchTab:true,};let goToArrowButtonLink=WebInspector.createSourceCodeLocationLink(sourceCodeLocation,options);containerElement.replaceChild(goToArrowButtonLink,goToArrowPlaceHolderElement);}}});}}
function sanitizeClassName(className){if(className.endsWith("LexicalEnvironment"))
return WebInspector.UIString("Scope");return className;}
function stringifyEdge(edge){switch(edge.type){case WebInspector.HeapSnapshotEdgeProxy.EdgeType.Property:case WebInspector.HeapSnapshotEdgeProxy.EdgeType.Variable:if(/^(?![0-9])\w+$/.test(edge.data))
return edge.data;return"["+doubleQuotedString(edge.data)+"]";case WebInspector.HeapSnapshotEdgeProxy.EdgeType.Index:return"["+edge.data+"]";case WebInspector.HeapSnapshotEdgeProxy.EdgeType.Internal:default:return null;}}
this._node.shortestGCRootPath((path)=>{if(!this._tree.visible)
return;if(path.length){appendTitle(this._node);appendPath(path);}else if(this._node.gcRoot){let textElement=popoverContentElement.appendChild(document.createElement("div"));textElement.textContent=WebInspector.UIString("This object is a root");}else{let emptyElement=popoverContentElement.appendChild(document.createElement("div"));emptyElement.textContent=WebInspector.UIString("This object is referenced by internal objects");}
this._tree.popover.presentNewContentWithFrame(popoverContentElement,targetFrame.pad(2),[WebInspector.RectEdge.MAX_Y,WebInspector.RectEdge.MIN_Y,WebInspector.RectEdge.MAX_X]);});}};WebInspector.HeapSnapshotInstanceFetchMoreDataGridNode=class HeapSnapshotInstanceFetchMoreDataGridNode extends WebInspector.DataGridNode
{constructor(tree,batchCount,remainingCount,fetchCallback)
{super({},false);this._tree=tree;this._batchCount=batchCount;this._remainingCount=remainingCount;this._fetchCallback=fetchCallback;}
createCellContent(columnIdentifier)
{if(columnIdentifier!=="className")
return"";let fragment=document.createDocumentFragment();if(this._batchCount){let buttonElement=fragment.appendChild(document.createElement("span"));buttonElement.classList.add("more");buttonElement.textContent=WebInspector.UIString("Show %d More").format(this._batchCount);buttonElement.addEventListener("click",(event)=>{this._fetchCallback(this._batchCount);});}
let buttonElement=fragment.appendChild(document.createElement("span"));buttonElement.classList.add("more");buttonElement.textContent=WebInspector.UIString("Show Remaining (%d)").format(this._remainingCount);buttonElement.addEventListener("click",(event)=>{this._fetchCallback(this._remainingCount);});return fragment;}
sort()
{}};WebInspector.HierarchicalPathNavigationItem=class HierarchicalPathNavigationItem extends WebInspector.NavigationItem
{constructor(identifier,components)
{super(identifier);this.components=components;}
get components()
{return this._components;}
set components(newComponents)
{if(!newComponents)
newComponents=[];let componentsEqual=function(a,b){let getRepresentedObjects=(component)=>component.representedObject;let representedObjectsA=a.map(getRepresentedObjects);let representedObjectsB=b.map(getRepresentedObjects);if(!Array.shallowEqual(representedObjectsA,representedObjectsB))
return false;let getExtraComparisonData=(component)=>component.comparisonData;let extraComparisonDataA=a.map(getExtraComparisonData);let extraComparisonDataB=b.map(getExtraComparisonData);return Array.shallowEqual(extraComparisonDataA,extraComparisonDataB);};if(this._components&&componentsEqual(this._components,newComponents))
return;for(var i=0;this._components&&i<this._components.length;++i)
this._components[i].removeEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this._siblingPathComponentWasSelected,this);this._components=newComponents.slice(0);for(var i=0;i<this._components.length;++i)
this._components[i].addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this._siblingPathComponentWasSelected,this);this.element.removeChildren();delete this._collapsedComponent;for(var i=0;i<newComponents.length;++i)
this.element.appendChild(newComponents[i].element);if(this.parentNavigationBar)
this.parentNavigationBar.needsLayout();}
get lastComponent()
{return this._components.lastValue||null;}
get alwaysShowLastPathComponentSeparator()
{return this.element.classList.contains(WebInspector.HierarchicalPathNavigationItem.AlwaysShowLastPathComponentSeparatorStyleClassName);}
set alwaysShowLastPathComponentSeparator(flag)
{if(flag)
this.element.classList.add(WebInspector.HierarchicalPathNavigationItem.AlwaysShowLastPathComponentSeparatorStyleClassName);else
this.element.classList.remove(WebInspector.HierarchicalPathNavigationItem.AlwaysShowLastPathComponentSeparatorStyleClassName);}
updateLayout(expandOnly)
{var navigationBar=this.parentNavigationBar;if(!navigationBar)
return;if(this._collapsedComponent){this.element.removeChild(this._collapsedComponent.element);delete this._collapsedComponent;}
for(var i=0;i<this._components.length;++i){this._components[i].hidden=false;this._components[i].forcedWidth=null;}
if(expandOnly)
return;if(navigationBar.sizesToFit)
return;var totalOtherItemsWidth=0;for(var i=0;i<navigationBar.navigationItems.length;++i){if(navigationBar.navigationItems[i]===this)
continue;if(navigationBar.navigationItems[i]instanceof WebInspector.FlexibleSpaceNavigationItem)
continue;totalOtherItemsWidth+=navigationBar.navigationItems[i].element.realOffsetWidth;}
var thisItemWidth=0;var componentWidths=[];for(var i=0;i<this._components.length;++i){var componentWidth=this._components[i].element.realOffsetWidth;componentWidths.push(componentWidth);thisItemWidth+=componentWidth;}
var barWidth=navigationBar.element.realOffsetWidth;if(totalOtherItemsWidth+thisItemWidth<=barWidth)
return;
var widthToRemove=totalOtherItemsWidth+thisItemWidth-barWidth;for(var i=0;i<this._components.length;++i){var componentWidth=componentWidths[i];var forcedWidth=componentWidth-widthToRemove;this._components[i].forcedWidth=forcedWidth;
componentWidths[i]=Math.max(this._components[i].minimumWidth,forcedWidth);widthToRemove-=(componentWidth-componentWidths[i]);if(widthToRemove<=0)
break;}
if(widthToRemove<=0)
return;
if(this._components.length<=3)
return;var middle=this._components.length>>1;var distance=-1;var i=middle;this._collapsedComponent=new WebInspector.HierarchicalPathComponent(ellipsis,[]);this._collapsedComponent.collapsed=true;this.element.insertBefore(this._collapsedComponent.element,this._components[middle].element);widthToRemove+=this._collapsedComponent.minimumWidth;var hiddenDisplayNames=[];while(i>=0&&i<=this._components.length-1){if(i>0&&i<this._components.length-1){var component=this._components[i];component.hidden=true;if(distance>0)
hiddenDisplayNames.unshift(component.displayName);else
hiddenDisplayNames.push(component.displayName);widthToRemove-=componentWidths[i];if(widthToRemove<=0)
break;}
i=middle+distance;if(distance>0)
++distance;distance*=-1;}
this._collapsedComponent.element.title=hiddenDisplayNames.join("\n");}
get additionalClassNames()
{return["hierarchical-path"];}
_siblingPathComponentWasSelected(event)
{this.dispatchEventToListeners(WebInspector.HierarchicalPathNavigationItem.Event.PathComponentWasSelected,event.data);}};WebInspector.HierarchicalPathNavigationItem.AlwaysShowLastPathComponentSeparatorStyleClassName="always-show-last-path-component-separator";WebInspector.HierarchicalPathNavigationItem.Event={PathComponentWasSelected:"hierarchical-path-navigation-item-path-component-was-selected"};WebInspector.HoverMenu=class HoverMenu extends WebInspector.Object
{constructor(delegate)
{super();this.delegate=delegate;this._element=document.createElement("div");this._element.className="hover-menu";this._element.addEventListener("transitionend",this,true);this._outlineElement=this._element.appendChild(document.createElementNS("http://www.w3.org/2000/svg","svg"));this._button=this._element.appendChild(document.createElement("img"));this._button.addEventListener("click",this);}
get element()
{return this._element;}
present(rects)
{this._outlineElement.textContent="";document.body.appendChild(this._element);this._drawOutline(rects);this._element.classList.add(WebInspector.HoverMenu.VisibleClassName);window.addEventListener("scroll",this,true);}
dismiss(discrete)
{if(this._element.parentNode!==document.body)
return;if(discrete)
this._element.remove();this._element.classList.remove(WebInspector.HoverMenu.VisibleClassName);window.removeEventListener("scroll",this,true);}
handleEvent(event)
{switch(event.type){case"scroll":if(!this._element.contains(event.target))
this.dismiss(true);break;case"click":this._handleClickEvent(event);break;case"transitionend":if(!this._element.classList.contains(WebInspector.HoverMenu.VisibleClassName))
this._element.remove();break;}}
_handleClickEvent(event)
{if(this.delegate&&typeof this.delegate.hoverMenuButtonWasPressed==="function")
this.delegate.hoverMenuButtonWasPressed(this);}
_drawOutline(rects)
{var buttonWidth=this._button.width;var buttonHeight=this._button.height;var lastRect=rects.pop();lastRect.size.width+=buttonWidth;rects.push(lastRect);if(rects.length===1)
this._drawSingleLine(rects[0]);else if(rects.length===2&&rects[0].minX()>=rects[1].maxX())
this._drawTwoNonOverlappingLines(rects);else
this._drawOverlappingLines(rects);var bounds=WebInspector.Rect.unionOfRects(rects).pad(3); var style=this._element.style;style.left=bounds.minX()+"px";style.top=bounds.minY()+"px";style.width=bounds.size.width+"px";style.height=bounds.size.height+"px";this._outlineElement.style.width=bounds.size.width+"px";this._outlineElement.style.height=bounds.size.height+"px";this._button.style.left=(lastRect.maxX()-bounds.minX()-buttonWidth)+"px";this._button.style.top=(lastRect.maxY()-bounds.minY()-buttonHeight)+"px";}
_addRect(rect)
{var r=4;var svgRect=document.createElementNS("http://www.w3.org/2000/svg","rect");svgRect.setAttribute("x",1);svgRect.setAttribute("y",1);svgRect.setAttribute("width",rect.size.width);svgRect.setAttribute("height",rect.size.height);svgRect.setAttribute("rx",r);svgRect.setAttribute("ry",r);return this._outlineElement.appendChild(svgRect);}
_addPath(commands,tx,ty)
{var path=document.createElementNS("http://www.w3.org/2000/svg","path");path.setAttribute("d",commands.join(" "));path.setAttribute("transform","translate("+(tx+1)+","+(ty+1)+")");return this._outlineElement.appendChild(path);}
_drawSingleLine(rect)
{this._addRect(rect.pad(2));}
_drawTwoNonOverlappingLines(rects)
{var r=4;var firstRect=rects[0].pad(2);var secondRect=rects[1].pad(2);var tx=-secondRect.minX();var ty=-firstRect.minY();var rect=firstRect;this._addPath(["M",rect.maxX(),rect.minY(),"H",rect.minX()+r,"q",-r,0,-r,r,"V",rect.maxY()-r,"q",0,r,r,r,"H",rect.maxX()],tx,ty);rect=secondRect;this._addPath(["M",rect.minX(),rect.minY(),"H",rect.maxX()-r,"q",r,0,r,r,"V",rect.maxY()-r,"q",0,r,-r,r,"H",rect.minX()],tx,ty);}
_drawOverlappingLines(rects)
{var PADDING=2;var r=4;var minX=Number.MAX_VALUE;var maxX=-Number.MAX_VALUE;for(var rect of rects){var minX=Math.min(rect.minX(),minX);var maxX=Math.max(rect.maxX(),maxX);}
minX-=PADDING;maxX+=PADDING;var minY=rects[0].minY()-PADDING;var maxY=rects.lastValue.maxY()+PADDING;var firstLineMinX=rects[0].minX()-PADDING;var lastLineMaxX=rects.lastValue.maxX()+PADDING;if(firstLineMinX===minX&&lastLineMaxX===maxX)
return this._addRect(new WebInspector.Rect(minX,minY,maxX-minX,maxY-minY));var lastLineMinY=rects.lastValue.minY()+PADDING;if(rects[0].minX()===minX+PADDING){return this._addPath(["M",minX+r,minY,"H",maxX-r,"q",r,0,r,r,"V",lastLineMinY-r,"q",0,r,-r,r,"H",lastLineMaxX+r,"q",-r,0,-r,r,"V",maxY-r,"q",0,r,-r,r,"H",minX+r,"q",-r,0,-r,-r,"V",minY+r,"q",0,-r,r,-r],-minX,-minY);}
var firstLineMaxY=rects[0].maxY()-PADDING;if(rects.lastValue.maxX()===maxX-PADDING){return this._addPath(["M",firstLineMinX+r,minY,"H",maxX-r,"q",r,0,r,r,"V",maxY-r,"q",0,r,-r,r,"H",minX+r,"q",-r,0,-r,-r,"V",firstLineMaxY+r,"q",0,-r,r,-r,"H",firstLineMinX-r,"q",r,0,r,-r,"V",minY+r,"q",0,-r,r,-r],-minX,-minY);}
return this._addPath(["M",firstLineMinX+r,minY,"H",maxX-r,"q",r,0,r,r,"V",lastLineMinY-r,"q",0,r,-r,r,"H",lastLineMaxX+r,"q",-r,0,-r,r,"V",maxY-r,"q",0,r,-r,r,"H",minX+r,"q",-r,0,-r,-r,"V",firstLineMaxY+r,"q",0,-r,r,-r,"H",firstLineMinX-r,"q",r,0,r,-r,"V",minY+r,"q",0,-r,r,-r],-minX,-minY);}};WebInspector.HoverMenu.VisibleClassName="visible";WebInspector.IdleTreeElement=class IdleTreeElement extends WebInspector.GeneralTreeElement
{constructor()
{super("idle",WebInspector.UIString("Idle"));}};WebInspector.ImageResourceContentView=class ImageResourceContentView extends WebInspector.ResourceContentView
{constructor(resource)
{super(resource,"image");this._imageElement=null;const toolTip=WebInspector.UIString("Show Grid");const activatedToolTip=WebInspector.UIString("Hide Grid");this._showGridButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("show-grid",toolTip,activatedToolTip,"Images/NavigationItemCheckers.svg",13,13);this._showGridButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._showGridButtonClicked,this);this._showGridButtonNavigationItem.activated=!!WebInspector.settings.showImageGrid.value;}
get navigationItems()
{return[this._showGridButtonNavigationItem];}
contentAvailable(content,base64Encoded)
{let objectURL=this.resource.createObjectURL();if(!objectURL){this.showGenericErrorMessage();return;}
this.removeLoadingIndicator();this._imageElement=document.createElement("img");this._imageElement.addEventListener("load",function(){URL.revokeObjectURL(objectURL);});this._imageElement.src=objectURL;this._imageElement.setAttribute("filename",this.resource.urlComponents.lastPathComponent||"");this._updateImageGrid();this.element.appendChild(this._imageElement);}
shown()
{super.shown();this._updateImageGrid();WebInspector.settings.showImageGrid.addEventListener(WebInspector.Setting.Event.Changed,this._updateImageGrid,this);}
hidden()
{WebInspector.settings.showImageGrid.removeEventListener(WebInspector.Setting.Event.Changed,this._updateImageGrid,this);super.hidden();}
_updateImageGrid()
{if(!this._imageElement)
return;let activated=WebInspector.settings.showImageGrid.value;this._showGridButtonNavigationItem.activated=activated;this._imageElement.classList.toggle("show-grid",activated);}
_showGridButtonClicked(event)
{WebInspector.settings.showImageGrid.value=!this._showGridButtonNavigationItem.activated;this._updateImageGrid();}};WebInspector.IndeterminateProgressSpinner=class IndeterminateProgressSpinner extends WebInspector.Object
{constructor()
{super();this._element=document.createElement("div");this._element.classList.add("indeterminate-progress-spinner");}
get element()
{return this._element;}};WebInspector.IndexedDatabaseContentView=class IndexedDatabaseContentView extends WebInspector.ContentView
{constructor(database)
{super(database);this._element.classList.add("indexed-database");this._databaseHostRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Host"));this._databaseSecurityOriginRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Security Origin"));this._databaseVersionRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Version"));this._databaseGroup=new WebInspector.DetailsSectionGroup([this._databaseHostRow,this._databaseSecurityOriginRow,this._databaseVersionRow]);this._databaseSection=new WebInspector.DetailsSection("indexed-database-details",WebInspector.UIString("Database"),[this._databaseGroup]);this.element.append(this._databaseSection.element);this._databaseHostRow.value=database.host;this._databaseSecurityOriginRow.value=database.securityOrigin;this._databaseVersionRow.value=database.version.toLocaleString();}};WebInspector.IndexedDatabaseDetailsSidebarPanel=class IndexedDatabaseDetailsSidebarPanel extends WebInspector.DetailsSidebarPanel
{constructor()
{super("indexed-database-details",WebInspector.UIString("Storage"));this.element.classList.add("indexed-database");this._database=null;this._objectStore=null;this._index=null;}
inspect(objects)
{if(!(objects instanceof Array))
objects=[objects];this._database=null;this._objectStore=null;this._index=null;for(let object of objects){if(object instanceof WebInspector.IndexedDatabaseObjectStore){this._objectStore=object;this._database=this._objectStore.parentDatabase;}else if(object instanceof WebInspector.IndexedDatabaseObjectStoreIndex){this._index=object;this._objectStore=this._index.parentObjectStore;this._database=this._objectStore.parentDatabase;}}
let hasObject=this._database||this._objectStore||this._index;if(hasObject)
this.needsLayout();return hasObject;}
initialLayout()
{super.initialLayout();this._databaseNameRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Name"));this._databaseVersionRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Version"));this._databaseSecurityOriginRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Security Origin"));let databaseGroup=new WebInspector.DetailsSectionGroup([this._databaseNameRow,this._databaseVersionRow,this._databaseSecurityOriginRow]);this._databaseSection=new WebInspector.DetailsSection("indexed-database-database",WebInspector.UIString("Database"),[databaseGroup]);this._objectStoreNameRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Name"));this._objectStoreKeyPathRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Key Path"));this._objectStoreAutoIncrementRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Auto Increment"));let objectStoreGroup=new WebInspector.DetailsSectionGroup([this._objectStoreNameRow,this._objectStoreKeyPathRow,this._objectStoreAutoIncrementRow]);this._objectStoreSection=new WebInspector.DetailsSection("indexed-database-object-store",WebInspector.UIString("Object Store"),[objectStoreGroup]);this._indexNameRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Name"));this._indexKeyPathRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Key Path"));this._indexUniqueRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Unique"));this._indexMultiEntryRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Multi-Entry"));let indexGroup=new WebInspector.DetailsSectionGroup([this._indexNameRow,this._indexKeyPathRow,this._indexUniqueRow,this._indexMultiEntryRow]);this._indexSection=new WebInspector.DetailsSection("indexed-database-index",WebInspector.UIString("Index"),[indexGroup]);this.contentView.element.appendChild(this._databaseSection.element);this.contentView.element.appendChild(this._objectStoreSection.element);this.contentView.element.appendChild(this._indexSection.element);}
layout()
{super.layout();if(!this._database)
this._databaseSection.element.hidden=true;else{this._databaseSection.element.hidden=false;this._databaseSecurityOriginRow.value=this._database.securityOrigin;this._databaseNameRow.value=this._database.name;this._databaseVersionRow.value=this._database.version.toLocaleString();}
if(!this._objectStore)
this._objectStoreSection.element.hidden=true;else{this._objectStoreSection.element.hidden=false;this._objectStoreNameRow.value=this._objectStore.name;this._objectStoreKeyPathRow.value=this._keyPathString(this._objectStore.keyPath);this._objectStoreAutoIncrementRow.value=this._objectStore.autoIncrement?WebInspector.UIString("Yes"):WebInspector.UIString("No");}
if(!this._index)
this._indexSection.element.hidden=true;else{this._indexSection.element.hidden=false;this._indexNameRow.value=this._index.name;this._indexKeyPathRow.value=this._keyPathString(this._index.keyPath);this._indexUniqueRow.value=this._index.unique?WebInspector.UIString("Yes"):WebInspector.UIString("No");if(this._index.keyPath.type!==IndexedDBAgent.KeyPathType.Array)
this._indexMultiEntryRow.value=null;else
this._indexMultiEntryRow.value=this._index.multiEntry?WebInspector.UIString("Yes"):WebInspector.UIString("No");}}
_keyPathString(keyPath)
{return keyPath?JSON.stringify(keyPath):emDash;}};WebInspector.IndexedDatabaseEntryDataGridNode=class IndexedDatabaseEntryDataGridNode extends WebInspector.DataGridNode
{constructor(entry)
{super(entry);this._entry=entry;}
get entry()
{return this._entry;}
createCellContent(columnIdentifier,cell)
{var value=this._entry[columnIdentifier];if(value instanceof WebInspector.RemoteObject)
return WebInspector.FormattedValue.createObjectTreeOrFormattedValueForRemoteObject(value,null,true);return super.createCellContent(columnIdentifier,cell);}};WebInspector.IndexedDatabaseHostTreeElement=class IndexedDatabaseHostTreeElement extends WebInspector.StorageTreeElement
{constructor(host)
{super(WebInspector.FolderTreeElement.FolderIconStyleClassName,WebInspector.displayNameForHost(host),null);this._host=host;this.hasChildren=true;this.expanded=true;}
get name()
{return WebInspector.displayNameForHost(this._host);}
get categoryName()
{return WebInspector.UIString("Indexed Databases");}};WebInspector.IndexedDatabaseObjectStoreContentView=class IndexedDatabaseObjectStoreContentView extends WebInspector.ContentView
{constructor(objectStoreOrIndex)
{super(objectStoreOrIndex);this.element.classList.add("indexed-database-object-store");if(objectStoreOrIndex instanceof WebInspector.IndexedDatabaseObjectStore){this._objectStore=objectStoreOrIndex;this._objectStoreIndex=null;}else if(objectStoreOrIndex instanceof WebInspector.IndexedDatabaseObjectStoreIndex){this._objectStore=objectStoreOrIndex.parentObjectStore;this._objectStoreIndex=objectStoreOrIndex;}
function displayKeyPath(keyPath)
{if(!keyPath)
return"";if(keyPath instanceof Array)
return keyPath.join(WebInspector.UIString(", "));return keyPath;}
var displayPrimaryKeyPath=displayKeyPath(this._objectStore.keyPath);var columnInfo={primaryKey:{title:displayPrimaryKeyPath?WebInspector.UIString("Primary Key \u2014 %s").format(displayPrimaryKeyPath):WebInspector.UIString("Primary Key")},key:{},value:{title:WebInspector.UIString("Value")}};if(this._objectStoreIndex){var displayIndexKeyPath=displayKeyPath(this._objectStoreIndex.keyPath);columnInfo.key.title=WebInspector.UIString("Index Key \u2014 %s").format(displayIndexKeyPath);}else{
delete columnInfo.key;}
this._dataGrid=new WebInspector.DataGrid(columnInfo);this._dataGrid.variableHeightRows=true;this._dataGrid.scrollContainer.addEventListener("scroll",this._dataGridScrolled.bind(this));this.addSubview(this._dataGrid);this._entries=[];this._fetchingMoreData=false;this._fetchMoreData();this._refreshButtonNavigationItem=new WebInspector.ButtonNavigationItem("indexed-database-object-store-refresh",WebInspector.UIString("Refresh"),"Images/ReloadFull.svg",13,13);this._refreshButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._refreshButtonClicked,this);this._clearButtonNavigationItem=new WebInspector.ButtonNavigationItem("indexed-database-object-store-clear",WebInspector.UIString("Clear object store"),"Images/NavigationItemTrash.svg",15,15);this._clearButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._clearButtonClicked,this);}
get navigationItems()
{return[this._refreshButtonNavigationItem,this._clearButtonNavigationItem];}
closed()
{super.closed();this._reset();}
saveToCookie(cookie)
{cookie.type=WebInspector.ContentViewCookieType.IndexedDatabaseObjectStore;cookie.securityOrigin=this._objectStore.parentDatabase.securityOrigin;cookie.databaseName=this._objectStore.parentDatabase.name;cookie.objectStoreName=this._objectStore.name;cookie.objectStoreIndexName=this._objectStoreIndex&&this._objectStoreIndex.name;}
get scrollableElements()
{return[this._dataGrid.scrollContainer];}
_reset()
{for(var entry of this._entries){entry.primaryKey.release();entry.key.release();entry.value.release();}
this._entries=[];this._dataGrid.removeChildren();}
_dataGridScrolled()
{if(!this._moreEntriesAvailable||!this._dataGrid.isScrolledToLastRow())
return;this._fetchMoreData();}
_fetchMoreData()
{if(this._fetchingMoreData)
return;function processEntries(entries,moreAvailable)
{this._entries=this._entries.concat(entries);this._moreEntriesAvailable=moreAvailable;for(var entry of entries){var dataGridNode=new WebInspector.IndexedDatabaseEntryDataGridNode(entry);this._dataGrid.appendChild(dataGridNode);}
this._fetchingMoreData=false;if(moreAvailable&&this._dataGrid.isScrolledToLastRow())
this._fetchMoreData();}
this._fetchingMoreData=true;WebInspector.storageManager.requestIndexedDatabaseData(this._objectStore,this._objectStoreIndex,this._entries.length,25,processEntries.bind(this));}
_refreshButtonClicked()
{this._reset();this._fetchMoreData();}
_clearButtonClicked()
{WebInspector.storageManager.clearObjectStore(this._objectStore);this._reset();}};WebInspector.IndexedDatabaseObjectStoreIndexTreeElement=class IndexedDatabaseObjectStoreIndexTreeElement extends WebInspector.GeneralTreeElement
{constructor(objectStoreIndex)
{super("database-table-icon",objectStoreIndex.name,null,objectStoreIndex,false);this._objectStoreIndex=objectStoreIndex;}
get objectStoreIndex()
{return this._objectStoreIndex;}};WebInspector.IndexedDatabaseObjectStoreTreeElement=class IndexedDatabaseObjectStoreTreeElement extends WebInspector.GeneralTreeElement
{constructor(objectStore)
{super("database-table-icon",objectStore.name,null,objectStore,!!objectStore.indexes.length);this._objectStore=objectStore;}
get objectStore()
{return this._objectStore;}
oncollapse()
{this.shouldRefreshChildren=true;}
onpopulate()
{if(this.children.length&&!this.shouldRefreshChildren)
return;this.shouldRefreshChildren=false;this.removeChildren();for(var objectStoreIndex of this._objectStore.indexes)
this.appendChild(new WebInspector.IndexedDatabaseObjectStoreIndexTreeElement(objectStoreIndex));}};WebInspector.IndexedDatabaseTreeElement=class IndexedDatabaseTreeElement extends WebInspector.GeneralTreeElement
{constructor(indexedDatabase)
{super("database-icon",indexedDatabase.name,null,indexedDatabase,!!indexedDatabase.objectStores.length);this._indexedDatabase=indexedDatabase;}
get indexedDatabase()
{return this._indexedDatabase;}
oncollapse()
{this.shouldRefreshChildren=true;}
onpopulate()
{if(this.children.length&&!this.shouldRefreshChildren)
return;this.shouldRefreshChildren=false;this.removeChildren();for(var objectStore of this._indexedDatabase.objectStores)
this.appendChild(new WebInspector.IndexedDatabaseObjectStoreTreeElement(objectStore));}};WebInspector.InlineSwatch=class InlineSwatch extends WebInspector.Object
{constructor(type,value,readOnly)
{super();this._type=type;this._swatchElement=document.createElement("span");this._swatchElement.classList.add("inline-swatch",this._type.split("-").lastValue);switch(this._type){case WebInspector.InlineSwatch.Type.Color:this._swatchElement.title=WebInspector.UIString("Click to select a color. Shift-click to switch color formats.");break;case WebInspector.InlineSwatch.Type.Gradient:this._swatchElement.title=WebInspector.UIString("Edit custom gradient");break;case WebInspector.InlineSwatch.Type.Bezier:this._swatchElement.title=WebInspector.UIString("Edit “cubic-bezier“ function");break;case WebInspector.InlineSwatch.Type.Spring:this._swatchElement.title=WebInspector.UIString("Edit “spring“ function");break;case WebInspector.InlineSwatch.Type.Variable:this._swatchElement.title=WebInspector.UIString("View variable value");break;default:WebInspector.reportInternalError(`Unknown InlineSwatch type "${type}"`);break;}
this._boundSwatchElementClicked=null;if(!readOnly){this._boundSwatchElementClicked=this._swatchElementClicked.bind(this);this._swatchElement.addEventListener("click",this._boundSwatchElementClicked);if(this._type===WebInspector.InlineSwatch.Type.Color)
this._swatchElement.addEventListener("contextmenu",this._handleContextMenuEvent.bind(this));}
this._swatchInnerElement=this._swatchElement.createChild("span");this._value=value||this._fallbackValue();this._valueEditor=null;this._updateSwatch();}
get element()
{return this._swatchElement;}
get value()
{return this._value;}
set value(value)
{this._value=value;this._updateSwatch(true);}
didDismissPopover(popover)
{if(!this._valueEditor)
return;if(typeof this._valueEditor.removeListeners==="function")
this._valueEditor.removeListeners();if(this._boundSwatchElementClicked)
this._swatchElement.addEventListener("click",this._boundSwatchElementClicked);this.dispatchEventToListeners(WebInspector.InlineSwatch.Event.Deactivated);}
_fallbackValue()
{switch(this._type){case WebInspector.InlineSwatch.Type.Bezier:return WebInspector.CubicBezier.fromString("linear");case WebInspector.InlineSwatch.Type.Gradient:return WebInspector.Gradient.fromString("linear-gradient(transparent, transparent)");case WebInspector.InlineSwatch.Type.Spring:return WebInspector.Spring.fromString("1 100 10 0");case WebInspector.InlineSwatch.Type.Color:return WebInspector.Color.fromString("white");default:return null;}}
_updateSwatch(dontFireEvents)
{if(this._type===WebInspector.InlineSwatch.Type.Color||this._type===WebInspector.InlineSwatch.Type.Gradient)
this._swatchInnerElement.style.background=this._value?this._value.toString():null;if(!dontFireEvents)
this.dispatchEventToListeners(WebInspector.InlineSwatch.Event.ValueChanged,{value:this._value});}
_swatchElementClicked(event)
{this.dispatchEventToListeners(WebInspector.InlineSwatch.Event.BeforeClicked);if(this._type===WebInspector.InlineSwatch.Type.Color&&event.shiftKey&&this._value){let nextFormat=this._value.nextFormat();if(!nextFormat)
return;this._value.format=nextFormat;this._updateSwatch();return;}
let bounds=WebInspector.Rect.rectFromClientRect(this._swatchElement.getBoundingClientRect());let popover=new WebInspector.Popover(this);popover.windowResizeHandler=()=>{let bounds=WebInspector.Rect.rectFromClientRect(this._swatchElement.getBoundingClientRect());popover.present(bounds.pad(2),[WebInspector.RectEdge.MIN_X]);};this._valueEditor=null;if(this._type===WebInspector.InlineSwatch.Type.Color){this._valueEditor=new WebInspector.ColorPicker;this._valueEditor.addEventListener(WebInspector.ColorPicker.Event.ColorChanged,this._valueEditorValueDidChange,this);this._valueEditor.addEventListener(WebInspector.ColorPicker.Event.FormatChanged,(event)=>popover.update());}else if(this._type===WebInspector.InlineSwatch.Type.Gradient){this._valueEditor=new WebInspector.GradientEditor;this._valueEditor.addEventListener(WebInspector.GradientEditor.Event.GradientChanged,this._valueEditorValueDidChange,this);this._valueEditor.addEventListener(WebInspector.GradientEditor.Event.ColorPickerToggled,(event)=>popover.update());}else if(this._type===WebInspector.InlineSwatch.Type.Bezier){this._valueEditor=new WebInspector.BezierEditor;this._valueEditor.addEventListener(WebInspector.BezierEditor.Event.BezierChanged,this._valueEditorValueDidChange,this);}else if(this._type===WebInspector.InlineSwatch.Type.Spring){this._valueEditor=new WebInspector.SpringEditor;this._valueEditor.addEventListener(WebInspector.SpringEditor.Event.SpringChanged,this._valueEditorValueDidChange,this);}else if(this._type===WebInspector.InlineSwatch.Type.Variable){this._valueEditor={};this._valueEditor.element=document.createElement("div");this._valueEditor.element.classList.add("inline-swatch-variable-popover");this._valueEditor.codeMirror=WebInspector.CodeMirrorEditor.create(this._valueEditor.element,{mode:"css",readOnly:"nocursor",});this._valueEditor.codeMirror.on("update",()=>{popover.update();});}
if(!this._valueEditor)
return;popover.content=this._valueEditor.element;popover.present(bounds.pad(2),[WebInspector.RectEdge.MIN_X]);if(this._boundSwatchElementClicked)
this._swatchElement.removeEventListener("click",this._boundSwatchElementClicked);this.dispatchEventToListeners(WebInspector.InlineSwatch.Event.Activated);let value=this._value||this._fallbackValue();if(this._type===WebInspector.InlineSwatch.Type.Color)
this._valueEditor.color=value;else if(this._type===WebInspector.InlineSwatch.Type.Gradient)
this._valueEditor.gradient=value;else if(this._type===WebInspector.InlineSwatch.Type.Bezier)
this._valueEditor.bezier=value;else if(this._type===WebInspector.InlineSwatch.Type.Spring)
this._valueEditor.spring=value;else if(this._type===WebInspector.InlineSwatch.Type.Variable)
this._valueEditor.codeMirror.setValue(value);}
_valueEditorValueDidChange(event)
{if(this._type===WebInspector.InlineSwatch.Type.Color)
this._value=event.data.color;else if(this._type===WebInspector.InlineSwatch.Type.Gradient)
this._value=event.data.gradient;else if(this._type===WebInspector.InlineSwatch.Type.Bezier)
this._value=event.data.bezier;else if(this._type===WebInspector.InlineSwatch.Type.Spring)
this._value=event.data.spring;this._updateSwatch();}
_handleContextMenuEvent(event)
{if(!this._value)
return;let contextMenu=WebInspector.ContextMenu.createFromEvent(event);if(this._value.isKeyword()&&this._value.format!==WebInspector.Color.Format.Keyword){contextMenu.appendItem(WebInspector.UIString("Format: Keyword"),()=>{this._value.format=WebInspector.Color.Format.Keyword;this._updateSwatch();});}
let hexInfo=this._getNextValidHEXFormat();if(hexInfo){contextMenu.appendItem(hexInfo.title,()=>{this._value.format=hexInfo.format;this._updateSwatch();});}
if(this._value.simple&&this._value.format!==WebInspector.Color.Format.HSL){contextMenu.appendItem(WebInspector.UIString("Format: HSL"),()=>{this._value.format=WebInspector.Color.Format.HSL;this._updateSwatch();});}else if(this._value.format!==WebInspector.Color.Format.HSLA){contextMenu.appendItem(WebInspector.UIString("Format: HSLA"),()=>{this._value.format=WebInspector.Color.Format.HSLA;this._updateSwatch();});}
if(this._value.simple&&this._value.format!==WebInspector.Color.Format.RGB){contextMenu.appendItem(WebInspector.UIString("Format: RGB"),()=>{this._value.format=WebInspector.Color.Format.RGB;this._updateSwatch();});}else if(this._value.format!==WebInspector.Color.Format.RGBA){contextMenu.appendItem(WebInspector.UIString("Format: RGBA"),()=>{this._value.format=WebInspector.Color.Format.RGBA;this._updateSwatch();});}}
_getNextValidHEXFormat()
{if(this._type!==WebInspector.InlineSwatch.Type.Color)
return false;function hexMatchesCurrentColor(hexInfo){let nextIsSimple=hexInfo.format===WebInspector.Color.Format.ShortHEX||hexInfo.format===WebInspector.Color.Format.HEX;if(nextIsSimple&&!this._value.simple)
return false;let nextIsShort=hexInfo.format===WebInspector.Color.Format.ShortHEX||hexInfo.format===WebInspector.Color.Format.ShortHEXAlpha;if(nextIsShort&&!this._value.canBeSerializedAsShortHEX())
return false;return true;}
const hexFormats=[{format:WebInspector.Color.Format.ShortHEX,title:WebInspector.UIString("Format: Short Hex")},{format:WebInspector.Color.Format.ShortHEXAlpha,title:WebInspector.UIString("Format: Short Hex with Alpha")},{format:WebInspector.Color.Format.HEX,title:WebInspector.UIString("Format: Hex")},{format:WebInspector.Color.Format.HEXAlpha,title:WebInspector.UIString("Format: Hex with Alpha")}];let currentColorIsHEX=hexFormats.some((info)=>info.format===this._value.format);for(let i=0;i<hexFormats.length;++i){if(currentColorIsHEX&&this._value.format!==hexFormats[i].format)
continue;for(let j=~~currentColorIsHEX;j<hexFormats.length;++j){let nextIndex=(i+j)%hexFormats.length;if(hexMatchesCurrentColor.call(this,hexFormats[nextIndex]))
return hexFormats[nextIndex];}
return null;}
return hexFormats[0];}};WebInspector.InlineSwatch.Type={Color:"inline-swatch-type-color",Gradient:"inline-swatch-type-gradient",Bezier:"inline-swatch-type-bezier",Spring:"inline-swatch-type-spring",Variable:"inline-swatch-type-variable",};WebInspector.InlineSwatch.Event={BeforeClicked:"inline-swatch-before-clicked",ValueChanged:"inline-swatch-value-changed",Activated:"inline-swatch-activated",Deactivated:"inline-swatch-deactivated",};WebInspector.InputPopover=class InputPopover extends WebInspector.Popover
{constructor(message,delegate)
{super(delegate);this._message=message;this._value=null;this._result=WebInspector.InputPopover.Result.None;this._targetElement=null;this._preferredEdges=null;this.windowResizeHandler=this._presentOverTargetElement.bind(this);}
get value(){return this._value;}
get result(){return this._result;}
show(targetElement,preferredEdges)
{this._targetElement=targetElement;this._preferredEdges=preferredEdges;let contentElement=document.createElement("div");contentElement.classList.add("input-popover-content");if(this._message){let label=document.createElement("div");label.classList.add("label");label.textContent=this._message;contentElement.appendChild(label);}
this._inputElement=document.createElement("input");this._inputElement.type="text";this._inputElement.addEventListener("keydown",(event)=>{if(!isEnterKey(event))
return;this._result=WebInspector.InputPopover.Result.Committed;this._value=event.target.value;this.dismiss();});contentElement.appendChild(this._inputElement);this.content=contentElement;this._presentOverTargetElement();}
_presentOverTargetElement()
{if(!this._targetElement)
return;let targetFrame=WebInspector.Rect.rectFromClientRect(this._targetElement.getBoundingClientRect());this.present(targetFrame,this._preferredEdges);this._inputElement.select();}};WebInspector.InputPopover.Result={None:Symbol("result-none"),Cancelled:Symbol("result-cancelled"),Committed:Symbol("result-committed"),};WebInspector.IssueTreeElement=class IssueTreeElement extends WebInspector.GeneralTreeElement
{constructor(issueMessage)
{var levelStyleClassName;switch(issueMessage.level){case"error":levelStyleClassName=WebInspector.IssueTreeElement.ErrorStyleClassName;break;case"warning":levelStyleClassName=WebInspector.IssueTreeElement.WarningStyleClassName;break;}
super([WebInspector.IssueTreeElement.StyleClassName,levelStyleClassName],null,null,issueMessage,false);this._issueMessage=issueMessage;this._updateTitles();this._issueMessage.addEventListener(WebInspector.IssueMessage.Event.DisplayLocationDidChange,this._updateTitles,this);}
get issueMessage()
{return this._issueMessage;}
_updateTitles()
{var displayLineNumber=this._issueMessage.sourceCodeLocation.displayLineNumber;var displayColumnNumber=this._issueMessage.sourceCodeLocation.displayColumnNumber;var title;if(displayColumnNumber>0)
title=WebInspector.UIString("Line %d:%d").format(displayLineNumber+1,displayColumnNumber+1);else
title=WebInspector.UIString("Line %d").format(displayLineNumber+1);this.mainTitle=title+" "+this._issueMessage.text;}};WebInspector.IssueTreeElement.StyleClassName="issue";WebInspector.IssueTreeElement.ErrorStyleClassName="error";WebInspector.IssueTreeElement.WarningStyleClassName="warning";WebInspector.LayerTreeDataGridNode=class LayerTreeDataGridNode extends WebInspector.DataGridNode
{constructor(layer)
{super();this._outlets={};this.layer=layer;}
createCells()
{super.createCells();this._cellsWereCreated=true;}
createCellContent(columnIdentifier,cell)
{cell=columnIdentifier==="name"?this._makeNameCell():this._makeOutlet(columnIdentifier,document.createTextNode("–"));this._updateCell(columnIdentifier);return cell;}
get layer()
{return this._layer;}
set layer(layer)
{this._layer=layer;var domNode=WebInspector.domTreeManager.nodeForId(layer.nodeId);this.data={name:domNode?domNode.displayName:WebInspector.UIString("Unknown node"),paintCount:layer.paintCount||emDash,memory:Number.bytesToString(layer.memory||0)};}
get data()
{return this._data;}
set data(data)
{Object.keys(data).forEach(function(columnIdentifier){if(this._data[columnIdentifier]===data[columnIdentifier])
return;this._data[columnIdentifier]=data[columnIdentifier];if(this._cellsWereCreated)
this._updateCell(columnIdentifier);},this);}
_makeOutlet(name,element)
{this._outlets[name]=element;return element;}
_makeNameCell()
{var fragment=document.createDocumentFragment();fragment.appendChild(document.createElement("img")).className="icon";var goToButton=this._makeOutlet("goToButton",fragment.appendChild(WebInspector.createGoToArrowButton()));goToButton.addEventListener("click",this._goToArrowWasClicked.bind(this),false);var label=this._makeOutlet("label",fragment.appendChild(document.createElement("span")));label.className="label";var nameLabel=this._makeOutlet("nameLabel",label.appendChild(document.createElement("span")));nameLabel.className="name";var pseudoLabel=this._makeOutlet("pseudoLabel",document.createElement("span"));pseudoLabel.className="pseudo-element";var reflectionLabel=this._makeOutlet("reflectionLabel",document.createElement("span"));reflectionLabel.className="reflection";reflectionLabel.textContent=" \u2014 "+WebInspector.UIString("Reflection");return fragment;}
_updateCell(columnIdentifier)
{var data=this._data[columnIdentifier];if(columnIdentifier==="name")
this._updateNameCellData(data);else
this._outlets[columnIdentifier].textContent=data;}
_updateNameCellData(data)
{var layer=this._layer;var label=this._outlets.label;this._outlets.nameLabel.textContent=data;if(WebInspector.domTreeManager.nodeForId(layer.nodeId))
label.parentNode.insertBefore(this._outlets.goToButton,label.parentNode.firstChild);else if(this._outlets.goToButton.parentNode)
label.parentNode.removeChild(this._outlets.goToButton);if(layer.pseudoElement)
label.appendChild(this._outlets.pseudoLabel).textContent="::"+layer.pseudoElement;else if(this._outlets.pseudoLabel.parentNode)
label.removeChild(this._outlets.pseudoLabel);if(layer.isReflection)
label.appendChild(this._outlets.reflectionLabel);else if(this._outlets.reflectionLabel.parentNode)
label.removeChild(this._outlets.reflectionLabel);var element=this.element;if(layer.isReflection)
element.classList.add("reflection");else if(layer.pseudoElement)
element.classList.add("pseudo-element");}
_goToArrowWasClicked()
{var domNode=WebInspector.domTreeManager.nodeForId(this._layer.nodeId);WebInspector.showMainFrameDOMTree(domNode);}};WebInspector.LayerTreeDetailsSidebarPanel=class LayerTreeDetailsSidebarPanel extends WebInspector.DOMDetailsSidebarPanel
{constructor()
{super("layer-tree",WebInspector.UIString("Layers"));this._dataGridNodesByLayerId=new Map;this.element.classList.add("layer-tree");}
shown()
{WebInspector.layerTreeManager.addEventListener(WebInspector.LayerTreeManager.Event.LayerTreeDidChange,this._layerTreeDidChange,this);super.shown();}
hidden()
{WebInspector.layerTreeManager.removeEventListener(WebInspector.LayerTreeManager.Event.LayerTreeDidChange,this._layerTreeDidChange,this);super.hidden();}
supportsDOMNode(nodeToInspect)
{return WebInspector.layerTreeManager.supported&&nodeToInspect.nodeType()===Node.ELEMENT_NODE;}
initialLayout()
{super.initialLayout();WebInspector.showShadowDOMSetting.addEventListener(WebInspector.Setting.Event.Changed,this._showShadowDOMSettingChanged,this);this._buildLayerInfoSection();this._buildDataGridSection();this._buildBottomBar();}
layout()
{super.layout();if(!this.domNode)
return;WebInspector.layerTreeManager.layersForNode(this.domNode,(layerForNode,childLayers)=>{this._unfilteredChildLayers=childLayers;this._updateDisplayWithLayers(layerForNode,childLayers);});}
sizeDidChange()
{super.sizeDidChange(); this._childLayersRow.sizeDidChange();}
_layerTreeDidChange(event)
{this.needsLayout();}
_showShadowDOMSettingChanged(event)
{if(this.selected)
this._updateDisplayWithLayers(this._layerForNode,this._unfilteredChildLayers);}
_buildLayerInfoSection()
{var rows=this._layerInfoRows={};var rowsArray=[];rowsArray.push(rows["Width"]=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Width")));rowsArray.push(rows["Height"]=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Height")));rowsArray.push(rows["Paints"]=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Paints")));rowsArray.push(rows["Memory"]=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Memory")));this._layerInfoGroup=new WebInspector.DetailsSectionGroup(rowsArray);var emptyRow=new WebInspector.DetailsSectionRow(WebInspector.UIString("No Layer Available"));emptyRow.showEmptyMessage();this._noLayerInformationGroup=new WebInspector.DetailsSectionGroup([emptyRow]);this._layerInfoSection=new WebInspector.DetailsSection("layer-info",WebInspector.UIString("Layer Info"),[this._noLayerInformationGroup]);this.contentView.element.appendChild(this._layerInfoSection.element);}
_buildDataGridSection()
{var columns={name:{},paintCount:{},memory:{}};columns.name.title=WebInspector.UIString("Node");columns.name.sortable=false;columns.paintCount.title=WebInspector.UIString("Paints");columns.paintCount.sortable=true;columns.paintCount.aligned="right";columns.paintCount.width="50px";columns.memory.title=WebInspector.UIString("Memory");columns.memory.sortable=true;columns.memory.aligned="right";columns.memory.width="70px";this._dataGrid=new WebInspector.DataGrid(columns);this._dataGrid.inline=true;this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SortChanged,this._sortDataGrid,this);this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged,this._selectedDataGridNodeChanged,this);this._dataGrid.sortColumnIdentifier="memory";this._dataGrid.sortOrder=WebInspector.DataGrid.SortOrder.Descending;this._dataGrid.createSettings("layer-tree-details-sidebar-panel");var element=this._dataGrid.element;element.addEventListener("focus",this._dataGridGainedFocus.bind(this),false);element.addEventListener("blur",this._dataGridLostFocus.bind(this),false);element.addEventListener("click",this._dataGridWasClicked.bind(this),false);this._childLayersRow=new WebInspector.DetailsSectionDataGridRow(null,WebInspector.UIString("No Child Layers"));var group=new WebInspector.DetailsSectionGroup([this._childLayersRow]);var section=new WebInspector.DetailsSection("layer-children",WebInspector.UIString("Child Layers"),[group],null,true);this.contentView.element.appendChild(section.element);}
_buildBottomBar()
{var bottomBar=this.element.appendChild(document.createElement("div"));bottomBar.className="bottom-bar";this._layersCountLabel=bottomBar.appendChild(document.createElement("div"));this._layersCountLabel.className="layers-count-label";this._layersMemoryLabel=bottomBar.appendChild(document.createElement("div"));this._layersMemoryLabel.className="layers-memory-label";}
_sortDataGrid()
{var sortColumnIdentifier=this._dataGrid.sortColumnIdentifier;function comparator(a,b)
{var item1=a.layer[sortColumnIdentifier]||0;var item2=b.layer[sortColumnIdentifier]||0;return item1-item2;}
this._dataGrid.sortNodes(comparator);this._updatePopoverForSelectedNode();}
_selectedDataGridNodeChanged()
{if(this._dataGrid.selectedNode){this._highlightSelectedNode();this._showPopoverForSelectedNode();}else{WebInspector.domTreeManager.hideDOMNodeHighlight();this._hidePopover();}}
_dataGridGainedFocus(event)
{this._highlightSelectedNode();this._showPopoverForSelectedNode();}
_dataGridLostFocus(event)
{WebInspector.domTreeManager.hideDOMNodeHighlight();this._hidePopover();}
_dataGridWasClicked(event)
{if(this._dataGrid.selectedNode&&event.target.parentNode.classList.contains("filler"))
this._dataGrid.selectedNode.deselect();}
_highlightSelectedNode()
{var dataGridNode=this._dataGrid.selectedNode;if(!dataGridNode)
return;var layer=dataGridNode.layer;if(layer.isGeneratedContent||layer.isReflection||layer.isAnonymous)
WebInspector.domTreeManager.highlightRect(layer.bounds,true);else
WebInspector.domTreeManager.highlightDOMNode(layer.nodeId);}
_updateDisplayWithLayers(layerForNode,childLayers)
{if(!WebInspector.showShadowDOMSetting.value){childLayers=childLayers.filter(function(layer){return!layer.isInShadowTree;});}
this._updateLayerInfoSection(layerForNode);this._updateDataGrid(layerForNode,childLayers);this._updateMetrics(layerForNode,childLayers);this._layerForNode=layerForNode;this._childLayers=childLayers;}
_updateLayerInfoSection(layer)
{this._layerInfoSection.groups=layer?[this._layerInfoGroup]:[this._noLayerInformationGroup];if(!layer)
return;this._layerInfoRows["Memory"].value=Number.bytesToString(layer.memory);this._layerInfoRows["Width"].value=layer.compositedBounds.width+"px";this._layerInfoRows["Height"].value=layer.compositedBounds.height+"px";this._layerInfoRows["Paints"].value=layer.paintCount+"";}
_updateDataGrid(layerForNode,childLayers)
{let dataGrid=this._dataGrid;let mutations=WebInspector.layerTreeManager.layerTreeMutations(this._childLayers,childLayers);mutations.removals.forEach(function(layer){let node=this._dataGridNodesByLayerId.get(layer.layerId);if(node){dataGrid.removeChild(node);this._dataGridNodesByLayerId.delete(layer.layerId);}},this);mutations.additions.forEach(function(layer){let node=this._dataGridNodeForLayer(layer);if(node)
dataGrid.appendChild(node);},this);mutations.preserved.forEach(function(layer){let node=this._dataGridNodesByLayerId.get(layer.layerId);if(node)
node.layer=layer;},this);this._sortDataGrid();this._childLayersRow.dataGrid=!isEmptyObject(childLayers)?this._dataGrid:null;}
_dataGridNodeForLayer(layer)
{let node=new WebInspector.LayerTreeDataGridNode(layer);this._dataGridNodesByLayerId.set(layer.layerId,node);return node;}
_updateMetrics(layerForNode,childLayers)
{var layerCount=0;var totalMemory=0;if(layerForNode){layerCount++;totalMemory+=layerForNode.memory||0;}
childLayers.forEach(function(layer){layerCount++;totalMemory+=layer.memory||0;});this._layersCountLabel.textContent=WebInspector.UIString("Layer Count: %d").format(layerCount);this._layersMemoryLabel.textContent=WebInspector.UIString("Memory: %s").format(Number.bytesToString(totalMemory));}
_showPopoverForSelectedNode()
{var dataGridNode=this._dataGrid.selectedNode;if(!dataGridNode)
return;this._contentForPopover(dataGridNode.layer,(content)=>{if(dataGridNode===this._dataGrid.selectedNode)
this._updatePopoverForSelectedNode(content);});}
_updatePopoverForSelectedNode(content)
{var dataGridNode=this._dataGrid.selectedNode;if(!dataGridNode)
return;var popover=this._popover;if(!popover){popover=this._popover=new WebInspector.Popover;popover.windowResizeHandler=()=>{this._updatePopoverForSelectedNode();};}
var targetFrame=WebInspector.Rect.rectFromClientRect(dataGridNode.element.getBoundingClientRect());if(content)
popover.content=content;popover.present(targetFrame.pad(2),[WebInspector.RectEdge.MIN_X]);}
_hidePopover()
{if(this._popover)
this._popover.dismiss();}
_contentForPopover(layer,callback)
{var content=document.createElement("div");content.className="layer-tree-popover";content.appendChild(document.createElement("p")).textContent=WebInspector.UIString("Reasons for compositing:");var list=content.appendChild(document.createElement("ul"));WebInspector.layerTreeManager.reasonsForCompositingLayer(layer,(compositingReasons)=>{if(isEmptyObject(compositingReasons)){callback(content);return;}
this._populateListOfCompositingReasons(list,compositingReasons);callback(content);});return content;}
_populateListOfCompositingReasons(list,compositingReasons)
{function addReason(reason)
{list.appendChild(document.createElement("li")).textContent=reason;}
if(compositingReasons.transform3D)
addReason(WebInspector.UIString("Element has a 3D transform"));if(compositingReasons.video)
addReason(WebInspector.UIString("Element is <video>"));if(compositingReasons.canvas)
addReason(WebInspector.UIString("Element is <canvas>"));if(compositingReasons.plugin)
addReason(WebInspector.UIString("Element is a plug-in"));if(compositingReasons.iFrame)
addReason(WebInspector.UIString("Element is <iframe>"));if(compositingReasons.backfaceVisibilityHidden)
addReason(WebInspector.UIString("Element has “backface-visibility: hidden” style"));if(compositingReasons.clipsCompositingDescendants)
addReason(WebInspector.UIString("Element clips compositing descendants"));if(compositingReasons.animation)
addReason(WebInspector.UIString("Element is animated"));if(compositingReasons.filters)
addReason(WebInspector.UIString("Element has CSS filters applied"));if(compositingReasons.positionFixed)
addReason(WebInspector.UIString("Element has “position: fixed” style"));if(compositingReasons.positionSticky)
addReason(WebInspector.UIString("Element has “position: sticky” style"));if(compositingReasons.overflowScrollingTouch)
addReason(WebInspector.UIString("Element has “-webkit-overflow-scrolling: touch” style"));if(compositingReasons.stacking)
addReason(WebInspector.UIString("Element may overlap another compositing element"));if(compositingReasons.overlap)
addReason(WebInspector.UIString("Element overlaps other compositing element"));if(compositingReasons.negativeZIndexChildren)
addReason(WebInspector.UIString("Element has children with a negative z-index"));if(compositingReasons.transformWithCompositedDescendants)
addReason(WebInspector.UIString("Element has a 2D transform and composited descendants"));if(compositingReasons.opacityWithCompositedDescendants)
addReason(WebInspector.UIString("Element has opacity applied and composited descendants"));if(compositingReasons.maskWithCompositedDescendants)
addReason(WebInspector.UIString("Element is masked and composited descendants"));if(compositingReasons.reflectionWithCompositedDescendants)
addReason(WebInspector.UIString("Element has a reflection and composited descendants"));if(compositingReasons.filterWithCompositedDescendants)
addReason(WebInspector.UIString("Element has CSS filters applied and composited descendants"));if(compositingReasons.blendingWithCompositedDescendants)
addReason(WebInspector.UIString("Element has CSS blending applied and composited descendants"));if(compositingReasons.isolatesCompositedBlendingDescendants)
addReason(WebInspector.UIString("Element is a stacking context and has composited descendants with CSS blending applied"));if(compositingReasons.perspective)
addReason(WebInspector.UIString("Element has perspective applied"));if(compositingReasons.preserve3D)
addReason(WebInspector.UIString("Element has “transform-style: preserve-3d” style"));if(compositingReasons.willChange)
addReason(WebInspector.UIString("Element has “will-change” style with includes opacity, transform, transform-style, perspective, filter or backdrop-filter"));if(compositingReasons.root)
addReason(WebInspector.UIString("Element is the root element"));if(compositingReasons.blending)
addReason(WebInspector.UIString("Element has “blend-mode” style"));}};WebInspector.LayoutTimelineDataGrid=class LayoutTimelineDataGrid extends WebInspector.TimelineDataGrid
{ callFramePopoverAnchorElement()
{return this.selectedNode.elementWithColumnIdentifier("location");}};WebInspector.LayoutTimelineDataGridNode=class LayoutTimelineDataGridNode extends WebInspector.TimelineDataGridNode
{constructor(layoutTimelineRecord,baseStartTime)
{super(false,null);this._record=layoutTimelineRecord;this._baseStartTime=baseStartTime||0;}
get records()
{return[this._record];}
get data()
{if(!this._cachedData){this._cachedData={type:this._record.eventType,name:this.displayName(),width:this._record.width,height:this._record.height,area:this._record.width*this._record.height,startTime:this._record.startTime,totalTime:this._record.duration,location:this._record.initiatorCallFrame,};}
return this._cachedData;}
createCellContent(columnIdentifier,cell)
{var value=this.data[columnIdentifier];switch(columnIdentifier){case"name":cell.classList.add(...this.iconClassNames());return value;case"width":case"height":return isNaN(value)?emDash:WebInspector.UIString("%dpx").format(value);case"area":return isNaN(value)?emDash:WebInspector.UIString("%dpx²").format(value);case"startTime":return isNaN(value)?emDash:Number.secondsToString(value-this._baseStartTime,true);case"totalTime":return isNaN(value)?emDash:Number.secondsToString(value,true);}
return super.createCellContent(columnIdentifier,cell);}};WebInspector.LayoutTimelineOverviewGraph=class LayoutTimelineOverviewGraph extends WebInspector.TimelineOverviewGraph
{constructor(timeline,timelineOverview)
{super(timelineOverview);this.element.classList.add("layout");this._layoutTimeline=timeline;this._layoutTimeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._layoutTimelineRecordAdded,this);this.reset();}
reset()
{super.reset();function createRecordRow()
{var element=document.createElement("div");element.className="graph-row";this.element.appendChild(element);return{element,recordBars:[],records:[]};}
this.element.removeChildren();this._timelineLayoutRecordRow=createRecordRow.call(this);this._timelinePaintRecordRow=createRecordRow.call(this);}
layout()
{if(!this.visible)
return;this._updateRowLayout(this._timelinePaintRecordRow);this._updateRowLayout(this._timelineLayoutRecordRow);}
_updateRowLayout(row)
{var secondsPerPixel=this.timelineOverview.secondsPerPixel;var recordBarIndex=0;function createBar(records,renderMode)
{var timelineRecordBar=row.recordBars[recordBarIndex];if(!timelineRecordBar)
timelineRecordBar=row.recordBars[recordBarIndex]=new WebInspector.TimelineRecordBar(records,renderMode);else{timelineRecordBar.renderMode=renderMode;timelineRecordBar.records=records;}
timelineRecordBar.refresh(this);if(!timelineRecordBar.element.parentNode)
row.element.appendChild(timelineRecordBar.element);++recordBarIndex;}
WebInspector.TimelineRecordBar.createCombinedBars(row.records,secondsPerPixel,this,createBar.bind(this));for(;recordBarIndex<row.recordBars.length;++recordBarIndex){row.recordBars[recordBarIndex].records=null;row.recordBars[recordBarIndex].element.remove();}}
_layoutTimelineRecordAdded(event)
{var layoutTimelineRecord=event.data.record;if(layoutTimelineRecord.eventType===WebInspector.LayoutTimelineRecord.EventType.Paint||layoutTimelineRecord.eventType===WebInspector.LayoutTimelineRecord.EventType.Composite)
this._timelinePaintRecordRow.records.push(layoutTimelineRecord);else
this._timelineLayoutRecordRow.records.push(layoutTimelineRecord);this.needsLayout();}};WebInspector.LayoutTimelineView=class LayoutTimelineView extends WebInspector.TimelineView
{constructor(timeline,extraArguments)
{super(timeline,extraArguments);let columns={type:{},name:{},location:{},area:{},width:{},height:{},startTime:{},totalTime:{}};columns.name.title=WebInspector.UIString("Type");columns.name.width="15%";var typeToLabelMap=new Map;for(var key in WebInspector.LayoutTimelineRecord.EventType){var value=WebInspector.LayoutTimelineRecord.EventType[key];typeToLabelMap.set(value,WebInspector.LayoutTimelineRecord.displayNameForEventType(value));}
columns.type.scopeBar=WebInspector.TimelineDataGrid.createColumnScopeBar("layout",typeToLabelMap);columns.type.hidden=true;columns.type.locked=true;columns.name.disclosure=true;columns.name.icon=true;columns.name.locked=true;this._scopeBar=columns.type.scopeBar;columns.location.title=WebInspector.UIString("Initiator");columns.location.width="25%";columns.area.title=WebInspector.UIString("Area");columns.area.width="8%";columns.width.title=WebInspector.UIString("Width");columns.width.width="8%";columns.height.title=WebInspector.UIString("Height");columns.height.width="8%";columns.startTime.title=WebInspector.UIString("Start Time");columns.startTime.width="8%";columns.startTime.aligned="right";columns.totalTime.title=WebInspector.UIString("Duration");columns.totalTime.width="8%";columns.totalTime.aligned="right";for(var column in columns)
columns[column].sortable=true;this._dataGrid=new WebInspector.LayoutTimelineDataGrid(columns);this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged,this._dataGridSelectedNodeChanged,this);this.setupDataGrid(this._dataGrid);this._dataGrid.sortColumnIdentifier="startTime";this._dataGrid.sortOrder=WebInspector.DataGrid.SortOrder.Ascending;this._dataGrid.createSettings("layout-timeline-view");this._hoveredTreeElement=null;this._hoveredDataGridNode=null;this._showingHighlight=false;this._showingHighlightForRecord=null;this._dataGrid.element.addEventListener("mouseover",this._mouseOverDataGrid.bind(this));this._dataGrid.element.addEventListener("mouseleave",this._mouseLeaveDataGrid.bind(this));this.element.classList.add("layout");this.addSubview(this._dataGrid);timeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._layoutTimelineRecordAdded,this);this._pendingRecords=[];}
get selectionPathComponents()
{let dataGridNode=this._dataGrid.selectedNode;if(!dataGridNode||dataGridNode.hidden)
return null;let pathComponents=[];while(dataGridNode&&!dataGridNode.root){if(dataGridNode.hidden)
return null;let pathComponent=new WebInspector.TimelineDataGridNodePathComponent(dataGridNode);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this.dataGridNodePathComponentSelected,this);pathComponents.unshift(pathComponent);dataGridNode=dataGridNode.parent;}
return pathComponents;}
shown()
{super.shown();this._updateHighlight();this._dataGrid.shown();}
hidden()
{this._hideHighlightIfNeeded();this._dataGrid.hidden();super.hidden();}
closed()
{this.representedObject.removeEventListener(null,null,this);this._dataGrid.closed();}
reset()
{super.reset();this._hideHighlightIfNeeded();this._dataGrid.reset();this._pendingRecords=[];}
dataGridNodePathComponentSelected(event)
{let dataGridNode=event.data.pathComponent.timelineDataGridNode;dataGridNode.revealAndSelect();}
filterDidChange()
{super.filterDidChange();this._updateHighlight();}
treeElementSelected(treeElement,selectedByUser)
{if(this._dataGrid.shouldIgnoreSelectionEvent())
return;super.treeElementSelected(treeElement,selectedByUser);this._updateHighlight();}
layout()
{this._processPendingRecords();}
_processPendingRecords()
{if(!this._pendingRecords.length)
return;for(var layoutTimelineRecord of this._pendingRecords){let dataGridNode=new WebInspector.LayoutTimelineDataGridNode(layoutTimelineRecord,this.zeroTime);this._dataGrid.addRowInSortOrder(null,dataGridNode);let stack=[{children:layoutTimelineRecord.children,parentDataGridNode:dataGridNode,index:0}];while(stack.length){let entry=stack.lastValue;if(entry.index>=entry.children.length){stack.pop();continue;}
let childRecord=entry.children[entry.index];let childDataGridNode=new WebInspector.LayoutTimelineDataGridNode(childRecord,this.zeroTime);this._dataGrid.addRowInSortOrder(null,childDataGridNode,entry.parentDataGridNode);if(childDataGridNode&&childRecord.children.length)
stack.push({children:childRecord.children,parentDataGridNode:childDataGridNode,index:0});++entry.index;}}
this._pendingRecords=[];}
_layoutTimelineRecordAdded(event)
{var layoutTimelineRecord=event.data.record;if(layoutTimelineRecord.parent instanceof WebInspector.LayoutTimelineRecord)
return;this._pendingRecords.push(layoutTimelineRecord);this.needsLayout();}
_updateHighlight()
{var record=this._hoveredOrSelectedRecord();if(!record){this._hideHighlightIfNeeded();return;}
this._showHighlightForRecord(record);}
_showHighlightForRecord(record)
{if(this._showingHighlightForRecord===record)
return;this._showingHighlightForRecord=record;const contentColor={r:111,g:168,b:220,a:0.66};const outlineColor={r:255,g:229,b:153,a:0.66};var quad=record.quad;if(quad){DOMAgent.highlightQuad(quad.toProtocol(),contentColor,outlineColor);this._showingHighlight=true;return;}
if(this._showingHighlight){this._showingHighlight=false;DOMAgent.hideHighlight();}}
_hideHighlightIfNeeded()
{this._showingHighlightForRecord=null;if(this._showingHighlight){this._showingHighlight=false;DOMAgent.hideHighlight();}}
_hoveredOrSelectedRecord()
{if(this._hoveredDataGridNode)
return this._hoveredDataGridNode.record;if(this._dataGrid.selectedNode&&this._dataGrid.selectedNode.revealed)
return this._dataGrid.selectedNode.record;return null;}
_mouseOverDataGrid(event)
{var hoveredDataGridNode=this._dataGrid.dataGridNodeFromNode(event.target);if(!hoveredDataGridNode)
return;this._hoveredDataGridNode=hoveredDataGridNode;this._updateHighlight();}
_mouseLeaveDataGrid(event)
{this._hoveredDataGridNode=null;this._updateHighlight();}
_dataGridSelectedNodeChanged(event)
{this._updateHighlight();}};
WebInspector.LineChart=class LineChart
{constructor(size)
{this._element=document.createElement("div");this._element.classList.add("line-chart");this._chartElement=this._element.appendChild(createSVGElement("svg"));this._pathElement=this._chartElement.appendChild(createSVGElement("path"));this._points=[];this.size=size;}
get element(){return this._element;}
get points(){return this._points;}
get size()
{return this._size;}
set size(size)
{this._size=size;this._chartElement.setAttribute("width",size.width);this._chartElement.setAttribute("height",size.height);this._chartElement.setAttribute("viewbox",`0 0 ${size.width} ${size.height}`);}
addPoint(x,y)
{this._points.push({x,y});}
clear()
{this._points=[];}
needsLayout()
{if(this._scheduledLayoutUpdateIdentifier)
return;this._scheduledLayoutUpdateIdentifier=requestAnimationFrame(this.updateLayout.bind(this));}
updateLayout()
{if(this._scheduledLayoutUpdateIdentifier){cancelAnimationFrame(this._scheduledLayoutUpdateIdentifier);this._scheduledLayoutUpdateIdentifier=undefined;}
let pathComponents=[];pathComponents.push(`M 0 ${this._size.height}`);for(let point of this._points)
pathComponents.push(`L ${point.x} ${point.y}`);let lastX=this._points.length?this._points.lastValue.x:0;pathComponents.push(`L ${lastX} ${this._size.height}`);pathComponents.push("Z");let pathString=pathComponents.join(" ");this._pathElement.setAttribute("d",pathString);}};WebInspector.LogContentView=class LogContentView extends WebInspector.ContentView
{constructor(representedObject)
{super(representedObject);this._nestingLevel=0;this._selectedMessages=[];this._provisionalMessages=[];this.element.classList.add("log");this.messagesElement=document.createElement("div");this.messagesElement.classList.add("console-messages");this.messagesElement.tabIndex=0;this.messagesElement.setAttribute("role","log");this.messagesElement.addEventListener("mousedown",this._mousedown.bind(this));this.messagesElement.addEventListener("keydown",this._keyDown.bind(this));this.messagesElement.addEventListener("keypress",this._keyPress.bind(this));this.messagesElement.addEventListener("dragstart",this._ondragstart.bind(this),true);this.element.appendChild(this.messagesElement);this.prompt=WebInspector.quickConsole.prompt;this._keyboardShortcutCommandA=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"A");this._keyboardShortcutEsc=new WebInspector.KeyboardShortcut(null,WebInspector.KeyboardShortcut.Key.Escape);this._logViewController=new WebInspector.JavaScriptLogViewController(this.messagesElement,this.element,this.prompt,this,"console-prompt-history");this._lastMessageView=null;const fixed=true;this._findBanner=new WebInspector.FindBanner(this,"console-find-banner",fixed);this._findBanner.inputField.placeholder=WebInspector.UIString("Filter Console Log");this._findBanner.targetElement=this.element;this._currentSearchQuery="";this._searchMatches=[];this._selectedSearchMatch=null;this._selectedSearchMatchIsValid=false;var scopeBarItems=[new WebInspector.ScopeBarItem(WebInspector.LogContentView.Scopes.All,WebInspector.UIString("All"),true),new WebInspector.ScopeBarItem(WebInspector.LogContentView.Scopes.Errors,WebInspector.UIString("Errors"),false,"errors"),new WebInspector.ScopeBarItem(WebInspector.LogContentView.Scopes.Warnings,WebInspector.UIString("Warnings"),false,"warnings"),new WebInspector.ScopeBarItem(WebInspector.LogContentView.Scopes.Logs,WebInspector.UIString("Logs"),false,"logs")];this._scopeBar=new WebInspector.ScopeBar("log-scope-bar",scopeBarItems,scopeBarItems[0]);this._scopeBar.addEventListener(WebInspector.ScopeBar.Event.SelectionChanged,this._scopeBarSelectionDidChange,this);this._garbageCollectNavigationItem=new WebInspector.ButtonNavigationItem("clear-log",WebInspector.UIString("Collect garbage"),"Images/NavigationItemGarbageCollect.svg",16,16);this._garbageCollectNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._garbageCollect,this);this._clearLogNavigationItem=new WebInspector.ButtonNavigationItem("clear-log",WebInspector.UIString("Clear log (%s or %s)").format(WebInspector.clearKeyboardShortcut.displayName,this._logViewController.messagesAlternateClearKeyboardShortcut.displayName),"Images/NavigationItemClear.svg",16,16);this._clearLogNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._clearLog,this);this._showConsoleTabNavigationItem=new WebInspector.ButtonNavigationItem("show-tab",WebInspector.UIString("Show Console tab"),"Images/SplitToggleUp.svg",16,16);this._showConsoleTabNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._showConsoleTab,this);this.messagesElement.addEventListener("contextmenu",this._handleContextMenuEvent.bind(this),false);WebInspector.logManager.addEventListener(WebInspector.LogManager.Event.SessionStarted,this._sessionStarted,this);WebInspector.logManager.addEventListener(WebInspector.LogManager.Event.MessageAdded,this._messageAdded,this);WebInspector.logManager.addEventListener(WebInspector.LogManager.Event.PreviousMessageRepeatCountUpdated,this._previousMessageRepeatCountUpdated,this);WebInspector.logManager.addEventListener(WebInspector.LogManager.Event.Cleared,this._logCleared,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ProvisionalLoadStarted,this._provisionalLoadStarted,this);}
get navigationItems()
{let navigationItems=[this._scopeBar];if(HeapAgent.gc)
navigationItems.push(this._garbageCollectNavigationItem);navigationItems.push(this._clearLogNavigationItem);if(WebInspector.isShowingSplitConsole())
navigationItems.push(this._showConsoleTabNavigationItem);else if(WebInspector.isShowingConsoleTab())
navigationItems.unshift(this._findBanner);return navigationItems;}
get scopeBar()
{return this._scopeBar;}
get logViewController()
{return this._logViewController;}
get scrollableElements()
{return[this.element];}
get shouldKeepElementsScrolledToBottom()
{return true;}
shown()
{super.shown();this._logViewController.renderPendingMessages();}
didAppendConsoleMessageView(messageView)
{var type=messageView instanceof WebInspector.ConsoleCommandView?null:messageView.message.type;if(this._nestingLevel&&type!==WebInspector.ConsoleMessage.MessageType.EndGroup){var x=16*this._nestingLevel;var messageElement=messageView.element;messageElement.style.left=x+"px";messageElement.style.width="calc(100% - "+x+"px)";}
switch(type){case WebInspector.ConsoleMessage.MessageType.StartGroup:case WebInspector.ConsoleMessage.MessageType.StartGroupCollapsed:++this._nestingLevel;break;case WebInspector.ConsoleMessage.MessageType.EndGroup:if(this._nestingLevel>0)
--this._nestingLevel;break;}
this._clearFocusableChildren();let target=messageView.message?messageView.message.target:WebInspector.runtimeManager.activeExecutionContext.target;target.connection.runAfterPendingDispatches(this._clearFocusableChildren.bind(this));if(type&&type!==WebInspector.ConsoleMessage.MessageType.EndGroup){if(!(messageView.message instanceof WebInspector.ConsoleCommandResultMessage))
this._markScopeBarItemUnread(messageView.message.level);this._filterMessageElements([messageView.element]);}}
get supportsSearch(){return true;}
get numberOfSearchResults(){return this.hasPerformedSearch?this._searchMatches.length:null;}
get hasPerformedSearch(){return this._currentSearchQuery!=="";}
get supportsCustomFindBanner()
{return WebInspector.isShowingConsoleTab();}
showCustomFindBanner()
{if(!this.visible)
return;this._findBanner.focus();}
get supportsSave()
{if(!this.visible)
return false;if(WebInspector.isShowingSplitConsole())
return false;return true;}
get saveData()
{return{url:"web-inspector:///Console.txt",content:this._formatMessagesAsData(false),forceSaveAs:true};}
handleCopyEvent(event)
{if(!this._selectedMessages.length)
return;event.clipboardData.setData("text/plain",this._formatMessagesAsData(true));event.stopPropagation();event.preventDefault();}
handleClearShortcut(event)
{this._logViewController.requestClearMessages();}
findBannerRevealPreviousResult()
{this.highlightPreviousSearchMatch();}
highlightPreviousSearchMatch()
{if(!this.hasPerformedSearch||isEmptyObject(this._searchMatches))
return;var index=this._selectedSearchMatch?this._searchMatches.indexOf(this._selectedSearchMatch):this._searchMatches.length;this._highlightSearchMatchAtIndex(index-1);}
findBannerRevealNextResult()
{this.highlightNextSearchMatch();}
highlightNextSearchMatch()
{if(!this.hasPerformedSearch||isEmptyObject(this._searchMatches))
return;var index=this._selectedSearchMatch?this._searchMatches.indexOf(this._selectedSearchMatch)+1:0;this._highlightSearchMatchAtIndex(index);}
findBannerWantsToClearAndBlur(findBanner)
{if(this._selectedMessages.length)
this.messagesElement.focus();else
this.prompt.focus();}
layout()
{this._scrollElementHeight=this.messagesElement.getBoundingClientRect().height;}
_formatMessagesAsData(onlySelected)
{var messages=this._allMessageElements();if(onlySelected){messages=messages.filter(function(message){return message.classList.contains(WebInspector.LogContentView.SelectedStyleClassName);});}
var data="";var isPrefixOptional=messages.length<=1&&onlySelected;messages.forEach(function(messageElement,index){var messageView=messageElement.__messageView||messageElement.__commandView;if(!messageView)
return;if(index>0)
data+="\n";data+=messageView.toClipboardString(isPrefixOptional);});return data;}
_sessionStarted(event)
{if(WebInspector.settings.clearLogOnNavigate.value){this._reappendProvisionalMessages();return;}
const isFirstSession=false;const newSessionReason=event.data.wasReloaded?WebInspector.ConsoleSession.NewSessionReason.PageReloaded:WebInspector.ConsoleSession.NewSessionReason.PageNavigated;this._logViewController.startNewSession(isFirstSession,{newSessionReason,timestamp:event.data.timestamp});this._clearProvisionalState();}
_scopeFromMessageLevel(level)
{var messageLevel;switch(level){case WebInspector.ConsoleMessage.MessageLevel.Warning:messageLevel=WebInspector.LogContentView.Scopes.Warnings;break;case WebInspector.ConsoleMessage.MessageLevel.Error:messageLevel=WebInspector.LogContentView.Scopes.Errors;break;case WebInspector.ConsoleMessage.MessageLevel.Log:case WebInspector.ConsoleMessage.MessageLevel.Info:case WebInspector.ConsoleMessage.MessageLevel.Debug:messageLevel=WebInspector.LogContentView.Scopes.Logs;break;}
return messageLevel;}
_markScopeBarItemUnread(level)
{let messageLevel=this._scopeFromMessageLevel(level);if(!messageLevel)
return;let item=this._scopeBar.item(messageLevel);if(item&&!item.selected&&!this._scopeBar.item(WebInspector.LogContentView.Scopes.All).selected)
item.element.classList.add("unread");}
_messageAdded(event)
{if(this._startedProvisionalLoad)
this._provisionalMessages.push(event.data.message);this._logViewController.appendConsoleMessage(event.data.message);}
_previousMessageRepeatCountUpdated(event)
{if(this._logViewController.updatePreviousMessageRepeatCount(event.data.count)&&this._lastMessageView)
this._markScopeBarItemUnread(this._lastMessageView.message.level);}
_handleContextMenuEvent(event)
{if(!window.getSelection().isCollapsed){
return;}
if(this._selectedMessages.length&&!this._selectedMessages.some(element=>event.target.isSelfOrDescendant(element))){this._clearMessagesSelection();this._mousedown(event);}
if(!this._selectedMessages.length)
this._mouseup(event);if(event.target.enclosingNodeOrSelfWithNodeName("a"))
return;let contextMenu=WebInspector.ContextMenu.createFromEvent(event);if(this._selectedMessages.length){contextMenu.appendItem(WebInspector.UIString("Copy Selected"),()=>{InspectorFrontendHost.copyText(this._formatMessagesAsData(true));});contextMenu.appendItem(WebInspector.UIString("Save Selected"),()=>{const forceSaveAs=true;WebInspector.saveDataToFile({url:"web-inspector:///Console.txt",content:this._formatMessagesAsData(true),},forceSaveAs);});contextMenu.appendSeparator();}
contextMenu.appendItem(WebInspector.UIString("Clear Log"),this._clearLog.bind(this));contextMenu.appendSeparator();}
_mousedown(event)
{if(this._selectedMessages.length&&(event.button!==0||event.ctrlKey))
return;if(event.defaultPrevented){
this._clearMessagesSelection();return;}
this._mouseDownWrapper=event.target.enclosingNodeOrSelfWithClass(WebInspector.LogContentView.ItemWrapperStyleClassName);this._mouseDownShiftKey=event.shiftKey;this._mouseDownCommandKey=event.metaKey;this._mouseMoveIsRowSelection=false;window.addEventListener("mousemove",this);window.addEventListener("mouseup",this);}
_targetInMessageCanBeSelected(target,message)
{if(target.enclosingNodeOrSelfWithNodeName("a"))
return false;return true;}
_mousemove(event)
{var selection=window.getSelection();var wrapper=event.target.enclosingNodeOrSelfWithClass(WebInspector.LogContentView.ItemWrapperStyleClassName);if(!wrapper){if(!selection.isCollapsed){wrapper=selection.focusNode.parentNode.enclosingNodeOrSelfWithClass(WebInspector.LogContentView.ItemWrapperStyleClassName);selection.removeAllRanges();}
if(!wrapper)
return;}
if(!selection.isCollapsed)
this._clearMessagesSelection();if(wrapper===this._mouseDownWrapper&&!this._mouseMoveIsRowSelection)
return;selection.removeAllRanges();if(!this._mouseMoveIsRowSelection)
this._updateMessagesSelection(this._mouseDownWrapper,this._mouseDownCommandKey,this._mouseDownShiftKey,false);this._updateMessagesSelection(wrapper,false,true,false);this._mouseMoveIsRowSelection=true;event.preventDefault();event.stopPropagation();}
_mouseup(event)
{window.removeEventListener("mousemove",this);window.removeEventListener("mouseup",this);var selection=window.getSelection();var wrapper=event.target.enclosingNodeOrSelfWithClass(WebInspector.LogContentView.ItemWrapperStyleClassName);if(wrapper&&(selection.isCollapsed||event.shiftKey)){selection.removeAllRanges();if(this._targetInMessageCanBeSelected(event.target,wrapper)){var sameWrapper=wrapper===this._mouseDownWrapper;this._updateMessagesSelection(wrapper,sameWrapper?this._mouseDownCommandKey:false,sameWrapper?this._mouseDownShiftKey:true,false);}}else if(!selection.isCollapsed){this._clearMessagesSelection();}else if(!this._mouseDownWrapper){this._clearMessagesSelection();setTimeout(()=>{this.prompt.focus();},0);}
delete this._mouseMoveIsRowSelection;delete this._mouseDownWrapper;delete this._mouseDownShiftKey;delete this._mouseDownCommandKey;}
_ondragstart(event)
{if(event.target.enclosingNodeOrSelfWithClass(WebInspector.DOMTreeOutline.StyleClassName)){event.stopPropagation();event.preventDefault();}}
handleEvent(event)
{switch(event.type){case"mousemove":this._mousemove(event);break;case"mouseup":this._mouseup(event);break;}}
_updateMessagesSelection(message,multipleSelection,rangeSelection,shouldScrollIntoView)
{if(!message)
return;var alreadySelectedMessage=this._selectedMessages.includes(message);if(alreadySelectedMessage&&this._selectedMessages.length&&multipleSelection){message.classList.remove(WebInspector.LogContentView.SelectedStyleClassName);this._selectedMessages.remove(message);return;}
if(!multipleSelection&&!rangeSelection)
this._clearMessagesSelection();if(rangeSelection){var messages=this._visibleMessageElements();var refIndex=this._referenceMessageForRangeSelection?messages.indexOf(this._referenceMessageForRangeSelection):0;var targetIndex=messages.indexOf(message);var newRange=[Math.min(refIndex,targetIndex),Math.max(refIndex,targetIndex)];if(this._selectionRange&&this._selectionRange[0]===newRange[0]&&this._selectionRange[1]===newRange[1])
return;var startIndex=this._selectionRange?Math.min(this._selectionRange[0],newRange[0]):newRange[0];var endIndex=this._selectionRange?Math.max(this._selectionRange[1],newRange[1]):newRange[1];for(var i=startIndex;i<=endIndex;++i){var messageInRange=messages[i];if(i>=newRange[0]&&i<=newRange[1]&&!messageInRange.classList.contains(WebInspector.LogContentView.SelectedStyleClassName)){messageInRange.classList.add(WebInspector.LogContentView.SelectedStyleClassName);this._selectedMessages.push(messageInRange);}else if(i<newRange[0]||i>newRange[1]&&messageInRange.classList.contains(WebInspector.LogContentView.SelectedStyleClassName)){messageInRange.classList.remove(WebInspector.LogContentView.SelectedStyleClassName);this._selectedMessages.remove(messageInRange);}}
this._selectionRange=newRange;}else{message.classList.add(WebInspector.LogContentView.SelectedStyleClassName);this._selectedMessages.push(message);}
if(!rangeSelection)
this._referenceMessageForRangeSelection=message;if(shouldScrollIntoView&&!alreadySelectedMessage)
this._ensureMessageIsVisible(this._selectedMessages.lastValue);}
_ensureMessageIsVisible(message)
{if(!message)
return;var y=this._positionForMessage(message).y;if(y<0){this.element.scrollTop+=y;return;}
var nextMessage=this._nextMessage(message);if(nextMessage){y=this._positionForMessage(nextMessage).y;if(y>this._scrollElementHeight)
this.element.scrollTop+=y-this._scrollElementHeight;}else{y+=message.getBoundingClientRect().height;if(y>this._scrollElementHeight)
this.element.scrollTop+=y-this._scrollElementHeight;}}
_positionForMessage(message)
{var pagePoint=window.webkitConvertPointFromNodeToPage(message,new WebKitPoint(0,0));return window.webkitConvertPointFromPageToNode(this.element,pagePoint);}
_isMessageVisible(message)
{var node=message;if(node.classList.contains(WebInspector.LogContentView.FilteredOutStyleClassName))
return false;if(this.hasPerformedSearch&&node.classList.contains(WebInspector.LogContentView.FilteredOutBySearchStyleClassName))
return false;if(message.classList.contains("console-group-title"))
node=node.parentNode.parentNode;while(node&&node!==this.messagesElement){if(node.classList.contains("collapsed"))
return false;node=node.parentNode;}
return true;}
_isMessageSelected(message)
{return message.classList.contains(WebInspector.LogContentView.SelectedStyleClassName);}
_clearMessagesSelection()
{this._selectedMessages.forEach(function(message){message.classList.remove(WebInspector.LogContentView.SelectedStyleClassName);});this._selectedMessages=[];delete this._referenceMessageForRangeSelection;}
_selectAllMessages()
{this._clearMessagesSelection();var messages=this._visibleMessageElements();for(var i=0;i<messages.length;++i){var message=messages[i];message.classList.add(WebInspector.LogContentView.SelectedStyleClassName);this._selectedMessages.push(message);}}
_allMessageElements()
{return Array.from(this.messagesElement.querySelectorAll(".console-message, .console-user-command"));}
_unfilteredMessageElements()
{return this._allMessageElements().filter(function(message){return!message.classList.contains(WebInspector.LogContentView.FilteredOutStyleClassName);});}
_visibleMessageElements()
{var unfilteredMessages=this._unfilteredMessageElements();if(!this.hasPerformedSearch)
return unfilteredMessages;return unfilteredMessages.filter(function(message){return!message.classList.contains(WebInspector.LogContentView.FilteredOutBySearchStyleClassName);});}
_logCleared(event)
{for(let item of this._scopeBar.items)
item.element.classList.remove("unread");this._logViewController.clear();this._nestingLevel=0;if(this._currentSearchQuery)
this.performSearch(this._currentSearchQuery);}
_showConsoleTab()
{WebInspector.showConsoleTab();}
_clearLog()
{WebInspector.logManager.requestClearMessages();}
_garbageCollect()
{for(let target of WebInspector.targets){if(target.HeapAgent)
target.HeapAgent.gc();}}
_scopeBarSelectionDidChange(event)
{var item=this._scopeBar.selectedItems[0];if(item.id===WebInspector.LogContentView.Scopes.All){for(var item of this._scopeBar.items)
item.element.classList.remove("unread");}else
item.element.classList.remove("unread");this._filterMessageElements(this._allMessageElements());}
_filterMessageElements(messageElements)
{var showsAll=this._scopeBar.item(WebInspector.LogContentView.Scopes.All).selected;messageElements.forEach(function(messageElement){var visible=showsAll||messageElement.__commandView instanceof WebInspector.ConsoleCommandView||messageElement.__message instanceof WebInspector.ConsoleCommandResultMessage;if(!visible){var messageLevel=this._scopeFromMessageLevel(messageElement.__message.level);if(messageLevel)
visible=this._scopeBar.item(messageLevel).selected;}
var classList=messageElement.classList;if(visible)
classList.remove(WebInspector.LogContentView.FilteredOutStyleClassName);else{this._selectedMessages.remove(messageElement);classList.remove(WebInspector.LogContentView.SelectedStyleClassName);classList.add(WebInspector.LogContentView.FilteredOutStyleClassName);}},this);this.performSearch(this._currentSearchQuery);}
_keyDown(event)
{let isRTL=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL;if(this._keyboardShortcutCommandA.matchesEvent(event))
this._commandAWasPressed(event);else if(this._keyboardShortcutEsc.matchesEvent(event))
this._escapeWasPressed(event);else if(event.keyIdentifier==="Up")
this._upArrowWasPressed(event);else if(event.keyIdentifier==="Down")
this._downArrowWasPressed(event);else if((!isRTL&&event.keyIdentifier==="Left")||(isRTL&&event.keyIdentifier==="Right"))
this._leftArrowWasPressed(event);else if((!isRTL&&event.keyIdentifier==="Right")||(isRTL&&event.keyIdentifier==="Left"))
this._rightArrowWasPressed(event);else if(event.keyIdentifier==="Enter"&&event.metaKey)
this._commandEnterWasPressed(event);}
_keyPress(event)
{const isCommandC=event.metaKey&&event.keyCode===99;if(!isCommandC)
this.prompt.focus();}
_commandAWasPressed(event)
{this._selectAllMessages();event.preventDefault();}
_escapeWasPressed(event)
{if(this._selectedMessages.length)
this._clearMessagesSelection();else
this.prompt.focus();event.preventDefault();}
_upArrowWasPressed(event)
{var messages=this._visibleMessageElements();if(!this._selectedMessages.length){if(messages.length)
this._updateMessagesSelection(messages.lastValue,false,false,true);return;}
var lastMessage=this._selectedMessages.lastValue;var previousMessage=this._previousMessage(lastMessage);if(previousMessage)
this._updateMessagesSelection(previousMessage,false,event.shiftKey,true);else if(!event.shiftKey){this._clearMessagesSelection();this._updateMessagesSelection(messages[0],false,false,true);}
event.preventDefault();}
_downArrowWasPressed(event)
{var messages=this._visibleMessageElements();if(!this._selectedMessages.length){if(messages.length)
this._updateMessagesSelection(messages[0],false,false,true);return;}
var lastMessage=this._selectedMessages.lastValue;var nextMessage=this._nextMessage(lastMessage);if(nextMessage)
this._updateMessagesSelection(nextMessage,false,event.shiftKey,true);else if(!event.shiftKey){this._clearMessagesSelection();this._updateMessagesSelection(messages.lastValue,false,false,true);}
event.preventDefault();}
_leftArrowWasPressed(event)
{if(this._selectedMessages.length!==1)
return;var currentMessage=this._selectedMessages[0];if(currentMessage.classList.contains("console-group-title")){currentMessage.parentNode.classList.add("collapsed");event.preventDefault();}else if(currentMessage.__messageView&&currentMessage.__messageView.expandable){currentMessage.__messageView.collapse();event.preventDefault();}}
_rightArrowWasPressed(event)
{if(this._selectedMessages.length!==1)
return;var currentMessage=this._selectedMessages[0];if(currentMessage.classList.contains("console-group-title")){currentMessage.parentNode.classList.remove("collapsed");event.preventDefault();}else if(currentMessage.__messageView&&currentMessage.__messageView.expandable){currentMessage.__messageView.expand();event.preventDefault();}}
_commandEnterWasPressed(event)
{if(this._selectedMessages.length!==1)
return;let message=this._selectedMessages[0];if(message.__commandView&&message.__commandView.commandText){this._logViewController.consolePromptTextCommitted(null,message.__commandView.commandText);event.preventDefault();}}
_previousMessage(message)
{var messages=this._visibleMessageElements();for(var i=messages.indexOf(message)-1;i>=0;--i){if(this._isMessageVisible(messages[i]))
return messages[i];}
return null;}
_nextMessage(message)
{var messages=this._visibleMessageElements();for(var i=messages.indexOf(message)+1;i<messages.length;++i){if(this._isMessageVisible(messages[i]))
return messages[i];}
return null;}
_clearFocusableChildren()
{var focusableElements=this.messagesElement.querySelectorAll("[tabindex]");for(var i=0,count=focusableElements.length;i<count;++i)
focusableElements[i].removeAttribute("tabindex");}
findBannerPerformSearch(findBanner,searchQuery)
{this.performSearch(searchQuery);}
findBannerSearchCleared()
{this.searchCleared();}
revealNextSearchResult()
{this.findBannerRevealNextResult();}
revealPreviousSearchResult()
{this.findBannerRevealPreviousResult();}
performSearch(searchQuery)
{if(!isEmptyObject(this._searchHighlightDOMChanges))
WebInspector.revertDomChanges(this._searchHighlightDOMChanges);this._currentSearchQuery=searchQuery;this._searchHighlightDOMChanges=[];this._searchMatches=[];this._selectedSearchMatchIsValid=false;this._selectedSearchMatch=null;let numberOfResults=0;if(this._currentSearchQuery===""){this.element.classList.remove(WebInspector.LogContentView.SearchInProgressStyleClassName);this.dispatchEventToListeners(WebInspector.ContentView.Event.NumberOfSearchResultsDidChange);return;}
this.element.classList.add(WebInspector.LogContentView.SearchInProgressStyleClassName);let searchRegex=new RegExp(this._currentSearchQuery.escapeForRegExp(),"gi");this._unfilteredMessageElements().forEach(function(message){let matchRanges=[];let text=message.textContent;let match=searchRegex.exec(text);while(match){numberOfResults++;matchRanges.push({offset:match.index,length:match[0].length});match=searchRegex.exec(text);}
if(!isEmptyObject(matchRanges))
this._highlightRanges(message,matchRanges);let classList=message.classList;if(!isEmptyObject(matchRanges)||message.__commandView instanceof WebInspector.ConsoleCommandView||message.__message instanceof WebInspector.ConsoleCommandResultMessage)
classList.remove(WebInspector.LogContentView.FilteredOutBySearchStyleClassName);else
classList.add(WebInspector.LogContentView.FilteredOutBySearchStyleClassName);},this);this.dispatchEventToListeners(WebInspector.ContentView.Event.NumberOfSearchResultsDidChange);this._findBanner.numberOfResults=numberOfResults;if(!this._selectedSearchMatchIsValid&&this._selectedSearchMatch){this._selectedSearchMatch.highlight.classList.remove(WebInspector.LogContentView.SelectedStyleClassName);this._selectedSearchMatch=null;}}
searchCleared()
{this.performSearch("");}
_highlightRanges(message,matchRanges)
{var highlightedElements=WebInspector.highlightRangesWithStyleClass(message,matchRanges,WebInspector.LogContentView.HighlightedStyleClassName,this._searchHighlightDOMChanges);matchRanges.forEach(function(range,index){this._searchMatches.push({message,range,highlight:highlightedElements[index]});if(this._selectedSearchMatch&&!this._selectedSearchMatchIsValid&&this._selectedSearchMatch.message===message){this._selectedSearchMatchIsValid=this._rangesOverlap(this._selectedSearchMatch.range,range);if(this._selectedSearchMatchIsValid){delete this._selectedSearchMatch;this._highlightSearchMatchAtIndex(this._searchMatches.length-1);}}},this);}
_rangesOverlap(range1,range2)
{return range1.offset<=range2.offset+range2.length&&range2.offset<=range1.offset+range1.length;}
_highlightSearchMatchAtIndex(index)
{if(index>=this._searchMatches.length)
index=0;else if(index<0)
index=this._searchMatches.length-1;if(this._selectedSearchMatch)
this._selectedSearchMatch.highlight.classList.remove(WebInspector.LogContentView.SelectedStyleClassName);this._selectedSearchMatch=this._searchMatches[index];this._selectedSearchMatch.highlight.classList.add(WebInspector.LogContentView.SelectedStyleClassName);this._ensureMessageIsVisible(this._selectedSearchMatch.message);}
_provisionalLoadStarted()
{this._startedProvisionalLoad=true;}
_reappendProvisionalMessages()
{if(!this._startedProvisionalLoad)
return;this._startedProvisionalLoad=false;for(let provisionalMessage of this._provisionalMessages)
this._logViewController.appendConsoleMessage(provisionalMessage);this._provisionalMessages=[];}
_clearProvisionalState()
{this._startedProvisionalLoad=false;this._provisionalMessages=[];}};WebInspector.LogContentView.Scopes={All:"log-all",Errors:"log-errors",Warnings:"log-warnings",Logs:"log-logs"};WebInspector.LogContentView.ItemWrapperStyleClassName="console-item";WebInspector.LogContentView.FilteredOutStyleClassName="filtered-out";WebInspector.LogContentView.SelectedStyleClassName="selected";WebInspector.LogContentView.SearchInProgressStyleClassName="search-in-progress";WebInspector.LogContentView.FilteredOutBySearchStyleClassName="filtered-out-by-search";WebInspector.LogContentView.HighlightedStyleClassName="highlighted";WebInspector.MemoryCategoryView=class MemoryCategoryView extends WebInspector.Object
{constructor(category,displayName)
{super();this._category=category;this._element=document.createElement("div");this._element.classList.add("memory-category-view",category);this._detailsElement=this._element.appendChild(document.createElement("div"));this._detailsElement.classList.add("details");let detailsNameElement=this._detailsElement.appendChild(document.createElement("span"));detailsNameElement.classList.add("name");detailsNameElement.textContent=displayName;this._detailsElement.appendChild(document.createElement("br"));this._detailsMaxElement=this._detailsElement.appendChild(document.createElement("span"));this._detailsElement.appendChild(document.createElement("br"));this._detailsMinElement=this._detailsElement.appendChild(document.createElement("span"));this._updateDetails(NaN,NaN);this._graphElement=this._element.appendChild(document.createElement("div"));this._graphElement.classList.add("graph"); let size=new WebInspector.Size(800,75);this._chart=new WebInspector.LineChart(size);this._graphElement.appendChild(this._chart.element);}
get element(){return this._element;}
get category(){return this._category;}
clear()
{this._cachedMinSize=undefined;this._cachedMaxSize=undefined;this._chart.clear();this._chart.needsLayout();}
layoutWithDataPoints(dataPoints,lastTime,minSize,maxSize,xScale,yScale)
{this._updateDetails(minSize,maxSize);this._chart.clear();if(!dataPoints.length)
return;if(!maxSize)
return;let firstX=0;let firstY=yScale(dataPoints[0].size);this._chart.addPoint(firstX,firstY);for(let dataPoint of dataPoints){let x=xScale(dataPoint.time);let y=yScale(dataPoint.size);this._chart.addPoint(x,y);}
let lastDataPoint=dataPoints.lastValue;let lastX=Math.floor(xScale(lastTime));let lastY=yScale(lastDataPoint.size);this._chart.addPoint(lastX,lastY);this._chart.updateLayout();}
_updateDetails(minSize,maxSize)
{if(this._cachedMinSize===minSize&&this._cachedMaxSize===maxSize)
return;this._cachedMinSize=minSize;this._cachedMaxSize=maxSize;this._detailsMaxElement.textContent=WebInspector.UIString("Highest: %s").format(Number.isFinite(maxSize)?Number.bytesToString(maxSize):emDash);this._detailsMinElement.textContent=WebInspector.UIString("Lowest: %s").format(Number.isFinite(minSize)?Number.bytesToString(minSize):emDash);}};WebInspector.MemoryTimelineOverviewGraph=class MemoryTimelineOverviewGraph extends WebInspector.TimelineOverviewGraph
{constructor(timeline,timelineOverview)
{super(timelineOverview);this.element.classList.add("memory");this._memoryTimeline=timeline;this._memoryTimeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._memoryTimelineRecordAdded,this);this._memoryTimeline.addEventListener(WebInspector.MemoryTimeline.Event.MemoryPressureEventAdded,this._memoryTimelineMemoryPressureEventAdded,this);this._didInitializeCategories=false;let size=new WebInspector.Size(0,this.height);this._chart=new WebInspector.StackedLineChart(size);this.element.appendChild(this._chart.element);this._legendElement=this.element.appendChild(document.createElement("div"));this._legendElement.classList.add("legend");this._memoryPressureMarkersContainerElement=this.element.appendChild(document.createElement("div"));this._memoryPressureMarkersContainerElement.classList.add("memory-pressure-markers-container");this._memoryPressureMarkerElements=[];this.reset();}
get height()
{return 108;}
reset()
{super.reset();this._maxSize=0;this._cachedMaxSize=undefined;this._updateLegend();this._chart.clear();this._chart.needsLayout();this._memoryPressureMarkersContainerElement.removeChildren();this._memoryPressureMarkerElements=[];}
layout()
{if(!this.visible)
return;this._updateLegend();this._chart.clear();if(!this._didInitializeCategories)
return;let graphWidth=this.timelineOverview.scrollContainerWidth;if(isNaN(graphWidth))
return;if(this._chart.size.width!==graphWidth||this._chart.size.height!==this.height)
this._chart.size=new WebInspector.Size(graphWidth,this.height);let graphStartTime=this.startTime;let visibleEndTime=Math.min(this.endTime,this.currentTime);let secondsPerPixel=this.timelineOverview.secondsPerPixel;let maxCapacity=this._maxSize*1.05;function xScale(time){return(time-graphStartTime)/secondsPerPixel;}
let height=this.height;function yScale(size){return height-((size/maxCapacity)*height);}
let visibleMemoryPressureEventMarkers=this._visibleMemoryPressureEvents(graphStartTime,visibleEndTime);for(let i=0;i<visibleMemoryPressureEventMarkers.length;++i){let markerElement=this._memoryPressureMarkerElements[i];if(!markerElement){markerElement=this._memoryPressureMarkersContainerElement.appendChild(document.createElement("div"));markerElement.classList.add("memory-pressure-event");this._memoryPressureMarkerElements[i]=markerElement;}
let memoryPressureEvent=visibleMemoryPressureEventMarkers[i];let property=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"right":"left";markerElement.style.setProperty(property,`${xScale(memoryPressureEvent.timestamp)}px`);}
let excess=this._memoryPressureMarkerElements.length-visibleMemoryPressureEventMarkers.length;if(excess){let elementsToRemove=this._memoryPressureMarkerElements.splice(visibleMemoryPressureEventMarkers.length);for(let element of elementsToRemove)
element.remove();}
let discontinuities=this.timelineOverview.discontinuitiesInTimeRange(graphStartTime,visibleEndTime);let includeRecordBeforeStart=!discontinuities.length||discontinuities[0].startTime>graphStartTime; let visibleRecords=this._memoryTimeline.recordsInTimeRange(graphStartTime,visibleEndTime,includeRecordBeforeStart);if(!visibleRecords.length)
return;function pointSetForRecord(record){let size=0;let ys=[];for(let i=0;i<record.categories.length;++i){size+=record.categories[i].size;ys[i]=yScale(size);}
return ys;}
if(visibleRecords[0]===this._memoryTimeline.records[0]&&(!discontinuities.length||discontinuities[0].startTime>visibleRecords[0].startTime))
this._chart.addPointSet(0,pointSetForRecord(visibleRecords[0]));function insertDiscontinuity(previousRecord,discontinuity,nextRecord)
{if(!(previousRecord||nextRecord))
return;let xStart=xScale(discontinuity.startTime);let xEnd=xScale(discontinuity.endTime);if(previousRecord)
this._chart.addPointSet(xStart,pointSetForRecord(previousRecord));let zeroValues=Array((previousRecord||nextRecord).categories.length).fill(yScale(0));this._chart.addPointSet(xStart,zeroValues);if(nextRecord){this._chart.addPointSet(xEnd,zeroValues);this._chart.addPointSet(xEnd,pointSetForRecord(nextRecord));}else{
this._chart.addPointSet(xScale(visibleEndTime),zeroValues);}}
let previousRecord=null;for(let record of visibleRecords){if(discontinuities.length&&discontinuities[0].endTime<record.startTime){let discontinuity=discontinuities.shift();insertDiscontinuity.call(this,previousRecord,discontinuity,record);}
let x=xScale(record.startTime);this._chart.addPointSet(x,pointSetForRecord(record));previousRecord=record;}
if(discontinuities.length)
insertDiscontinuity.call(this,previousRecord,discontinuities[0],null);else{let lastRecord=visibleRecords.lastValue;if(lastRecord.startTime<=visibleEndTime){let x=Math.floor(xScale(visibleEndTime));this._chart.addPointSet(x,pointSetForRecord(lastRecord));}}
this._chart.updateLayout();}
_updateLegend()
{if(this._cachedMaxSize===this._maxSize)
return;this._cachedMaxSize=this._maxSize;if(!this._maxSize){this._legendElement.hidden=true;this._legendElement.textContent="";}else{this._legendElement.hidden=false;this._legendElement.textContent=WebInspector.UIString("Maximum Size: %s").format(Number.bytesToString(this._maxSize));}}
_visibleMemoryPressureEvents(startTime,endTime)
{let events=this._memoryTimeline.memoryPressureEvents;if(!events.length)
return[];let lowerIndex=events.lowerBound(startTime,(time,event)=>time-event.timestamp);let upperIndex=events.upperBound(endTime,(time,event)=>time-event.timestamp);return events.slice(lowerIndex,upperIndex);}
_memoryTimelineRecordAdded(event)
{let memoryTimelineRecord=event.data.record;this._maxSize=Math.max(this._maxSize,memoryTimelineRecord.totalSize);if(!this._didInitializeCategories){this._didInitializeCategories=true;let types=[];for(let category of memoryTimelineRecord.categories)
types.push(category.type);this._chart.initializeSections(types);}
this.needsLayout();}
_memoryTimelineMemoryPressureEventAdded(event)
{this.needsLayout();}};WebInspector.MemoryTimelineView=class MemoryTimelineView extends WebInspector.TimelineView
{constructor(timeline,extraArguments)
{super(timeline,extraArguments);this._recording=extraArguments.recording;this.element.classList.add("memory");let contentElement=this.element.appendChild(document.createElement("div"));contentElement.classList.add("content");let overviewElement=contentElement.appendChild(document.createElement("div"));overviewElement.classList.add("overview");function createChartContainer(parentElement,subtitle,tooltip)
{let chartElement=parentElement.appendChild(document.createElement("div"));chartElement.classList.add("chart");let chartSubtitleElement=chartElement.appendChild(document.createElement("div"));chartSubtitleElement.classList.add("subtitle");chartSubtitleElement.textContent=subtitle;chartSubtitleElement.title=tooltip;let chartFlexContainerElement=chartElement.appendChild(document.createElement("div"));chartFlexContainerElement.classList.add("container");return chartFlexContainerElement;}
let usageTooltip=WebInspector.UIString("Breakdown of each memory category at the end of the selected time range");let usageChartContainerElement=createChartContainer(overviewElement,WebInspector.UIString("Breakdown"),usageTooltip);this._usageCircleChart=new WebInspector.CircleChart({size:120,innerRadiusRatio:0.5});usageChartContainerElement.appendChild(this._usageCircleChart.element);this._usageLegendElement=usageChartContainerElement.appendChild(document.createElement("div"));this._usageLegendElement.classList.add("legend","usage");let dividerElement=overviewElement.appendChild(document.createElement("div"));dividerElement.classList.add("divider");let maxComparisonTooltip=WebInspector.UIString("Comparison of total memory size at the end of the selected time range to the maximum memory size in this recording");let maxComparisonChartContainerElement=createChartContainer(overviewElement,WebInspector.UIString("Max Comparison"),maxComparisonTooltip);this._maxComparisonCircleChart=new WebInspector.CircleChart({size:120,innerRadiusRatio:0.5});maxComparisonChartContainerElement.appendChild(this._maxComparisonCircleChart.element);this._maxComparisonLegendElement=maxComparisonChartContainerElement.appendChild(document.createElement("div"));this._maxComparisonLegendElement.classList.add("legend","maximum");let detailsContainerElement=this._detailsContainerElement=contentElement.appendChild(document.createElement("div"));detailsContainerElement.classList.add("details");this._timelineRuler=new WebInspector.TimelineRuler;this.addSubview(this._timelineRuler);detailsContainerElement.appendChild(this._timelineRuler.element);let detailsSubtitleElement=detailsContainerElement.appendChild(document.createElement("div"));detailsSubtitleElement.classList.add("subtitle");detailsSubtitleElement.textContent=WebInspector.UIString("Categories");this._didInitializeCategories=false;this._categoryViews=[];this._usageLegendSizeElementMap=new Map;this._maxSize=0;this._maxComparisonMaximumSizeElement=null;this._maxComparisonCurrentSizeElement=null;timeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._memoryTimelineRecordAdded,this);}
static displayNameForCategory(category)
{switch(category){case WebInspector.MemoryCategory.Type.JavaScript:return WebInspector.UIString("JavaScript");case WebInspector.MemoryCategory.Type.Images:return WebInspector.UIString("Images");case WebInspector.MemoryCategory.Type.Layers:return WebInspector.UIString("Layers");case WebInspector.MemoryCategory.Type.Page:return WebInspector.UIString("Page");}}
shown()
{super.shown();this._timelineRuler.updateLayout(WebInspector.View.LayoutReason.Resize);}
hidden()
{super.hidden();}
closed()
{this.representedObject.removeEventListener(null,null,this);}
reset()
{super.reset();this._maxSize=0;this._cachedLegendRecord=null;this._cachedLegendMaxSize=undefined;this._cachedLegendCurrentSize=undefined;this._usageCircleChart.clear();this._usageCircleChart.needsLayout();this._clearUsageLegend();this._maxComparisonCircleChart.clear();this._maxComparisonCircleChart.needsLayout();this._clearMaxComparisonLegend();for(let categoryView of this._categoryViews)
categoryView.clear();}
get scrollableElements()
{return[this.element];}
get showsFilterBar(){return false;}
layout()
{this._timelineRuler.zeroTime=this.zeroTime;this._timelineRuler.startTime=this.startTime;this._timelineRuler.endTime=this.endTime;if(!this._didInitializeCategories)
return;let graphStartTime=this.startTime;let graphEndTime=this.endTime;let visibleEndTime=Math.min(this.endTime,this.currentTime);let discontinuities=this._recording.discontinuitiesInTimeRange(graphStartTime,visibleEndTime);let includeRecordBeforeStart=!discontinuities.length||discontinuities[0].startTime>graphStartTime; let visibleRecords=this.representedObject.recordsInTimeRange(graphStartTime,visibleEndTime,includeRecordBeforeStart);if(!visibleRecords.length)
return;let lastRecord=visibleRecords.lastValue;let values=[];for(let{size}of lastRecord.categories)
values.push(size);this._usageCircleChart.values=values;this._usageCircleChart.updateLayout();this._updateUsageLegend(lastRecord);this._maxComparisonCircleChart.values=[lastRecord.totalSize,this._maxSize-lastRecord.totalSize];this._maxComparisonCircleChart.updateLayout();this._updateMaxComparisonLegend(lastRecord.totalSize); const categoryViewWidth=800;const categoryViewHeight=75;let secondsPerPixel=(graphEndTime-graphStartTime)/categoryViewWidth;let categoryDataMap={};for(let categoryView of this._categoryViews)
categoryDataMap[categoryView.category]={dataPoints:[],max:-Infinity,min:Infinity};for(let record of visibleRecords){let time=record.startTime;let discontinuity=null;if(discontinuities.length&&discontinuities[0].endTime<time)
discontinuity=discontinuities.shift();for(let category of record.categories){let categoryData=categoryDataMap[category.type];if(discontinuity){if(categoryData.dataPoints.length){let previousDataPoint=categoryData.dataPoints.lastValue;categoryData.dataPoints.push({time:discontinuity.startTime,size:previousDataPoint.size});}
categoryData.dataPoints.push({time:discontinuity.startTime,size:0});categoryData.dataPoints.push({time:discontinuity.endTime,size:0});categoryData.dataPoints.push({time:discontinuity.endTime,size:category.size});}
categoryData.dataPoints.push({time,size:category.size});categoryData.max=Math.max(categoryData.max,category.size);categoryData.min=Math.min(categoryData.min,category.size);}}
if(discontinuities.length)
visibleEndTime=discontinuities[0].startTime;function layoutCategoryView(categoryView,categoryData){let{dataPoints,min,max}=categoryData;if(min===Infinity)
min=0;if(max===-Infinity)
max=0;let graphMin=min*0.95;let graphMax=(max*1.05)-graphMin;function xScale(time){return(time-graphStartTime)/secondsPerPixel;}
function yScale(size){return categoryViewHeight-(((size-graphMin)/graphMax)*categoryViewHeight);}
categoryView.layoutWithDataPoints(dataPoints,visibleEndTime,min,max,xScale,yScale);}
for(let categoryView of this._categoryViews)
layoutCategoryView(categoryView,categoryDataMap[categoryView.category]);}
_clearUsageLegend()
{for(let sizeElement of this._usageLegendSizeElementMap.values())
sizeElement.textContent=emDash;let totalElement=this._usageCircleChart.centerElement.firstChild;if(totalElement){totalElement.firstChild.textContent="";totalElement.lastChild.textContent="";}}
_updateUsageLegend(record)
{if(this._cachedLegendRecord===record)
return;this._cachedLegendRecord=record;for(let{type,size}of record.categories){let sizeElement=this._usageLegendSizeElementMap.get(type);sizeElement.textContent=Number.isFinite(size)?Number.bytesToString(size):emDash;}
let centerElement=this._usageCircleChart.centerElement;let totalElement=centerElement.firstChild;if(!totalElement){totalElement=centerElement.appendChild(document.createElement("div"));totalElement.classList.add("total-usage");totalElement.appendChild(document.createElement("span")); totalElement.appendChild(document.createElement("br"));totalElement.appendChild(document.createElement("span"));}
let totalSize=Number.bytesToString(record.totalSize).split(/\s+/);totalElement.firstChild.textContent=totalSize[0];totalElement.lastChild.textContent=totalSize[1];}
_clearMaxComparisonLegend()
{this._maxComparisonMaximumSizeElement.textContent=emDash;this._maxComparisonCurrentSizeElement.textContent=emDash;let totalElement=this._maxComparisonCircleChart.centerElement.firstChild;if(totalElement)
totalElement.textContent="";}
_updateMaxComparisonLegend(currentSize)
{if(this._cachedLegendMaxSize===this._maxSize&&this._cachedLegendCurrentSize===currentSize)
return;this._cachedLegendMaxSize=this._maxSize;this._cachedLegendCurrentSize=currentSize;this._maxComparisonMaximumSizeElement.textContent=Number.isFinite(this._maxSize)?Number.bytesToString(this._maxSize):emDash;this._maxComparisonCurrentSizeElement.textContent=Number.isFinite(currentSize)?Number.bytesToString(currentSize):emDash;let centerElement=this._maxComparisonCircleChart.centerElement;let totalElement=centerElement.firstChild;if(!totalElement){totalElement=centerElement.appendChild(document.createElement("div"));totalElement.classList.add("max-percentage");}
let percent=currentSize/this._maxSize;totalElement.textContent=Number.percentageString(percent===1?percent:(percent-0.0005));}
_initializeCategoryViews(record)
{this._didInitializeCategories=true;let segments=[];let lastCategoryViewElement=null;function appendLegendRow(legendElement,swatchClass,label,tooltip){let rowElement=legendElement.appendChild(document.createElement("div"));rowElement.classList.add("row");let swatchElement=rowElement.appendChild(document.createElement("div"));swatchElement.classList.add("swatch",swatchClass);let labelElement=rowElement.appendChild(document.createElement("p"));labelElement.classList.add("label");labelElement.textContent=label;let sizeElement=rowElement.appendChild(document.createElement("p"));sizeElement.classList.add("size");if(tooltip)
rowElement.title=tooltip;return sizeElement;}
for(let{type}of record.categories){segments.push(type);let categoryView=new WebInspector.MemoryCategoryView(type,WebInspector.MemoryTimelineView.displayNameForCategory(type));this._categoryViews.push(categoryView);if(!lastCategoryViewElement)
this._detailsContainerElement.appendChild(categoryView.element);else
this._detailsContainerElement.insertBefore(categoryView.element,lastCategoryViewElement);lastCategoryViewElement=categoryView.element;let sizeElement=appendLegendRow.call(this,this._usageLegendElement,type,WebInspector.MemoryTimelineView.displayNameForCategory(type));this._usageLegendSizeElementMap.set(type,sizeElement);}
this._usageCircleChart.segments=segments;this._maxComparisonCircleChart.segments=["current","remainder"];this._maxComparisonMaximumSizeElement=appendLegendRow.call(this,this._maxComparisonLegendElement,"remainder",WebInspector.UIString("Maximum"),WebInspector.UIString("Maximum maximum memory size in this recording"));this._maxComparisonCurrentSizeElement=appendLegendRow.call(this,this._maxComparisonLegendElement,"current",WebInspector.UIString("Current"),WebInspector.UIString("Total memory size at the end of the selected time range"));}
_memoryTimelineRecordAdded(event)
{let memoryTimelineRecord=event.data.record;if(!this._didInitializeCategories)
this._initializeCategoryViews(memoryTimelineRecord);this._maxSize=Math.max(this._maxSize,memoryTimelineRecord.totalSize);if(memoryTimelineRecord.startTime>=this.startTime&&memoryTimelineRecord.endTime<=this.endTime)
this.needsLayout();}};WebInspector.MultipleScopeBarItem=class MultipleScopeBarItem extends WebInspector.Object
{constructor(scopeBarItems)
{super();this._element=document.createElement("li");this._element.classList.add("multiple");this._titleElement=document.createElement("span");this._element.appendChild(this._titleElement);this._element.addEventListener("mousedown",this._handleMouseDown.bind(this));this._selectElement=document.createElement("select");this._selectElement.addEventListener("change",this._selectElementSelectionChanged.bind(this));this._element.appendChild(this._selectElement);this._element.appendChild(useSVGSymbol("Images/UpDownArrows.svg","arrows"));this.scopeBarItems=scopeBarItems;}
get element()
{return this._element;}
get exclusive()
{return false;}
get scopeBarItems()
{return this._scopeBarItems;}
set scopeBarItems(scopeBarItems)
{if(this._scopeBarItems){for(var scopeBarItem of this._scopeBarItems)
scopeBarItem.removeEventListener(null,null,this);}
this._scopeBarItems=scopeBarItems||[];this._selectedScopeBarItem=null;this._selectElement.removeChildren();function createOption(scopeBarItem)
{var optionElement=document.createElement("option");var maxPopupMenuLength=130; optionElement.textContent=scopeBarItem.label.length<=maxPopupMenuLength?scopeBarItem.label:scopeBarItem.label.substring(0,maxPopupMenuLength)+ellipsis;return optionElement;}
for(var scopeBarItem of this._scopeBarItems){if(scopeBarItem.selected&&!this._selectedScopeBarItem)
this._selectedScopeBarItem=scopeBarItem;else if(scopeBarItem.selected){scopeBarItem.selected=false;}
scopeBarItem.addEventListener(WebInspector.ScopeBarItem.Event.SelectionChanged,this._itemSelectionDidChange,this);this._selectElement.appendChild(createOption(scopeBarItem));}
this._lastSelectedScopeBarItem=this._selectedScopeBarItem||this._scopeBarItems[0]||null;this._titleElement.textContent=this._lastSelectedScopeBarItem?this._lastSelectedScopeBarItem.label:"";this._element.classList.toggle("selected",!!this._selectedScopeBarItem);this._selectElement.selectedIndex=this._scopeBarItems.indexOf(this._selectedScopeBarItem);}
get selected()
{return!!this._selectedScopeBarItem;}
set selected(selected)
{this.selectedScopeBarItem=selected?this._lastSelectedScopeBarItem:null;}
get selectedScopeBarItem()
{return this._selectedScopeBarItem;}
set selectedScopeBarItem(selectedScopeBarItem)
{this._ignoreItemSelectedEvent=true;if(this._selectedScopeBarItem){this._selectedScopeBarItem.selected=false;this._lastSelectedScopeBarItem=this._selectedScopeBarItem;}else if(!this._lastSelectedScopeBarItem)
this._lastSelectedScopeBarItem=selectedScopeBarItem;this._element.classList.toggle("selected",!!selectedScopeBarItem);this._selectedScopeBarItem=selectedScopeBarItem||null;this._selectElement.selectedIndex=this._scopeBarItems.indexOf(this._selectedScopeBarItem);if(this._selectedScopeBarItem){this.displaySelectedItem();this._selectedScopeBarItem.selected=true;}
var withModifier=WebInspector.modifierKeys.metaKey&&!WebInspector.modifierKeys.ctrlKey&&!WebInspector.modifierKeys.altKey&&!WebInspector.modifierKeys.shiftKey;this.dispatchEventToListeners(WebInspector.ScopeBarItem.Event.SelectionChanged,{withModifier});this._ignoreItemSelectedEvent=false;}
displaySelectedItem()
{this._titleElement.textContent=(this._selectedScopeBarItem||this._scopeBarItems[0]).label;}
displayWidestItem()
{let widestLabel=null;let widestSize=0;for(let option of Array.from(this._selectElement.options)){this._titleElement.textContent=option.label;if(this._titleElement.realOffsetWidth>widestSize){widestSize=this._titleElement.realOffsetWidth;widestLabel=option.label;}}
this._titleElement.textContent=widestLabel;}
_handleMouseDown(event)
{if(event.button!==0)
return;if(this._element.classList.contains("selected"))
return;this.selected=true;}
_selectElementSelectionChanged(event)
{this.selectedScopeBarItem=this._scopeBarItems[this._selectElement.selectedIndex];}
_itemSelectionDidChange(event)
{if(this._ignoreItemSelectedEvent)
return;this.selectedScopeBarItem=event.target.selected?event.target:null;}};WebInspector.NavigationBar=class NavigationBar extends WebInspector.View
{constructor(element,navigationItems,role,label)
{super(element);this.element.classList.add(this.constructor.StyleClassName||"navigation-bar");this.element.tabIndex=0;if(role)
this.element.setAttribute("role",role);if(label)
this.element.setAttribute("aria-label",label);this.element.addEventListener("focus",this._focus.bind(this),false);this.element.addEventListener("blur",this._blur.bind(this),false);this.element.addEventListener("keydown",this._keyDown.bind(this),false);this.element.addEventListener("mousedown",this._mouseDown.bind(this),false);this._forceLayout=false;this._minimumWidth=NaN;this._navigationItems=[];this._selectedNavigationItem=null;if(navigationItems){for(var i=0;i<navigationItems.length;++i)
this.addNavigationItem(navigationItems[i]);}}
addNavigationItem(navigationItem,parentElement)
{return this.insertNavigationItem(navigationItem,this._navigationItems.length,parentElement);}
insertNavigationItem(navigationItem,index,parentElement)
{if(!(navigationItem instanceof WebInspector.NavigationItem))
return null;if(navigationItem.parentNavigationBar)
navigationItem.parentNavigationBar.removeNavigationItem(navigationItem);navigationItem._parentNavigationBar=this;index=Math.max(0,Math.min(index,this._navigationItems.length));this._navigationItems.splice(index,0,navigationItem);if(!parentElement)
parentElement=this.element;var nextSibling=this._navigationItems[index+1];var nextSiblingElement=nextSibling?nextSibling.element:null;if(nextSiblingElement&&nextSiblingElement.parentNode!==parentElement)
nextSiblingElement=null;parentElement.insertBefore(navigationItem.element,nextSiblingElement);this._minimumWidth=NaN;this.needsLayout();return navigationItem;}
removeNavigationItem(navigationItem)
{if(!(navigationItem instanceof WebInspector.NavigationItem))
return null;if(!navigationItem._parentNavigationBar)
return null;if(navigationItem._parentNavigationBar!==this)
return null;navigationItem._parentNavigationBar=null;if(this._selectedNavigationItem===navigationItem)
this.selectedNavigationItem=null;this._navigationItems.remove(navigationItem);navigationItem.element.remove();this._minimumWidth=NaN;this.needsLayout();return navigationItem;}
get selectedNavigationItem()
{return this._selectedNavigationItem;}
set selectedNavigationItem(navigationItem)
{let navigationItemHasOtherParent=navigationItem&&navigationItem.parentNavigationBar!==this;if(navigationItemHasOtherParent)
return;if(!(navigationItem instanceof WebInspector.RadioButtonNavigationItem))
navigationItem=null;if(this._selectedNavigationItem===navigationItem)
return;if(this._selectedNavigationItem)
this._selectedNavigationItem.selected=false;this._selectedNavigationItem=navigationItem||null;if(this._selectedNavigationItem)
this._selectedNavigationItem.selected=true;if(!this._mouseIsDown)
this.dispatchEventToListeners(WebInspector.NavigationBar.Event.NavigationItemSelected);}
get navigationItems()
{return this._navigationItems;}
get minimumWidth()
{if(isNaN(this._minimumWidth))
this._minimumWidth=this._calculateMinimumWidth();return this._minimumWidth;}
get sizesToFit()
{return false;}
findNavigationItem(identifier)
{return this._navigationItems.find((item)=>item.identifier===identifier)||null;}
needsLayout()
{this._forceLayout=true;super.needsLayout();}
layout()
{if(this.layoutReason!==WebInspector.View.LayoutReason.Resize&&!this._forceLayout)
return;this._forceLayout=false;this.element.classList.remove(WebInspector.NavigationBar.CollapsedStyleClassName);for(let navigationItem of this._navigationItems)
navigationItem.updateLayout(true);let totalItemWidth=0;for(let navigationItem of this._navigationItems){if(navigationItem instanceof WebInspector.FlexibleSpaceNavigationItem)
continue;totalItemWidth+=navigationItem.element.realOffsetWidth;}
const barWidth=this.element.realOffsetWidth;if(totalItemWidth>barWidth)
this.element.classList.add(WebInspector.NavigationBar.CollapsedStyleClassName);for(let navigationItem of this._navigationItems)
navigationItem.updateLayout(false);}
_mouseDown(event)
{if(event.button!==0)
return;if(!this._focused)
this.element.removeAttribute("tabindex");var itemElement=event.target.enclosingNodeOrSelfWithClass(WebInspector.RadioButtonNavigationItem.StyleClassName);if(!itemElement||!itemElement.navigationItem)
return;this._previousSelectedNavigationItem=this.selectedNavigationItem;this.selectedNavigationItem=itemElement.navigationItem;this._mouseIsDown=true;this._mouseMovedEventListener=this._mouseMoved.bind(this);this._mouseUpEventListener=this._mouseUp.bind(this);if(typeof this.selectedNavigationItem.dontPreventDefaultOnNavigationBarMouseDown==="function"&&this.selectedNavigationItem.dontPreventDefaultOnNavigationBarMouseDown()&&this._previousSelectedNavigationItem===this.selectedNavigationItem)
return;document.addEventListener("mousemove",this._mouseMovedEventListener,false);document.addEventListener("mouseup",this._mouseUpEventListener,false);event.preventDefault();event.stopPropagation();}
_mouseMoved(event)
{if(!this._mouseIsDown)
return;event.preventDefault();event.stopPropagation();var itemElement=event.target.enclosingNodeOrSelfWithClass(WebInspector.RadioButtonNavigationItem.StyleClassName);if(!itemElement||!itemElement.navigationItem||!this.element.contains(itemElement)){
var element=document.elementFromPoint(event.pageX,this.element.totalOffsetTop+(this.element.offsetHeight/2));if(!element)
return;itemElement=element.enclosingNodeOrSelfWithClass(WebInspector.RadioButtonNavigationItem.StyleClassName);if(!itemElement||!itemElement.navigationItem||!this.element.contains(itemElement))
return;}
if(this.selectedNavigationItem)
this.selectedNavigationItem.active=false;this.selectedNavigationItem=itemElement.navigationItem;this.selectedNavigationItem.active=true;}
_mouseUp(event)
{if(!this._mouseIsDown)
return;if(this.selectedNavigationItem)
this.selectedNavigationItem.active=false;this._mouseIsDown=false;document.removeEventListener("mousemove",this._mouseMovedEventListener,false);document.removeEventListener("mouseup",this._mouseUpEventListener,false);delete this._mouseMovedEventListener;delete this._mouseUpEventListener;this.element.tabIndex=0;
if(this._previousSelectedNavigationItem!==this.selectedNavigationItem)
this.dispatchEventToListeners(WebInspector.NavigationBar.Event.NavigationItemSelected);delete this._previousSelectedNavigationItem;event.preventDefault();event.stopPropagation();}
_keyDown(event)
{if(!this._focused)
return;if(event.keyIdentifier!=="Left"&&event.keyIdentifier!=="Right")
return;event.preventDefault();event.stopPropagation();var selectedNavigationItemIndex=this._navigationItems.indexOf(this._selectedNavigationItem);if(event.keyIdentifier==="Left"){if(selectedNavigationItemIndex===-1)
selectedNavigationItemIndex=this._navigationItems.length;do{selectedNavigationItemIndex=Math.max(0,selectedNavigationItemIndex-1);}while(selectedNavigationItemIndex&&!(this._navigationItems[selectedNavigationItemIndex]instanceof WebInspector.RadioButtonNavigationItem));}else if(event.keyIdentifier==="Right"){do{selectedNavigationItemIndex=Math.min(selectedNavigationItemIndex+1,this._navigationItems.length-1);}while(selectedNavigationItemIndex<this._navigationItems.length-1&&!(this._navigationItems[selectedNavigationItemIndex]instanceof WebInspector.RadioButtonNavigationItem));}
if(!(this._navigationItems[selectedNavigationItemIndex]instanceof WebInspector.RadioButtonNavigationItem))
return;this.selectedNavigationItem=this._navigationItems[selectedNavigationItemIndex];}
_focus(event)
{this._focused=true;}
_blur(event)
{this._focused=false;}
_calculateMinimumWidth()
{const wasCollapsed=this.element.classList.contains(WebInspector.NavigationBar.CollapsedStyleClassName);if(!wasCollapsed)
this.element.classList.add(WebInspector.NavigationBar.CollapsedStyleClassName);let totalItemWidth=0;for(let item of this._navigationItems){if(item instanceof WebInspector.FlexibleSpaceNavigationItem)
continue;totalItemWidth+=item.minimumWidth;}
if(!wasCollapsed)
this.element.classList.remove(WebInspector.NavigationBar.CollapsedStyleClassName);return totalItemWidth;}};WebInspector.NavigationBar.CollapsedStyleClassName="collapsed";WebInspector.NavigationBar.Event={NavigationItemSelected:"navigation-bar-navigation-item-selected"};WebInspector.NetworkGridContentView=class NetworkGridContentView extends WebInspector.ContentView
{constructor(representedObject,extraArguments)
{super(representedObject);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);this._networkSidebarPanel=extraArguments.networkSidebarPanel;this._contentTreeOutline=this._networkSidebarPanel.contentTreeOutline;this._contentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._treeSelectionDidChange,this);let columns={domain:{},type:{},method:{},scheme:{},statusCode:{},cached:{},protocol:{},priority:{},remoteAddress:{},connectionIdentifier:{},size:{},transferSize:{},requestSent:{},latency:{},duration:{},graph:{}};columns.domain.title=columns.domain.tooltip=WebInspector.UIString("Domain");columns.domain.width="10%";columns.type.title=columns.type.tooltip=WebInspector.UIString("Type");columns.type.width="6%";columns.method.title=columns.method.tooltip=WebInspector.UIString("Method");columns.method.width="5%";columns.scheme.title=columns.scheme.tooltip=WebInspector.UIString("Scheme");columns.scheme.width="5%";columns.statusCode.title=columns.statusCode.tooltip=WebInspector.UIString("Status");columns.statusCode.width="5%";columns.cached.title=columns.cached.tooltip=WebInspector.UIString("Cached");columns.cached.width="8%";columns.protocol.title=columns.protocol.tooltip=WebInspector.UIString("Protocol");columns.protocol.width="5%";columns.protocol.hidden=true;columns.priority.title=columns.priority.tooltip=WebInspector.UIString("Priority");columns.priority.width="5%";columns.priority.hidden=true;columns.remoteAddress.title=columns.remoteAddress.tooltip=WebInspector.UIString("IP Address");columns.remoteAddress.width="8%";columns.remoteAddress.hidden=true;columns.connectionIdentifier.title=columns.connectionIdentifier.tooltip=WebInspector.UIString("Connection ID");columns.connectionIdentifier.width="5%";columns.connectionIdentifier.hidden=true;columns.connectionIdentifier.aligned="right";columns.size.title=columns.size.tooltip=WebInspector.UIString("Size");columns.size.width="6%";columns.size.aligned="right";columns.transferSize.title=columns.transferSize.tooltip=WebInspector.UIString("Transferred");columns.transferSize.width="8%";columns.transferSize.aligned="right";columns.requestSent.title=columns.requestSent.tooltip=WebInspector.UIString("Start Time");columns.requestSent.width="9%";columns.requestSent.aligned="right";columns.latency.title=columns.latency.tooltip=WebInspector.UIString("Latency");columns.latency.width="9%";columns.latency.aligned="right";columns.duration.title=columns.duration.tooltip=WebInspector.UIString("Duration");columns.duration.width="9%";columns.duration.aligned="right";for(let column in columns)
columns[column].sortable=true;this._timelineRuler=new WebInspector.TimelineRuler;this._timelineRuler.allowsClippedLabels=true;columns.graph.title=WebInspector.UIString("Timeline");columns.graph.width="20%";columns.graph.headerView=this._timelineRuler;columns.graph.sortable=false;if(!NetworkAgent.hasEventParameter("loadingFinished","metrics")){delete columns.protocol;delete columns.priority;delete columns.remoteAddress;delete columns.connectionIdentifier;}
this._dataGrid=new WebInspector.TimelineDataGrid(columns,this._contentTreeOutline);this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged,this._dataGridNodeSelected,this);this._dataGrid.sortDelegate=this;this._dataGrid.sortColumnIdentifier="requestSent";this._dataGrid.sortOrder=WebInspector.DataGrid.SortOrder.Ascending;this._dataGrid.createSettings("network-grid-content-view");this.element.classList.add("network-grid");this.addSubview(this._dataGrid);let networkTimeline=WebInspector.timelineManager.persistentNetworkTimeline;networkTimeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._networkTimelineRecordAdded,this);networkTimeline.addEventListener(WebInspector.Timeline.Event.Reset,this._networkTimelineReset,this);if(window.NetworkAgent&&NetworkAgent.setResourceCachingDisabled){let toolTipForDisableResourceCache=WebInspector.UIString("Ignore the resource cache when loading resources");let activatedToolTipForDisableResourceCache=WebInspector.UIString("Use the resource cache when loading resources");this._disableResourceCacheNavigationItem=new WebInspector.ActivateButtonNavigationItem("disable-resource-cache",toolTipForDisableResourceCache,activatedToolTipForDisableResourceCache,"Images/IgnoreCaches.svg",16,16);this._disableResourceCacheNavigationItem.activated=WebInspector.resourceCachingDisabledSetting.value;this._disableResourceCacheNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._toggleDisableResourceCache,this);WebInspector.resourceCachingDisabledSetting.addEventListener(WebInspector.Setting.Event.Changed,this._resourceCachingDisabledSettingChanged,this);}
this._clearNetworkItemsNavigationItem=new WebInspector.ButtonNavigationItem("clear-network-items",WebInspector.UIString("Clear Network Items (%s)").format(WebInspector.clearKeyboardShortcut.displayName),"Images/NavigationItemClear.svg",16,16);this._clearNetworkItemsNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,()=>this.reset());this._pendingRecords=[];this._loadingResourceCount=0;this._lastRecordEndTime=NaN;this._lastUpdateTimestamp=NaN;this._startTime=NaN;this._endTime=NaN;this._scheduledCurrentTimeUpdateIdentifier=undefined;}
get secondsPerPixel(){return this._timelineRuler.secondsPerPixel;}
get startTime(){return this._startTime;}
get currentTime(){return this.endTime||this.startTime;}
get endTime(){return this._endTime;}
get zeroTime(){return this.startTime;}
get selectionPathComponents()
{if(!this._contentTreeOutline.selectedTreeElement||this._contentTreeOutline.selectedTreeElement.hidden)
return null;var pathComponent=new WebInspector.GeneralTreeElementPathComponent(this._contentTreeOutline.selectedTreeElement);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this._treeElementPathComponentSelected,this);return[pathComponent];}
get navigationItems()
{let items=[];if(this._disableResourceCacheNavigationItem)
items.push(this._disableResourceCacheNavigationItem);items.push(this._clearNetworkItemsNavigationItem);return items;}
shown()
{super.shown();this._dataGrid.shown();this._dataGrid.updateLayout(WebInspector.View.LayoutReason.Resize);if(this._loadingResourceCount&&!this._scheduledCurrentTimeUpdateIdentifier)
this._startUpdatingCurrentTime();}
hidden()
{this._dataGrid.hidden();if(this._scheduledCurrentTimeUpdateIdentifier)
this._stopUpdatingCurrentTime();super.hidden();}
closed()
{super.closed();this._dataGrid.closed();}
reset()
{this._contentTreeOutline.removeChildren();this._dataGrid.reset();if(this._scheduledCurrentTimeUpdateIdentifier)
this._stopUpdatingCurrentTime();this._pendingRecords=[];this._loadingResourceCount=0;this._lastRecordEndTime=NaN;this._lastUpdateTimestamp=NaN;this._startTime=NaN;this._endTime=NaN;this._timelineRuler.startTime=0;this._timelineRuler.endTime=0;}
layout()
{if(isNaN(this.startTime)||isNaN(this.endTime))
return;let oldZeroTime=this._timelineRuler.zeroTime;let oldStartTime=this._timelineRuler.startTime;let oldEndTime=this._timelineRuler.endTime;this._timelineRuler.zeroTime=this.zeroTime;this._timelineRuler.startTime=this.startTime;if(this.startTime>=this.endTime)
return;if(!this._scheduledCurrentTimeUpdateIdentifier){this._timelineRuler.endTime=this.endTime;this._endTime=this._lastRecordEndTime+WebInspector.TimelineRecordBar.MinimumWidthPixels*this.secondsPerPixel;}
this._timelineRuler.endTime=this.endTime;if(this.zeroTime!==oldZeroTime||this.startTime!==oldStartTime||this.endTime!==oldEndTime){for(let dataGridNode of this._dataGrid.children)
dataGridNode.refreshGraph();}
this._processPendingRecords();}
handleClearShortcut(event)
{this.reset();}
dataGridSortComparator(sortColumnIdentifier,sortDirection,node1,node2)
{if(sortColumnIdentifier==="priority")
return WebInspector.Resource.comparePriority(node1.data.priority,node2.data.priority)*sortDirection;return null;}
_resourceCachingDisabledSettingChanged()
{this._disableResourceCacheNavigationItem.activated=WebInspector.resourceCachingDisabledSetting.value;}
_toggleDisableResourceCache()
{WebInspector.resourceCachingDisabledSetting.value=!WebInspector.resourceCachingDisabledSetting.value;}
_processPendingRecords()
{if(!this._pendingRecords.length)
return;for(var resourceTimelineRecord of this._pendingRecords){var treeElement=this._contentTreeOutline.findTreeElement(resourceTimelineRecord.resource);if(treeElement)
continue;treeElement=new WebInspector.ResourceTreeElement(resourceTimelineRecord.resource);const includesGraph=false;const shouldShowPopover=true;let dataGridNode=new WebInspector.ResourceTimelineDataGridNode(resourceTimelineRecord,includesGraph,this,shouldShowPopover);this._dataGrid.addRowInSortOrder(treeElement,dataGridNode);}
this._pendingRecords=[];}
_mainResourceDidChange(event)
{let frame=event.target;if(!frame.isMainFrame()||WebInspector.settings.clearNetworkOnNavigate.value)
return;for(let dataGridNode of this._dataGrid.children)
dataGridNode.element.classList.add("preserved");}
_networkTimelineReset(event)
{this.reset();}
_networkTimelineRecordAdded(event)
{let resourceTimelineRecord=event.data.record;let update=(event)=>{if(event.target[WebInspector.NetworkGridContentView.ResourceDidFinishOrFail])
return;event.target.removeEventListener(null,null,this);event.target[WebInspector.NetworkGridContentView.ResourceDidFinishOrFail]=true;this._loadingResourceCount--;if(this._loadingResourceCount)
return;this._lastRecordEndTime=resourceTimelineRecord.endTime;this._endTime=Math.max(this._lastRecordEndTime,this._endTime);if(this._scheduledCurrentTimeUpdateIdentifier)
this.debounce(150)._stopUpdatingCurrentTime();};this._pendingRecords.push(resourceTimelineRecord);this.needsLayout();let resource=resourceTimelineRecord.resource;if(resource.finished||resource.failed||resource.canceled)
return;resource[WebInspector.NetworkGridContentView.ResourceDidFinishOrFail]=false;resource.addEventListener(WebInspector.Resource.Event.LoadingDidFinish,update,this);resource.addEventListener(WebInspector.Resource.Event.LoadingDidFail,update,this);this._loadingResourceCount++;if(this._scheduledCurrentTimeUpdateIdentifier)
return;if(isNaN(this._startTime))
this._startTime=this._endTime=resourceTimelineRecord.startTime; if(!(WebInspector.tabBrowser.selectedTabContentView instanceof WebInspector.NetworkTabContentView))
return;this._startUpdatingCurrentTime();}
_treeElementPathComponentSelected(event)
{var dataGridNode=this._dataGrid.dataGridNodeForTreeElement(event.data.pathComponent.generalTreeElement);if(!dataGridNode)
return;dataGridNode.revealAndSelect();}
_treeSelectionDidChange(event)
{this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);if(!this._networkSidebarPanel.canShowDifferentContentView())
return;let treeElement=event.data.selectedElement;if(treeElement instanceof WebInspector.ResourceTreeElement){WebInspector.showRepresentedObject(treeElement.representedObject);return;}
console.error("Unknown tree element",treeElement);}
_dataGridNodeSelected(event)
{this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);}
_update(timestamp)
{if(!isNaN(this._lastUpdateTimestamp)){let timespanSinceLastUpdate=(timestamp-this._lastUpdateTimestamp)/1000||0;this._endTime+=timespanSinceLastUpdate;this.updateLayout();}
this._lastUpdateTimestamp=timestamp;this._scheduledCurrentTimeUpdateIdentifier=requestAnimationFrame(this._updateCallback);}
_startUpdatingCurrentTime()
{if(this._scheduledCurrentTimeUpdateIdentifier)
return;if(!WebInspector.visible)
return;if(!this._updateCallback)
this._updateCallback=this._update.bind(this);this._scheduledCurrentTimeUpdateIdentifier=requestAnimationFrame(this._updateCallback);}
_stopUpdatingCurrentTime()
{if(!this._scheduledCurrentTimeUpdateIdentifier)
return;this._stopUpdatingCurrentTime.cancelDebounce();cancelAnimationFrame(this._scheduledCurrentTimeUpdateIdentifier);this._scheduledCurrentTimeUpdateIdentifier=undefined;this.needsLayout();}};WebInspector.NetworkGridContentView.ResourceDidFinishOrFail=Symbol("ResourceDidFinishOrFail");WebInspector.NetworkSidebarPanel=class NetworkSidebarPanel extends WebInspector.NavigationSidebarPanel
{constructor(contentBrowser)
{super("network",WebInspector.UIString("Network"),false);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);this.contentBrowser=contentBrowser;this.filterBar.placeholder=WebInspector.UIString("Filter Resource List");this.contentTreeOutline.element.classList.add("network-grid");this.contentTreeOutline.disclosureButtons=false;}
get minimumWidth()
{return this._navigationBar.minimumWidth;}
showDefaultContentView()
{if(!this._networkGridView)
this._networkGridView=new WebInspector.NetworkGridContentView(null,{networkSidebarPanel:this});this.contentBrowser.showContentView(this._networkGridView);}
canShowDifferentContentView()
{if(this._clickedTreeElementGoToArrow)
return true;if(this.contentBrowser.currentContentView instanceof WebInspector.NetworkGridContentView)
return false;return!this.restoringState;}
initialLayout()
{this._navigationBar=new WebInspector.NavigationBar;this.addSubview(this._navigationBar);this._resourcesTitleBarElement=document.createElement("div");this._resourcesTitleBarElement.textContent=WebInspector.UIString("Name");this._resourcesTitleBarElement.classList.add("title-bar");this.element.appendChild(this._resourcesTitleBarElement);let scopeItemPrefix="network-sidebar-";let scopeBarItems=[];scopeBarItems.push(new WebInspector.ScopeBarItem(scopeItemPrefix+"type-all",WebInspector.UIString("All Resources"),true));for(let key in WebInspector.Resource.Type){let value=WebInspector.Resource.Type[key];let scopeBarItem=new WebInspector.ScopeBarItem(scopeItemPrefix+value,WebInspector.Resource.displayNameForType(value,true));scopeBarItem[WebInspector.NetworkSidebarPanel.ResourceTypeSymbol]=value;scopeBarItems.push(scopeBarItem);}
this._scopeBar=new WebInspector.ScopeBar("network-sidebar-scope-bar",scopeBarItems,scopeBarItems[0],true);this._scopeBar.addEventListener(WebInspector.ScopeBar.Event.SelectionChanged,this._scopeBarSelectionDidChange,this);this._navigationBar.addNavigationItem(this._scopeBar);WebInspector.timelineManager.persistentNetworkTimeline.addEventListener(WebInspector.Timeline.Event.Reset,this._networkTimelineReset,this);this.contentBrowser.addEventListener(WebInspector.ContentBrowser.Event.CurrentContentViewDidChange,this._contentBrowserCurrentContentViewDidChange,this);this._contentBrowserCurrentContentViewDidChange();}
saveStateToCookie(cookie)
{cookie[WebInspector.NetworkSidebarPanel.ShowingNetworkGridContentViewCookieKey]=this.contentBrowser.currentContentView instanceof WebInspector.NetworkGridContentView;super.saveStateToCookie(cookie);}
restoreStateFromCookie(cookie,relaxedMatchDelay)
{
if(cookie[WebInspector.NetworkSidebarPanel.ShowingNetworkGridContentViewCookieKey])
return;super.restoreStateFromCookie(cookie,relaxedMatchDelay);}
hasCustomFilters()
{var selectedScopeBarItem=this._scopeBar.selectedItems[0];return selectedScopeBarItem&&!selectedScopeBarItem.exclusive;}
matchTreeElementAgainstCustomFilters(treeElement,flags)
{var selectedScopeBarItem=this._scopeBar.selectedItems[0];if(!selectedScopeBarItem||selectedScopeBarItem.exclusive)
return true;function match()
{if(treeElement instanceof WebInspector.FrameTreeElement)
return selectedScopeBarItem[WebInspector.NetworkSidebarPanel.ResourceTypeSymbol]===WebInspector.Resource.Type.Document;if(!(treeElement instanceof WebInspector.ResourceTreeElement))
return false;return treeElement.resource.type===selectedScopeBarItem[WebInspector.NetworkSidebarPanel.ResourceTypeSymbol];}
var matched=match();if(matched)
flags.expandTreeElement=true;return matched;}
treeElementAddedOrChanged(treeElement)
{if(treeElement.status&&treeElement.status[WebInspector.NetworkSidebarPanel.TreeElementStatusButtonSymbol]||!treeElement.treeOutline)
return;var fragment=document.createDocumentFragment();var closeButton=new WebInspector.TreeElementStatusButton(useSVGSymbol("Images/Close.svg",null,WebInspector.UIString("Close resource view")));closeButton.element.classList.add("close");closeButton.addEventListener(WebInspector.TreeElementStatusButton.Event.Clicked,this._treeElementCloseButtonClicked,this);fragment.appendChild(closeButton.element);let goToButton=new WebInspector.TreeElementStatusButton(WebInspector.createGoToArrowButton());goToButton[WebInspector.NetworkSidebarPanel.TreeElementSymbol]=treeElement;goToButton.addEventListener(WebInspector.TreeElementStatusButton.Event.Clicked,this._treeElementGoToArrowWasClicked,this);fragment.appendChild(goToButton.element);treeElement.status=fragment;treeElement.status[WebInspector.NetworkSidebarPanel.TreeElementStatusButtonSymbol]=true;}
_mainResourceDidChange(event)
{let frame=event.target;if(!frame.isMainFrame()||WebInspector.settings.clearNetworkOnNavigate.value)
return;for(let treeElement of this.contentTreeOutline.children)
treeElement.element.classList.add("preserved");}
_networkTimelineReset(event)
{this.contentBrowser.contentViewContainer.closeAllContentViews();this.showDefaultContentView();}
_contentBrowserCurrentContentViewDidChange(event)
{var didShowNetworkGridContentView=this.contentBrowser.currentContentView instanceof WebInspector.NetworkGridContentView;this.element.classList.toggle("network-grid-content-view-showing",didShowNetworkGridContentView);}
_treeElementGoToArrowWasClicked(event)
{this._clickedTreeElementGoToArrow=true;let treeElement=event.target[WebInspector.NetworkSidebarPanel.TreeElementSymbol];treeElement.select(true,true);this._clickedTreeElementGoToArrow=false;}
_treeElementCloseButtonClicked(event)
{
this.contentTreeOutline.processingSelectionChange=true;this.showDefaultContentView();this.contentTreeOutline.processingSelectionChange=false;}
_scopeBarSelectionDidChange(event)
{this.updateFilter();}};WebInspector.NetworkSidebarPanel.ResourceTypeSymbol=Symbol("resource-type");WebInspector.NetworkSidebarPanel.TreeElementSymbol=Symbol("tree-element");WebInspector.NetworkSidebarPanel.TreeElementStatusButtonSymbol=Symbol("tree-element-status-button");WebInspector.NetworkSidebarPanel.ShowingNetworkGridContentViewCookieKey="network-sidebar-panel-showing-network-grid-content-view";WebInspector.NetworkTimelineOverviewGraph=class NetworkTimelineOverviewGraph extends WebInspector.TimelineOverviewGraph
{constructor(timeline,timelineOverview)
{super(timelineOverview);this.element.classList.add("network");timeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._networkTimelineRecordAdded,this);timeline.addEventListener(WebInspector.Timeline.Event.TimesUpdated,this.needsLayout,this);this.reset();}
reset()
{super.reset();this._nextDumpRow=0;this._timelineRecordGridRows=[];for(var i=0;i<WebInspector.NetworkTimelineOverviewGraph.MaximumRowCount;++i)
this._timelineRecordGridRows.push([]);this.element.removeChildren();for(var rowRecords of this._timelineRecordGridRows){rowRecords.__element=document.createElement("div");rowRecords.__element.classList.add("graph-row");this.element.appendChild(rowRecords.__element);rowRecords.__recordBars=[];}}
layout()
{if(!this.visible)
return;let secondsPerPixel=this.timelineOverview.secondsPerPixel;let recordBarIndex=0;function createBar(rowElement,rowRecordBars,records,renderMode)
{let timelineRecordBar=rowRecordBars[recordBarIndex];if(!timelineRecordBar)
timelineRecordBar=rowRecordBars[recordBarIndex]=new WebInspector.TimelineRecordBar(records,renderMode);else{timelineRecordBar.renderMode=renderMode;timelineRecordBar.records=records;}
timelineRecordBar.refresh(this);if(!timelineRecordBar.element.parentNode)
rowElement.appendChild(timelineRecordBar.element);++recordBarIndex;}
for(let rowRecords of this._timelineRecordGridRows){let rowElement=rowRecords.__element;let rowRecordBars=rowRecords.__recordBars;recordBarIndex=0;WebInspector.TimelineRecordBar.createCombinedBars(rowRecords,secondsPerPixel,this,createBar.bind(this,rowElement,rowRecordBars));for(;recordBarIndex<rowRecordBars.length;++recordBarIndex){rowRecordBars[recordBarIndex].records=null;rowRecordBars[recordBarIndex].element.remove();}}}
_networkTimelineRecordAdded(event)
{var resourceTimelineRecord=event.data.record;function compareByStartTime(a,b)
{return a.startTime-b.startTime;}
let minimumBarPaddingTime=WebInspector.TimelineOverview.MinimumDurationPerPixel*(WebInspector.TimelineRecordBar.MinimumWidthPixels+WebInspector.TimelineRecordBar.MinimumMarginPixels);var foundRowForRecord=false;for(var i=0;i<this._timelineRecordGridRows.length;++i){var rowRecords=this._timelineRecordGridRows[i];var lastRecord=rowRecords.lastValue;if(!lastRecord||lastRecord.endTime+minimumBarPaddingTime<=resourceTimelineRecord.startTime){insertObjectIntoSortedArray(resourceTimelineRecord,rowRecords,compareByStartTime);this._nextDumpRow=i+1;foundRowForRecord=true;break;}}
if(!foundRowForRecord){for(var i=0;i<this._timelineRecordGridRows.length;++i){var rowRecords=this._timelineRecordGridRows[i];var lastRecord=rowRecords.lastValue;if(lastRecord.activeStartTime+minimumBarPaddingTime<=resourceTimelineRecord.startTime){insertObjectIntoSortedArray(resourceTimelineRecord,rowRecords,compareByStartTime);this._nextDumpRow=i+1;foundRowForRecord=true;break;}}}
if(!foundRowForRecord){if(this._nextDumpRow>=WebInspector.NetworkTimelineOverviewGraph.MaximumRowCount)
this._nextDumpRow=0;insertObjectIntoSortedArray(resourceTimelineRecord,this._timelineRecordGridRows[this._nextDumpRow++],compareByStartTime);}
this.needsLayout();}};WebInspector.NetworkTimelineOverviewGraph.MaximumRowCount=6;WebInspector.NetworkTimelineView=class NetworkTimelineView extends WebInspector.TimelineView
{constructor(timeline,extraArguments)
{super(timeline,extraArguments);let columns={name:{},domain:{},type:{},method:{},scheme:{},statusCode:{},cached:{},protocol:{},priority:{},remoteAddress:{},connectionIdentifier:{},size:{},transferSize:{},requestSent:{},latency:{},duration:{},graph:{}};columns.name.title=WebInspector.UIString("Name");columns.name.icon=true;columns.name.width="10%";columns.name.locked=true;columns.domain.title=WebInspector.UIString("Domain");columns.domain.width="8%";columns.type.title=WebInspector.UIString("Type");columns.type.width="7%";let typeToLabelMap=new Map;for(let key in WebInspector.Resource.Type){let value=WebInspector.Resource.Type[key];typeToLabelMap.set(value,WebInspector.Resource.displayNameForType(value,true));}
columns.type.scopeBar=WebInspector.TimelineDataGrid.createColumnScopeBar("network",typeToLabelMap);this._scopeBar=columns.type.scopeBar;columns.method.title=WebInspector.UIString("Method");columns.method.width="4%";columns.scheme.title=WebInspector.UIString("Scheme");columns.scheme.width="4%";columns.statusCode.title=WebInspector.UIString("Status");columns.statusCode.width="4%";columns.cached.title=WebInspector.UIString("Cached");columns.cached.width="6%";columns.protocol.title=WebInspector.UIString("Protocol");columns.protocol.width="5%";columns.protocol.hidden=true;columns.priority.title=WebInspector.UIString("Priority");columns.priority.width="5%";columns.priority.hidden=true;columns.remoteAddress.title=WebInspector.UIString("IP Address");columns.remoteAddress.width="8%";columns.remoteAddress.hidden=true;columns.connectionIdentifier.title=WebInspector.UIString("Connection ID");columns.connectionIdentifier.width="5%";columns.connectionIdentifier.hidden=true;columns.connectionIdentifier.aligned="right";columns.size.title=WebInspector.UIString("Size");columns.size.width="6%";columns.size.aligned="right";columns.transferSize.title=WebInspector.UIString("Transferred");columns.transferSize.width="8%";columns.transferSize.aligned="right";columns.requestSent.title=WebInspector.UIString("Start Time");columns.requestSent.width="9%";columns.requestSent.aligned="right";columns.latency.title=WebInspector.UIString("Latency");columns.latency.width="9%";columns.latency.aligned="right";columns.duration.title=WebInspector.UIString("Duration");columns.duration.width="9%";columns.duration.aligned="right";for(let column in columns)
columns[column].sortable=true;this._timelineRuler=new WebInspector.TimelineRuler;this._timelineRuler.allowsClippedLabels=true;columns.graph.title=WebInspector.UIString("Timeline");columns.graph.width="15%";columns.graph.headerView=this._timelineRuler;columns.graph.sortable=false;if(!NetworkAgent.hasEventParameter("loadingFinished","metrics")){delete columns.protocol;delete columns.priority;delete columns.remoteAddress;delete columns.connectionIdentifier;}
this._dataGrid=new WebInspector.TimelineDataGrid(columns);this._dataGrid.sortDelegate=this;this._dataGrid.sortColumnIdentifier="requestSent";this._dataGrid.sortOrder=WebInspector.DataGrid.SortOrder.Ascending;this._dataGrid.createSettings("network-timeline-view");this.setupDataGrid(this._dataGrid);this.element.classList.add("network");this.addSubview(this._dataGrid);timeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._networkTimelineRecordAdded,this);this._pendingRecords=[];this._resourceDataGridNodeMap=new Map;}
get secondsPerPixel(){return this._timelineRuler.secondsPerPixel;}
get selectionPathComponents()
{if(!this._dataGrid.selectedNode||this._dataGrid.selectedNode.hidden)
return null;let pathComponent=new WebInspector.TimelineDataGridNodePathComponent(this._dataGrid.selectedNode,this._dataGrid.selectedNode.resource);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this.dataGridNodePathComponentSelected,this);return[pathComponent];}
shown()
{super.shown();this._dataGrid.shown();}
hidden()
{this._dataGrid.hidden();super.hidden();}
closed()
{this.representedObject.removeEventListener(null,null,this);this._dataGrid.closed();}
reset()
{super.reset();this._dataGrid.reset();this._pendingRecords=[];this._resourceDataGridNodeMap.clear();}
dataGridSortComparator(sortColumnIdentifier,sortDirection,node1,node2)
{if(sortColumnIdentifier==="priority")
return WebInspector.Resource.comparePriority(node1.data.priority,node2.data.priority)*sortDirection;if(sortColumnIdentifier=="name"){let displayName1=node1.displayName();let displayName2=node2.displayName();if(displayName1!==displayName2)
return displayName1.extendedLocaleCompare(displayName2)*sortDirection;return node1.resource.url.extendedLocaleCompare(node2.resource.url)*sortDirection;}
return null;}
dataGridNodePathComponentSelected(event)
{let pathComponent=event.data.pathComponent;let dataGridNode=pathComponent.timelineDataGridNode;dataGridNode.revealAndSelect();}
layout()
{this.endTime=Math.min(this.endTime,this.currentTime);let oldZeroTime=this._timelineRuler.zeroTime;let oldStartTime=this._timelineRuler.startTime;let oldEndTime=this._timelineRuler.endTime;this._timelineRuler.zeroTime=this.zeroTime;this._timelineRuler.startTime=this.startTime;this._timelineRuler.endTime=this.endTime;if(this.zeroTime!==oldZeroTime||this.startTime!==oldStartTime||this.endTime!==oldEndTime){for(let dataGridNode of this._resourceDataGridNodeMap.values())
dataGridNode.refreshGraph();}
this._processPendingRecords();}
_processPendingRecords()
{if(!this._pendingRecords.length)
return;for(let resourceTimelineRecord of this._pendingRecords){let dataGridNode=this._resourceDataGridNodeMap.get(resourceTimelineRecord.resource);if(dataGridNode)
continue;const includesGraph=false;const shouldShowPopover=true;dataGridNode=new WebInspector.ResourceTimelineDataGridNode(resourceTimelineRecord,includesGraph,this,shouldShowPopover);this._resourceDataGridNodeMap.set(resourceTimelineRecord.resource,dataGridNode);this._dataGrid.addRowInSortOrder(null,dataGridNode);}
this._pendingRecords=[];}
_networkTimelineRecordAdded(event)
{var resourceTimelineRecord=event.data.record;this._pendingRecords.push(resourceTimelineRecord);this.needsLayout();}};WebInspector.ObjectPreviewView=class ObjectPreviewView extends WebInspector.Object
{constructor(preview,mode)
{super();this._preview=preview;this._mode=mode||WebInspector.ObjectPreviewView.Mode.Full;this._element=document.createElement("span");this._element.className="object-preview";this._previewElement=this._element.appendChild(document.createElement("span"));this._previewElement.className="preview";this._lossless=this._appendPreview(this._previewElement,this._preview);this._titleElement=this._element.appendChild(document.createElement("span"));this._titleElement.className="title";this._titleElement.hidden=true;this._initTitleElement();if(this._preview.hasSize()){var sizeElement=this._element.appendChild(document.createElement("span"));sizeElement.className="size";sizeElement.textContent=" ("+this._preview.size+")";}
if(this._lossless)
this._element.classList.add("lossless");}
get preview()
{return this._preview;}
get element()
{return this._element;}
get mode()
{return this._mode;}
get lossless()
{return this._lossless;}
showTitle()
{this._titleElement.hidden=false;this._previewElement.hidden=true;}
showPreview()
{this._titleElement.hidden=true;this._previewElement.hidden=false;}
setOriginatingObjectInfo(remoteObject,propertyPath)
{this._remoteObject=remoteObject;this._propertyPath=propertyPath||null;this.element.addEventListener("contextmenu",this._contextMenuHandler.bind(this));}
_initTitleElement()
{if(this._preview.subtype==="regexp"||this._preview.subtype==="null")
this._titleElement.appendChild(WebInspector.FormattedValue.createElementForObjectPreview(this._preview));else if(this._preview.subtype==="node")
this._titleElement.appendChild(WebInspector.FormattedValue.createElementForNodePreview(this._preview));else
this._titleElement.textContent=this._preview.description||"";}
_numberOfPropertiesToShowInMode()
{return this._mode===WebInspector.ObjectPreviewView.Mode.Brief?3:Infinity;}
_appendPreview(element,preview)
{var displayObjectAsValue=false;if(preview.type==="object"){if(preview.subtype==="regexp"||preview.subtype==="null"||preview.subtype==="node"){displayObjectAsValue=true;}else if((preview.subtype==="array"&&preview.description!=="Array")||(preview.subtype!=="array"&&preview.description!=="Object")){var nameElement=element.appendChild(document.createElement("span"));nameElement.className="object-preview-name";nameElement.textContent=preview.description+" ";}}
var bodyElement=element.appendChild(document.createElement("span"));bodyElement.className="object-preview-body";if(!displayObjectAsValue){if(preview.collectionEntryPreviews)
return this._appendEntryPreviews(bodyElement,preview);if(preview.propertyPreviews)
return this._appendPropertyPreviews(bodyElement,preview);}
return this._appendValuePreview(bodyElement,preview);}
_appendEntryPreviews(element,preview)
{var lossless=preview.lossless&&!preview.propertyPreviews.length;var overflow=preview.overflow;var isIterator=preview.subtype==="iterator";element.append(isIterator?"[":"{");var limit=Math.min(preview.collectionEntryPreviews.length,this._numberOfPropertiesToShowInMode());for(var i=0;i<limit;++i){if(i>0)
element.append(", ");var keyPreviewLossless=true;var entry=preview.collectionEntryPreviews[i];if(entry.keyPreview){keyPreviewLossless=this._appendPreview(element,entry.keyPreview);element.append(" => ");}
var valuePreviewLossless=this._appendPreview(element,entry.valuePreview);if(!keyPreviewLossless||!valuePreviewLossless)
lossless=false;}
if(preview.collectionEntryPreviews.length>limit){lossless=false;overflow=true;}
if(overflow){if(limit>0)
element.append(", ");element.append(ellipsis);}
element.append(isIterator?"]":"}");return lossless;}
_appendPropertyPreviews(element,preview)
{if(preview.subtype==="error")
return false;if(preview.subtype==="date")
return!preview.propertyPreviews.length;var lossless=preview.lossless;var overflow=preview.overflow;var isArray=preview.subtype==="array";element.append(isArray?"[":"{");var numberAdded=0;var limit=this._numberOfPropertiesToShowInMode();for(var i=0;i<preview.propertyPreviews.length&&numberAdded<limit;++i){var property=preview.propertyPreviews[i];if(property.type==="accessor")
continue;if(property.name==="constructor")
continue;if(numberAdded++>0)
element.append(", ");if(!isArray||property.name!=i){var nameElement=element.appendChild(document.createElement("span"));nameElement.className="name";nameElement.textContent=property.name;element.append(": ");}
if(property.valuePreview)
this._appendPreview(element,property.valuePreview);else if(property.subtype==="node")
element.appendChild(WebInspector.FormattedValue.createElementForNodePreview(property));else
element.appendChild(WebInspector.FormattedValue.createElementForPropertyPreview(property));}
if(numberAdded===limit&&preview.propertyPreviews.length>limit){lossless=false;overflow=true;}
if(overflow){if(limit>0)
element.append(", ");element.append(ellipsis);}
element.append(isArray?"]":"}");return lossless;}
_appendValuePreview(element,preview)
{if(preview.subtype==="node"){element.appendChild(WebInspector.FormattedValue.createElementForNodePreview(preview));return false;}
element.appendChild(WebInspector.FormattedValue.createElementForObjectPreview(preview));return true;}
_contextMenuHandler(event)
{let contextMenu=WebInspector.ContextMenu.createFromEvent(event);event.__addedObjectPreviewContextMenuItems=true;contextMenu.appendItem(WebInspector.UIString("Log Value"),()=>{let isImpossible=!this._propertyPath||this._propertyPath.isFullPathImpossible();let text=isImpossible?WebInspector.UIString("Selected Value"):this._propertyPath.displayPath(WebInspector.PropertyPath.Type.Value);if(!isImpossible)
WebInspector.quickConsole.prompt.pushHistoryItem(text);WebInspector.consoleLogViewController.appendImmediateExecutionWithResult(text,this._remoteObject,isImpossible);});}};WebInspector.ObjectPreviewView.Mode={Brief:Symbol("object-preview-brief"),Full:Symbol("object-preview-full"),};WebInspector.ObjectPropertiesDetailSectionRow=class ObjectPropertiesDetailSectionRow extends WebInspector.DetailsSectionRow
{constructor(objectTree,sectionForDeferredExpand)
{super();this._objectTree=objectTree;this.hideEmptyMessage();this.element.classList.add("properties",WebInspector.SyntaxHighlightedStyleClassName);this.element.appendChild(objectTree.element);if(sectionForDeferredExpand&&sectionForDeferredExpand.collapsed)
sectionForDeferredExpand.addEventListener(WebInspector.DetailsSection.Event.CollapsedStateChanged,this._detailsSectionCollapsedStateChanged,this);else
this._objectTree.expand();}
get objectTree(){return this._objectTree;}
_detailsSectionCollapsedStateChanged(event)
{this._objectTree.expand();event.target.removeEventListener(WebInspector.DetailsSection.Event.CollapsedStateChanged,this._detailsSectionCollapsedStateChanged,this);}};WebInspector.ObjectTreeArrayIndexTreeElement=class ObjectTreeArrayIndexTreeElement extends WebInspector.ObjectTreeBaseTreeElement
{constructor(property,propertyPath)
{super(property,propertyPath,property);this.mainTitle=this._titleFragment();this.addClassName("object-tree-property");this.addClassName("object-tree-array-index");if(!this.property.hasValue())
this.addClassName("accessor");}
invokedGetter()
{this.mainTitle=this._titleFragment();this.removeClassName("accessor");}
_titleFragment()
{var container=document.createDocumentFragment();var nameElement=container.appendChild(document.createElement("span"));nameElement.className="index-name";nameElement.textContent=this.property.name;nameElement.title=this.propertyPathString(this.thisPropertyPath());container.append(" ");var valueElement=container.appendChild(document.createElement("span"));valueElement.className="index-value";var resolvedValue=this.resolvedValue();if(resolvedValue)
valueElement.appendChild(WebInspector.FormattedValue.createObjectTreeOrFormattedValueForRemoteObject(resolvedValue,this.resolvedValuePropertyPath()));else{if(this.property.hasGetter())
container.appendChild(this.createGetterElement(true));if(this.property.hasSetter())
container.appendChild(this.createSetterElement());}
valueElement.classList.add("value");if(this.hadError())
valueElement.classList.add("error");return container;}};WebInspector.ObjectTreeMapEntryTreeElement=class ObjectTreeMapEntryTreeElement extends WebInspector.ObjectTreeBaseTreeElement
{constructor(object,propertyPath)
{super(object,propertyPath);this._object=object;this.addClassName("object-tree-array-index");this.addClassName("object-tree-map-entry");}
get object()
{return this._object;}
resolvedValue()
{return this._object;}
propertyPathType()
{return WebInspector.PropertyPath.Type.Value;}
titleFragment()
{var container=document.createDocumentFragment();var propertyPath=this.resolvedValuePropertyPath();var nameElement=container.appendChild(document.createElement("span"));nameElement.className="index-name";nameElement.textContent=this.displayPropertyName();nameElement.title=this.propertyPathString(propertyPath);container.append(" ");var valueElement=container.appendChild(document.createElement("span"));valueElement.className="index-value";valueElement.appendChild(WebInspector.FormattedValue.createObjectTreeOrFormattedValueForRemoteObject(this._object,propertyPath));return container;}};WebInspector.ObjectTreeMapKeyTreeElement=class ObjectTreeMapKeyTreeElement extends WebInspector.ObjectTreeMapEntryTreeElement
{constructor(object,propertyPath)
{super(object,propertyPath);this.mainTitle=this.titleFragment();this.addClassName("key");}
displayPropertyName()
{return WebInspector.UIString("key");}
resolvedValuePropertyPath()
{return this._propertyPath.appendMapKey(this._object);}};WebInspector.ObjectTreeMapValueTreeElement=class ObjectTreeMapValueTreeElement extends WebInspector.ObjectTreeMapEntryTreeElement
{constructor(object,propertyPath,key)
{super(object,propertyPath);this._key=key;this.mainTitle=this.titleFragment();this.addClassName("value");}
displayPropertyName()
{return WebInspector.UIString("value");}
resolvedValuePropertyPath()
{return this._propertyPath.appendMapValue(this._object,this._key);}};WebInspector.ObjectTreePropertyTreeElement=class ObjectTreePropertyTreeElement extends WebInspector.ObjectTreeBaseTreeElement
{constructor(property,propertyPath,mode,prototypeName)
{super(property,propertyPath,property);this._mode=mode||WebInspector.ObjectTreeView.Mode.Properties;this._prototypeName=prototypeName;this.mainTitle=this._titleFragment();this.addClassName("object-tree-property");if(this.property.hasValue()){this.addClassName(this.property.value.type);if(this.property.value.subtype)
this.addClassName(this.property.value.subtype);}else
this.addClassName("accessor");if(this.property.wasThrown)
this.addClassName("had-error");if(this.property.name==="__proto__")
this.addClassName("prototype-property");this._updateTooltips();this._updateHasChildren();}
onpopulate()
{this._updateChildren();}
onexpand()
{if(this._previewView)
this._previewView.showTitle();}
oncollapse()
{if(this._previewView)
this._previewView.showPreview();}
invokedGetter()
{this.mainTitle=this._titleFragment();var resolvedValue=this.resolvedValue();this.addClassName(resolvedValue.type);if(resolvedValue.subtype)
this.addClassName(resolvedValue.subtype);if(this.hadError())
this.addClassName("had-error");this.removeClassName("accessor");this._updateHasChildren();}
_updateHasChildren()
{var resolvedValue=this.resolvedValue();var valueHasChildren=(resolvedValue&&resolvedValue.hasChildren);var wasThrown=this.hadError();if(this._mode===WebInspector.ObjectTreeView.Mode.Properties)
this.hasChildren=!wasThrown&&valueHasChildren;else
this.hasChildren=!wasThrown&&valueHasChildren&&(this.property.name==="__proto__"||this._alwaysDisplayAsProperty());}
_updateTooltips()
{var attributes=[];if(this.property.configurable)
attributes.push("configurable");if(this.property.enumerable)
attributes.push("enumerable");if(this.property.writable)
attributes.push("writable");this.iconElement.title=attributes.join(" ");}
_titleFragment()
{if(this.property.name==="__proto__")
return this._createTitlePrototype();if(this._mode===WebInspector.ObjectTreeView.Mode.Properties)
return this._createTitlePropertyStyle();else
return this._createTitleAPIStyle();}
_createTitlePrototype()
{var nameElement=document.createElement("span");nameElement.className="prototype-name";nameElement.textContent=WebInspector.UIString("%s Prototype").format(this._sanitizedPrototypeString(this.property.value));nameElement.title=this.propertyPathString(this.thisPropertyPath());return nameElement;}
_createTitlePropertyStyle()
{var container=document.createDocumentFragment();var nameElement=document.createElement("span");nameElement.className="property-name";nameElement.textContent=this.property.name+": ";nameElement.title=this.propertyPathString(this.thisPropertyPath());if(this._mode===WebInspector.ObjectTreeView.Mode.Properties){if(!this.property.enumerable)
nameElement.classList.add("not-enumerable");}
var valueOrGetterElement;var resolvedValue=this.resolvedValue();if(resolvedValue){if(resolvedValue.preview){this._previewView=new WebInspector.ObjectPreviewView(resolvedValue.preview);valueOrGetterElement=this._previewView.element;}else{this._loadPreviewLazilyIfNeeded();valueOrGetterElement=WebInspector.FormattedValue.createElementForRemoteObject(resolvedValue,this.hadError());if(resolvedValue.type==="function")
valueOrGetterElement.textContent=this._functionPropertyString();}}else{valueOrGetterElement=document.createElement("span");if(this.property.hasGetter())
valueOrGetterElement.appendChild(this.createGetterElement(this._mode!==WebInspector.ObjectTreeView.Mode.ClassAPI));if(this.property.hasSetter())
valueOrGetterElement.appendChild(this.createSetterElement());}
valueOrGetterElement.classList.add("value");if(this.hadError())
valueOrGetterElement.classList.add("error");container.appendChild(nameElement);container.appendChild(valueOrGetterElement);return container;}
_createTitleAPIStyle()
{if(this._alwaysDisplayAsProperty())
return this._createTitlePropertyStyle();var isFunction=this.property.hasValue()&&this.property.value.type==="function";if(!isFunction&&!this.property.hasGetter()&&!this.property.hasSetter())
return null;var container=document.createDocumentFragment();var nameElement=document.createElement("span");nameElement.className="property-name";nameElement.textContent=this.property.name;nameElement.title=this.propertyPathString(this.thisPropertyPath());container.appendChild(nameElement);if(isFunction){var paramElement=document.createElement("span");paramElement.className="function-parameters";paramElement.textContent=this._functionParameterString();container.appendChild(paramElement);}else{var spacer=container.appendChild(document.createElement("span"));spacer.className="spacer";if(this.property.hasGetter())
container.appendChild(this.createGetterElement(this._mode!==WebInspector.ObjectTreeView.Mode.ClassAPI));if(this.property.hasSetter())
container.appendChild(this.createSetterElement());}
return container;}
_loadPreviewLazilyIfNeeded()
{let resolvedValue=this.resolvedValue();if(!resolvedValue.canLoadPreview())
return;resolvedValue.updatePreview((preview)=>{if(preview){this.mainTitle=this._titleFragment();if(this.expanded)
this._previewView.showTitle();}});}
_alwaysDisplayAsProperty()
{if(this.property.name==="constructor")
return true;if(this.property.hasValue()&&this.property.value.type!=="function")
return true;if(this._getterValue)
return true;return false;}
_functionPropertyString()
{return"function"+this._functionParameterString();}
_functionParameterString()
{var resolvedValue=this.resolvedValue();if(isFunctionStringNativeCode(resolvedValue.description)){if(this._prototypeName){if(WebInspector.NativePrototypeFunctionParameters[this._prototypeName]){var params=WebInspector.NativePrototypeFunctionParameters[this._prototypeName][this._property.name];return params?"("+params+")":"()";}}
var parentDescription=this._propertyPath.object.description;if(isFunctionStringNativeCode(parentDescription)){var match=parentDescription.match(/^function\s+([^)]+?)\(/);if(match){var name=match[1];if(WebInspector.NativeConstructorFunctionParameters[name]){var params=WebInspector.NativeConstructorFunctionParameters[name][this._property.name];return params?"("+params+")":"()";}}}
if(parentDescription.endsWith("Constructor")||["Math","JSON","Reflect","Console"].includes(parentDescription)){var name=parentDescription;if(WebInspector.NativeConstructorFunctionParameters[name]){var params=WebInspector.NativeConstructorFunctionParameters[name][this._property.name];return params?"("+params+")":"()";}}}
var match=resolvedValue.functionDescription.match(/^function.*?(\([^)]*?\))/);return match?match[1]:"()";}
_sanitizedPrototypeString(value)
{ if(value.type==="function")
return"Function";if(value.subtype==="date")
return"Date";if(value.subtype==="regexp")
return"RegExp";return value.description.replace(/Prototype$/,"");}
_updateChildren()
{if(this.children.length&&!this.shouldRefreshChildren)
return;var resolvedValue=this.resolvedValue();if(resolvedValue.isCollectionType()&&this._mode===WebInspector.ObjectTreeView.Mode.Properties)
resolvedValue.getCollectionEntries(0,100,this._updateChildrenInternal.bind(this,this._updateEntries,this._mode));else if(this._mode===WebInspector.ObjectTreeView.Mode.ClassAPI||this._mode===WebInspector.ObjectTreeView.Mode.PureAPI)
resolvedValue.getOwnPropertyDescriptors(this._updateChildrenInternal.bind(this,this._updateProperties,WebInspector.ObjectTreeView.Mode.ClassAPI));else if(this.property.name==="__proto__")
resolvedValue.getOwnPropertyDescriptors(this._updateChildrenInternal.bind(this,this._updateProperties,WebInspector.ObjectTreeView.Mode.PrototypeAPI));else
resolvedValue.getDisplayablePropertyDescriptors(this._updateChildrenInternal.bind(this,this._updateProperties,this._mode));}
_updateChildrenInternal(handler,mode,list)
{this.removeChildren();if(!list){var errorMessageElement=WebInspector.ObjectTreeView.createEmptyMessageElement(WebInspector.UIString("Could not fetch properties. Object may no longer exist."));this.appendChild(new WebInspector.TreeElement(errorMessageElement,null,false));return;}
handler.call(this,list,this.resolvedValuePropertyPath(),mode);}
_updateEntries(entries,propertyPath,mode)
{for(var entry of entries){if(entry.key){this.appendChild(new WebInspector.ObjectTreeMapKeyTreeElement(entry.key,propertyPath));this.appendChild(new WebInspector.ObjectTreeMapValueTreeElement(entry.value,propertyPath,entry.key));}else
this.appendChild(new WebInspector.ObjectTreeSetIndexTreeElement(entry.value,propertyPath));}
if(!this.children.length){var emptyMessageElement=WebInspector.ObjectTreeView.createEmptyMessageElement(WebInspector.UIString("No Entries"));this.appendChild(new WebInspector.TreeElement(emptyMessageElement,null,false));}
var resolvedValue=this.resolvedValue();resolvedValue.getOwnPropertyDescriptor("__proto__",(propertyDescriptor)=>{if(propertyDescriptor)
this.appendChild(new WebInspector.ObjectTreePropertyTreeElement(propertyDescriptor,propertyPath,mode));});}
_updateProperties(properties,propertyPath,mode)
{properties.sort(WebInspector.ObjectTreeView.comparePropertyDescriptors);var resolvedValue=this.resolvedValue();var isArray=resolvedValue.isArray();var isPropertyMode=mode===WebInspector.ObjectTreeView.Mode.Properties||this._getterValue;var isAPI=mode!==WebInspector.ObjectTreeView.Mode.Properties;var prototypeName;if(this.property.name==="__proto__"){if(resolvedValue.description)
prototypeName=this._sanitizedPrototypeString(resolvedValue);}
var hadProto=false;for(var propertyDescriptor of properties){
if(isAPI&&propertyDescriptor.nativeGetter)
continue;if(propertyDescriptor.name==="__proto__"&&!propertyDescriptor.hasValue())
continue;if(isArray&&isPropertyMode){if(propertyDescriptor.isIndexProperty())
this.appendChild(new WebInspector.ObjectTreeArrayIndexTreeElement(propertyDescriptor,propertyPath));else if(propertyDescriptor.name==="__proto__")
this.appendChild(new WebInspector.ObjectTreePropertyTreeElement(propertyDescriptor,propertyPath,mode,prototypeName));}else
this.appendChild(new WebInspector.ObjectTreePropertyTreeElement(propertyDescriptor,propertyPath,mode,prototypeName));if(propertyDescriptor.name==="__proto__")
hadProto=true;}
if(!this.children.length||(hadProto&&this.children.length===1)){var emptyMessageElement=WebInspector.ObjectTreeView.createEmptyMessageElement(WebInspector.UIString("No Properties"));this.insertChild(new WebInspector.TreeElement(emptyMessageElement,null,false),0);}}};WebInspector.ObjectTreeSetIndexTreeElement=class ObjectTreeSetIndexTreeElement extends WebInspector.ObjectTreeBaseTreeElement
{constructor(object,propertyPath)
{super(object,propertyPath);this._object=object;this.mainTitle=this._titleFragment();this.addClassName("object-tree-array-index");}
get object()
{return this._object;}
resolvedValue()
{return this._object;}
resolvedValuePropertyPath()
{return this.propertyPath.appendSetIndex(this._object);}
_titleFragment()
{var container=document.createDocumentFragment();var propertyPath=this.resolvedValuePropertyPath();var nameElement=container.appendChild(document.createElement("span"));nameElement.className="index-name";nameElement.textContent="\u2022";nameElement.title=WebInspector.UIString("Unable to determine path to property from root");container.append(" ");var valueElement=container.appendChild(document.createElement("span"));valueElement.className="index-value";valueElement.appendChild(WebInspector.FormattedValue.createObjectTreeOrFormattedValueForRemoteObject(this._object,propertyPath));return container;}};WebInspector.ObjectTreeView=class ObjectTreeView extends WebInspector.Object
{constructor(object,mode,propertyPath,forceExpanding)
{super();var providedPropertyPath=propertyPath instanceof WebInspector.PropertyPath;this._object=object;this._mode=mode||WebInspector.ObjectTreeView.defaultModeForObject(object);this._propertyPath=propertyPath||new WebInspector.PropertyPath(this._object,"this");this._expanded=false;this._hasLosslessPreview=false;this._includeProtoProperty=true;
this._inConsole=true;if(this._object.isClass())
forceExpanding=true;this._element=document.createElement("div");this._element.className="object-tree";if(this._object.preview){this._previewView=new WebInspector.ObjectPreviewView(this._object.preview);this._previewView.setOriginatingObjectInfo(this._object,providedPropertyPath?propertyPath:null);this._previewView.element.addEventListener("click",this._handlePreviewOrTitleElementClick.bind(this));this._element.appendChild(this._previewView.element);if(this._previewView.lossless&&!this._propertyPath.parent&&!forceExpanding){this._hasLosslessPreview=true;this.element.classList.add("lossless-preview");}}else{this._titleElement=document.createElement("span");this._titleElement.className="title";this._titleElement.appendChild(WebInspector.FormattedValue.createElementForRemoteObject(this._object));this._titleElement.addEventListener("click",this._handlePreviewOrTitleElementClick.bind(this));this._element.appendChild(this._titleElement);}
this._outline=new WebInspector.TreeOutline;this._outline.compact=true;this._outline.customIndent=true;this._outline.element.classList.add("object");this._element.appendChild(this._outline.element);}
static defaultModeForObject(object)
{if(object.subtype==="class")
return WebInspector.ObjectTreeView.Mode.ClassAPI;return WebInspector.ObjectTreeView.Mode.Properties;}
static createEmptyMessageElement(message)
{var emptyMessageElement=document.createElement("div");emptyMessageElement.className="empty-message";emptyMessageElement.textContent=message;return emptyMessageElement;}
static comparePropertyDescriptors(propertyA,propertyB)
{var a=propertyA.name;var b=propertyB.name;if(a==="__proto__")
return 1;if(b==="__proto__")
return-1;if(propertyA.isInternalProperty&&!propertyB.isInternalProperty)
return-1;if(propertyB.isInternalProperty&&!propertyA.isInternalProperty)
return 1;if(propertyA.symbol&&!propertyB.symbol)
return 1;if(propertyB.symbol&&!propertyA.symbol)
return-1;if(a===b)
return 0;var diff=0;var chunk=/^\d+|^\D+/;var chunka,chunkb,anum,bnum;while(diff===0){if(!a&&b)
return-1;if(!b&&a)
return 1;chunka=a.match(chunk)[0];chunkb=b.match(chunk)[0];anum=!isNaN(chunka);bnum=!isNaN(chunkb);if(anum&&!bnum)
return-1;if(bnum&&!anum)
return 1;if(anum&&bnum){diff=chunka-chunkb;if(diff===0&&chunka.length!==chunkb.length){if(!+chunka&&!+chunkb)
return chunka.length-chunkb.length;else
return chunkb.length-chunka.length;}}else if(chunka!==chunkb)
return(chunka<chunkb)?-1:1;a=a.substring(chunka.length);b=b.substring(chunkb.length);}
return diff;}
get object()
{return this._object;}
get element()
{return this._element;}
get treeOutline()
{return this._outline;}
get expanded()
{return this._expanded;}
expand()
{if(this._expanded)
return;if(this._hasLosslessPreview)
return;this._expanded=true;this._element.classList.add("expanded");if(this._previewView)
this._previewView.showTitle();this._trackWeakEntries();this.update();}
collapse()
{if(!this._expanded)
return;this._expanded=false;this._element.classList.remove("expanded");if(this._previewView)
this._previewView.showPreview();this._untrackWeakEntries();}
showOnlyProperties()
{this._inConsole=false;this._element.classList.add("properties-only");this._includeProtoProperty=false;}
appendTitleSuffix(suffixElement)
{if(this._previewView)
this._previewView.element.appendChild(suffixElement);else
this._titleElement.appendChild(suffixElement);}
appendExtraPropertyDescriptor(propertyDescriptor)
{if(!this._extraProperties)
this._extraProperties=[];this._extraProperties.push(propertyDescriptor);}
setPrototypeNameOverride(override)
{this._prototypeNameOverride=override;}
update()
{if(this._object.isCollectionType()&&this._mode===WebInspector.ObjectTreeView.Mode.Properties)
this._object.getCollectionEntries(0,100,this._updateChildren.bind(this,this._updateEntries));else if(this._object.isClass())
this._object.classPrototype.getDisplayablePropertyDescriptors(this._updateChildren.bind(this,this._updateProperties));else if(this._mode===WebInspector.ObjectTreeView.Mode.PureAPI)
this._object.getOwnPropertyDescriptors(this._updateChildren.bind(this,this._updateProperties));else
this._object.getDisplayablePropertyDescriptors(this._updateChildren.bind(this,this._updateProperties));}
_updateChildren(handler,list)
{this._outline.removeChildren();if(!list){var errorMessageElement=WebInspector.ObjectTreeView.createEmptyMessageElement(WebInspector.UIString("Could not fetch properties. Object may no longer exist."));this._outline.appendChild(new WebInspector.TreeElement(errorMessageElement,null,false));return;}
handler.call(this,list,this._propertyPath);this.dispatchEventToListeners(WebInspector.ObjectTreeView.Event.Updated);}
_updateEntries(entries,propertyPath)
{for(var entry of entries){if(entry.key){this._outline.appendChild(new WebInspector.ObjectTreeMapKeyTreeElement(entry.key,propertyPath));this._outline.appendChild(new WebInspector.ObjectTreeMapValueTreeElement(entry.value,propertyPath,entry.key));}else
this._outline.appendChild(new WebInspector.ObjectTreeSetIndexTreeElement(entry.value,propertyPath));}
if(!this._outline.children.length){var emptyMessageElement=WebInspector.ObjectTreeView.createEmptyMessageElement(WebInspector.UIString("No Entries"));this._outline.appendChild(new WebInspector.TreeElement(emptyMessageElement,null,false));}
this._object.getOwnPropertyDescriptor("__proto__",(propertyDescriptor)=>{if(propertyDescriptor)
this._outline.appendChild(new WebInspector.ObjectTreePropertyTreeElement(propertyDescriptor,propertyPath,this._mode));});}
_updateProperties(properties,propertyPath)
{if(this._extraProperties)
properties=properties.concat(this._extraProperties);properties.sort(WebInspector.ObjectTreeView.comparePropertyDescriptors);var isArray=this._object.isArray();var isPropertyMode=this._mode===WebInspector.ObjectTreeView.Mode.Properties;var hadProto=false;for(var propertyDescriptor of properties){if(propertyDescriptor.name==="__proto__"){if(!propertyDescriptor.hasValue())
continue;if(!this._includeProtoProperty)
continue;hadProto=true;}
if(isArray&&isPropertyMode){if(propertyDescriptor.isIndexProperty())
this._outline.appendChild(new WebInspector.ObjectTreeArrayIndexTreeElement(propertyDescriptor,propertyPath));else if(propertyDescriptor.name==="__proto__")
this._outline.appendChild(new WebInspector.ObjectTreePropertyTreeElement(propertyDescriptor,propertyPath,this._mode,this._prototypeNameOverride));}else
this._outline.appendChild(new WebInspector.ObjectTreePropertyTreeElement(propertyDescriptor,propertyPath,this._mode,this._prototypeNameOverride));}
if(!this._outline.children.length||(hadProto&&this._outline.children.length===1)){var emptyMessageElement=WebInspector.ObjectTreeView.createEmptyMessageElement(WebInspector.UIString("No Properties"));this._outline.insertChild(new WebInspector.TreeElement(emptyMessageElement,null,false),0);}}
_handlePreviewOrTitleElementClick(event)
{if(this._hasLosslessPreview)
return;if(!this._expanded)
this.expand();else
this.collapse();event.stopPropagation();}
_trackWeakEntries()
{if(this._trackingEntries)
return;if(!this._object.isWeakCollection())
return;this._trackingEntries=true;if(this._inConsole){WebInspector.logManager.addEventListener(WebInspector.LogManager.Event.Cleared,this._untrackWeakEntries,this);WebInspector.logManager.addEventListener(WebInspector.LogManager.Event.SessionStarted,this._untrackWeakEntries,this);}}
_untrackWeakEntries()
{if(!this._trackingEntries)
return;if(!this._object.isWeakCollection())
return;this._trackingEntries=false;this._object.releaseWeakCollectionEntries();if(this._inConsole){WebInspector.logManager.removeEventListener(WebInspector.LogManager.Event.Cleared,this._untrackWeakEntries,this);WebInspector.logManager.removeEventListener(WebInspector.LogManager.Event.SessionStarted,this._untrackWeakEntries,this);}
}};WebInspector.ObjectTreeView.Mode={Properties:Symbol("object-tree-properties"), PrototypeAPI:Symbol("object-tree-prototype-api"),ClassAPI:Symbol("object-tree-class-api"),PureAPI:Symbol("object-tree-pure-api"),};WebInspector.ObjectTreeView.Event={Updated:"object-tree-updated",};WebInspector.OpenResourceDialog=class OpenResourceDialog extends WebInspector.Dialog
{constructor(delegate)
{super(delegate);this.element.classList.add("open-resource-dialog");let fieldElement=this.element.appendChild(document.createElement("div"));fieldElement.classList.add("field");this._inputElement=fieldElement.appendChild(document.createElement("input"));this._inputElement.type="text";this._inputElement.placeholder=WebInspector.UIString("File or Resource");this._inputElement.spellcheck=false;this._clearIconElement=fieldElement.appendChild(document.createElement("img"));this._inputElement.addEventListener("keydown",this._handleKeydownEvent.bind(this));this._inputElement.addEventListener("keyup",this._handleKeyupEvent.bind(this));this._inputElement.addEventListener("blur",this._handleBlurEvent.bind(this));this._clearIconElement.addEventListener("mousedown",this._handleMousedownEvent.bind(this));this._clearIconElement.addEventListener("click",this._handleClickEvent.bind(this));this._treeOutline=new WebInspector.TreeOutline;this._treeOutline.allowsRepeatSelection=true;this._treeOutline.disclosureButtons=false;this._treeOutline.large=true;this._treeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._treeSelectionDidChange,this);this._treeOutline.element.addEventListener("focus",()=>{this._inputElement.focus();});this.element.appendChild(this._treeOutline.element);this._queryController=new WebInspector.ResourceQueryController;this._filteredResults=[];}
_populateResourceTreeOutline()
{function createHighlightedTitleFragment(title,highlightTextRanges)
{let titleFragment=document.createDocumentFragment();let lastIndex=0;for(let textRange of highlightTextRanges){if(textRange.startColumn>lastIndex)
titleFragment.append(title.substring(lastIndex,textRange.startColumn));let highlightSpan=document.createElement("span");highlightSpan.classList.add("highlighted");highlightSpan.append(title.substring(textRange.startColumn,textRange.endColumn));titleFragment.append(highlightSpan);lastIndex=textRange.endColumn;}
if(lastIndex<title.length)
titleFragment.append(title.substring(lastIndex,title.length));return titleFragment;}
function createTreeElement(representedObject)
{let treeElement=null;if(representedObject instanceof WebInspector.SourceMapResource)
treeElement=new WebInspector.SourceMapResourceTreeElement(representedObject);else if(representedObject instanceof WebInspector.Resource)
treeElement=new WebInspector.ResourceTreeElement(representedObject);else if(representedObject instanceof WebInspector.Script)
treeElement=new WebInspector.ScriptTreeElement(representedObject);return treeElement;}
for(let result of this._filteredResults){let resource=result.resource;if(this._treeOutline.findTreeElement(resource))
continue;let treeElement=createTreeElement(resource);if(!treeElement)
continue;treeElement.mainTitle=createHighlightedTitleFragment(resource.displayName,result.matchingTextRanges);treeElement[WebInspector.OpenResourceDialog.ResourceMatchCookieDataSymbol]=result.cookie;this._treeOutline.appendChild(treeElement);}
if(this._treeOutline.children.length)
this._treeOutline.children[0].select(true,false,true,true);}
didDismissDialog()
{WebInspector.Frame.removeEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);WebInspector.Frame.removeEventListener(WebInspector.Frame.Event.ResourceWasAdded,this._resourceWasAdded,this);WebInspector.Target.removeEventListener(WebInspector.Target.Event.ResourceAdded,this._resourceWasAdded,this);WebInspector.debuggerManager.removeEventListener(WebInspector.DebuggerManager.Event.ScriptAdded,this._scriptAdded,this);this._queryController.reset();}
didPresentDialog()
{WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ResourceWasAdded,this._resourceWasAdded,this);WebInspector.Target.addEventListener(WebInspector.Target.Event.ResourceAdded,this._resourceWasAdded,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptAdded,this._scriptAdded,this);if(WebInspector.frameResourceManager.mainFrame)
this._addResourcesForFrame(WebInspector.frameResourceManager.mainFrame);for(let target of WebInspector.targets){if(target!==WebInspector.mainTarget)
this._addResourcesForTarget(target);}
this._updateFilter();this._inputElement.focus();this._clear();}
_handleKeydownEvent(event)
{if(event.keyCode===WebInspector.KeyboardShortcut.Key.Escape.keyCode){if(this._inputElement.value==="")
this.dismiss();else
this._clear();event.preventDefault();}else if(event.keyCode===WebInspector.KeyboardShortcut.Key.Enter.keyCode){if(this._treeOutline.selectedTreeElement){this.dismiss(this._treeOutline.selectedTreeElement.representedObject,this._treeOutline.selectedTreeElement[WebInspector.OpenResourceDialog.ResourceMatchCookieDataSymbol]);event.preventDefault();return;}
if(/^:\d/.test(this._inputElement.value)){let visibleContentView=WebInspector.focusedOrVisibleContentView();let representedObject=visibleContentView?visibleContentView.representedObject:null;if(representedObject&&representedObject instanceof WebInspector.SourceCode){let[,lineNumber,columnNumber]=this._inputElement.value.split(":");lineNumber=lineNumber?parseInt(lineNumber,10)-1:0;columnNumber=columnNumber?parseInt(columnNumber,10)-1:0;this.dismiss(representedObject,{lineNumber,columnNumber});event.preventDefault();return;}}
this._inputElement.select();}else if(event.keyCode===WebInspector.KeyboardShortcut.Key.Up.keyCode||event.keyCode===WebInspector.KeyboardShortcut.Key.Down.keyCode){let treeElement=this._treeOutline.selectedTreeElement;if(!treeElement)
return;let adjacentSiblingProperty=event.keyCode===WebInspector.KeyboardShortcut.Key.Up.keyCode?"previousSibling":"nextSibling";treeElement=treeElement[adjacentSiblingProperty];if(treeElement)
treeElement.revealAndSelect(true,false,true,true);event.preventDefault();}}
_handleKeyupEvent(event)
{if(event.keyCode===WebInspector.KeyboardShortcut.Key.Up.keyCode||event.keyCode===WebInspector.KeyboardShortcut.Key.Down.keyCode)
return;this._updateFilter();}
_handleBlurEvent(event)
{if(event.relatedTarget===this._treeOutline.element)
return;this.dismiss();}
_handleMousedownEvent(event)
{this._inputElement.select();
event.preventDefault();}
_handleClickEvent(event)
{this._clear();}
_clear()
{this._inputElement.value="";this._updateFilter();}
_updateFilter()
{this._filteredResults=[];this._treeOutline.removeChildren();let filterText=this._inputElement.value.trim();if(filterText){this._filteredResults=this._queryController.executeQuery(filterText);this._populateResourceTreeOutline();}
this.element.classList.toggle("non-empty",this._inputElement.value!=="");this.element.classList.toggle("has-results",this._treeOutline.children.length);}
_treeSelectionDidChange(event)
{let treeElement=event.data.selectedElement;if(!treeElement)
return;if(!event.data.selectedByUser)
return;this.dismiss(treeElement.representedObject,treeElement[WebInspector.OpenResourceDialog.ResourceMatchCookieDataSymbol]);}
_addResource(resource,suppressFilterUpdate)
{if(!this.representedObjectIsValid(resource))
return;this._queryController.addResource(resource);if(suppressFilterUpdate)
return;this._updateFilter();}
_addResourcesForFrame(frame)
{const suppressFilterUpdate=true;let frames=[frame];while(frames.length){let currentFrame=frames.shift();let resources=[currentFrame.mainResource].concat(Array.from(currentFrame.resourceCollection.items));for(let resource of resources)
this._addResource(resource,suppressFilterUpdate);frames=frames.concat(currentFrame.childFrameCollection.toArray());}}
_addResourcesForTarget(target)
{const suppressFilterUpdate=true;this._addResource(target.mainResource);for(let resource of target.resourceCollection.items)
this._addResource(resource,suppressFilterUpdate);let targetData=WebInspector.debuggerManager.dataForTarget(target);for(let script of targetData.scripts){if(script.resource)
continue;if(isWebKitInternalScript(script.sourceURL)||isWebInspectorConsoleEvaluationScript(script.sourceURL))
continue;this._addResource(script,suppressFilterUpdate);}}
_mainResourceDidChange(event)
{if(event.target.isMainFrame())
this._queryController.reset();this._addResource(event.target.mainResource);}
_resourceWasAdded(event)
{this._addResource(event.data.resource);}
_scriptAdded(event)
{let script=event.data.script;if(script.resource)
return;if(script.target===WebInspector.mainTarget)
return;this._addResource(script);}};WebInspector.OpenResourceDialog.ResourceMatchCookieDataSymbol=Symbol("open-resource-dialog-resource-match-cookie-data");WebInspector.OverviewTimelineView=class OverviewTimelineView extends WebInspector.TimelineView
{constructor(recording,extraArguments)
{super(recording,extraArguments);this._recording=recording;let columns={name:{},graph:{}};columns.name.title=WebInspector.UIString("Name");columns.name.width="20%";columns.name.icon=true;columns.name.disclosure=true;this._timelineRuler=new WebInspector.TimelineRuler;this._timelineRuler.allowsClippedLabels=true;columns.graph.width="80%";columns.graph.headerView=this._timelineRuler;this._dataGrid=new WebInspector.DataGrid(columns);this.setupDataGrid(this._dataGrid);this._currentTimeMarker=new WebInspector.TimelineMarker(0,WebInspector.TimelineMarker.Type.CurrentTime);this._timelineRuler.addMarker(this._currentTimeMarker);this.element.classList.add("overview");this.addSubview(this._dataGrid);this._networkTimeline=recording.timelines.get(WebInspector.TimelineRecord.Type.Network);if(this._networkTimeline)
this._networkTimeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._networkTimelineRecordAdded,this);recording.addEventListener(WebInspector.TimelineRecording.Event.SourceCodeTimelineAdded,this._sourceCodeTimelineAdded,this);recording.addEventListener(WebInspector.TimelineRecording.Event.MarkerAdded,this._markerAdded,this);recording.addEventListener(WebInspector.TimelineRecording.Event.Reset,this._recordingReset,this);this._pendingRepresentedObjects=[];this._resourceDataGridNodeMap=new Map;}
get secondsPerPixel()
{return this._timelineRuler.secondsPerPixel;}
set secondsPerPixel(x)
{this._timelineRuler.secondsPerPixel=x;}
shown()
{super.shown();this._timelineRuler.updateLayout(WebInspector.View.LayoutReason.Resize);}
closed()
{if(this._networkTimeline)
this._networkTimeline.removeEventListener(null,null,this);this._recording.removeEventListener(null,null,this);}
get selectionPathComponents()
{let dataGridNode=this._dataGrid.selectedNode;if(!dataGridNode||dataGridNode.hidden)
return null;let pathComponents=[];while(dataGridNode&&!dataGridNode.root){if(dataGridNode.hidden)
return null;let pathComponent=new WebInspector.TimelineDataGridNodePathComponent(dataGridNode);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this.dataGridNodePathComponentSelected,this);pathComponents.unshift(pathComponent);dataGridNode=dataGridNode.parent;}
return pathComponents;}
reset()
{super.reset();this._dataGrid.removeChildren();this._pendingRepresentedObjects=[];}
dataGridNodePathComponentSelected(event)
{let dataGridNode=event.data.pathComponent.timelineDataGridNode;dataGridNode.revealAndSelect();}
layout()
{let oldZeroTime=this._timelineRuler.zeroTime;let oldStartTime=this._timelineRuler.startTime;let oldEndTime=this._timelineRuler.endTime;let oldCurrentTime=this._currentTimeMarker.time;this._timelineRuler.zeroTime=this.zeroTime;this._timelineRuler.startTime=this.startTime;this._timelineRuler.endTime=this.endTime;this._currentTimeMarker.time=this.currentTime;if(this.zeroTime!==oldZeroTime||this.startTime!==oldStartTime||this.endTime!==oldEndTime||this.currentTime!==oldCurrentTime){let dataGridNode=this._dataGrid.children[0];while(dataGridNode){dataGridNode.refreshGraph();dataGridNode=dataGridNode.traverseNextNode(true,null,true);}}
this._processPendingRepresentedObjects();}
_compareDataGridNodesByStartTime(a,b)
{function getStartTime(dataGridNode)
{if(dataGridNode instanceof WebInspector.ResourceTimelineDataGridNode)
return dataGridNode.resource.firstTimestamp;if(dataGridNode instanceof WebInspector.SourceCodeTimelineTimelineDataGridNode)
return dataGridNode.sourceCodeTimeline.startTime;console.error("Unknown data grid node.",dataGridNode);return 0;}
let result=getStartTime(a)-getStartTime(b);if(result)
return result;return a.displayName().extendedLocaleCompare(b.displayName());}
_insertDataGridNode(dataGridNode,parentDataGridNode)
{if(parentDataGridNode)
parentDataGridNode.insertChild(dataGridNode,insertionIndexForObjectInListSortedByFunction(dataGridNode,parentDataGridNode.children,this._compareDataGridNodesByStartTime.bind(this)));else
this._dataGrid.appendChild(dataGridNode);}
_addResourceToDataGridIfNeeded(resource)
{if(!resource)
return null;let dataGridNode=this._resourceDataGridNodeMap.get(resource);if(dataGridNode)
return dataGridNode;let parentFrame=resource.parentFrame;if(!parentFrame)
return null;let resourceTimelineRecord=this._networkTimeline?this._networkTimeline.recordForResource(resource):null;if(!resourceTimelineRecord)
resourceTimelineRecord=new WebInspector.ResourceTimelineRecord(resource);const includesGraph=true;const shouldShowPopover=false;let resourceDataGridNode=new WebInspector.ResourceTimelineDataGridNode(resourceTimelineRecord,includesGraph,this,shouldShowPopover);this._resourceDataGridNodeMap.set(resource,resourceDataGridNode);let expandedByDefault=false;if(parentFrame.mainResource===resource||parentFrame.provisionalMainResource===resource){parentFrame=parentFrame.parentFrame;expandedByDefault=!parentFrame;}
if(expandedByDefault)
resourceDataGridNode.expand();let parentDataGridNode=null;if(parentFrame){let parentResource=parentFrame.provisionalMainResource||parentFrame.mainResource;parentDataGridNode=this._addResourceToDataGridIfNeeded(parentResource);if(!parentDataGridNode)
return null;}
this._insertDataGridNode(resourceDataGridNode,parentDataGridNode);return resourceDataGridNode;}
_addSourceCodeTimeline(sourceCodeTimeline)
{let parentDataGridNode=sourceCodeTimeline.sourceCodeLocation?this._addResourceToDataGridIfNeeded(sourceCodeTimeline.sourceCode):null;let sourceCodeTimelineDataGridNode=new WebInspector.SourceCodeTimelineTimelineDataGridNode(sourceCodeTimeline,this);this._resourceDataGridNodeMap.set(sourceCodeTimeline,sourceCodeTimelineDataGridNode);this._insertDataGridNode(sourceCodeTimelineDataGridNode,parentDataGridNode);}
_processPendingRepresentedObjects()
{if(!this._pendingRepresentedObjects.length)
return;for(var representedObject of this._pendingRepresentedObjects){if(representedObject instanceof WebInspector.Resource)
this._addResourceToDataGridIfNeeded(representedObject);else if(representedObject instanceof WebInspector.SourceCodeTimeline)
this._addSourceCodeTimeline(representedObject);else
console.error("Unknown represented object");}
this._pendingRepresentedObjects=[];}
_networkTimelineRecordAdded(event)
{var resourceTimelineRecord=event.data.record;this._pendingRepresentedObjects.push(resourceTimelineRecord.resource);this.needsLayout();}
_sourceCodeTimelineAdded(event)
{var sourceCodeTimeline=event.data.sourceCodeTimeline;if(!sourceCodeTimeline)
return;this._pendingRepresentedObjects.push(sourceCodeTimeline);this.needsLayout();}
_markerAdded(event)
{this._timelineRuler.addMarker(event.data.marker);}
_recordingReset(event)
{this._timelineRuler.clearMarkers();this._timelineRuler.addMarker(this._currentTimeMarker);}};WebInspector.ProbeDetailsSidebarPanel=class ProbeDetailsSidebarPanel extends WebInspector.DetailsSidebarPanel
{constructor()
{super("probe",WebInspector.UIString("Probes"));this._probeSetSections=new Map;this._inspectedProbeSets=[];}
get inspectedProbeSets()
{return this._inspectedProbeSets.slice();}
set inspectedProbeSets(newProbeSets)
{for(let probeSet of this._inspectedProbeSets){let removedSection=this._probeSetSections.get(probeSet);removedSection.element.remove();}
this._inspectedProbeSets=newProbeSets;for(let probeSet of newProbeSets){let shownSection=this._probeSetSections.get(probeSet);this.contentView.element.appendChild(shownSection.element);}}
inspect(objects)
{if(!(objects instanceof Array))
objects=[objects];var inspectedProbeSets=objects.filter(function(object){return object instanceof WebInspector.ProbeSet;});inspectedProbeSets.sort(function sortBySourceLocation(aProbeSet,bProbeSet){var aLocation=aProbeSet.breakpoint.sourceCodeLocation;var bLocation=bProbeSet.breakpoint.sourceCodeLocation;var comparisonResult=aLocation.sourceCode.displayName.extendedLocaleCompare(bLocation.sourceCode.displayName);if(comparisonResult!==0)
return comparisonResult;comparisonResult=aLocation.displayLineNumber-bLocation.displayLineNumber;if(comparisonResult!==0)
return comparisonResult;return aLocation.displayColumnNumber-bLocation.displayColumnNumber;});this.inspectedProbeSets=inspectedProbeSets;return!!this._inspectedProbeSets.length;}
initialLayout()
{super.initialLayout();WebInspector.probeManager.addEventListener(WebInspector.ProbeManager.Event.ProbeSetAdded,this._probeSetAdded,this);WebInspector.probeManager.addEventListener(WebInspector.ProbeManager.Event.ProbeSetRemoved,this._probeSetRemoved,this);for(var probeSet of WebInspector.probeManager.probeSets)
this._probeSetAdded(probeSet);}
sizeDidChange()
{super.sizeDidChange(); for(let detailsSection of this._probeSetSections.values())
detailsSection.sizeDidChange();}
_probeSetAdded(probeSetOrEvent)
{var probeSet;if(probeSetOrEvent instanceof WebInspector.ProbeSet)
probeSet=probeSetOrEvent;else
probeSet=probeSetOrEvent.data.probeSet;var newSection=new WebInspector.ProbeSetDetailsSection(probeSet);this._probeSetSections.set(probeSet,newSection);}
_probeSetRemoved(event)
{var probeSet=event.data.probeSet;var inspectedProbeSets=this.inspectedProbeSets;var index=inspectedProbeSets.indexOf(probeSet);if(index!==-1){inspectedProbeSets.splice(index,1);this.inspectedProbeSets=inspectedProbeSets;}
var removedSection=this._probeSetSections.get(probeSet);this._probeSetSections.delete(probeSet);removedSection.closed();}};WebInspector.ProbeSetDataGrid=class ProbeSetDataGrid extends WebInspector.DataGrid
{constructor(probeSet)
{var columns={};for(var probe of probeSet.probes){var title=probe.expression||WebInspector.UIString("(uninitialized)");columns[probe.id]={title};}
super(columns);this.probeSet=probeSet;this.inline=true;this._frameNodes=new Map;this._lastUpdatedFrame=null;this._nodesSinceLastNavigation=[];this._listenerSet=new WebInspector.EventListenerSet(this,"ProbeSetDataGrid instance listeners");this._listenerSet.register(probeSet,WebInspector.ProbeSet.Event.ProbeAdded,this._setupProbe);this._listenerSet.register(probeSet,WebInspector.ProbeSet.Event.ProbeRemoved,this._teardownProbe);this._listenerSet.register(probeSet,WebInspector.ProbeSet.Event.SamplesCleared,this._setupData);this._listenerSet.register(WebInspector.Probe,WebInspector.Probe.Event.ExpressionChanged,this._probeExpressionChanged);this._listenerSet.install();this._setupData();}
closed()
{for(var probe of this.probeSet)
this._teardownProbe(probe);this._listenerSet.uninstall(true);}
_setupProbe(event)
{var probe=event.data;this.insertColumn(probe.id,{title:probe.expression});for(var frame of this._data.frames)
this._updateNodeForFrame(frame);}
_teardownProbe(event)
{var probe=event.data;this.removeColumn(probe.id);for(var frame of this._data.frames)
this._updateNodeForFrame(frame);}
_setupData()
{this._data=this.probeSet.dataTable;for(var frame of this._data.frames)
this._updateNodeForFrame(frame);this._dataListeners=new WebInspector.EventListenerSet(this,"ProbeSetDataGrid data table listeners");this._dataListeners.register(this._data,WebInspector.ProbeSetDataTable.Event.FrameInserted,this._dataFrameInserted);this._dataListeners.register(this._data,WebInspector.ProbeSetDataTable.Event.SeparatorInserted,this._dataSeparatorInserted);this._dataListeners.register(this._data,WebInspector.ProbeSetDataTable.Event.WillRemove,this._teardownData);this._dataListeners.install();}
_teardownData()
{this._dataListeners.uninstall(true);this.removeChildren();this._frameNodes=new Map;this._lastUpdatedFrame=null;}
_updateNodeForFrame(frame)
{var node=null;if(this._frameNodes.has(frame)){node=this._frameNodes.get(frame);node.frame=frame;node.refresh();}else{node=new WebInspector.ProbeSetDataGridNode(this);node.frame=frame;this._frameNodes.set(frame,node);node.createCells();var sortFunction=function(a,b){return WebInspector.ProbeSetDataFrame.compare(a.frame,b.frame);};var insertionIndex=insertionIndexForObjectInListSortedByFunction(node,this.children,sortFunction);if(insertionIndex===this.children.length)
this.appendChild(node);else if(this.children[insertionIndex].frame.key===frame.key){this.removeChild(this.children[insertionIndex]);this.insertChild(node,insertionIndex);}else
this.insertChild(node,insertionIndex);}
this.updateLayoutIfNeeded();node.element.classList.add("data-updated");window.setTimeout(function(){node.element.classList.remove("data-updated");},WebInspector.ProbeSetDataGrid.DataUpdatedAnimationDuration);this._nodesSinceLastNavigation.push(node);}
_updateNodeForSeparator(frame)
{this._frameNodes.get(frame).updateCellsForSeparator(frame,this.probeSet);for(var node of this._nodesSinceLastNavigation)
node.element.classList.add("past-value");this._nodesSinceLastNavigation=[];}
_dataFrameInserted(event)
{var frame=event.data;this._lastUpdatedFrame=frame;this._updateNodeForFrame(frame);}
_dataSeparatorInserted(event)
{var frame=event.data;this._updateNodeForSeparator(frame);}
_probeExpressionChanged(event)
{var probe=event.target;if(probe.breakpoint!==this.probeSet.breakpoint)
return;if(!this.columns.has(probe.id))
return;var oldColumn=this.columns.get(probe.id);this.removeColumn(probe.id);var ordinal=oldColumn["ordinal"];var newColumn={title:event.data.newValue};this.insertColumn(probe.id,newColumn,ordinal);for(var frame of this._data.frames)
this._updateNodeForFrame(frame);}};WebInspector.ProbeSetDataGrid.DataUpdatedAnimationDuration=300;WebInspector.ProbeSetDataGridNode=class ProbeSetDataGridNode extends WebInspector.DataGridNode
{constructor(dataGrid)
{super();this.dataGrid=dataGrid;this._data={};this._element=document.createElement("tr");this._element.dataGridNode=this;this._element.classList.add("revealed");}
get element()
{return this._element;}
get data()
{return this._data;}
set frame(value)
{this._frame=value;var data={};for(var probe of this.dataGrid.probeSet.probes){var sample=this.frame[probe.id];if(!sample||!sample.object)
data[probe.id]=WebInspector.ProbeSetDataFrame.MissingValue;else
data[probe.id]=sample.object;}
this._data=data;}
get frame()
{return this._frame;}
createCellContent(columnIdentifier,cell)
{var sample=this.data[columnIdentifier];if(sample===WebInspector.ProbeSetDataFrame.MissingValue){cell.classList.add("unknown-value");return sample;}
if(sample instanceof WebInspector.RemoteObject)
return WebInspector.FormattedValue.createObjectTreeOrFormattedValueForRemoteObject(sample,null);return sample;}
updateCellsFromFrame(frame,probeSet)
{}
updateCellsForSeparator(frame,probeSet)
{this._element.classList.add("separator");}};WebInspector.ProbeSetDetailsSection=class ProbeSetDetailsSection extends WebInspector.DetailsSection
{constructor(probeSet)
{var optionsElement=document.createElement("div");var dataGrid=new WebInspector.ProbeSetDataGrid(probeSet);var singletonRow=new WebInspector.DetailsSectionRow;singletonRow.element.appendChild(dataGrid.element);var probeSectionGroup=new WebInspector.DetailsSectionGroup([singletonRow]);super("probe","",[probeSectionGroup],optionsElement);this.element.classList.add("probe-set");this._listenerSet=new WebInspector.EventListenerSet(this,"ProbeSetDetailsSection UI listeners");this._probeSet=probeSet;this._dataGrid=dataGrid;this._navigationBar=new WebInspector.NavigationBar;this._optionsElement.appendChild(this._navigationBar.element);this._addProbeButtonItem=new WebInspector.ButtonNavigationItem("add-probe",WebInspector.UIString("Add probe expression"),"Images/Plus13.svg",13,13);this._addProbeButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._addProbeButtonClicked,this);this._navigationBar.addNavigationItem(this._addProbeButtonItem);this._clearSamplesButtonItem=new WebInspector.ButtonNavigationItem("clear-samples",WebInspector.UIString("Clear samples"),"Images/NavigationItemTrash.svg",14,14);this._clearSamplesButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._clearSamplesButtonClicked,this);this._clearSamplesButtonItem.enabled=this._probeSetHasSamples();this._navigationBar.addNavigationItem(this._clearSamplesButtonItem);this._removeProbeButtonItem=new WebInspector.ButtonNavigationItem("remove-probe",WebInspector.UIString("Remove probe"),"Images/CloseLarge.svg",12,12);this._removeProbeButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._removeProbeButtonClicked,this);this._navigationBar.addNavigationItem(this._removeProbeButtonItem);this._listenerSet.register(this._probeSet,WebInspector.ProbeSet.Event.SampleAdded,this._probeSetSamplesChanged);this._listenerSet.register(this._probeSet,WebInspector.ProbeSet.Event.SamplesCleared,this._probeSetSamplesChanged);this._updateLinkElement();this._listenerSet.register(this._probeSet.breakpoint,WebInspector.Breakpoint.Event.ResolvedStateDidChange,this._updateLinkElement);this._listenerSet.install();}
closed()
{this._listenerSet.uninstall(true);this.element.remove();}
sizeDidChange()
{ this._dataGrid.sizeDidChange();}
_updateLinkElement()
{const options={ignoreNetworkTab:true,ignoreSearchTab:true,};var breakpoint=this._probeSet.breakpoint;if(breakpoint.sourceCodeLocation.sourceCode)
this.titleElement=WebInspector.createSourceCodeLocationLink(breakpoint.sourceCodeLocation,options);else{this.titleElement=WebInspector.linkifyLocation(breakpoint.contentIdentifier,breakpoint.sourceCodeLocation.position,options);}
this.titleElement.classList.add(WebInspector.ProbeSetDetailsSection.DontFloatLinkStyleClassName);}
_addProbeButtonClicked(event)
{function createProbeFromEnteredExpression(visiblePopover,event)
{if(event.keyCode!==13)
return;let expression=event.target.value;this._probeSet.createProbe(expression);visiblePopover.dismiss();}
let popover=new WebInspector.Popover;let content=document.createElement("div");content.classList.add(WebInspector.ProbeSetDetailsSection.ProbePopoverElementStyleClassName);content.createChild("div").textContent=WebInspector.UIString("Add New Probe Expression");let textBox=content.createChild("input");textBox.addEventListener("keypress",createProbeFromEnteredExpression.bind(this,popover));textBox.addEventListener("click",function(event){event.target.select();});textBox.type="text";textBox.placeholder=WebInspector.UIString("Expression");popover.content=content;let target=WebInspector.Rect.rectFromClientRect(event.target.element.getBoundingClientRect());popover.present(target,[WebInspector.RectEdge.MAX_Y,WebInspector.RectEdge.MIN_Y,WebInspector.RectEdge.MAX_X]);popover.windowResizeHandler=()=>{let target=WebInspector.Rect.rectFromClientRect(event.target.element.getBoundingClientRect());popover.present(target,[WebInspector.RectEdge.MAX_Y,WebInspector.RectEdge.MIN_Y,WebInspector.RectEdge.MAX_X]);};textBox.select();}
_clearSamplesButtonClicked(event)
{this._probeSet.clearSamples();}
_removeProbeButtonClicked(event)
{this._probeSet.clear();}
_probeSetSamplesChanged(event)
{this._clearSamplesButtonItem.enabled=this._probeSetHasSamples();}
_probeSetHasSamples()
{return this._probeSet.probes.some((probe)=>probe.samples.length);}};WebInspector.ProbeSetDetailsSection.DontFloatLinkStyleClassName="dont-float";WebInspector.ProbeSetDetailsSection.ProbePopoverElementStyleClassName="probe-popover";WebInspector.ProfileDataGridNode=class ProfileDataGridNode extends WebInspector.DataGridNode
{constructor(callingContextTreeNode,tree)
{super(callingContextTreeNode,false);this._node=callingContextTreeNode;this._tree=tree;this._childrenToChargeToSelf=new Set;this._extraSelfTimeFromChargedChildren=0;this.copyable=false;this.addEventListener("populate",this._populate,this);this._updateChildrenForModifiers();this._recalculateData();}
get callingContextTreeNode(){return this._node;}
displayName()
{let title=this._node.name;if(!title)
return WebInspector.UIString("(anonymous function)");if(title==="(program)")
return WebInspector.UIString("(program)");return title;}
iconClassName()
{let script=WebInspector.debuggerManager.scriptForIdentifier(this._node.sourceID,WebInspector.assumingMainTarget());if(!script||!script.url)
return"native-icon";if(this._node.name==="(program)")
return"program-icon";return"function-icon";}
get data()
{return this._data;}
createCellContent(columnIdentifier,cell)
{switch(columnIdentifier){case"totalTime":return this._totalTimeContent();case"selfTime":return Number.secondsToMillisecondsString(this._data.selfTime);case"function":return this._displayContent();}
return super.createCellContent(columnIdentifier,cell);}
sort()
{let children=this.children;children.sort(this._tree._sortComparator);for(let i=0;i<children.length;++i){children[i]._recalculateSiblings(i);children[i].sort();}}
refresh()
{this._updateChildrenForModifiers();this._recalculateData();super.refresh();}
appendContextMenuItems(contextMenu)
{let disableFocus=this===this._tree.currentFocusNode;contextMenu.appendItem(WebInspector.UIString("Focus on Subtree"),()=>{this._tree.addFocusNode(this);},disableFocus); let disableChargeToCaller=this._tree.callingContextTree.type===WebInspector.CallingContextTree.Type.BottomUp;contextMenu.appendItem(WebInspector.UIString("Charge ‘%s’ to Callers").format(this.displayName()),()=>{this._tree.addModifier({type:WebInspector.ProfileDataGridTree.ModifierType.ChargeToCaller,source:this._node});},disableChargeToCaller);contextMenu.appendSeparator();}
filterableDataForColumn(columnIdentifier)
{if(columnIdentifier==="function"){let filterableData=[this.displayName()];let script=WebInspector.debuggerManager.scriptForIdentifier(this._node.sourceID,WebInspector.assumingMainTarget());if(script&&script.url&&this._node.line>=0&&this._node.column>=0)
filterableData.push(script.url);return filterableData;}
return super.filterableDataForColumn(columnIdentifier);}
_updateChildrenForModifiers()
{ let isBottomUp=this._tree.callingContextTree.type===WebInspector.CallingContextTree.Type.BottomUp;if(!this._tree.hasModifiers()||isBottomUp){if(!this.shouldRefreshChildren&&this._childrenToChargeToSelf.size){for(let child of this._childrenToChargeToSelf){this.appendChild(new WebInspector.ProfileDataGridNode(child,this._tree));}
this.sort();}
this._extraSelfTimeFromChargedChildren=0;this._childrenToChargeToSelf.clear();this.hasChildren=this._node.hasChildrenInTimeRange(this._tree.startTime,this._tree.endTime);return;}
this._extraSelfTimeFromChargedChildren=0;this._childrenToChargeToSelf.clear();let hasNonChargedChild=false;this._node.forEachChild((child)=>{if(child.hasStackTraceInTimeRange(this._tree.startTime,this._tree.endTime)){for(let{type,source}of this._tree.modifiers){if(type===WebInspector.ProfileDataGridTree.ModifierType.ChargeToCaller){if(child.equals(source)){this._childrenToChargeToSelf.add(child);this._extraSelfTimeFromChargedChildren+=child.filteredTimestampsAndDuration(this._tree.startTime,this._tree.endTime).duration;continue;}}
hasNonChargedChild=true;}}});this.hasChildren=hasNonChargedChild;if(!this.shouldRefreshChildren&&this._childrenToChargeToSelf.size){for(let childDataGridNode of this.children){if(this._childrenToChargeToSelf.has(childDataGridNode.callingContextTreeNode))
this.removeChild(childDataGridNode);}}}
_recalculateData()
{let{timestamps,duration}=this._node.filteredTimestampsAndDuration(this._tree.startTime,this._tree.endTime);let{leafTimestamps,leafDuration}=this._node.filteredLeafTimestampsAndDuration(this._tree.startTime,this._tree.endTime);let totalTime=duration;let selfTime=leafDuration+this._extraSelfTimeFromChargedChildren;let fraction=totalTime/this._tree.totalSampleTime;this._data={totalTime,selfTime,fraction};}
_totalTimeContent()
{let{totalTime,fraction}=this._data;let fragment=document.createDocumentFragment();let timeElement=fragment.appendChild(document.createElement("span"));timeElement.classList.add("time");timeElement.textContent=Number.secondsToMillisecondsString(totalTime);let percentElement=fragment.appendChild(document.createElement("span"));percentElement.classList.add("percentage");percentElement.textContent=Number.percentageString(fraction);return fragment;}
_displayContent()
{let title=this.displayName();let iconClassName=this.iconClassName();let fragment=document.createDocumentFragment();let iconElement=fragment.appendChild(document.createElement("img"));iconElement.classList.add("icon",iconClassName);let titleElement=fragment.appendChild(document.createElement("span"));titleElement.textContent=title;let script=WebInspector.debuggerManager.scriptForIdentifier(this._node.sourceID,WebInspector.assumingMainTarget());if(script&&script.url&&this._node.line>=0&&this._node.column>=0){let sourceCodeLocation=script.createSourceCodeLocation(this._node.line-1,this._node.column-1);let locationElement=fragment.appendChild(document.createElement("span"));locationElement.classList.add("location");sourceCodeLocation.populateLiveDisplayLocationString(locationElement,"textContent",WebInspector.SourceCodeLocation.ColumnStyle.Hidden,WebInspector.SourceCodeLocation.NameStyle.Short);const options={dontFloat:true,useGoToArrowButton:true,ignoreNetworkTab:true,ignoreSearchTab:true,};fragment.appendChild(WebInspector.createSourceCodeLocationLink(sourceCodeLocation,options));}
return fragment;}
_populate()
{if(!this.shouldRefreshChildren)
return;this.removeEventListener("populate",this._populate,this);this._node.forEachChild((child)=>{if(!this._childrenToChargeToSelf.has(child)){if(child.hasStackTraceInTimeRange(this._tree.startTime,this._tree.endTime))
this.appendChild(new WebInspector.ProfileDataGridNode(child,this._tree));}});this.sort();}};WebInspector.ProfileDataGridTree=class ProfileDataGridTree extends WebInspector.Object
{constructor(callingContextTree,startTime,endTime,sortComparator)
{super();this._children=[];this._sortComparator=sortComparator;this._callingContextTree=callingContextTree;this._startTime=startTime;this._endTime=endTime;this._totalSampleTime=this._callingContextTree.totalDurationInTimeRange(startTime,endTime);this._focusNodes=[];this._modifiers=[];this._repopulate();}
static buildSortComparator(columnIdentifier,sortOrder)
{let ascending=sortOrder===WebInspector.DataGrid.SortOrder.Ascending;return function(a,b){let result=a.data[columnIdentifier]-b.data[columnIdentifier];return ascending?result:-result;};}
get callingContextTree(){return this._callingContextTree;}
get focusNodes()
{return this._focusNodes;}
get currentFocusNode()
{return this._focusNodes.lastValue;}
get modifiers()
{return this._modifiers;}
get startTime()
{if(this._focusNodes.length)
return this._currentFocusStartTime;return this._startTime;}
get endTime()
{if(this._focusNodes.length)
return this._currentFocusEndTime;return this._endTime;}
get totalSampleTime()
{if(this._focusNodes.length)
return this._currentFocusTotalSampleTime;return this._totalSampleTime;}
get children()
{return this._children;}
appendChild(node)
{this._children.push(node);}
insertChild(node,index)
{this._children.splice(index,0,node);}
removeChildren()
{this._children=[];}
set sortComparator(comparator)
{this._sortComparator=comparator;this.sort();}
sort()
{let children=this._children;children.sort(this._sortComparator);for(let i=0;i<children.length;++i){children[i]._recalculateSiblings(i);children[i].sort();}}
refresh()
{for(let child of this._children)
child.refreshRecursively();}
addFocusNode(profileDataGridNode)
{this._saveFocusedNodeOriginalParent(profileDataGridNode);this._focusNodes.push(profileDataGridNode);this._focusChanged();}
rollbackFocusNode(profileDataGridNode)
{let index=this._focusNodes.indexOf(profileDataGridNode);if(index===-1)
return;this._focusParentsToExpand=[];for(let i=index+1;i<this._focusNodes.length;++i)
this._restoreFocusedNodeToOriginalParent(this._focusNodes[i]);this._focusNodes.splice(index+1);this._focusChanged();}
clearFocusNodes()
{this._focusParentsToExpand=[];for(let profileDataGridNode of this._focusNodes)
this._restoreFocusedNodeToOriginalParent(profileDataGridNode);this._focusNodes=[];this._focusChanged();}
hasModifiers()
{return this._modifiers.length>0;}
addModifier(modifier)
{this._modifiers.push(modifier);this._modifiersChanged();}
clearModifiers()
{this._modifiers=[];this._modifiersChanged();}
_repopulate()
{this.removeChildren();if(this._focusNodes.length){this.appendChild(this.currentFocusNode);}else{this._callingContextTree.forEachChild((child)=>{if(child.hasStackTraceInTimeRange(this._startTime,this._endTime))
this.appendChild(new WebInspector.ProfileDataGridNode(child,this));});}
this.sort();}
_focusChanged()
{let profileDataGridNode=this.currentFocusNode;if(profileDataGridNode)
this._updateCurrentFocusDetails(profileDataGridNode);this._repopulate();this.dispatchEventToListeners(WebInspector.ProfileDataGridTree.Event.FocusChanged);if(this._focusParentsToExpand){for(let profileDataGridNode of this._focusParentsToExpand)
profileDataGridNode.expand();this._focusParentsToExpand=null;}}
_updateCurrentFocusDetails(focusDataGridNode)
{let{timestamps,duration}=focusDataGridNode.callingContextTreeNode.filteredTimestampsAndDuration(this._startTime,this._endTime);this._currentFocusStartTime=timestamps[0];this._currentFocusEndTime=timestamps.lastValue;this._currentFocusTotalSampleTime=duration;}
_saveFocusedNodeOriginalParent(focusDataGridNode)
{focusDataGridNode.__previousParent=focusDataGridNode.parent;focusDataGridNode.__previousParent.removeChild(focusDataGridNode);}
_restoreFocusedNodeToOriginalParent(focusDataGridNode)
{
focusDataGridNode.__previousParent.collapse();this._focusParentsToExpand.push(focusDataGridNode.__previousParent);focusDataGridNode.__previousParent.appendChild(focusDataGridNode);focusDataGridNode.__previousParent=undefined;}
_modifiersChanged()
{this.dispatchEventToListeners(WebInspector.ProfileDataGridTree.Event.ModifiersChanged);}};WebInspector.ProfileDataGridTree.Event={FocusChanged:"profile-data-grid-tree-focus-changed",ModifiersChanged:"profile-data-grid-tree-modifiers-changed",};WebInspector.ProfileDataGridTree.ModifierType={ChargeToCaller:"charge",};WebInspector.ProfileNodeDataGridNode=class ProfileNodeDataGridNode extends WebInspector.TimelineDataGridNode
{constructor(profileNode,baseStartTime,rangeStartTime,rangeEndTime)
{var hasChildren=!!profileNode.childNodes.length;super(false,null,hasChildren);this._profileNode=profileNode;this._baseStartTime=baseStartTime||0;this._rangeStartTime=rangeStartTime||0;this._rangeEndTime=typeof rangeEndTime==="number"?rangeEndTime:Infinity;this._cachedData=null;this.addEventListener("populate",this._populate,this);}
get profileNode()
{return this._profileNode;}
get records()
{return null;}
get baseStartTime()
{return this._baseStartTime;}
get rangeStartTime()
{return this._rangeStartTime;}
get rangeEndTime()
{return this._rangeEndTime;}
get data()
{if(!this._cachedData){this._cachedData=this._profileNode.computeCallInfoForTimeRange(this._rangeStartTime,this._rangeEndTime);this._cachedData.name=this.displayName();this._cachedData.location=this._profileNode.sourceCodeLocation;}
return this._cachedData;}
updateRangeTimes(startTime,endTime)
{var oldRangeStartTime=this._rangeStartTime;var oldRangeEndTime=this._rangeEndTime;if(oldRangeStartTime===startTime&&oldRangeEndTime===endTime)
return;this._rangeStartTime=startTime;this._rangeEndTime=endTime;var profileStart=this._profileNode.startTime;var profileEnd=this._profileNode.endTime;var oldStartBoundary=Number.constrain(oldRangeStartTime,profileStart,profileEnd);var oldEndBoundary=Number.constrain(oldRangeEndTime,profileStart,profileEnd);var newStartBoundary=Number.constrain(startTime,profileStart,profileEnd);var newEndBoundary=Number.constrain(endTime,profileStart,profileEnd);if(oldStartBoundary!==newStartBoundary||oldEndBoundary!==newEndBoundary)
this.needsRefresh();}
refresh()
{this._data=this._profileNode.computeCallInfoForTimeRange(this._rangeStartTime,this._rangeEndTime);this._data.location=this._profileNode.sourceCodeLocation;super.refresh();}
createCellContent(columnIdentifier,cell)
{var value=this.data[columnIdentifier];switch(columnIdentifier){case"name":cell.classList.add(...this.iconClassNames());return value;case"startTime":return isNaN(value)?emDash:Number.secondsToString(value-this._baseStartTime,true);case"selfTime":case"totalTime":case"averageTime":return isNaN(value)?emDash:Number.secondsToString(value,true);}
return super.createCellContent(columnIdentifier,cell);}
displayName()
{let title=this._profileNode.functionName;if(!title){switch(this._profileNode.type){case WebInspector.ProfileNode.Type.Function:title=WebInspector.UIString("(anonymous function)");break;case WebInspector.ProfileNode.Type.Program:title=WebInspector.UIString("(program)");break;default:title=WebInspector.UIString("(anonymous function)");console.error("Unknown ProfileNode type: "+this._profileNode.type);}}
return title;}
iconClassNames()
{let className;switch(this._profileNode.type){case WebInspector.ProfileNode.Type.Function:className=WebInspector.CallFrameView.FunctionIconStyleClassName;if(!this._profileNode.sourceCodeLocation)
className=WebInspector.CallFrameView.NativeIconStyleClassName;break;case WebInspector.ProfileNode.Type.Program:className=WebInspector.TimelineRecordTreeElement.EvaluatedRecordIconStyleClass;break;}
if(this._profileNode.functionName&&this._profileNode.functionName.startsWith("on")&&this._profileNode.functionName.length>=5)
className=WebInspector.CallFrameView.EventListenerIconStyleClassName;return[className];}
_populate()
{if(!this.shouldRefreshChildren)
return;this.removeEventListener("populate",this._populate,this);this.removeChildren();for(let node of this._profileNode.childNodes)
this.appendChild(new WebInspector.ProfileNodeDataGridNode(node,this.baseStartTime,this.rangeStartTime,this.rangeEndTime));}};WebInspector.ProfileNodeTreeElement=class ProfileNodeTreeElement extends WebInspector.GeneralTreeElement
{constructor(profileNode,delegate)
{var title=profileNode.functionName;var subtitle="";if(!title){switch(profileNode.type){case WebInspector.ProfileNode.Type.Function:title=WebInspector.UIString("(anonymous function)");break;case WebInspector.ProfileNode.Type.Program:title=WebInspector.UIString("(program)");break;default:title=WebInspector.UIString("(anonymous function)");console.error("Unknown ProfileNode type: "+profileNode.type);}}
var sourceCodeLocation=profileNode.sourceCodeLocation;if(sourceCodeLocation){subtitle=document.createElement("span");sourceCodeLocation.populateLiveDisplayLocationString(subtitle,"textContent");}
var className;switch(profileNode.type){case WebInspector.ProfileNode.Type.Function:className=WebInspector.CallFrameView.FunctionIconStyleClassName;if(!sourceCodeLocation)
className=WebInspector.CallFrameView.NativeIconStyleClassName;break;case WebInspector.ProfileNode.Type.Program:className=WebInspector.TimelineRecordTreeElement.EvaluatedRecordIconStyleClass;break;}
if(profileNode.functionName&&profileNode.functionName.startsWith("on")&&profileNode.functionName.length>=5)
className=WebInspector.CallFrameView.EventListenerIconStyleClassName;var hasChildren=!!profileNode.childNodes.length;super([className],title,subtitle,profileNode,hasChildren);this._profileNode=profileNode;this._delegate=delegate||null;this.shouldRefreshChildren=true;if(sourceCodeLocation)
this.tooltipHandledSeparately=true;}
get profileNode()
{return this._profileNode;}
get filterableData()
{var url=this._profileNode.sourceCodeLocation?this._profileNode.sourceCodeLocation.sourceCode.url:"";return{text:[this.mainTitle,url||""]};}
onattach()
{super.onattach();if(!this.tooltipHandledSeparately)
return;var tooltipPrefix=this.mainTitle+"\n";this._profileNode.sourceCodeLocation.populateLiveDisplayLocationTooltip(this.element,tooltipPrefix);}
onpopulate()
{if(!this.hasChildren||!this.shouldRefreshChildren)
return;this.shouldRefreshChildren=false;this.removeChildren();if(this._delegate&&typeof this._delegate.populateProfileNodeTreeElement==="function"){this._delegate.populateProfileNodeTreeElement(this);return;}
for(var childProfileNode of this._profileNode.childNodes){var childTreeElement=new WebInspector.ProfileNodeTreeElement(childProfileNode);this.appendChild(childTreeElement);}}};WebInspector.ProfileView=class ProfileView extends WebInspector.ContentView
{constructor(callingContextTree,extraArguments)
{super(callingContextTree);this._startTime=0;this._endTime=Infinity;this._callingContextTree=callingContextTree;this._hoveredDataGridNode=null;this.element.classList.add("profile");let columns={totalTime:{title:WebInspector.UIString("Total Time"),width:"120px",sortable:true,aligned:"right",},selfTime:{title:WebInspector.UIString("Self Time"),width:"75px",sortable:true,aligned:"right",},function:{title:WebInspector.UIString("Function"),disclosure:true,},};this._dataGrid=new WebInspector.DataGrid(columns);this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SortChanged,this._dataGridSortChanged,this);this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged,this._dataGridNodeSelected,this);this._dataGrid.addEventListener(WebInspector.DataGrid.Event.ExpandedNode,this._dataGridNodeExpanded,this);this._dataGrid.element.addEventListener("mouseover",this._mouseOverDataGrid.bind(this));this._dataGrid.element.addEventListener("mouseleave",this._mouseLeaveDataGrid.bind(this));this._dataGrid.indentWidth=20;this._dataGrid.sortColumnIdentifier="totalTime";this._dataGrid.sortOrder=WebInspector.DataGrid.SortOrder.Descending;this._dataGrid.createSettings("profile-view");
this._sharedData=extraArguments;this.addSubview(this._dataGrid);}
get callingContextTree(){return this._callingContextTree;}
get startTime(){return this._startTime;}
get endTime(){return this._endTime;}
get dataGrid(){return this._dataGrid;}
setStartAndEndTime(startTime,endTime)
{this._startTime=startTime;this._endTime=endTime;this._recreate();}
hasFocusNodes()
{if(!this._profileDataGridTree)
return false;return this._profileDataGridTree.focusNodes.length>0;}
clearFocusNodes()
{if(!this._profileDataGridTree)
return;this._profileDataGridTree.clearFocusNodes();}
get scrollableElements()
{return[this._dataGrid.scrollContainer];}
get selectionPathComponents()
{let pathComponents=[];if(this._profileDataGridTree){for(let profileDataGridNode of this._profileDataGridTree.focusNodes){let displayName=profileDataGridNode.displayName();let className=profileDataGridNode.iconClassName();let pathComponent=new WebInspector.HierarchicalPathComponent(displayName,className,profileDataGridNode);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.Clicked,this._pathComponentClicked,this);pathComponents.push(pathComponent);}}
return pathComponents;}
_recreate()
{let hadFocusNodes=this.hasFocusNodes();let sortComparator=WebInspector.ProfileDataGridTree.buildSortComparator(this._dataGrid.sortColumnIdentifier,this._dataGrid.sortOrder);this._profileDataGridTree=new WebInspector.ProfileDataGridTree(this._callingContextTree,this._startTime,this._endTime,sortComparator);this._profileDataGridTree.addEventListener(WebInspector.ProfileDataGridTree.Event.FocusChanged,this._dataGridTreeFocusChanged,this);this._profileDataGridTree.addEventListener(WebInspector.ProfileDataGridTree.Event.ModifiersChanged,this._dataGridTreeModifiersChanged,this);this._repopulateDataGridFromTree();if(hadFocusNodes)
this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);}
_repopulateDataGridFromTree()
{this._dataGrid.removeChildren();for(let child of this._profileDataGridTree.children)
this._dataGrid.appendChild(child);this._restoreSharedState();}
_restoreSharedState()
{const skipHidden=false;const stayWithin=this._dataGrid;const dontPopulate=true;if(this._sharedData.selectedNodeHash){let nodeToSelect=this._dataGrid.findNode((node)=>node.callingContextTreeNode.hash===this._sharedData.selectedNodeHash,skipHidden,stayWithin,dontPopulate);if(nodeToSelect)
nodeToSelect.revealAndSelect();}}
_pathComponentClicked(event)
{if(!event.data.pathComponent)
return;let profileDataGridNode=event.data.pathComponent.representedObject;if(profileDataGridNode===this._profileDataGridTree.currentFocusNode)
return;this._profileDataGridTree.rollbackFocusNode(event.data.pathComponent.representedObject);}
_dataGridTreeFocusChanged(event)
{this._repopulateDataGridFromTree();this._profileDataGridTree.refresh();this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);}
_dataGridTreeModifiersChanged(event)
{this._profileDataGridTree.refresh();}
_dataGridSortChanged()
{if(!this._profileDataGridTree)
return;this._profileDataGridTree.sortComparator=WebInspector.ProfileDataGridTree.buildSortComparator(this._dataGrid.sortColumnIdentifier,this._dataGrid.sortOrder);this._repopulateDataGridFromTree();}
_dataGridNodeSelected(event)
{let oldSelectedNode=event.data.oldSelectedNode;if(oldSelectedNode){this._removeGuidanceElement(WebInspector.ProfileView.GuidanceType.Selected,oldSelectedNode);oldSelectedNode.forEachChildInSubtree((node)=>this._removeGuidanceElement(WebInspector.ProfileView.GuidanceType.Selected,node));}
let newSelectedNode=this._dataGrid.selectedNode;if(newSelectedNode){this._removeGuidanceElement(WebInspector.ProfileView.GuidanceType.Selected,newSelectedNode);newSelectedNode.forEachChildInSubtree((node)=>this._appendGuidanceElement(WebInspector.ProfileView.GuidanceType.Selected,node,newSelectedNode));this._sharedData.selectedNodeHash=newSelectedNode.callingContextTreeNode.hash;}}
_dataGridNodeExpanded(event)
{let expandedNode=event.data.dataGridNode;if(this._dataGrid.selectedNode){if(expandedNode.isInSubtreeOfNode(this._dataGrid.selectedNode))
expandedNode.forEachImmediateChild((node)=>this._appendGuidanceElement(WebInspector.ProfileView.GuidanceType.Selected,node,this._dataGrid.selectedNode));}
if(this._hoveredDataGridNode){if(expandedNode.isInSubtreeOfNode(this._hoveredDataGridNode))
expandedNode.forEachImmediateChild((node)=>this._appendGuidanceElement(WebInspector.ProfileView.GuidanceType.Hover,node,this._hoveredDataGridNode));}}
_mouseOverDataGrid(event)
{let hoveredDataGridNode=this._dataGrid.dataGridNodeFromNode(event.target);if(hoveredDataGridNode===this._hoveredDataGridNode)
return;if(this._hoveredDataGridNode){this._removeGuidanceElement(WebInspector.ProfileView.GuidanceType.Hover,this._hoveredDataGridNode);this._hoveredDataGridNode.forEachChildInSubtree((node)=>this._removeGuidanceElement(WebInspector.ProfileView.GuidanceType.Hover,node));}
this._hoveredDataGridNode=hoveredDataGridNode;if(this._hoveredDataGridNode){this._appendGuidanceElement(WebInspector.ProfileView.GuidanceType.Hover,this._hoveredDataGridNode,this._hoveredDataGridNode);this._hoveredDataGridNode.forEachChildInSubtree((node)=>this._appendGuidanceElement(WebInspector.ProfileView.GuidanceType.Hover,node,this._hoveredDataGridNode));}}
_mouseLeaveDataGrid(event)
{if(!this._hoveredDataGridNode)
return;this._removeGuidanceElement(WebInspector.ProfileView.GuidanceType.Hover,this._hoveredDataGridNode);this._hoveredDataGridNode.forEachChildInSubtree((node)=>this._removeGuidanceElement(WebInspector.ProfileView.GuidanceType.Hover,node));this._hoveredDataGridNode=null;}
_guidanceElementKey(type)
{return"guidance-element-"+type;}
_removeGuidanceElement(type,node)
{let key=this._guidanceElementKey(type);let element=node.elementWithColumnIdentifier("function");if(!element||!element[key])
return;element[key].remove();element[key]=null;}
_appendGuidanceElement(type,node,baseElement)
{let depth=baseElement.depth;let guidanceMarkerLeft=depth?(depth*this._dataGrid.indentWidth)+1.5:7.5;let key=this._guidanceElementKey(type);let element=node.elementWithColumnIdentifier("function");let guidanceElement=element[key]||element.appendChild(document.createElement("div"));element[key]=guidanceElement;guidanceElement.classList.add("guidance",type);guidanceElement.classList.toggle("base",node===baseElement);guidanceElement.style.left=guidanceMarkerLeft+"px";}};WebInspector.ProfileView.GuidanceType={Selected:"selected",Hover:"hover",};WebInspector.QuickConsole=class QuickConsole extends WebInspector.View
{constructor(element)
{super(element);this._toggleOrFocusKeyboardShortcut=new WebInspector.KeyboardShortcut(null,WebInspector.KeyboardShortcut.Key.Escape,this._toggleOrFocus.bind(this));this._mainExecutionContextPathComponent=this._createExecutionContextPathComponent(WebInspector.mainTarget.executionContext);this._otherExecutionContextPathComponents=[];this._frameToPathComponent=new Map;this._targetToPathComponent=new Map;this._restoreSelectedExecutionContextForFrame=false;this.element.classList.add("quick-console");this.element.addEventListener("mousedown",this._handleMouseDown.bind(this));this.prompt=new WebInspector.ConsolePrompt(null,"text/javascript");this.prompt.element.classList.add("text-prompt");this.addSubview(this.prompt);
this.prompt.escapeKeyHandlerWhenEmpty=function(){WebInspector.toggleSplitConsole();};this._navigationBar=new WebInspector.QuickConsoleNavigationBar;this.addSubview(this._navigationBar);this._executionContextSelectorItem=new WebInspector.HierarchicalPathNavigationItem;this._executionContextSelectorItem.showSelectorArrows=true;this._navigationBar.addNavigationItem(this._executionContextSelectorItem);this._executionContextSelectorDivider=new WebInspector.DividerNavigationItem;this._navigationBar.addNavigationItem(this._executionContextSelectorDivider);this._rebuildExecutionContextPathComponents();WebInspector.Frame.addEventListener(WebInspector.Frame.Event.PageExecutionContextChanged,this._framePageExecutionContextsChanged,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ExecutionContextsCleared,this._frameExecutionContextsCleared,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange,this._debuggerActiveCallFrameDidChange,this);WebInspector.runtimeManager.addEventListener(WebInspector.RuntimeManager.Event.ActiveExecutionContextChanged,this._activeExecutionContextChanged,this);WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event.TargetAdded,this._targetAdded,this);WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event.TargetRemoved,this._targetRemoved,this);WebInspector.consoleDrawer.addEventListener(WebInspector.ConsoleDrawer.Event.CollapsedStateChanged,this._updateStyles,this);WebInspector.TabBrowser.addEventListener(WebInspector.TabBrowser.Event.SelectedTabContentViewDidChange,this._updateStyles,this);}
get navigationBar()
{return this._navigationBar;}
get selectedExecutionContext()
{return WebInspector.runtimeManager.activeExecutionContext;}
set selectedExecutionContext(executionContext)
{WebInspector.runtimeManager.activeExecutionContext=executionContext;}
layout()
{let maximumAllowedHeight=Math.round(window.innerHeight*0.33);this.prompt.element.style.maxHeight=maximumAllowedHeight+"px";}
_handleMouseDown(event)
{if(event.target!==this.element)
return;event.preventDefault();this.prompt.focus();}
_executionContextPathComponentsToDisplay()
{if(WebInspector.debuggerManager.activeCallFrame)
return[];if(!this._otherExecutionContextPathComponents.length)
return[];if(this.selectedExecutionContext===WebInspector.mainTarget.executionContext)
return[this._mainExecutionContextPathComponent];return this._otherExecutionContextPathComponents.filter((component)=>component.representedObject===this.selectedExecutionContext);}
_rebuildExecutionContextPathComponents()
{let components=this._executionContextPathComponentsToDisplay();let isEmpty=!components.length;this._executionContextSelectorItem.components=components;this._executionContextSelectorItem.hidden=isEmpty;this._executionContextSelectorDivider.hidden=isEmpty;}
_framePageExecutionContextsChanged(event)
{let frame=event.target;let shouldAutomaticallySelect=this._restoreSelectedExecutionContextForFrame===frame;let newExecutionContextPathComponent=this._insertExecutionContextPathComponentForFrame(frame,shouldAutomaticallySelect);if(shouldAutomaticallySelect){this._restoreSelectedExecutionContextForFrame=null;this.selectedExecutionContext=newExecutionContextPathComponent.representedObject;}}
_frameExecutionContextsCleared(event)
{let frame=event.target;if(event.data.committingProvisionalLoad&&!this._restoreSelectedExecutionContextForFrame){let executionContextPathComponent=this._frameToPathComponent.get(frame);if(executionContextPathComponent&&executionContextPathComponent.representedObject===this.selectedExecutionContext){this._restoreSelectedExecutionContextForFrame=frame;setTimeout(()=>{this._restoreSelectedExecutionContextForFrame=false;},10);}}
this._removeExecutionContextPathComponentForFrame(frame);}
_activeExecutionContextChanged(event)
{this._rebuildExecutionContextPathComponents();}
_createExecutionContextPathComponent(executionContext,preferredName)
{let pathComponent=new WebInspector.HierarchicalPathComponent(preferredName||executionContext.name,"execution-context",executionContext,true,true);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this._pathComponentSelected,this);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.Clicked,this._pathComponentClicked,this);pathComponent.truncatedDisplayNameLength=50;return pathComponent;}
_createExecutionContextPathComponentFromFrame(frame)
{let preferredName=frame.name?frame.name+" \u2014 "+frame.mainResource.displayName:frame.mainResource.displayName;return this._createExecutionContextPathComponent(frame.pageExecutionContext,preferredName);}
_compareExecutionContextPathComponents(a,b)
{let aExecutionContext=a.representedObject;let bExecutionContext=b.representedObject;let aNonMainTarget=aExecutionContext.target!==WebInspector.mainTarget;let bNonMainTarget=bExecutionContext.target!==WebInspector.mainTarget;if(aNonMainTarget&&!bNonMainTarget)
return-1;if(bNonMainTarget&&!aNonMainTarget)
return 1;if(aNonMainTarget&&bNonMainTarget)
return a.displayName.extendedLocaleCompare(b.displayName);if(aExecutionContext===WebInspector.mainTarget.executionContext)
return-1;if(bExecutionContext===WebInspector.mainTarget.executionContext)
return 1;if(aExecutionContext.frame.name&&!bExecutionContext.frame.name)
return-1;if(!aExecutionContext.frame.name&&bExecutionContext.frame.name)
return 1;return a.displayName.extendedLocaleCompare(b.displayName);}
_insertOtherExecutionContextPathComponent(executionContextPathComponent,skipRebuild)
{let index=insertionIndexForObjectInListSortedByFunction(executionContextPathComponent,this._otherExecutionContextPathComponents,this._compareExecutionContextPathComponents);let prev=index>0?this._otherExecutionContextPathComponents[index-1]:this._mainExecutionContextPathComponent;let next=this._otherExecutionContextPathComponents[index]||null;if(prev){prev.nextSibling=executionContextPathComponent;executionContextPathComponent.previousSibling=prev;}
if(next){next.previousSibling=executionContextPathComponent;executionContextPathComponent.nextSibling=next;}
this._otherExecutionContextPathComponents.splice(index,0,executionContextPathComponent);if(!skipRebuild)
this._rebuildExecutionContextPathComponents();}
_removeOtherExecutionContextPathComponent(executionContextPathComponent,skipRebuild)
{executionContextPathComponent.removeEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this._pathComponentSelected,this);executionContextPathComponent.removeEventListener(WebInspector.HierarchicalPathComponent.Event.Clicked,this._pathComponentClicked,this);let prev=executionContextPathComponent.previousSibling;let next=executionContextPathComponent.nextSibling;if(prev)
prev.nextSibling=next;if(next)
next.previousSibling=prev;this._otherExecutionContextPathComponents.remove(executionContextPathComponent,true);if(!skipRebuild)
this._rebuildExecutionContextPathComponents();}
_insertExecutionContextPathComponentForFrame(frame,skipRebuild)
{if(frame.isMainFrame())
return this._mainExecutionContextPathComponent;let executionContextPathComponent=this._createExecutionContextPathComponentFromFrame(frame);this._insertOtherExecutionContextPathComponent(executionContextPathComponent,skipRebuild);this._frameToPathComponent.set(frame,executionContextPathComponent);return executionContextPathComponent;}
_removeExecutionContextPathComponentForFrame(frame,skipRebuild)
{if(frame.isMainFrame())
return;let executionContextPathComponent=this._frameToPathComponent.take(frame);this._removeOtherExecutionContextPathComponent(executionContextPathComponent,skipRebuild);}
_targetAdded(event)
{let target=event.data.target;let preferredName=WebInspector.UIString("Worker \u2014 %s").format(target.displayName);let executionContextPathComponent=this._createExecutionContextPathComponent(target.executionContext,preferredName);this._targetToPathComponent.set(target,executionContextPathComponent);this._insertOtherExecutionContextPathComponent(executionContextPathComponent);}
_targetRemoved(event)
{let target=event.data.target;let executionContextPathComponent=this._targetToPathComponent.take(target);this._removeOtherExecutionContextPathComponent(executionContextPathComponent);if(this.selectedExecutionContext===executionContextPathComponent.representedObject)
this.selectedExecutionContext=WebInspector.mainTarget.executionContext;}
_pathComponentSelected(event)
{let executionContext=event.data.pathComponent.representedObject;this.selectedExecutionContext=executionContext;}
_pathComponentClicked(event)
{this.prompt.focus();}
_debuggerActiveCallFrameDidChange(event)
{this._rebuildExecutionContextPathComponents();}
_toggleOrFocus(event)
{if(this.prompt.focused)
WebInspector.toggleSplitConsole();else if(!WebInspector.isEditingAnyField()&&!WebInspector.isEventTargetAnEditableField(event))
this.prompt.focus();}
_updateStyles()
{this.element.classList.toggle("showing-log",WebInspector.isShowingConsoleTab()||WebInspector.isShowingSplitConsole());}};WebInspector.QuickConsoleNavigationBar=class QuickConsoleNavigationBar extends WebInspector.NavigationBar
{get sizesToFit()
{return true;}
addNavigationItem(navigationItem)
{return this.insertNavigationItem(navigationItem,0);}};WebInspector.RadioButtonNavigationItem=class RadioButtonNavigationItem extends WebInspector.ButtonNavigationItem
{constructor(identifier,toolTip,image,imageWidth,imageHeight)
{super(identifier,toolTip,image,imageWidth,imageHeight,null,"tab");this._initializedMinWidth=false;}
get selected()
{return this.element.classList.contains(WebInspector.RadioButtonNavigationItem.SelectedStyleClassName);}
set selected(flag)
{if(flag){this.element.classList.add(WebInspector.RadioButtonNavigationItem.SelectedStyleClassName);this.element.setAttribute("aria-selected","true");}else{this.element.classList.remove(WebInspector.RadioButtonNavigationItem.SelectedStyleClassName);this.element.setAttribute("aria-selected","false");}}
get active()
{return this.element.classList.contains(WebInspector.RadioButtonNavigationItem.ActiveStyleClassName);}
set active(flag)
{this.element.classList.toggle(WebInspector.RadioButtonNavigationItem.ActiveStyleClassName,flag);}
updateLayout(expandOnly)
{if(expandOnly)
return;var isSelected=this.selected;if(!isSelected){this.element.classList.add(WebInspector.RadioButtonNavigationItem.SelectedStyleClassName);this.element.setAttribute("aria-selected","true");}
if(!this._initializedMinWidth){var width=this.element.offsetWidth;if(width){this._initializedMinWidth=true;this.element.style.minWidth=width+"px";}}
if(!isSelected){this.element.classList.remove(WebInspector.RadioButtonNavigationItem.SelectedStyleClassName);this.element.setAttribute("aria-selected","false");}}
get additionalClassNames()
{return["radio","button"];}};WebInspector.RadioButtonNavigationItem.StyleClassName="radio";WebInspector.RadioButtonNavigationItem.ActiveStyleClassName="active";WebInspector.RadioButtonNavigationItem.SelectedStyleClassName="selected";WebInspector.RenderingFrameTimelineDataGridNode=class RenderingFrameTimelineDataGridNode extends WebInspector.TimelineDataGridNode
{constructor(renderingFrameTimelineRecord,baseStartTime)
{super(false,null);this._record=renderingFrameTimelineRecord;this._baseStartTime=baseStartTime||0;}
get records()
{return[this._record];}
get data()
{if(!this._cachedData){let name=WebInspector.TimelineTabContentView.displayNameForRecord(this._record);let scriptTime=this._record.durationForTask(WebInspector.RenderingFrameTimelineRecord.TaskType.Script);let layoutTime=this._record.durationForTask(WebInspector.RenderingFrameTimelineRecord.TaskType.Layout);let paintTime=this._record.durationForTask(WebInspector.RenderingFrameTimelineRecord.TaskType.Paint);let otherTime=this._record.durationForTask(WebInspector.RenderingFrameTimelineRecord.TaskType.Other);this._cachedData={name,startTime:this._record.startTime,totalTime:this._record.duration,scriptTime,layoutTime,paintTime,otherTime,};}
return this._cachedData;}
createCellContent(columnIdentifier,cell)
{var value=this.data[columnIdentifier];switch(columnIdentifier){case"name":cell.classList.add(...this.iconClassNames());return value;case"startTime":return isNaN(value)?emDash:Number.secondsToString(value-this._baseStartTime,true);case"scriptTime":case"layoutTime":case"paintTime":case"otherTime":case"totalTime":return(isNaN(value)||value===0)?emDash:Number.secondsToString(value,true);}
return super.createCellContent(columnIdentifier,cell);}};WebInspector.RenderingFrameTimelineOverviewGraph=class RenderingFrameTimelineOverviewGraph extends WebInspector.TimelineOverviewGraph
{constructor(timeline,timelineOverview)
{super(timelineOverview);this.element.classList.add("rendering-frame");this.element.addEventListener("click",this._mouseClicked.bind(this));this._renderingFrameTimeline=timeline;this._renderingFrameTimeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._timelineRecordAdded,this);this._selectedFrameMarker=document.createElement("div");this._selectedFrameMarker.classList.add("frame-marker");this._timelineRecordFrames=[];this._selectedTimelineRecordFrame=null;this._graphHeightSeconds=NaN;this._framesPerSecondDividerMap=new Map;this.reset();}
get graphHeightSeconds()
{if(!isNaN(this._graphHeightSeconds))
return this._graphHeightSeconds;var maximumFrameDuration=this._renderingFrameTimeline.records.reduce(function(previousValue,currentValue){return Math.max(previousValue,currentValue.duration);},0);this._graphHeightSeconds=maximumFrameDuration*1.1;this._graphHeightSeconds=Math.min(this._graphHeightSeconds,WebInspector.RenderingFrameTimelineOverviewGraph.MaximumGraphHeightSeconds);this._graphHeightSeconds=Math.max(this._graphHeightSeconds,WebInspector.RenderingFrameTimelineOverviewGraph.MinimumGraphHeightSeconds);return this._graphHeightSeconds;}
reset()
{super.reset();this.element.removeChildren();this.selectedRecord=null;this._framesPerSecondDividerMap.clear();}
recordWasFiltered(record,filtered)
{super.recordWasFiltered(record,filtered);if(!(record instanceof WebInspector.RenderingFrameTimelineRecord))
return;record[WebInspector.RenderingFrameTimelineOverviewGraph.RecordWasFilteredSymbol]=filtered;const startIndex=Math.floor(this.startTime);const endIndex=Math.min(Math.floor(this.endTime),this._renderingFrameTimeline.records.length-1);if(record.frameIndex<startIndex||record.frameIndex>endIndex)
return;const frameIndex=record.frameIndex-startIndex;this._timelineRecordFrames[frameIndex].filtered=filtered;}
get height()
{return 108;}
layout()
{if(!this.visible)
return;if(!this._renderingFrameTimeline.records.length)
return;let records=this._renderingFrameTimeline.records;let startIndex=Math.floor(this.startTime);let endIndex=Math.min(Math.floor(this.endTime),records.length-1);let recordFrameIndex=0;for(let i=startIndex;i<=endIndex;++i){let record=records[i];let timelineRecordFrame=this._timelineRecordFrames[recordFrameIndex];if(!timelineRecordFrame)
timelineRecordFrame=this._timelineRecordFrames[recordFrameIndex]=new WebInspector.TimelineRecordFrame(this,record);else
timelineRecordFrame.record=record;timelineRecordFrame.refresh(this);if(!timelineRecordFrame.element.parentNode)
this.element.appendChild(timelineRecordFrame.element);timelineRecordFrame.filtered=record[WebInspector.RenderingFrameTimelineOverviewGraph.RecordWasFilteredSymbol]||false;++recordFrameIndex;}
for(;recordFrameIndex<this._timelineRecordFrames.length;++recordFrameIndex){this._timelineRecordFrames[recordFrameIndex].record=null;this._timelineRecordFrames[recordFrameIndex].element.remove();}
this._updateDividers();this._updateFrameMarker();}
updateSelectedRecord()
{if(!this.selectedRecord){this._updateFrameMarker();return;}
const visibleDuration=this.timelineOverview.visibleDuration;const frameIndex=this.selectedRecord.frameIndex;if(frameIndex<Math.ceil(this.timelineOverview.scrollStartTime)||frameIndex>=this.timelineOverview.scrollStartTime+visibleDuration){var scrollStartTime=frameIndex;if(!this._selectedTimelineRecordFrame||Math.abs(this._selectedTimelineRecordFrame.record.frameIndex-this.selectedRecord.frameIndex)>1){scrollStartTime-=Math.floor(visibleDuration/2);scrollStartTime=Math.max(Math.min(scrollStartTime,this.timelineOverview.endTime),this.timelineOverview.startTime);}
this.timelineOverview.scrollStartTime=scrollStartTime;return;}
this._updateFrameMarker();}
_timelineRecordAdded(event)
{this._graphHeightSeconds=NaN;this.needsLayout();}
_updateDividers()
{if(this.graphHeightSeconds===0)
return;let overviewGraphHeight=this.height;function createDividerAtPosition(framesPerSecond)
{var secondsPerFrame=1/framesPerSecond;var dividerTop=1-secondsPerFrame/this.graphHeightSeconds;if(dividerTop<0.01||dividerTop>=1)
return;var divider=this._framesPerSecondDividerMap.get(framesPerSecond);if(!divider){divider=document.createElement("div");divider.classList.add("divider");var label=document.createElement("div");label.classList.add("label");label.innerText=WebInspector.UIString("%d fps").format(framesPerSecond);divider.appendChild(label);this.element.appendChild(divider);this._framesPerSecondDividerMap.set(framesPerSecond,divider);}
divider.style.marginTop=(dividerTop*overviewGraphHeight).toFixed(2)+"px";}
createDividerAtPosition.call(this,60);createDividerAtPosition.call(this,30);}
_updateFrameMarker()
{if(this._selectedTimelineRecordFrame){this._selectedTimelineRecordFrame.selected=false;this._selectedTimelineRecordFrame=null;}
if(!this.selectedRecord){if(this._selectedFrameMarker.parentElement)
this.element.removeChild(this._selectedFrameMarker);return;}
var frameWidth=(1/this.timelineOverview.secondsPerPixel);this._selectedFrameMarker.style.width=frameWidth+"px";var markerLeftPosition=this.selectedRecord.frameIndex-this.startTime;let property=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"right":"left";this._selectedFrameMarker.style.setProperty(property,((markerLeftPosition/this.timelineOverview.visibleDuration)*100).toFixed(2)+"%");if(!this._selectedFrameMarker.parentElement)
this.element.appendChild(this._selectedFrameMarker);var index=this._timelineRecordFrames.binaryIndexOf(this.selectedRecord,function(record,frame){return frame.record?record.frameIndex-frame.record.frameIndex:-1;});if(index<0||index>=this._timelineRecordFrames.length)
return;this._selectedTimelineRecordFrame=this._timelineRecordFrames[index];this._selectedTimelineRecordFrame.selected=true;}
_mouseClicked(event)
{let position=0;if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL)
position=this.element.totalOffsetRight-event.pageX;else
position=event.pageX-this.element.totalOffsetLeft;var frameIndex=Math.floor(position*this.timelineOverview.secondsPerPixel+this.startTime);if(frameIndex<0||frameIndex>=this._renderingFrameTimeline.records.length)
return;var newSelectedRecord=this._renderingFrameTimeline.records[frameIndex];if(newSelectedRecord[WebInspector.RenderingFrameTimelineOverviewGraph.RecordWasFilteredSymbol])
return;if(this.selectedRecord===newSelectedRecord)
return;if(frameIndex>=this.timelineOverview.selectionStartTime&&frameIndex<this.timelineOverview.selectionStartTime+this.timelineOverview.selectionDuration){this.selectedRecord=newSelectedRecord;return;}
this.selectedRecord=newSelectedRecord;this.timelineOverview.selectionStartTime=frameIndex;this.timelineOverview.selectionDuration=1;}};WebInspector.RenderingFrameTimelineOverviewGraph.RecordWasFilteredSymbol=Symbol("rendering-frame-overview-graph-record-was-filtered");WebInspector.RenderingFrameTimelineOverviewGraph.MaximumGraphHeightSeconds=0.037;WebInspector.RenderingFrameTimelineOverviewGraph.MinimumGraphHeightSeconds=0.0185;WebInspector.RenderingFrameTimelineView=class RenderingFrameTimelineView extends WebInspector.TimelineView
{constructor(timeline,extraArguments)
{super(timeline,extraArguments);var scopeBarItems=[];for(var key in WebInspector.RenderingFrameTimelineView.DurationFilter){var value=WebInspector.RenderingFrameTimelineView.DurationFilter[key];scopeBarItems.push(new WebInspector.ScopeBarItem(value,WebInspector.RenderingFrameTimelineView.displayNameForDurationFilter(value)));}
this._scopeBar=new WebInspector.ScopeBar("rendering-frame-scope-bar",scopeBarItems,scopeBarItems[0],true);this._scopeBar.addEventListener(WebInspector.ScopeBar.Event.SelectionChanged,this._scopeBarSelectionDidChange,this);let columns={name:{},totalTime:{},scriptTime:{},layoutTime:{},paintTime:{},otherTime:{},startTime:{},location:{}};columns.name.title=WebInspector.UIString("Name");columns.name.width="20%";columns.name.icon=true;columns.name.disclosure=true;columns.name.locked=true;columns.totalTime.title=WebInspector.UIString("Total Time");columns.totalTime.width="15%";columns.totalTime.aligned="right";columns.scriptTime.title=WebInspector.RenderingFrameTimelineRecord.displayNameForTaskType(WebInspector.RenderingFrameTimelineRecord.TaskType.Script);columns.scriptTime.width="10%";columns.scriptTime.aligned="right";columns.layoutTime.title=WebInspector.RenderingFrameTimelineRecord.displayNameForTaskType(WebInspector.RenderingFrameTimelineRecord.TaskType.Layout);columns.layoutTime.width="10%";columns.layoutTime.aligned="right";columns.paintTime.title=WebInspector.RenderingFrameTimelineRecord.displayNameForTaskType(WebInspector.RenderingFrameTimelineRecord.TaskType.Paint);columns.paintTime.width="10%";columns.paintTime.aligned="right";columns.otherTime.title=WebInspector.RenderingFrameTimelineRecord.displayNameForTaskType(WebInspector.RenderingFrameTimelineRecord.TaskType.Other);columns.otherTime.width="10%";columns.otherTime.aligned="right";columns.startTime.title=WebInspector.UIString("Start Time");columns.startTime.width="15%";columns.startTime.aligned="right";columns.location.title=WebInspector.UIString("Location");for(var column in columns)
columns[column].sortable=true;this._dataGrid=new WebInspector.TimelineDataGrid(columns);this._dataGrid.sortColumnIdentifier="startTime";this._dataGrid.sortOrder=WebInspector.DataGrid.SortOrder.Ascending;this._dataGrid.createSettings("rendering-frame-timeline-view");this.setupDataGrid(this._dataGrid);this.element.classList.add("rendering-frame");this.addSubview(this._dataGrid);timeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._renderingFrameTimelineRecordAdded,this);this._pendingRecords=[];}
static displayNameForDurationFilter(filter)
{switch(filter){case WebInspector.RenderingFrameTimelineView.DurationFilter.All:return WebInspector.UIString("All");case WebInspector.RenderingFrameTimelineView.DurationFilter.OverOneMillisecond:return WebInspector.UIString("Over 1 ms");case WebInspector.RenderingFrameTimelineView.DurationFilter.OverFifteenMilliseconds:return WebInspector.UIString("Over 15 ms");default:console.error("Unknown filter type",filter);}
return null;}
get showsLiveRecordingData(){return false;}
shown()
{super.shown();this._dataGrid.shown();}
hidden()
{this._dataGrid.hidden();super.hidden();}
closed()
{this.representedObject.removeEventListener(null,null,this);this._dataGrid.closed();}
get selectionPathComponents()
{let dataGridNode=this._dataGrid.selectedNode;if(!dataGridNode||dataGridNode.hidden)
return null;let pathComponents=[];while(dataGridNode&&!dataGridNode.root){if(dataGridNode.hidden)
return null;let pathComponent=new WebInspector.TimelineDataGridNodePathComponent(dataGridNode);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this.dataGridNodePathComponentSelected,this);pathComponents.unshift(pathComponent);dataGridNode=dataGridNode.parent;}
return pathComponents;}
get filterStartTime()
{let records=this.representedObject.records;let startIndex=this.startTime;if(startIndex>=records.length)
return Infinity;return records[startIndex].startTime;}
get filterEndTime()
{let records=this.representedObject.records;let endIndex=this.endTime-1;if(endIndex>=records.length)
return Infinity;return records[endIndex].endTime;}
reset()
{super.reset();this._dataGrid.reset();this._pendingRecords=[];}
dataGridNodePathComponentSelected(event)
{let dataGridNode=event.data.pathComponent.timelineDataGridNode;dataGridNode.revealAndSelect();}
dataGridNodeForTreeElement(treeElement)
{if(treeElement instanceof WebInspector.ProfileNodeTreeElement)
return new WebInspector.ProfileNodeDataGridNode(treeElement.profileNode,this.zeroTime,this.startTime,this.endTime);return null;}
matchDataGridNodeAgainstCustomFilters(node)
{if(!super.matchDataGridNodeAgainstCustomFilters(node))
return false;let selectedScopeBarItem=this._scopeBar.selectedItems[0];if(!selectedScopeBarItem||selectedScopeBarItem.id===WebInspector.RenderingFrameTimelineView.DurationFilter.All)
return true;while(node&&!(node.record instanceof WebInspector.RenderingFrameTimelineRecord))
node=node.parent;if(!node)
return false;let minimumDuration=selectedScopeBarItem.id===WebInspector.RenderingFrameTimelineView.DurationFilter.OverOneMillisecond?0.001:0.015;return node.record.duration>minimumDuration;}
layout()
{this._processPendingRecords();}
_processPendingRecords()
{if(!this._pendingRecords.length)
return;for(let renderingFrameTimelineRecord of this._pendingRecords){let dataGridNode=new WebInspector.RenderingFrameTimelineDataGridNode(renderingFrameTimelineRecord,this.zeroTime);this._dataGrid.addRowInSortOrder(null,dataGridNode);let stack=[{children:renderingFrameTimelineRecord.children,parentDataGridNode:dataGridNode,index:0}];while(stack.length){let entry=stack.lastValue;if(entry.index>=entry.children.length){stack.pop();continue;}
let childRecord=entry.children[entry.index];let childDataGridNode=null;if(childRecord.type===WebInspector.TimelineRecord.Type.Layout){childDataGridNode=new WebInspector.LayoutTimelineDataGridNode(childRecord,this.zeroTime);this._dataGrid.addRowInSortOrder(null,childDataGridNode,entry.parentDataGridNode);}else if(childRecord.type===WebInspector.TimelineRecord.Type.Script){let rootNodes=[];if(childRecord.profile){rootNodes=childRecord.profile.topDownRootNodes;}
childDataGridNode=new WebInspector.ScriptTimelineDataGridNode(childRecord,this.zeroTime);this._dataGrid.addRowInSortOrder(null,childDataGridNode,entry.parentDataGridNode);for(let profileNode of rootNodes){let profileNodeDataGridNode=new WebInspector.ProfileNodeDataGridNode(profileNode,this.zeroTime,this.startTime,this.endTime);this._dataGrid.addRowInSortOrder(null,profileNodeDataGridNode,childDataGridNode);}}
if(childDataGridNode&&childRecord.children.length)
stack.push({children:childRecord.children,parentDataGridNode:childDataGridNode,index:0});++entry.index;}}
this._pendingRecords=[];}
_renderingFrameTimelineRecordAdded(event)
{var renderingFrameTimelineRecord=event.data.record;this._pendingRecords.push(renderingFrameTimelineRecord);this.needsLayout();}
_scopeBarSelectionDidChange()
{this._dataGrid.filterDidChange();}};WebInspector.RenderingFrameTimelineView.DurationFilter={All:"rendering-frame-timeline-view-duration-filter-all",OverOneMillisecond:"rendering-frame-timeline-view-duration-filter-over-1-ms",OverFifteenMilliseconds:"rendering-frame-timeline-view-duration-filter-over-15-ms"};WebInspector.Resizer=class Resizer extends WebInspector.Object
{constructor(ruleOrientation,delegate)
{super();this._delegate=delegate;this._orientation=ruleOrientation;this._element=document.createElement("div");this._element.classList.add("resizer");if(this._orientation===WebInspector.Resizer.RuleOrientation.Horizontal)
this._element.classList.add("horizontal-rule");else if(this._orientation===WebInspector.Resizer.RuleOrientation.Vertical)
this._element.classList.add("vertical-rule");this._element.addEventListener("mousedown",this._resizerMouseDown.bind(this),false);this._resizerMouseMovedEventListener=this._resizerMouseMoved.bind(this);this._resizerMouseUpEventListener=this._resizerMouseUp.bind(this);}
get element()
{return this._element;}
get orientation()
{return this._orientation;}
get initialPosition()
{return this._resizerMouseDownPosition||NaN;}
_currentPosition()
{if(this._orientation===WebInspector.Resizer.RuleOrientation.Vertical)
return event.pageX;if(this._orientation===WebInspector.Resizer.RuleOrientation.Horizontal)
return event.pageY;}
_resizerMouseDown(event)
{if(event.button!==0||event.ctrlKey)
return;this._resizerMouseDownPosition=this._currentPosition();var delegateRequestedAbort=false;if(typeof this._delegate.resizerDragStarted==="function")
delegateRequestedAbort=this._delegate.resizerDragStarted(this,event.target);if(delegateRequestedAbort){delete this._resizerMouseDownPosition;return;}
if(this._orientation===WebInspector.Resizer.RuleOrientation.Vertical)
document.body.style.cursor="col-resize";else{document.body.style.cursor="row-resize";}
document.addEventListener("mousemove",this._resizerMouseMovedEventListener,false);document.addEventListener("mouseup",this._resizerMouseUpEventListener,false);event.preventDefault();event.stopPropagation();if(WebInspector._elementDraggingGlassPane)
WebInspector._elementDraggingGlassPane.remove();var glassPaneElement=document.createElement("div");glassPaneElement.className="glass-pane-for-drag";document.body.appendChild(glassPaneElement);WebInspector._elementDraggingGlassPane=glassPaneElement;}
_resizerMouseMoved(event)
{event.preventDefault();event.stopPropagation();if(typeof this._delegate.resizerDragging==="function")
this._delegate.resizerDragging(this,this._resizerMouseDownPosition-this._currentPosition());}
_resizerMouseUp(event)
{if(event.button!==0||event.ctrlKey)
return;document.body.style.removeProperty("cursor");if(WebInspector._elementDraggingGlassPane){WebInspector._elementDraggingGlassPane.remove();delete WebInspector._elementDraggingGlassPane;}
document.removeEventListener("mousemove",this._resizerMouseMovedEventListener,false);document.removeEventListener("mouseup",this._resizerMouseUpEventListener,false);event.preventDefault();event.stopPropagation();if(typeof this._delegate.resizerDragEnded==="function")
this._delegate.resizerDragEnded(this);delete this._resizerMouseDownPosition;}};WebInspector.Resizer.RuleOrientation={Horizontal:Symbol("resizer-rule-orientation-horizontal"),Vertical:Symbol("resizer-rule-orientation-vertical"),};WebInspector.ResourceClusterContentView=class ResourceClusterContentView extends WebInspector.ClusterContentView
{constructor(resource)
{super(resource);this._resource=resource;this._resource.addEventListener(WebInspector.Resource.Event.TypeDidChange,this._resourceTypeDidChange,this);this._resource.addEventListener(WebInspector.Resource.Event.LoadingDidFinish,this._resourceLoadingDidFinish,this);function createPathComponent(displayName,className,identifier)
{let pathComponent=new WebInspector.HierarchicalPathComponent(displayName,className,identifier,false,true);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this._pathComponentSelected,this);pathComponent.comparisonData=resource;return pathComponent;}
this._requestPathComponent=createPathComponent.call(this,WebInspector.UIString("Request"),WebInspector.ResourceClusterContentView.RequestIconStyleClassName,WebInspector.ResourceClusterContentView.RequestIdentifier);this._responsePathComponent=createPathComponent.call(this,WebInspector.UIString("Response"),WebInspector.ResourceClusterContentView.ResponseIconStyleClassName,WebInspector.ResourceClusterContentView.ResponseIdentifier);this._requestPathComponent.nextSibling=this._responsePathComponent;this._responsePathComponent.previousSibling=this._requestPathComponent;this._currentContentViewSetting=new WebInspector.Setting("resource-current-view-"+this._resource.url.hash,WebInspector.ResourceClusterContentView.ResponseIdentifier);}
get resource()
{return this._resource;}
get responseContentView()
{if(this._responseContentView)
return this._responseContentView;switch(this._resource.type){case WebInspector.Resource.Type.Document:case WebInspector.Resource.Type.Script:case WebInspector.Resource.Type.Stylesheet:this._responseContentView=new WebInspector.TextResourceContentView(this._resource);break;case WebInspector.Resource.Type.XHR:case WebInspector.Resource.Type.Fetch:
this._responseContentView=new WebInspector.TextResourceContentView(this._resource);break;case WebInspector.Resource.Type.Image:if(this._resource.mimeTypeComponents.type==="image/svg+xml")
this._responseContentView=new WebInspector.SVGImageResourceClusterContentView(this._resource);else
this._responseContentView=new WebInspector.ImageResourceContentView(this._resource);break;case WebInspector.Resource.Type.Font:this._responseContentView=new WebInspector.FontResourceContentView(this._resource);break;case WebInspector.Resource.Type.WebSocket:this._responseContentView=new WebInspector.WebSocketContentView(this._resource);break;default:this._responseContentView=new WebInspector.GenericResourceContentView(this._resource);break;}
return this._responseContentView;}
get requestContentView()
{if(!this._canShowRequestContentView())
return null;if(this._requestContentView)
return this._requestContentView;this._requestContentView=new WebInspector.TextContentView(this._resource.requestData||"",this._resource.requestDataContentType);return this._requestContentView;}
get selectionPathComponents()
{var currentContentView=this._contentViewContainer.currentContentView;if(!currentContentView)
return[];if(!this._canShowRequestContentView())
return currentContentView.selectionPathComponents;var components=[this._pathComponentForContentView(currentContentView)];return components.concat(currentContentView.selectionPathComponents);}
shown()
{super.shown();if(this._shownInitialContent)
return;this._showContentViewForIdentifier(this._currentContentViewSetting.value);}
closed()
{super.closed();this._shownInitialContent=false;}
saveToCookie(cookie)
{cookie[WebInspector.ResourceClusterContentView.ContentViewIdentifierCookieKey]=this._currentContentViewSetting.value;}
restoreFromCookie(cookie)
{var contentView=this._showContentViewForIdentifier(cookie[WebInspector.ResourceClusterContentView.ContentViewIdentifierCookieKey]);if(typeof contentView.revealPosition==="function"&&"lineNumber"in cookie&&"columnNumber"in cookie)
contentView.revealPosition(new WebInspector.SourceCodePosition(cookie.lineNumber,cookie.columnNumber));}
showRequest()
{this._shownInitialContent=true;return this._showContentViewForIdentifier(WebInspector.ResourceClusterContentView.RequestIdentifier);}
showResponse(positionToReveal,textRangeToSelect,forceUnformatted)
{this._shownInitialContent=true;if(!this._resource.finished){this._positionToReveal=positionToReveal;this._textRangeToSelect=textRangeToSelect;this._forceUnformatted=forceUnformatted;}
var responseContentView=this._showContentViewForIdentifier(WebInspector.ResourceClusterContentView.ResponseIdentifier);if(typeof responseContentView.revealPosition==="function")
responseContentView.revealPosition(positionToReveal,textRangeToSelect,forceUnformatted);return responseContentView;}
_canShowRequestContentView()
{var requestData=this._resource.requestData;if(!requestData)
return false;var requestDataContentType=this._resource.requestDataContentType;if(requestDataContentType&&requestDataContentType.match(/^application\/x-www-form-urlencoded\s*(;.*)?$/i))
return false;return true;}
_pathComponentForContentView(contentView)
{if(!contentView)
return null;if(contentView===this._requestContentView)
return this._requestPathComponent;if(contentView===this._responseContentView)
return this._responsePathComponent;console.error("Unknown contentView.");return null;}
_identifierForContentView(contentView)
{if(!contentView)
return null;if(contentView===this._requestContentView)
return WebInspector.ResourceClusterContentView.RequestIdentifier;if(contentView===this._responseContentView)
return WebInspector.ResourceClusterContentView.ResponseIdentifier;console.error("Unknown contentView.");return null;}
_showContentViewForIdentifier(identifier)
{var contentViewToShow=null;switch(identifier){case WebInspector.ResourceClusterContentView.RequestIdentifier:contentViewToShow=this._canShowRequestContentView()?this.requestContentView:null;break;case WebInspector.ResourceClusterContentView.ResponseIdentifier:contentViewToShow=this.responseContentView;break;}
if(!contentViewToShow)
contentViewToShow=this.responseContentView;this._currentContentViewSetting.value=this._identifierForContentView(contentViewToShow);return this.contentViewContainer.showContentView(contentViewToShow);}
_pathComponentSelected(event)
{this._showContentViewForIdentifier(event.data.pathComponent.representedObject);}
_resourceTypeDidChange(event)
{
var currentResponseContentView=this._responseContentView;if(!currentResponseContentView)
return;this._responseContentView=null;this.contentViewContainer.replaceContentView(currentResponseContentView,this.responseContentView);}
_resourceLoadingDidFinish(event)
{if("_positionToReveal"in this){if(this._contentViewContainer.currentContentView===this._responseContentView)
this._responseContentView.revealPosition(this._positionToReveal,this._textRangeToSelect,this._forceUnformatted);delete this._positionToReveal;delete this._textRangeToSelect;delete this._forceUnformatted;}}};WebInspector.ResourceClusterContentView.ContentViewIdentifierCookieKey="resource-cluster-content-view-identifier";WebInspector.ResourceClusterContentView.RequestIconStyleClassName="request-icon";WebInspector.ResourceClusterContentView.ResponseIconStyleClassName="response-icon";WebInspector.ResourceClusterContentView.RequestIdentifier="request";WebInspector.ResourceClusterContentView.ResponseIdentifier="response";WebInspector.ResourceDetailsSidebarPanel=class ResourceDetailsSidebarPanel extends WebInspector.DetailsSidebarPanel
{constructor()
{super("resource-details",WebInspector.UIString("Resource"));this.element.classList.add("resource");this._resource=null;this._needsToApplyResourceEventListeners=false;this._needsToRemoveResourceEventListeners=false;}
inspect(objects)
{if(!(objects instanceof Array))
objects=[objects];var resourceToInspect=null;for(let object of objects){if(object instanceof WebInspector.Resource){resourceToInspect=object;break;}
if(object instanceof WebInspector.Frame){resourceToInspect=object.mainResource;break;}
if(object instanceof WebInspector.Script&&object.isMainResource()&&object.resource){resourceToInspect=object.resource;break;}}
this.resource=resourceToInspect;return!!this._resource;}
get resource()
{return this._resource;}
set resource(resource)
{if(resource===this._resource)
return;if(this._resource&&this._needsToRemoveResourceEventListeners){this._resource.removeEventListener(WebInspector.Resource.Event.URLDidChange,this._refreshURL,this);this._resource.removeEventListener(WebInspector.Resource.Event.MIMETypeDidChange,this._refreshMIMEType,this);this._resource.removeEventListener(WebInspector.Resource.Event.TypeDidChange,this._refreshResourceType,this);this._resource.removeEventListener(WebInspector.Resource.Event.LoadingDidFail,this._refreshErrorReason,this);this._resource.removeEventListener(WebInspector.Resource.Event.RequestHeadersDidChange,this._refreshRequestHeaders,this);this._resource.removeEventListener(WebInspector.Resource.Event.ResponseReceived,this._refreshRequestAndResponse,this);this._resource.removeEventListener(WebInspector.Resource.Event.CacheStatusDidChange,this._refreshRequestAndResponse,this);this._resource.removeEventListener(WebInspector.Resource.Event.SizeDidChange,this._refreshDecodedSize,this);this._resource.removeEventListener(WebInspector.Resource.Event.TransferSizeDidChange,this._refreshTransferSize,this);this._resource.removeEventListener(WebInspector.Resource.Event.InitiatedResourcesDidChange,this._refreshRelatedResourcesSection,this);this._needsToRemoveResourceEventListeners=false;}
this._resource=resource;if(this._resource){if(this.parentSidebar)
this._applyResourceEventListeners();else
this._needsToApplyResourceEventListeners=true;}
this.needsLayout();}
initialLayout()
{super.initialLayout();this._typeMIMETypeRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("MIME Type"));this._typeResourceTypeRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Resource Type"));this._typeSection=new WebInspector.DetailsSection("resource-type",WebInspector.UIString("Type"));this._typeSection.groups=[new WebInspector.DetailsSectionGroup([this._typeMIMETypeRow,this._typeResourceTypeRow])];this._locationFullURLRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Full URL"));this._locationSchemeRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Scheme"));this._locationHostRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Host"));this._locationPortRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Port"));this._locationPathRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Path"));this._locationQueryStringRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Query String"));this._locationFragmentRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Fragment"));this._locationFilenameRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Filename"));this._initiatorRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Initiator"));this._initiatedRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Initiated"));var firstGroup=[this._locationFullURLRow];var secondGroup=[this._locationSchemeRow,this._locationHostRow,this._locationPortRow,this._locationPathRow,this._locationQueryStringRow,this._locationFragmentRow,this._locationFilenameRow];var thirdGroup=[this._initiatorRow,this._initiatedRow];this._fullURLGroup=new WebInspector.DetailsSectionGroup(firstGroup);this._locationURLComponentsGroup=new WebInspector.DetailsSectionGroup(secondGroup);this._relatedResourcesGroup=new WebInspector.DetailsSectionGroup(thirdGroup);this._locationSection=new WebInspector.DetailsSection("resource-location",WebInspector.UIString("Location"),[this._fullURLGroup,this._locationURLComponentsGroup,this._relatedResourcesGroup]);this._queryParametersRow=new WebInspector.DetailsSectionDataGridRow(null,WebInspector.UIString("No Query Parameters"));this._queryParametersSection=new WebInspector.DetailsSection("resource-query-parameters",WebInspector.UIString("Query Parameters"));this._queryParametersSection.groups=[new WebInspector.DetailsSectionGroup([this._queryParametersRow])];this._requestDataSection=new WebInspector.DetailsSection("resource-request-data",WebInspector.UIString("Request Data"));this._requestMethodRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Method"));this._protocolRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Protocol"));this._priorityRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Priority"));this._cachedRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Cached"));this._statusTextRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Status"));this._statusCodeRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Code"));this._errorReasonRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Error"));this._remoteAddressRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("IP Address"));this._connectionIdentifierRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Connection ID"));this._encodedSizeRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Encoded"));this._decodedSizeRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Decoded"));this._transferSizeRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Transferred"));this._compressedRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Compressed"));this._compressionRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Compression"));let requestGroup=new WebInspector.DetailsSectionGroup([this._requestMethodRow,this._protocolRow,this._priorityRow,this._cachedRow]);let statusGroup=new WebInspector.DetailsSectionGroup([this._statusTextRow,this._statusCodeRow,this._errorReasonRow]);let connectionGroup=new WebInspector.DetailsSectionGroup([this._remoteAddressRow,this._connectionIdentifierRow]);let sizeGroup=new WebInspector.DetailsSectionGroup([this._encodedSizeRow,this._decodedSizeRow,this._transferSizeRow]);let compressionGroup=new WebInspector.DetailsSectionGroup([this._compressedRow,this._compressionRow]);this._requestAndResponseSection=new WebInspector.DetailsSection("resource-request-response",WebInspector.UIString("Request & Response"));this._requestAndResponseSection.groups=[requestGroup,statusGroup,connectionGroup,sizeGroup,compressionGroup];this._requestHeadersRow=new WebInspector.DetailsSectionDataGridRow(null,WebInspector.UIString("No Request Headers"));this._requestHeadersSection=new WebInspector.DetailsSection("resource-request-headers",WebInspector.UIString("Request Headers"));this._requestHeadersSection.groups=[new WebInspector.DetailsSectionGroup([this._requestHeadersRow])];this._responseHeadersRow=new WebInspector.DetailsSectionDataGridRow(null,WebInspector.UIString("No Response Headers"));this._responseHeadersSection=new WebInspector.DetailsSection("resource-response-headers",WebInspector.UIString("Response Headers"));this._responseHeadersSection.groups=[new WebInspector.DetailsSectionGroup([this._responseHeadersRow])];this._imageWidthRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Width"));this._imageHeightRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Height"));this._imageSizeSection=new WebInspector.DetailsSection("resource-type",WebInspector.UIString("Image Size"));this._imageSizeSection.groups=[new WebInspector.DetailsSectionGroup([this._imageWidthRow,this._imageHeightRow])];this.contentView.element.appendChild(this._typeSection.element);this.contentView.element.appendChild(this._locationSection.element);this.contentView.element.appendChild(this._requestAndResponseSection.element);this.contentView.element.appendChild(this._requestHeadersSection.element);this.contentView.element.appendChild(this._responseHeadersSection.element);if(this._needsToApplyResourceEventListeners){this._applyResourceEventListeners();this._needsToApplyResourceEventListeners=false;}}
layout()
{super.layout();if(!this._resource)
return;this._refreshURL();this._refreshMIMEType();this._refreshResourceType();this._refreshRequestAndResponse();this._refreshDecodedSize();this._refreshTransferSize();this._refreshRequestHeaders();this._refreshImageSizeSection();this._refreshRequestDataSection();this._refreshRelatedResourcesSection();}
sizeDidChange()
{super.sizeDidChange(); this._queryParametersRow.sizeDidChange();this._requestHeadersRow.sizeDidChange();this._responseHeadersRow.sizeDidChange();}
_refreshURL()
{if(!this._resource)
return;this._locationFullURLRow.value=this._resource.url.insertWordBreakCharacters();var urlComponents=this._resource.urlComponents;if(urlComponents.scheme){this._locationSection.groups=[this._fullURLGroup,this._locationURLComponentsGroup,this._relatedResourcesGroup];this._locationSchemeRow.value=urlComponents.scheme?urlComponents.scheme:null;this._locationHostRow.value=urlComponents.host?urlComponents.host:null;this._locationPortRow.value=urlComponents.port?urlComponents.port:null;this._locationPathRow.value=urlComponents.path?urlComponents.path.insertWordBreakCharacters():null;this._locationQueryStringRow.value=urlComponents.queryString?urlComponents.queryString.insertWordBreakCharacters():null;this._locationFragmentRow.value=urlComponents.fragment?urlComponents.fragment.insertWordBreakCharacters():null;this._locationFilenameRow.value=urlComponents.lastPathComponent?urlComponents.lastPathComponent.insertWordBreakCharacters():null;}else{this._locationSection.groups=[this._fullURLGroup,this._relatedResourcesGroup];}
if(urlComponents.queryString){this.contentView.element.insertBefore(this._queryParametersSection.element,this._requestAndResponseSection.element.nextSibling);this._queryParametersRow.dataGrid=this._createNameValueDataGrid(parseQueryString(urlComponents.queryString,true));}else{var queryParametersSectionElement=this._queryParametersSection.element;if(queryParametersSectionElement.parentNode)
queryParametersSectionElement.parentNode.removeChild(queryParametersSectionElement);}}
_refreshRelatedResourcesSection()
{let groups=this._locationSection.groups;let isSectionVisible=groups.includes(this._relatedResourcesGroup);if(!this._resource.initiatorSourceCodeLocation&&!this._resource.initiatedResources.length){if(isSectionVisible){groups.remove(this._relatedResourcesGroup);this._locationSection.groups=groups;}
return;}
if(!isSectionVisible){groups.push(this._relatedResourcesGroup);this._locationSection.groups=groups;}
let initiatorLocation=this._resource.initiatorSourceCodeLocation;if(initiatorLocation){const options={dontFloat:true,ignoreSearchTab:true,};this._initiatorRow.value=WebInspector.createSourceCodeLocationLink(initiatorLocation,options);}else
this._initiatorRow.value=null;let initiatedResources=this._resource.initiatedResources;if(initiatedResources.length){let resourceLinkContainer=document.createElement("div");for(let resource of initiatedResources)
resourceLinkContainer.appendChild(WebInspector.createResourceLink(resource));this._initiatedRow.value=resourceLinkContainer;}else
this._initiatedRow.value=null;}
_refreshResourceType()
{if(!this._resource)
return;this._typeResourceTypeRow.value=WebInspector.Resource.displayNameForType(this._resource.type);}
_refreshMIMEType()
{if(!this._resource)
return;this._typeMIMETypeRow.value=this._resource.mimeType;}
_refreshErrorReason()
{if(!this._resource)
return;if(!this._resource.hadLoadingError()){this._errorReasonRow.value=null;return;}
if(this._resource.failureReasonText)
this._errorReasonRow.value=this._resource.failureReasonText;else if(this._resource.statusCode>=400)
this._errorReasonRow.value=WebInspector.UIString("Failure status code");else if(this._resource.canceled)
this._errorReasonRow.value=WebInspector.UIString("Load cancelled");else
this._errorReasonRow.value=WebInspector.UIString("Unknown error");}
_refreshRequestAndResponse()
{if(!this._resource)
return;this._requestMethodRow.value=this._resource.requestMethod||emDash;if(window.NetworkAgent&&NetworkAgent.hasEventParameter("loadingFinished","metrics")){let protocolDisplayName=WebInspector.Resource.displayNameForProtocol(this._resource.protocol);this._protocolRow.value=protocolDisplayName||emDash;this._protocolRow.tooltip=protocolDisplayName?this._resource.protocol:"";this._priorityRow.value=WebInspector.Resource.displayNameForPriority(this._resource.priority)||emDash;this._remoteAddressRow.value=this._resource.remoteAddress||emDash;this._connectionIdentifierRow.value=this._resource.connectionIdentifier||emDash;}
this._cachedRow.value=this._cachedRowValue();this._statusCodeRow.value=this._resource.statusCode||emDash;this._statusTextRow.value=this._resource.statusText||emDash;this._refreshErrorReason();this._refreshResponseHeaders();this._refreshCompressed();}
_valueForSize(size)
{return size>0?Number.bytesToString(size):emDash;}
_refreshCompressed()
{if(this._resource.compressed){this._compressedRow.value=WebInspector.UIString("Yes");if(!this._resource.size)
this._compressionRow.value=emDash;else if(!isNaN(this._resource.networkEncodedSize))
this._compressionRow.value=this._resource.networkEncodedSize?WebInspector.UIString("%.2f\u00d7").format(this._resource.size/this._resource.networkEncodedSize):emDash;else
this._compressionRow.value=this._resource.estimatedNetworkEncodedSize?WebInspector.UIString("%.2f\u00d7").format(this._resource.size/this._resource.estimatedNetworkEncodedSize):emDash;}else{this._compressedRow.value=WebInspector.UIString("No");this._compressionRow.value=null;}}
_refreshDecodedSize()
{if(!this._resource)
return;let encodedSize=!isNaN(this._resource.networkEncodedSize)?this._resource.networkEncodedSize:this._resource.estimatedNetworkEncodedSize;let decodedSize=!isNaN(this._resource.networkDecodedSize)?this._resource.networkDecodedSize:this._resource.size;this._encodedSizeRow.value=this._valueForSize(encodedSize);this._decodedSizeRow.value=this._valueForSize(decodedSize);this._refreshCompressed();}
_refreshTransferSize()
{if(!this._resource)
return;let encodedSize=!isNaN(this._resource.networkEncodedSize)?this._resource.networkEncodedSize:this._resource.estimatedNetworkEncodedSize;let transferSize=!isNaN(this._resource.networkTotalTransferSize)?this._resource.networkTotalTransferSize:this._resource.estimatedTotalTransferSize;this._encodedSizeRow.value=this._valueForSize(encodedSize);this._transferSizeRow.value=this._valueForSize(transferSize);this._refreshCompressed();}
_refreshRequestHeaders()
{if(!this._resource)
return;this._requestHeadersRow.dataGrid=this._createNameValueDataGrid(this._resource.requestHeaders);}
_refreshResponseHeaders()
{if(!this._resource)
return;this._responseHeadersRow.dataGrid=this._createNameValueDataGrid(this._resource.responseHeaders);}
_createNameValueDataGrid(data)
{if(!data||data instanceof Array?!data.length:isEmptyObject(data))
return null;var dataGrid=new WebInspector.DataGrid({name:{title:WebInspector.UIString("Name"),width:"30%",sortable:true},value:{title:WebInspector.UIString("Value"),sortable:true}});dataGrid.copyTextDelimiter=": ";function addDataGridNode(nodeValue)
{var node=new WebInspector.DataGridNode({name:nodeValue.name,value:nodeValue.value||""},false);dataGrid.appendChild(node);}
if(data instanceof Array){for(var i=0;i<data.length;++i)
addDataGridNode(data[i]);}else{for(var name in data)
addDataGridNode({name,value:data[name]||""});}
dataGrid.addEventListener(WebInspector.DataGrid.Event.SortChanged,sortDataGrid,this);function sortDataGrid()
{var sortColumnIdentifier=dataGrid.sortColumnIdentifier;function comparator(a,b)
{var item1=a.data[sortColumnIdentifier];var item2=b.data[sortColumnIdentifier];return item1.extendedLocaleCompare(item2);}
dataGrid.sortNodes(comparator);}
return dataGrid;}
_refreshImageSizeSection()
{var resource=this._resource;if(!resource)
return;function hideImageSection(){this._imageSizeSection.element.remove();}
if(resource.type!==WebInspector.Resource.Type.Image||resource.failed){hideImageSection.call(this);return;}
this.contentView.element.insertBefore(this._imageSizeSection.element,this._locationSection.element);resource.getImageSize((size)=>{if(size){this._imageWidthRow.value=WebInspector.UIString("%dpx").format(size.width);this._imageHeightRow.value=WebInspector.UIString("%dpx").format(size.height);}else
hideImageSection.call(this);});}
_cachedRowValue()
{let responseSource=this._resource.responseSource;if(responseSource===WebInspector.Resource.ResponseSource.MemoryCache||responseSource===WebInspector.Resource.ResponseSource.DiskCache){let span=document.createElement("span");let cacheType=document.createElement("span");cacheType.classList="cache-type";cacheType.textContent=responseSource===WebInspector.Resource.ResponseSource.MemoryCache?WebInspector.UIString("(Memory)"):WebInspector.UIString("(Disk)");span.append(WebInspector.UIString("Yes")," ",cacheType);return span;}
return this._resource.cached?WebInspector.UIString("Yes"):WebInspector.UIString("No");}
_goToRequestDataClicked()
{const options={ignoreSearchTab:true,};WebInspector.showResourceRequest(this._resource,options);}
_refreshRequestDataSection()
{var resource=this._resource;if(!resource)
return;var requestData=resource.requestData;if(!requestData){this._requestDataSection.element.remove();return;}
this.contentView.element.insertBefore(this._requestDataSection.element,this._requestHeadersSection.element);var requestDataContentType=resource.requestDataContentType||"";if(requestDataContentType&&requestDataContentType.match(/^application\/x-www-form-urlencoded\s*(;.*)?$/i)){var parametersRow=new WebInspector.DetailsSectionDataGridRow(null,WebInspector.UIString("No Parameters"));parametersRow.dataGrid=this._createNameValueDataGrid(parseQueryString(requestData,true));this._requestDataSection.groups=[new WebInspector.DetailsSectionGroup([parametersRow])];return;}
var mimeTypeComponents=parseMIMEType(requestDataContentType);var mimeType=mimeTypeComponents.type;var boundary=mimeTypeComponents.boundary;var encoding=mimeTypeComponents.encoding;var rows=[];var mimeTypeRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("MIME Type"));mimeTypeRow.value=mimeType;rows.push(mimeTypeRow);if(boundary){var boundryRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Boundary"));boundryRow.value=boundary;rows.push(boundryRow);}
if(encoding){var encodingRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Encoding"));encodingRow.value=encoding;rows.push(encodingRow);}
var sizeValue=Number.bytesToString(requestData.length);var dataValue=document.createDocumentFragment();dataValue.append(sizeValue);var goToButton=dataValue.appendChild(WebInspector.createGoToArrowButton());goToButton.addEventListener("click",this._goToRequestDataClicked.bind(this));var dataRow=new WebInspector.DetailsSectionSimpleRow(WebInspector.UIString("Data"));dataRow.value=dataValue;rows.push(dataRow);this._requestDataSection.groups=[new WebInspector.DetailsSectionGroup(rows)];}
_applyResourceEventListeners()
{this._resource.addEventListener(WebInspector.Resource.Event.URLDidChange,this._refreshURL,this);this._resource.addEventListener(WebInspector.Resource.Event.MIMETypeDidChange,this._refreshMIMEType,this);this._resource.addEventListener(WebInspector.Resource.Event.TypeDidChange,this._refreshResourceType,this);this._resource.addEventListener(WebInspector.Resource.Event.LoadingDidFail,this._refreshErrorReason,this);this._resource.addEventListener(WebInspector.Resource.Event.RequestHeadersDidChange,this._refreshRequestHeaders,this);this._resource.addEventListener(WebInspector.Resource.Event.ResponseReceived,this._refreshRequestAndResponse,this);this._resource.addEventListener(WebInspector.Resource.Event.CacheStatusDidChange,this._refreshRequestAndResponse,this);this._resource.addEventListener(WebInspector.Resource.Event.SizeDidChange,this._refreshDecodedSize,this);this._resource.addEventListener(WebInspector.Resource.Event.TransferSizeDidChange,this._refreshTransferSize,this);this._resource.addEventListener(WebInspector.Resource.Event.InitiatedResourcesDidChange,this._refreshRelatedResourcesSection,this);this._needsToRemoveResourceEventListeners=true;}};WebInspector.ResourceSidebarPanel=class ResourceSidebarPanel extends WebInspector.NavigationSidebarPanel
{constructor(contentBrowser)
{super("resource",WebInspector.UIString("Resources"),true);this.contentBrowser=contentBrowser;this.filterBar.placeholder=WebInspector.UIString("Filter Resource List");this._navigationBar=new WebInspector.NavigationBar;this.addSubview(this._navigationBar);this._targetTreeElementMap=new Map;var scopeItemPrefix="resource-sidebar-";var scopeBarItems=[];scopeBarItems.push(new WebInspector.ScopeBarItem(scopeItemPrefix+"type-all",WebInspector.UIString("All Resources"),true));for(var key in WebInspector.Resource.Type){var value=WebInspector.Resource.Type[key];var scopeBarItem=new WebInspector.ScopeBarItem(scopeItemPrefix+value,WebInspector.Resource.displayNameForType(value,true));scopeBarItem[WebInspector.ResourceSidebarPanel.ResourceTypeSymbol]=value;scopeBarItems.push(scopeBarItem);}
let canvasesScopeBarItem=new WebInspector.ScopeBarItem(scopeItemPrefix+WebInspector.Canvas.ResourceSidebarType,WebInspector.UIString("Canvases"));canvasesScopeBarItem[WebInspector.ResourceSidebarPanel.ResourceTypeSymbol]=WebInspector.Canvas.ResourceSidebarType;scopeBarItems.insertAtIndex(canvasesScopeBarItem,scopeBarItems.length-1);this._scopeBar=new WebInspector.ScopeBar("resource-sidebar-scope-bar",scopeBarItems,scopeBarItems[0],true);this._scopeBar.addEventListener(WebInspector.ScopeBar.Event.SelectionChanged,this._scopeBarSelectionDidChange,this);this._navigationBar.addNavigationItem(this._scopeBar);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);WebInspector.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.MainFrameDidChange,this._mainFrameDidChange,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptAdded,this._scriptWasAdded,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptRemoved,this._scriptWasRemoved,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ScriptsCleared,this._scriptsCleared,this);WebInspector.cssStyleManager.addEventListener(WebInspector.CSSStyleManager.Event.StyleSheetAdded,this._styleSheetAdded,this);WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event.TargetRemoved,this._targetRemoved,this);WebInspector.notifications.addEventListener(WebInspector.Notification.ExtraDomainsActivated,this._extraDomainsActivated,this);this.contentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._treeSelectionDidChange,this);this.contentTreeOutline.includeSourceMapResourceChildren=true;if(WebInspector.debuggableType===WebInspector.DebuggableType.JavaScript){this.contentTreeOutline.disclosureButtons=false;WebInspector.SourceCode.addEventListener(WebInspector.SourceCode.Event.SourceMapAdded,()=>{this.contentTreeOutline.disclosureButtons=true;},this);}}
get minimumWidth()
{return this._navigationBar.minimumWidth;}
closed()
{super.closed();WebInspector.Frame.removeEventListener(null,null,this);WebInspector.frameResourceManager.removeEventListener(null,null,this);WebInspector.debuggerManager.removeEventListener(null,null,this);WebInspector.notifications.removeEventListener(null,null,this);}
showDefaultContentView()
{if(WebInspector.frameResourceManager.mainFrame){this.contentBrowser.showContentViewForRepresentedObject(WebInspector.frameResourceManager.mainFrame);return;}
var firstTreeElement=this.contentTreeOutline.children[0];if(firstTreeElement)
this.showDefaultContentViewForTreeElement(firstTreeElement);}
treeElementForRepresentedObject(representedObject)
{if(!this._mainFrameTreeElement&&(representedObject instanceof WebInspector.Resource||representedObject instanceof WebInspector.Frame||representedObject instanceof WebInspector.Collection)){return null;}
if(representedObject instanceof WebInspector.Resource&&representedObject.parentFrame&&representedObject.parentFrame.mainResource===representedObject)
representedObject=representedObject.parentFrame;function isAncestor(ancestor,resourceOrFrame)
{if(resourceOrFrame instanceof WebInspector.SourceMapResource){if(resourceOrFrame.sourceMap.originalSourceCode===ancestor)
return true;resourceOrFrame=resourceOrFrame.sourceMap.originalSourceCode;}
var currentFrame=resourceOrFrame.parentFrame;while(currentFrame){if(currentFrame===ancestor)
return true;currentFrame=currentFrame.parentFrame;}
return false;}
function getParent(resourceOrFrame)
{if(resourceOrFrame instanceof WebInspector.SourceMapResource)
return resourceOrFrame.sourceMap.originalSourceCode;return resourceOrFrame.parentFrame;}
var treeElement=this.contentTreeOutline.findTreeElement(representedObject,isAncestor,getParent);if(treeElement)
return treeElement;if(!(representedObject instanceof WebInspector.Script)){console.error("Didn't find a TreeElement for representedObject",representedObject);return null;}
if(representedObject.url){console.error("Didn't find a ScriptTreeElement for a Script with a URL.");return null;}
if(!this._anonymousScriptsFolderTreeElement){let collection=new WebInspector.Collection(WebInspector.Collection.TypeVerifier.Script);this._anonymousScriptsFolderTreeElement=new WebInspector.FolderTreeElement(WebInspector.UIString("Anonymous Scripts"),collection);}
if(!this._anonymousScriptsFolderTreeElement.parent){var index=insertionIndexForObjectInListSortedByFunction(this._anonymousScriptsFolderTreeElement,this.contentTreeOutline.children,this._compareTreeElements);this.contentTreeOutline.insertChild(this._anonymousScriptsFolderTreeElement,index);}
this._anonymousScriptsFolderTreeElement.representedObject.add(representedObject);var scriptTreeElement=new WebInspector.ScriptTreeElement(representedObject);this._anonymousScriptsFolderTreeElement.appendChild(scriptTreeElement);return scriptTreeElement;}
initialLayout()
{super.initialLayout();if(WebInspector.frameResourceManager.mainFrame)
this._mainFrameMainResourceDidChange(WebInspector.frameResourceManager.mainFrame);}
hasCustomFilters()
{var selectedScopeBarItem=this._scopeBar.selectedItems[0];return selectedScopeBarItem&&!selectedScopeBarItem.exclusive;}
matchTreeElementAgainstCustomFilters(treeElement,flags)
{var selectedScopeBarItem=this._scopeBar.selectedItems[0];if(!selectedScopeBarItem||selectedScopeBarItem.exclusive)
return true;if(treeElement instanceof WebInspector.FolderTreeElement)
return false;function match()
{if(treeElement instanceof WebInspector.FrameTreeElement)
return selectedScopeBarItem[WebInspector.ResourceSidebarPanel.ResourceTypeSymbol]===WebInspector.Resource.Type.Document;if(treeElement instanceof WebInspector.ScriptTreeElement)
return selectedScopeBarItem[WebInspector.ResourceSidebarPanel.ResourceTypeSymbol]===WebInspector.Resource.Type.Script;if(treeElement instanceof WebInspector.CanvasTreeElement)
return selectedScopeBarItem[WebInspector.ResourceSidebarPanel.ResourceTypeSymbol]===WebInspector.Canvas.ResourceSidebarType;if(treeElement instanceof WebInspector.CSSStyleSheetTreeElement)
return selectedScopeBarItem[WebInspector.ResourceSidebarPanel.ResourceTypeSymbol]===WebInspector.Resource.Type.Stylesheet;if(!(treeElement instanceof WebInspector.ResourceTreeElement))
return false;return treeElement.resource.type===selectedScopeBarItem[WebInspector.ResourceSidebarPanel.ResourceTypeSymbol];}
var matched=match();if(matched)
flags.expandTreeElement=true;return matched;}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;this._mainFrameMainResourceDidChange(event.target);}
_mainFrameDidChange(event)
{this._mainFrameMainResourceDidChange(WebInspector.frameResourceManager.mainFrame);}
_mainFrameMainResourceDidChange(mainFrame)
{this.contentBrowser.contentViewContainer.closeAllContentViews();if(this._mainFrameTreeElement){this.contentTreeOutline.removeChild(this._mainFrameTreeElement);this._mainFrameTreeElement=null;}
if(!mainFrame)
return;this._mainFrameTreeElement=new WebInspector.FrameTreeElement(mainFrame);this.contentTreeOutline.insertChild(this._mainFrameTreeElement,0);function delayedWork()
{if(!this.contentTreeOutline.selectedTreeElement){var currentContentView=this.contentBrowser.currentContentView;var treeElement=currentContentView?this.treeElementForRepresentedObject(currentContentView.representedObject):null;if(!treeElement)
treeElement=this._mainFrameTreeElement;this.showDefaultContentViewForTreeElement(treeElement);}}
setTimeout(delayedWork.bind(this));}
_scriptWasAdded(event)
{var script=event.data.script;
if(!script.url&&!script.sourceURL)
return;if(script.target!==WebInspector.mainTarget){if(script.isMainResource())
this._addTargetWithMainResource(script.target);return;}
if(script.resource||script.dynamicallyAddedScriptElement)
return;let insertIntoTopLevel=false;let parentFolderTreeElement=null;if(script.injected){if(!this._extensionScriptsFolderTreeElement){let collection=new WebInspector.Collection(WebInspector.Collection.TypeVerifier.Script);this._extensionScriptsFolderTreeElement=new WebInspector.FolderTreeElement(WebInspector.UIString("Extension Scripts"),collection);}
parentFolderTreeElement=this._extensionScriptsFolderTreeElement;}else{if(WebInspector.debuggableType===WebInspector.DebuggableType.JavaScript&&!WebInspector.hasExtraDomains)
insertIntoTopLevel=true;else{if(!this._extraScriptsFolderTreeElement){let collection=new WebInspector.Collection(WebInspector.Collection.TypeVerifier.Script);this._extraScriptsFolderTreeElement=new WebInspector.FolderTreeElement(WebInspector.UIString("Extra Scripts"),collection);}
parentFolderTreeElement=this._extraScriptsFolderTreeElement;}}
if(parentFolderTreeElement)
parentFolderTreeElement.representedObject.add(script);var scriptTreeElement=new WebInspector.ScriptTreeElement(script);if(insertIntoTopLevel){var index=insertionIndexForObjectInListSortedByFunction(scriptTreeElement,this.contentTreeOutline.children,this._compareTreeElements);this.contentTreeOutline.insertChild(scriptTreeElement,index);}else{if(!parentFolderTreeElement.parent){var index=insertionIndexForObjectInListSortedByFunction(parentFolderTreeElement,this.contentTreeOutline.children,this._compareTreeElements);this.contentTreeOutline.insertChild(parentFolderTreeElement,index);}
parentFolderTreeElement.appendChild(scriptTreeElement);}}
_scriptWasRemoved(event)
{let script=event.data.script;let scriptTreeElement=this.contentTreeOutline.getCachedTreeElement(script);if(!scriptTreeElement)
return;let parentTreeElement=scriptTreeElement.parent;parentTreeElement.removeChild(scriptTreeElement);if(parentTreeElement instanceof WebInspector.FolderTreeElement){parentTreeElement.representedObject.remove(script);if(!parentTreeElement.children.length)
parentTreeElement.parent.removeChild(parentTreeElement);}}
_scriptsCleared(event)
{const suppressOnDeselect=true;const suppressSelectSibling=true;if(this._extensionScriptsFolderTreeElement){if(this._extensionScriptsFolderTreeElement.parent)
this._extensionScriptsFolderTreeElement.parent.removeChild(this._extensionScriptsFolderTreeElement,suppressOnDeselect,suppressSelectSibling);this._extensionScriptsFolderTreeElement.representedObject.clear();this._extensionScriptsFolderTreeElement=null;}
if(this._extraScriptsFolderTreeElement){if(this._extraScriptsFolderTreeElement.parent)
this._extraScriptsFolderTreeElement.parent.removeChild(this._extraScriptsFolderTreeElement,suppressOnDeselect,suppressSelectSibling);this._extraScriptsFolderTreeElement.representedObject.clear();this._extraScriptsFolderTreeElement=null;}
if(this._anonymousScriptsFolderTreeElement){if(this._anonymousScriptsFolderTreeElement.parent)
this._anonymousScriptsFolderTreeElement.parent.removeChild(this._anonymousScriptsFolderTreeElement,suppressOnDeselect,suppressSelectSibling);this._anonymousScriptsFolderTreeElement.representedObject.clear();this._anonymousScriptsFolderTreeElement=null;}
if(this._targetTreeElementMap.size){for(let treeElement of this._targetTreeElementMap)
treeElement.parent.removeChild(treeElement,suppressOnDeselect,suppressSelectSibling);this._targetTreeElementMap.clear();}}
_styleSheetAdded(event)
{let styleSheet=event.data.styleSheet;if(!styleSheet.isInspectorStyleSheet())
return;let frameTreeElement=this.treeElementForRepresentedObject(styleSheet.parentFrame);if(!frameTreeElement)
return;frameTreeElement.addRepresentedObjectToNewChildQueue(styleSheet);}
_addTargetWithMainResource(target)
{let targetTreeElement=new WebInspector.WorkerTreeElement(target);this._targetTreeElementMap.set(target,targetTreeElement);let index=insertionIndexForObjectInListSortedByFunction(targetTreeElement,this.contentTreeOutline.children,this._compareTreeElements);this.contentTreeOutline.insertChild(targetTreeElement,index);}
_targetRemoved(event)
{let removedTarget=event.data.target;let targetTreeElement=this._targetTreeElementMap.take(removedTarget);if(targetTreeElement)
targetTreeElement.parent.removeChild(targetTreeElement);}
_treeSelectionDidChange(event)
{if(!this.visible)
return;let treeElement=event.data.selectedElement;if(!treeElement)
return;if(treeElement instanceof WebInspector.FolderTreeElement||treeElement instanceof WebInspector.ResourceTreeElement||treeElement instanceof WebInspector.ScriptTreeElement||treeElement instanceof WebInspector.CSSStyleSheetTreeElement||treeElement instanceof WebInspector.ContentFlowTreeElement||treeElement instanceof WebInspector.CanvasTreeElement){const cookie=null;const options={ignoreNetworkTab:true,ignoreSearchTab:true,};WebInspector.showRepresentedObject(treeElement.representedObject,cookie,options);return;}
console.error("Unknown tree element",treeElement);}
_compareTreeElements(a,b)
{if(a instanceof WebInspector.FrameTreeElement)
return-1;if(b instanceof WebInspector.FrameTreeElement)
return 1;return(a.mainTitle||"").extendedLocaleCompare(b.mainTitle||"");}
_extraDomainsActivated()
{if(WebInspector.debuggableType===WebInspector.DebuggableType.JavaScript)
this.contentTreeOutline.disclosureButtons=true;}
_scopeBarSelectionDidChange(event)
{this.updateFilter();}};WebInspector.ResourceSidebarPanel.ResourceTypeSymbol=Symbol("resource-type");WebInspector.ResourceTimelineDataGridNode=class ResourceTimelineDataGridNode extends WebInspector.TimelineDataGridNode
{constructor(resourceTimelineRecord,includesGraph,graphDataSource,shouldShowPopover)
{super(includesGraph,graphDataSource);this._resource=resourceTimelineRecord.resource;this._record=resourceTimelineRecord;this._shouldShowPopover=shouldShowPopover;this._resource.addEventListener(WebInspector.Resource.Event.LoadingDidFinish,this._needsRefresh,this);this._resource.addEventListener(WebInspector.Resource.Event.LoadingDidFail,this._needsRefresh,this);this._resource.addEventListener(WebInspector.Resource.Event.URLDidChange,this._needsRefresh,this);if(includesGraph)
this._record.addEventListener(WebInspector.TimelineRecord.Event.Updated,this._timelineRecordUpdated,this);else{this._resource.addEventListener(WebInspector.Resource.Event.TypeDidChange,this._needsRefresh,this);this._resource.addEventListener(WebInspector.Resource.Event.SizeDidChange,this._needsRefresh,this);this._resource.addEventListener(WebInspector.Resource.Event.TransferSizeDidChange,this._needsRefresh,this);}}
get records()
{return[this._record];}
get resource()
{return this._resource;}
get data()
{if(this._cachedData)
return this._cachedData;var resource=this._resource;var data={};if(!this._includesGraph){var zeroTime=this.graphDataSource?this.graphDataSource.zeroTime:0;data.domain=WebInspector.displayNameForHost(resource.urlComponents.host);data.scheme=resource.urlComponents.scheme?resource.urlComponents.scheme.toUpperCase():"";data.method=resource.requestMethod;data.type=resource.type;data.statusCode=resource.statusCode;data.cached=resource.cached;data.size=resource.size;data.transferSize=!isNaN(resource.networkTotalTransferSize)?resource.networkTotalTransferSize:resource.estimatedTotalTransferSize;data.requestSent=resource.requestSentTimestamp-zeroTime;data.duration=resource.receiveDuration;data.latency=resource.latency;data.protocol=resource.protocol;data.priority=resource.priority;data.remoteAddress=resource.remoteAddress;data.connectionIdentifier=resource.connectionIdentifier;}
data.graph=this._record.startTime;this._cachedData=data;return data;}
createCellContent(columnIdentifier,cell)
{let resource=this._resource;if(resource.hadLoadingError())
cell.classList.add("error");let value=this.data[columnIdentifier];switch(columnIdentifier){case"name":cell.classList.add(...this.iconClassNames());cell.title=resource.displayURL;this._updateStatus(cell);return this._createNameCellDocumentFragment();case"type":var text=WebInspector.Resource.displayNameForType(value);cell.title=text;return text;case"statusCode":cell.title=resource.statusText||"";return value||emDash;case"cached":var fragment=this._cachedCellContent();cell.title=fragment.textContent;return fragment;case"size":case"transferSize":var text=emDash;if(!isNaN(value)){text=Number.bytesToString(value,true);cell.title=text;}
return text;case"requestSent":case"latency":case"duration":var text=emDash;if(!isNaN(value)){text=Number.secondsToString(value,true);cell.title=text;}
return text;case"domain":case"method":case"scheme":case"protocol":case"remoteAddress":case"connectionIdentifier":if(value)
cell.title=value;return value||emDash;case"priority":var title=WebInspector.Resource.displayNameForPriority(value);if(title)
cell.title=title;return title||emDash;}
return super.createCellContent(columnIdentifier,cell);}
refresh()
{if(this._scheduledRefreshIdentifier){cancelAnimationFrame(this._scheduledRefreshIdentifier);this._scheduledRefreshIdentifier=undefined;}
this._cachedData=null;super.refresh();}
iconClassNames()
{return[WebInspector.ResourceTreeElement.ResourceIconStyleClassName,this.resource.type];}
appendContextMenuItems(contextMenu)
{WebInspector.appendContextMenuItemsForSourceCode(contextMenu,this._resource);}
didAddRecordBar(recordBar)
{if(!this._shouldShowPopover)
return;if(!recordBar.records.length||recordBar.records[0].type!==WebInspector.TimelineRecord.Type.Network)
return;this._mouseEnterRecordBarListener=this._mouseoverRecordBar.bind(this);recordBar.element.addEventListener("mouseenter",this._mouseEnterRecordBarListener);}
didRemoveRecordBar(recordBar)
{if(!this._shouldShowPopover)
return;if(!recordBar.records.length||recordBar.records[0].type!==WebInspector.TimelineRecord.Type.Network)
return;recordBar.element.removeEventListener("mouseenter",this._mouseEnterRecordBarListener);this._mouseEnterRecordBarListener=null;}
filterableDataForColumn(columnIdentifier)
{if(columnIdentifier==="name")
return this._resource.url;return super.filterableDataForColumn(columnIdentifier);}
_createNameCellDocumentFragment()
{let fragment=document.createDocumentFragment();let mainTitle=this.displayName();fragment.append(mainTitle);let frame=this._resource.parentFrame;let isMainResource=this._resource.isMainResource();let parentResourceHost;if(frame&&isMainResource){parentResourceHost=frame.parentFrame?frame.parentFrame.mainResource.urlComponents.host:null;}else if(frame){parentResourceHost=frame.mainResource.urlComponents.host;}
if(parentResourceHost!==this._resource.urlComponents.host||frame.isMainFrame()&&isMainResource){let subtitle=WebInspector.displayNameForHost(this._resource.urlComponents.host);if(mainTitle!==subtitle){let subtitleElement=document.createElement("span");subtitleElement.classList.add("subtitle");subtitleElement.textContent=subtitle;fragment.append(subtitleElement);}}
return fragment;}
_cachedCellContent()
{if(!this._resource.hasResponse())
return emDash;let responseSource=this._resource.responseSource;if(responseSource===WebInspector.Resource.ResponseSource.MemoryCache||responseSource===WebInspector.Resource.ResponseSource.DiskCache){let span=document.createElement("span");let cacheType=document.createElement("span");cacheType.classList="cache-type";cacheType.textContent=responseSource===WebInspector.Resource.ResponseSource.MemoryCache?WebInspector.UIString("(Memory)"):WebInspector.UIString("(Disk)");span.append(WebInspector.UIString("Yes")," ",cacheType);return span;}
let fragment=document.createDocumentFragment();fragment.append(this._resource.cached?WebInspector.UIString("Yes"):WebInspector.UIString("No"));return fragment;}
_needsRefresh()
{if(this.dataGrid instanceof WebInspector.TimelineDataGrid){this.dataGrid.dataGridNodeNeedsRefresh(this);return;}
if(this._scheduledRefreshIdentifier)
return;this._scheduledRefreshIdentifier=requestAnimationFrame(this.refresh.bind(this));}
_timelineRecordUpdated(event)
{if(this.isRecordVisible(this._record))
this.needsGraphRefresh();}
_dataGridNodeGoToArrowClicked()
{const options={ignoreNetworkTab:true,ignoreSearchTab:true,};WebInspector.showSourceCode(this._resource,options);}
_updateStatus(cell)
{if(this._resource.failed)
cell.classList.add("error");else{cell.classList.remove("error");if(this._resource.finished)
this.createGoToArrowButton(cell,this._dataGridNodeGoToArrowClicked.bind(this));}
if(this._spinner)
this._spinner.element.remove();if(this._resource.finished||this._resource.failed)
return;if(!this._spinner)
this._spinner=new WebInspector.IndeterminateProgressSpinner;let contentElement=cell.firstChild;contentElement.appendChild(this._spinner.element);}
_mouseoverRecordBar(event)
{let recordBar=WebInspector.TimelineRecordBar.fromElement(event.target);if(!recordBar)
return;let calculateTargetFrame=()=>{let columnRect=WebInspector.Rect.rectFromClientRect(this.elementWithColumnIdentifier("graph").getBoundingClientRect());let barRect=WebInspector.Rect.rectFromClientRect(event.target.getBoundingClientRect());return columnRect.intersectionWithRect(barRect);};let targetFrame=calculateTargetFrame();if(!targetFrame.size.width&&!targetFrame.size.height)
return;let resource=recordBar.records[0].resource;if(!resource.timingData)
return;if(!resource.timingData.responseEnd)
return;if(this.dataGrid._dismissPopoverTimeout){clearTimeout(this.dataGrid._dismissPopoverTimeout);this.dataGrid._dismissPopoverTimeout=undefined;}
let popoverContentElement=document.createElement("div");popoverContentElement.classList.add("resource-timing-popover-content");if(resource.failed||resource.urlComponents.scheme==="data"||(resource.cached&&resource.statusCode!==304)){let descriptionElement=document.createElement("span");descriptionElement.classList.add("description");if(resource.failed)
descriptionElement.textContent=WebInspector.UIString("Resource failed to load.");else if(resource.urlComponents.scheme==="data")
descriptionElement.textContent=WebInspector.UIString("Resource was loaded with the “data“ scheme.");else
descriptionElement.textContent=WebInspector.UIString("Resource was served from the cache.");popoverContentElement.appendChild(descriptionElement);}else{let columns={description:{width:"80px"},graph:{width:`${WebInspector.ResourceTimelineDataGridNode.PopoverGraphColumnWidthPixels}px`},duration:{width:"70px",aligned:"right"}};let popoverDataGrid=new WebInspector.DataGrid(columns);popoverDataGrid.inline=true;popoverDataGrid.headerVisible=false;popoverContentElement.appendChild(popoverDataGrid.element);let graphDataSource={get secondsPerPixel(){return resource.duration/WebInspector.ResourceTimelineDataGridNode.PopoverGraphColumnWidthPixels;},get zeroTime(){return resource.firstTimestamp;},get startTime(){return resource.firstTimestamp;},get currentTime(){return this.endTime;},get endTime()
{let endTimePadding=this.secondsPerPixel*WebInspector.TimelineRecordBar.MinimumWidthPixels;return resource.lastTimestamp+endTimePadding;}};let secondTimestamp=resource.timingData.domainLookupStart||resource.timingData.connectStart||resource.timingData.requestStart;if(secondTimestamp-resource.timingData.startTime)
popoverDataGrid.appendChild(new WebInspector.ResourceTimingPopoverDataGridNode(WebInspector.UIString("Stalled"),resource.timingData.startTime,secondTimestamp,graphDataSource));if(resource.timingData.domainLookupStart)
popoverDataGrid.appendChild(new WebInspector.ResourceTimingPopoverDataGridNode(WebInspector.UIString("DNS"),resource.timingData.domainLookupStart,resource.timingData.domainLookupEnd,graphDataSource));if(resource.timingData.connectStart)
popoverDataGrid.appendChild(new WebInspector.ResourceTimingPopoverDataGridNode(WebInspector.UIString("Connection"),resource.timingData.connectStart,resource.timingData.connectEnd,graphDataSource));if(resource.timingData.secureConnectionStart)
popoverDataGrid.appendChild(new WebInspector.ResourceTimingPopoverDataGridNode(WebInspector.UIString("Secure"),resource.timingData.secureConnectionStart,resource.timingData.connectEnd,graphDataSource));popoverDataGrid.appendChild(new WebInspector.ResourceTimingPopoverDataGridNode(WebInspector.UIString("Request"),resource.timingData.requestStart,resource.timingData.responseStart,graphDataSource));popoverDataGrid.appendChild(new WebInspector.ResourceTimingPopoverDataGridNode(WebInspector.UIString("Response"),resource.timingData.responseStart,resource.timingData.responseEnd,graphDataSource));const higherResolution=true;let totalData={description:WebInspector.UIString("Total time"),duration:Number.secondsToMillisecondsString(resource.timingData.responseEnd-resource.timingData.startTime,higherResolution)};popoverDataGrid.appendChild(new WebInspector.DataGridNode(totalData));popoverDataGrid.updateLayout();}
if(!this.dataGrid._popover)
this.dataGrid._popover=new WebInspector.Popover;let preferredEdges=[WebInspector.RectEdge.MAX_Y,WebInspector.RectEdge.MIN_Y,WebInspector.RectEdge.MIN_X];this.dataGrid._popover.windowResizeHandler=()=>{let bounds=calculateTargetFrame();this.dataGrid._popover.present(bounds.pad(2),preferredEdges);};recordBar.element.addEventListener("mouseleave",()=>{if(!this.dataGrid)
return;this.dataGrid._dismissPopoverTimeout=setTimeout(()=>{if(this.dataGrid)
this.dataGrid._popover.dismiss();},WebInspector.ResourceTimelineDataGridNode.DelayedPopoverDismissalTimeout);},{once:true});this.dataGrid._popover.presentNewContentWithFrame(popoverContentElement,targetFrame.pad(2),preferredEdges);}};WebInspector.ResourceTimelineDataGridNode.PopoverGraphColumnWidthPixels=110;WebInspector.ResourceTimelineDataGridNode.DelayedPopoverDismissalTimeout=500;WebInspector.ResourceTimingPopoverDataGridNode=class ResourceTimingPopoverDataGridNode extends WebInspector.TimelineDataGridNode
{constructor(description,startTime,endTime,graphDataSource)
{super(true,graphDataSource);const higherResolution=true;let duration=Number.secondsToMillisecondsString(endTime-startTime,higherResolution);this._data={description,duration};this._record=new WebInspector.TimelineRecord(WebInspector.TimelineRecord.Type.Network,startTime,endTime);}
get records(){return[this._record];}
get data(){return this._data;}
get selectable(){return false;}
createCellContent(columnIdentifier,cell)
{let value=this.data[columnIdentifier];switch(columnIdentifier){case"description":case"duration":return value||emDash;}
return super.createCellContent(columnIdentifier,cell);}};WebInspector.RulesStyleDetailsPanel=class RulesStyleDetailsPanel extends WebInspector.StyleDetailsPanel
{constructor(delegate)
{super(delegate,"rules","rules",WebInspector.UIString("Styles \u2014 Rules"));this._sections=[];this._inspectorSection=null;this._isInspectorSectionPendingFocus=false;this._ruleMediaAndInherticanceList=[];this._propertyToSelectAndHighlight=null;this._emptyFilterResultsElement=document.createElement("div");this._emptyFilterResultsElement.classList.add("no-filter-results");this._emptyFilterResultsMessage=document.createElement("div");this._emptyFilterResultsMessage.classList.add("no-filter-results-message");this._emptyFilterResultsMessage.textContent=WebInspector.UIString("No Results Found");this._emptyFilterResultsElement.appendChild(this._emptyFilterResultsMessage);this._boundRemoveSectionWithActiveEditor=this._removeSectionWithActiveEditor.bind(this);}
refresh(significantChange)
{
if(!significantChange){super.refresh();return;}
if(!this._forceSignificantChange){this._sectionWithActiveEditor=null;for(var section of this._sections){if(!section.editorActive)
continue;this._sectionWithActiveEditor=section;break;}
if(this._sectionWithActiveEditor){this._sectionWithActiveEditor.addEventListener(WebInspector.CSSStyleDeclarationSection.Event.Blurred,this._boundRemoveSectionWithActiveEditor);return;}}
var newSections=[];var newDOMFragment=document.createDocumentFragment();var previousMediaList=[];var previousSection=null;var pseudoElements=this.nodeStyles.pseudoElements;var pseudoElementsStyle=[];for(var pseudoIdentifier in pseudoElements)
pseudoElementsStyle=pseudoElementsStyle.concat(pseudoElements[pseudoIdentifier].orderedStyles);var orderedPseudoStyles=uniqueOrderedStyles(pseudoElementsStyle);if(orderedPseudoStyles.length)
orderedPseudoStyles.reverse();function mediaListsEqual(a,b)
{a=a||[];b=b||[];if(a.length!==b.length)
return false;for(var i=0;i<a.length;++i){var aMedia=a[i];var bMedia=b[i];if(aMedia.type!==bMedia.type)
return false;if(aMedia.text!==bMedia.text)
return false;if(!aMedia.sourceCodeLocation&&bMedia.sourceCodeLocation)
return false;if(aMedia.sourceCodeLocation&&!aMedia.sourceCodeLocation.isEqual(bMedia.sourceCodeLocation))
return false;}
return true;}
function uniqueOrderedStyles(orderedStyles)
{var uniqueStyles=[];for(var style of orderedStyles){var rule=style.ownerRule;if(!rule){uniqueStyles.push(style);continue;}
var found=false;for(var existingStyle of uniqueStyles){if(rule.isEqualTo(existingStyle.ownerRule)){found=true;break;}}
if(!found)
uniqueStyles.push(style);}
return uniqueStyles;}
function appendStyleSection(style)
{var section=style.__rulesSection;if(!section){section=new WebInspector.CSSStyleDeclarationSection(this,style);style.__rulesSection=section;}else
section.refresh();if(this._isInspectorSectionPendingFocus&&style.isInspectorRule())
this._inspectorSection=section;section.lastInGroup=false;newDOMFragment.appendChild(section.element);newSections.push(section);previousSection=section;}
function insertMediaOrInheritanceLabel(style)
{if(previousSection&&previousSection.style.type===WebInspector.CSSStyleDeclaration.Type.Inline)
previousSection.lastInGroup=true;var hasMediaOrInherited=[];if(previousSection&&previousSection.style.node!==style.node){previousSection.lastInGroup=true;var prefixElement=document.createElement("strong");prefixElement.textContent=WebInspector.UIString("Inherited From: ");let inheritedLabel=newDOMFragment.appendChild(document.createElement("div"));inheritedLabel.className="label";inheritedLabel.appendChild(prefixElement);inheritedLabel.appendChild(WebInspector.linkifyNodeReference(style.node,{maxLength:100,excludeRevealElement:true,}));hasMediaOrInherited.push(inheritedLabel);}
var currentMediaList=(style.ownerRule&&style.ownerRule.mediaList)||[];if(!mediaListsEqual(previousMediaList,currentMediaList)){previousMediaList=currentMediaList;
if(previousSection)
previousSection.lastInGroup=true;for(var media of currentMediaList){var prefixElement=document.createElement("strong");prefixElement.textContent=WebInspector.UIString("Media: ");var mediaLabel=document.createElement("div");mediaLabel.className="label";mediaLabel.append(prefixElement,media.text);if(media.sourceCodeLocation){const options={dontFloat:true,ignoreNetworkTab:true,ignoreSearchTab:true,};mediaLabel.append(" \u2014 ",WebInspector.createSourceCodeLocationLink(media.sourceCodeLocation,options));}
newDOMFragment.appendChild(mediaLabel);hasMediaOrInherited.push(mediaLabel);}}
if(!hasMediaOrInherited.length&&style.type!==WebInspector.CSSStyleDeclaration.Type.Inline){if(previousSection&&!previousSection.lastInGroup)
hasMediaOrInherited=this._ruleMediaAndInherticanceList.lastValue;else{var prefixElement=document.createElement("strong");prefixElement.textContent=WebInspector.UIString("Media: ");var mediaLabel=document.createElement("div");mediaLabel.className="label";mediaLabel.append(prefixElement,"all");newDOMFragment.appendChild(mediaLabel);hasMediaOrInherited.push(mediaLabel);}}
this._ruleMediaAndInherticanceList.push(hasMediaOrInherited);}
function insertAllMatchingPseudoStyles(force)
{if(!orderedPseudoStyles.length)
return;if(force){for(var j=orderedPseudoStyles.length-1;j>=0;--j){var pseudoStyle=orderedPseudoStyles[j];insertMediaOrInheritanceLabel.call(this,pseudoStyle);appendStyleSection.call(this,pseudoStyle);}
orderedPseudoStyles=[];}
if(!previousSection)
return;var ownerRule=previousSection.style.ownerRule;if(!ownerRule)
return;for(var j=orderedPseudoStyles.length-1;j>=0;--j){var pseudoStyle=orderedPseudoStyles[j];if(!pseudoStyle.ownerRule.selectorIsGreater(ownerRule.mostSpecificSelector))
continue;insertMediaOrInheritanceLabel.call(this,pseudoStyle);appendStyleSection.call(this,pseudoStyle);ownerRule=pseudoStyle.ownerRule;orderedPseudoStyles.splice(j,1);}}
this._ruleMediaAndInherticanceList=[];var orderedStyles=uniqueOrderedStyles(this.nodeStyles.orderedStyles);for(var style of orderedStyles){var isUserAgentStyle=style.ownerRule&&style.ownerRule.type===WebInspector.CSSStyleSheet.Type.UserAgent;insertAllMatchingPseudoStyles.call(this,isUserAgentStyle||style.inherited);insertMediaOrInheritanceLabel.call(this,style);appendStyleSection.call(this,style);}
insertAllMatchingPseudoStyles.call(this,true);if(previousSection)
previousSection.lastInGroup=true;this.element.removeChildren();this.element.appendChild(newDOMFragment);this.element.appendChild(this._emptyFilterResultsElement);this._sections=newSections;for(var i=0;i<this._sections.length;++i)
this._sections[i].updateLayout();super.refresh();}
scrollToSectionAndHighlightProperty(property)
{if(!this._visible){this._propertyToSelectAndHighlight=property;return false;}
for(var section of this._sections){if(section.highlightProperty(property))
return true;}
return false;}
cssStyleDeclarationSectionEditorFocused(focusedSection)
{for(let section of this._sections){if(section!==focusedSection)
section.clearSelection();}
this._sectionWithActiveEditor=focusedSection;}
cssStyleDeclarationSectionEditorNextRule(currentSection)
{currentSection.clearSelection();var index=this._sections.indexOf(currentSection);this._sections[index<this._sections.length-1?index+1:0].focusRuleSelector();}
cssStyleDeclarationSectionEditorPreviousRule(currentSection,selectLastProperty){currentSection.clearSelection();if(selectLastProperty||!currentSection.selectorEditable){var index=this._sections.indexOf(currentSection);index=index>0?index-1:this._sections.length-1;var section=this._sections[index];while(section.locked){index=index>0?index-1:this._sections.length-1;section=this._sections[index];}
section.focus();section.selectLastProperty();return;}
currentSection.focusRuleSelector(true);}
filterDidChange(filterBar)
{for(var labels of this._ruleMediaAndInherticanceList){for(var i=0;i<labels.length;++i){labels[i].classList.toggle(WebInspector.CSSStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName,filterBar.hasActiveFilters());if(i===labels.length-1)
labels[i].classList.toggle("filter-matching-label",filterBar.hasActiveFilters());}}
var matchFound=!filterBar.hasActiveFilters();for(var i=0;i<this._sections.length;++i){var section=this._sections[i];if(section.findMatchingPropertiesAndSelectors(filterBar.filters.text)&&filterBar.hasActiveFilters()){if(this._ruleMediaAndInherticanceList[i].length){for(var label of this._ruleMediaAndInherticanceList[i])
label.classList.remove(WebInspector.CSSStyleDetailsSidebarPanel.NoFilterMatchInSectionClassName);}else
section.element.classList.add(WebInspector.CSSStyleDetailsSidebarPanel.FilterMatchingSectionHasLabelClassName);matchFound=true;}}
this.element.classList.toggle("filter-non-matching",!matchFound);}
newRuleButtonClicked()
{if(this.nodeStyles.node.isInUserAgentShadowTree())
return;for(let existingRule of this.nodeStyles.rulesForSelector()){if(this.focusEmptySectionWithStyle(existingRule.style))
return;}
this._isInspectorSectionPendingFocus=true;let newInspectorRuleSelector=this.nodeStyles.node.appropriateSelectorFor(true);this.nodeStyles.addRule(newInspectorRuleSelector);}
newRuleButtonContextMenu(event)
{if(this.nodeStyles.node.isInUserAgentShadowTree())
return;let styleSheets=WebInspector.cssStyleManager.styleSheets.filter(styleSheet=>styleSheet.hasInfo()&&!styleSheet.isInlineStyleTag()&&!styleSheet.isInlineStyleAttributeStyleSheet());if(!styleSheets.length)
return;const justSelector=true;let selector=this.nodeStyles.node.appropriateSelectorFor(justSelector);let contextMenu=WebInspector.ContextMenu.createFromEvent(event);const handler=null;const disabled=true;contextMenu.appendItem(WebInspector.UIString("Available Style Sheets"),handler,disabled);for(let styleSheet of styleSheets){contextMenu.appendItem(styleSheet.displayName,()=>{const text="";this.nodeStyles.addRule(selector,text,styleSheet.id);});}}
sectionForStyle(style)
{if(style.__rulesSection)
return style.__rulesSection;for(let section of this._sections){if(section.style===style)
return section;}
return null;}
focusEmptySectionWithStyle(style)
{if(style.hasProperties())
return false;let section=this.sectionForStyle(style);if(!section)
return false;section.focus();return true;}
shown()
{super.shown();for(var i=0;i<this._sections.length;++i){var section=this._sections[i];section.style.__rulesSection=section;section.updateLayout();}
if(this._sectionWithActiveEditor)
this._sectionWithActiveEditor.refreshEditor();}
hidden()
{super.hidden();
for(var i=0;i<this._sections.length;++i)
delete this._sections[i].style.__rulesSection;}
sizeDidChange()
{for(var i=0;i<this._sections.length;++i)
this._sections[i].updateLayout();}
nodeStylesRefreshed(event)
{super.nodeStylesRefreshed(event);if(this._propertyToSelectAndHighlight){this.scrollToSectionAndHighlightProperty(this._propertyToSelectAndHighlight);this._propertyToSelectAndHighlight=null;}
if(this._isInspectorSectionPendingFocus){this._isInspectorSectionPendingFocus=false;if(this._inspectorSection){this._inspectorSection.focus();this._inspectorSection=null;}}}
_removeSectionWithActiveEditor(event)
{this._sectionWithActiveEditor.removeEventListener(WebInspector.CSSStyleDeclarationSection.Event.Blurred,this._boundRemoveSectionWithActiveEditor);this.refresh(true);}};WebInspector.ScopeBar=class ScopeBar extends WebInspector.NavigationItem
{constructor(identifier,items,defaultItem,shouldGroupNonExclusiveItems)
{super(identifier);this._element.classList.add("scope-bar");this._items=items;this._defaultItem=defaultItem;this._shouldGroupNonExclusiveItems=shouldGroupNonExclusiveItems||false;this._minimumWidth=0;this._populate();}
get minimumWidth()
{if(!this._minimumWidth){
this.element.style.flexWrap="initial !important";if(this._multipleItem)
this._multipleItem.displayWidestItem();this._minimumWidth=this.element.realOffsetWidth;this.element.style.flexWrap=null;if(this._multipleItem)
this._multipleItem.displaySelectedItem();}
return this._minimumWidth;}
get defaultItem()
{return this._defaultItem;}
get items()
{return this._items;}
item(id)
{return this._itemsById.get(id);}
get selectedItems()
{return this._items.filter((item)=>item.selected);}
hasNonDefaultItemSelected()
{return this._items.some((item)=>item.selected&&item!==this._defaultItem);}
_populate()
{this._itemsById=new Map;if(this._shouldGroupNonExclusiveItems){var nonExclusiveItems=[];for(var item of this._items){this._itemsById.set(item.id,item);if(item.exclusive)
this._element.appendChild(item.element);else
nonExclusiveItems.push(item);item.addEventListener(WebInspector.ScopeBarItem.Event.SelectionChanged,this._itemSelectionDidChange,this);}
this._multipleItem=new WebInspector.MultipleScopeBarItem(nonExclusiveItems);this._element.appendChild(this._multipleItem.element);}else{for(var item of this._items){this._itemsById.set(item.id,item);this._element.appendChild(item.element);item.addEventListener(WebInspector.ScopeBarItem.Event.SelectionChanged,this._itemSelectionDidChange,this);}}
if(!this.selectedItems.length&&this._defaultItem)
this._defaultItem.selected=true;this._element.classList.toggle("default-item-selected",this._defaultItem.selected);}
_itemSelectionDidChange(event)
{var sender=event.target;var item;if(sender.exclusive&&sender.selected){for(var i=0;i<this._items.length;++i){item=this._items[i];if(item!==sender)
item.selected=false;}}else{var replacesCurrentSelection=this._shouldGroupNonExclusiveItems||!event.data.withModifier;for(var i=0;i<this._items.length;++i){item=this._items[i];if(item.exclusive&&item!==sender&&sender.selected)
item.selected=false;else if(sender.selected&&replacesCurrentSelection&&sender!==item)
item.selected=false;}}
if(!this.selectedItems.length&&this._defaultItem)
this._defaultItem.selected=true;this._element.classList.toggle("default-item-selected",this._defaultItem.selected);this.dispatchEventToListeners(WebInspector.ScopeBar.Event.SelectionChanged);}};WebInspector.ScopeBar.Event={SelectionChanged:"scopebar-selection-did-change"};WebInspector.ScopeBarItem=class ScopeBarItem extends WebInspector.Object
{constructor(id,label,exclusive,className)
{super();this._element=document.createElement("li");this._element.classList.toggle("exclusive",!!exclusive);if(className)
this._element.classList.add(className);this._element.textContent=label;this._element.addEventListener("mousedown",this._handleMouseDown.bind(this));this._id=id;this._label=label;this._exclusive=exclusive;this._selectedSetting=new WebInspector.Setting("scopebaritem-"+id,false);this._element.classList.toggle("selected",this._selectedSetting.value);}
get element()
{return this._element;}
get id()
{return this._id;}
get label()
{return this._label;}
get exclusive()
{return this._exclusive;}
get selected()
{return this._selectedSetting.value;}
set selected(selected)
{this.setSelected(selected,false);}
setSelected(selected,withModifier)
{if(this._selectedSetting.value===selected)
return;this._element.classList.toggle("selected",selected);this._selectedSetting.value=selected;this.dispatchEventToListeners(WebInspector.ScopeBarItem.Event.SelectionChanged,{withModifier});}
_handleMouseDown(event)
{if(event.button!==0)
return;this.setSelected(!this.selected,event.metaKey&&!event.ctrlKey&&!event.altKey&&!event.shiftKey);}};WebInspector.ScopeBarItem.Event={SelectionChanged:"scope-bar-item-selection-did-change"};WebInspector.ScopeChainDetailsSidebarPanel=class ScopeChainDetailsSidebarPanel extends WebInspector.DetailsSidebarPanel
{constructor()
{super("scope-chain",WebInspector.UIString("Scope Chain"));this._callFrame=null;this._watchExpressionsSetting=new WebInspector.Setting("watch-expressions",[]);this._watchExpressionsSetting.addEventListener(WebInspector.Setting.Event.Changed,this._updateWatchExpressionsNavigationBar,this);this._watchExpressionOptionsElement=document.createElement("div");this._watchExpressionOptionsElement.classList.add("options");this._navigationBar=new WebInspector.NavigationBar;this._watchExpressionOptionsElement.appendChild(this._navigationBar.element);let addWatchExpressionButton=new WebInspector.ButtonNavigationItem("add-watch-expression",WebInspector.UIString("Add watch expression"),"Images/Plus13.svg",13,13);addWatchExpressionButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._addWatchExpressionButtonClicked,this);this._navigationBar.addNavigationItem(addWatchExpressionButton);this._clearAllWatchExpressionButton=new WebInspector.ButtonNavigationItem("clear-watch-expressions",WebInspector.UIString("Clear watch expressions"),"Images/NavigationItemTrash.svg",14,14);this._clearAllWatchExpressionButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._clearAllWatchExpressionsButtonClicked,this);this._navigationBar.addNavigationItem(this._clearAllWatchExpressionButton);this._refreshAllWatchExpressionButton=new WebInspector.ButtonNavigationItem("refresh-watch-expressions",WebInspector.UIString("Refresh watch expressions"),"Images/ReloadFull.svg",13,13);this._refreshAllWatchExpressionButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._refreshAllWatchExpressionsButtonClicked,this);this._navigationBar.addNavigationItem(this._refreshAllWatchExpressionButton);this._watchExpressionsSectionGroup=new WebInspector.DetailsSectionGroup;this._watchExpressionsSection=new WebInspector.DetailsSection("watch-expressions",WebInspector.UIString("Watch Expressions"),[this._watchExpressionsSectionGroup],this._watchExpressionOptionsElement);this.contentView.element.appendChild(this._watchExpressionsSection.element);this._updateWatchExpressionsNavigationBar();this.needsLayout();WebInspector.runtimeManager.addEventListener(WebInspector.RuntimeManager.Event.DidEvaluate,this._didEvaluateExpression,this);WebInspector.runtimeManager.addEventListener(WebInspector.RuntimeManager.Event.ActiveExecutionContextChanged,this._activeExecutionContextChanged,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange,this._activeCallFrameDidChange,this);}
inspect(objects)
{if(!(objects instanceof Array))
objects=[objects];var callFrameToInspect=null;for(var i=0;i<objects.length;++i){if(!(objects[i]instanceof WebInspector.CallFrame))
continue;callFrameToInspect=objects[i];break;}
this.callFrame=callFrameToInspect;return true;}
get callFrame()
{return this._callFrame;}
set callFrame(callFrame)
{if(callFrame===this._callFrame)
return;this._callFrame=callFrame;this.needsLayout();}
layout()
{let callFrame=this._callFrame;Promise.all([this._generateWatchExpressionsSection(),this._generateCallFramesSection()]).then(function(sections){let[watchExpressionsSection,callFrameSections]=sections;function delayedWork()
{clearTimeout(timeout);if(watchExpressionsSection)
this._watchExpressionsSectionGroup.rows=[watchExpressionsSection];else{let emptyRow=new WebInspector.DetailsSectionRow(WebInspector.UIString("No Watch Expressions"));this._watchExpressionsSectionGroup.rows=[emptyRow];emptyRow.showEmptyMessage();}
this.contentView.element.removeChildren();this.contentView.element.appendChild(this._watchExpressionsSection.element);if(this._callFrame!==callFrame)
return;if(!callFrameSections)
return;for(let callFrameSection of callFrameSections)
this.contentView.element.appendChild(callFrameSection.element);}
let delay=WebInspector.ScopeChainDetailsSidebarPanel._autoExpandProperties.size===0?50:250;let timeout=setTimeout(delayedWork.bind(this),delay);
InspectorBackend.runAfterPendingDispatches(delayedWork.bind(this));}.bind(this)).catch(function(e){console.error(e);});}
_generateCallFramesSection()
{let callFrame=this._callFrame;if(!callFrame)
return Promise.resolve(null);let detailsSections=[];let foundLocalScope=false;let sectionCountByType=new Map;for(let type in WebInspector.ScopeChainNode.Type)
sectionCountByType.set(WebInspector.ScopeChainNode.Type[type],0);let scopeChain=callFrame.mergedScopeChain();for(let scope of scopeChain){if(scope.empty&&scope.type!==WebInspector.ScopeChainNode.Type.Local)
continue;let title=null;let extraPropertyDescriptor=null;let collapsedByDefault=false;let count=sectionCountByType.get(scope.type);sectionCountByType.set(scope.type,++count);switch(scope.type){case WebInspector.ScopeChainNode.Type.Local:foundLocalScope=true;collapsedByDefault=false;title=WebInspector.UIString("Local Variables");if(callFrame.thisObject)
extraPropertyDescriptor=new WebInspector.PropertyDescriptor({name:"this",value:callFrame.thisObject});break;case WebInspector.ScopeChainNode.Type.Closure:if(scope.__baseClosureScope&&scope.name)
title=WebInspector.UIString("Closure Variables (%s)").format(scope.name);else
title=WebInspector.UIString("Closure Variables");collapsedByDefault=false;break;case WebInspector.ScopeChainNode.Type.Block:title=WebInspector.UIString("Block Variables");collapsedByDefault=false;break;case WebInspector.ScopeChainNode.Type.Catch:title=WebInspector.UIString("Catch Variables");collapsedByDefault=false;break;case WebInspector.ScopeChainNode.Type.FunctionName:title=WebInspector.UIString("Function Name Variable");collapsedByDefault=true;break;case WebInspector.ScopeChainNode.Type.With:title=WebInspector.UIString("With Object Properties");collapsedByDefault=foundLocalScope;break;case WebInspector.ScopeChainNode.Type.Global:title=WebInspector.UIString("Global Variables");collapsedByDefault=true;break;case WebInspector.ScopeChainNode.Type.GlobalLexicalEnvironment:title=WebInspector.UIString("Global Lexical Environment");collapsedByDefault=true;break;}
let detailsSectionIdentifier=scope.type+"-"+sectionCountByType.get(scope.type);let detailsSection=new WebInspector.DetailsSection(detailsSectionIdentifier,title,null,null,collapsedByDefault);
let rows=[];for(let object of scope.objects){let scopePropertyPath=WebInspector.PropertyPath.emptyPropertyPathForScope(object);let objectTree=new WebInspector.ObjectTreeView(object,WebInspector.ObjectTreeView.Mode.Properties,scopePropertyPath);objectTree.showOnlyProperties();if(extraPropertyDescriptor){objectTree.appendExtraPropertyDescriptor(extraPropertyDescriptor);extraPropertyDescriptor=null;}
let treeOutline=objectTree.treeOutline;treeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementAdded,this._treeElementAdded.bind(this,detailsSectionIdentifier),this);treeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementDisclosureDidChanged,this._treeElementDisclosureDidChange.bind(this,detailsSectionIdentifier),this);rows.push(new WebInspector.ObjectPropertiesDetailSectionRow(objectTree,detailsSection));}
detailsSection.groups[0].rows=rows;detailsSections.push(detailsSection);}
return Promise.resolve(detailsSections);}
_generateWatchExpressionsSection()
{let watchExpressions=this._watchExpressionsSetting.value;if(!watchExpressions.length){if(this._usedWatchExpressionsObjectGroup){this._usedWatchExpressionsObjectGroup=false;for(let target of WebInspector.targets)
target.RuntimeAgent.releaseObjectGroup(WebInspector.ScopeChainDetailsSidebarPanel.WatchExpressionsObjectGroupName);}
return Promise.resolve(null);}
for(let target of WebInspector.targets)
target.RuntimeAgent.releaseObjectGroup(WebInspector.ScopeChainDetailsSidebarPanel.WatchExpressionsObjectGroupName);this._usedWatchExpressionsObjectGroup=true;let watchExpressionsRemoteObject=WebInspector.RemoteObject.createFakeRemoteObject();let fakePropertyPath=WebInspector.PropertyPath.emptyPropertyPathForScope(watchExpressionsRemoteObject);let objectTree=new WebInspector.ObjectTreeView(watchExpressionsRemoteObject,WebInspector.ObjectTreeView.Mode.Properties,fakePropertyPath);objectTree.showOnlyProperties();let treeOutline=objectTree.treeOutline;const watchExpressionSectionIdentifier="watch-expressions";treeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementAdded,this._treeElementAdded.bind(this,watchExpressionSectionIdentifier),this);treeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementDisclosureDidChanged,this._treeElementDisclosureDidChange.bind(this,watchExpressionSectionIdentifier),this);treeOutline.objectTreeElementAddContextMenuItems=this._objectTreeElementAddContextMenuItems.bind(this);let promises=[];for(let expression of watchExpressions){promises.push(new Promise(function(resolve,reject){let options={objectGroup:WebInspector.ScopeChainDetailsSidebarPanel.WatchExpressionsObjectGroupName,includeCommandLineAPI:false,doNotPauseOnExceptionsAndMuteConsole:true,returnByValue:false,generatePreview:true,saveResult:false};WebInspector.runtimeManager.evaluateInInspectedWindow(expression,options,function(object,wasThrown){if(!object)
return;let propertyDescriptor=new WebInspector.PropertyDescriptor({name:expression,value:object},undefined,undefined,wasThrown);objectTree.appendExtraPropertyDescriptor(propertyDescriptor);resolve(propertyDescriptor);});}));}
return Promise.all(promises).then(function(){return Promise.resolve(new WebInspector.ObjectPropertiesDetailSectionRow(objectTree));});}
_addWatchExpression(expression)
{let watchExpressions=this._watchExpressionsSetting.value.slice(0);watchExpressions.push(expression);this._watchExpressionsSetting.value=watchExpressions;this.needsLayout();}
_removeWatchExpression(expression)
{let watchExpressions=this._watchExpressionsSetting.value.slice(0);watchExpressions.remove(expression,true);this._watchExpressionsSetting.value=watchExpressions;this.needsLayout();}
_clearAllWatchExpressions()
{this._watchExpressionsSetting.value=[];this.needsLayout();}
_addWatchExpressionButtonClicked(event)
{function presentPopoverOverTargetElement()
{let target=WebInspector.Rect.rectFromClientRect(event.target.element.getBoundingClientRect());popover.present(target,[WebInspector.RectEdge.MAX_Y,WebInspector.RectEdge.MIN_Y,WebInspector.RectEdge.MAX_X]);}
let popover=new WebInspector.Popover(this);let content=document.createElement("div");content.classList.add("watch-expression");content.appendChild(document.createElement("div")).textContent=WebInspector.UIString("Add New Watch Expression");let editorElement=content.appendChild(document.createElement("div"));editorElement.classList.add("watch-expression-editor",WebInspector.SyntaxHighlightedStyleClassName);this._codeMirror=WebInspector.CodeMirrorEditor.create(editorElement,{lineWrapping:true,mode:"text/javascript",indentWithTabs:true,indentUnit:4,matchBrackets:true,value:"",});this._popoverCommitted=false;this._codeMirror.addKeyMap({"Enter":()=>{this._popoverCommitted=true;popover.dismiss();},});let completionController=new WebInspector.CodeMirrorCompletionController(this._codeMirror);completionController.addExtendedCompletionProvider("javascript",WebInspector.javaScriptRuntimeCompletionProvider);let previousHeight=0;this._codeMirror.on("changes",function(cm,event){let height=cm.getScrollInfo().height;if(previousHeight!==height){previousHeight=height;popover.update(false);}});popover.content=content;popover.windowResizeHandler=presentPopoverOverTargetElement;presentPopoverOverTargetElement();setTimeout(()=>{this._codeMirror.refresh();this._codeMirror.focus();popover.update();},0);}
willDismissPopover(popover)
{if(this._popoverCommitted){let expression=this._codeMirror.getValue().trim();if(expression)
this._addWatchExpression(expression);}
this._codeMirror=null;}
_refreshAllWatchExpressionsButtonClicked(event)
{this.needsLayout();}
_clearAllWatchExpressionsButtonClicked(event)
{this._clearAllWatchExpressions();}
_didEvaluateExpression(event)
{if(event.data.objectGroup===WebInspector.ScopeChainDetailsSidebarPanel.WatchExpressionsObjectGroupName)
return;this.needsLayout();}
_activeExecutionContextChanged()
{this.needsLayout();}
_activeCallFrameDidChange()
{this.needsLayout();}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;this.needsLayout();}
_objectTreeElementAddContextMenuItems(objectTreeElement,contextMenu)
{if(objectTreeElement.parent!==objectTreeElement.treeOutline)
return;contextMenu.appendItem(WebInspector.UIString("Remove Watch Expression"),()=>{let expression=objectTreeElement.property.name;this._removeWatchExpression(expression);});}
_propertyPathIdentifierForTreeElement(identifier,objectPropertyTreeElement)
{if(!objectPropertyTreeElement.property)
return null;let propertyPath=objectPropertyTreeElement.thisPropertyPath();if(propertyPath.isFullPathImpossible())
return null;return identifier+"-"+propertyPath.fullPath;}
_treeElementAdded(identifier,event)
{let treeElement=event.data.element;let propertyPathIdentifier=this._propertyPathIdentifierForTreeElement(identifier,treeElement);if(!propertyPathIdentifier)
return;if(WebInspector.ScopeChainDetailsSidebarPanel._autoExpandProperties.has(propertyPathIdentifier))
treeElement.expand();}
_treeElementDisclosureDidChange(identifier,event)
{let treeElement=event.data.element;let propertyPathIdentifier=this._propertyPathIdentifierForTreeElement(identifier,treeElement);if(!propertyPathIdentifier)
return;if(treeElement.expanded)
WebInspector.ScopeChainDetailsSidebarPanel._autoExpandProperties.add(propertyPathIdentifier);else
WebInspector.ScopeChainDetailsSidebarPanel._autoExpandProperties.delete(propertyPathIdentifier);}
_updateWatchExpressionsNavigationBar()
{let enabled=this._watchExpressionsSetting.value.length;this._refreshAllWatchExpressionButton.enabled=enabled;this._clearAllWatchExpressionButton.enabled=enabled;}};WebInspector.ScopeChainDetailsSidebarPanel._autoExpandProperties=new Set;WebInspector.ScopeChainDetailsSidebarPanel.WatchExpressionsObjectGroupName="watch-expressions";WebInspector.ScopeRadioButtonNavigationItem=class ScopeRadioButtonNavigationItem extends WebInspector.RadioButtonNavigationItem
{constructor(identifier,toolTip,scopeItems,defaultScopeItem)
{super(identifier,toolTip);this._scopeItems=scopeItems||[];this._element.classList.add("scope-radio-button-navigation-item");this._element.title=defaultScopeItem?defaultScopeItem.label:this._scopeItems[0].label;this._scopeItemSelect=document.createElement("select");this._scopeItemSelect.classList.add("scope-radio-button-item-select");for(var item of this._scopeItems){var option=document.createElement("option");option.value=item.identifier;option.text=item.label;this._scopeItemSelect.appendChild(option);}
this.selectedItemIdentifier=defaultScopeItem?defaultScopeItem.identifier:this._scopeItems[0].identifier;this._scopeItemSelect.addEventListener("change",this._handleItemChanged.bind(this));this._element.appendChild(this._scopeItemSelect);this._element.appendChild(useSVGSymbol("Images/UpDownArrows.svg","arrows"));}
set selectedItemIdentifier(identifier)
{if(!identifier)
return;this._scopeItemSelect.value=identifier;}
get selectedItemIdentifier()
{return this._scopeItemSelect.value;}
dontPreventDefaultOnNavigationBarMouseDown()
{return true;}
_handleItemChanged()
{var selectedItemIdentifier;for(var item of this._scopeItems){if(item.identifier!==this.selectedItemIdentifier)
continue;selectedItemIdentifier=item;break;}
this._element.title=selectedItemIdentifier.label;this.dispatchEventToListeners(WebInspector.ScopeRadioButtonNavigationItem.Event.SelectedItemChanged);}};WebInspector.ScopeRadioButtonNavigationItem.Event={SelectedItemChanged:"scope-radio-button-navigation-item-selected-item-changed"};WebInspector.ScriptClusterTimelineView=class ScriptClusterTimelineView extends WebInspector.ClusterContentView
{constructor(timeline,extraArguments)
{super(timeline);this._currentContentViewSetting=new WebInspector.Setting("script-cluster-timeline-view-current-view",WebInspector.ScriptClusterTimelineView.EventsIdentifier);let showSelectorArrows=this._canShowProfileView();function createPathComponent(displayName,className,identifier)
{let pathComponent=new WebInspector.HierarchicalPathComponent(displayName,className,identifier,false,showSelectorArrows);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this._pathComponentSelected,this);pathComponent.comparisonData=timeline;return pathComponent;}
this._eventsPathComponent=createPathComponent.call(this,WebInspector.UIString("Events"),"events-icon",WebInspector.ScriptClusterTimelineView.EventsIdentifier);this._profilePathComponent=createPathComponent.call(this,WebInspector.UIString("Call Trees"),"call-trees-icon",WebInspector.ScriptClusterTimelineView.ProfileIdentifier);if(this._canShowProfileView()){this._eventsPathComponent.nextSibling=this._profilePathComponent;this._profilePathComponent.previousSibling=this._eventsPathComponent;}
this._eventsContentView=new WebInspector.ScriptDetailsTimelineView(this.representedObject,extraArguments);this._profileContentView=this._canShowProfileView()?new WebInspector.ScriptProfileTimelineView(this.representedObject,extraArguments):null;this._showContentViewForIdentifier(this._currentContentViewSetting.value);this.contentViewContainer.addEventListener(WebInspector.ContentViewContainer.Event.CurrentContentViewDidChange,this._scriptClusterViewCurrentContentViewDidChange,this);}
get showsLiveRecordingData(){return this._contentViewContainer.currentContentView.showsLiveRecordingData;}
get showsFilterBar(){return this._contentViewContainer.currentContentView.showsFilterBar;}
get zeroTime(){return this._contentViewContainer.currentContentView.zeroTime;}
set zeroTime(x){this._contentViewContainer.currentContentView.zeroTime=x;}
get startTime(){return this._contentViewContainer.currentContentView.startTime;}
set startTime(x){this._contentViewContainer.currentContentView.startTime=x;}
get endTime(){return this._contentViewContainer.currentContentView.endTime;}
set endTime(x){this._contentViewContainer.currentContentView.endTime=x;}
get currentTime(){return this._contentViewContainer.currentContentView.currentTime;}
set currentTime(x){this._contentViewContainer.currentContentView.currentTime=x;}
selectRecord(record){this._contentViewContainer.currentContentView.selectRecord(record);}
updateFilter(filters){return this._contentViewContainer.currentContentView.updateFilter(filters);}
filterDidChange(){return this._contentViewContainer.currentContentView.filterDidChange();}
matchDataGridNodeAgainstCustomFilters(node){return this._contentViewContainer.currentContentView.matchDataGridNodeAgainstCustomFilters(node);}
reset()
{this._eventsContentView.reset();if(this._profileContentView)
this._profileContentView.reset();}
get eventsContentView()
{return this._eventsContentView;}
get profileContentView()
{return this._profileContentView;}
get selectionPathComponents()
{let currentContentView=this._contentViewContainer.currentContentView;if(!currentContentView)
return[];let components=[this._pathComponentForContentView(currentContentView)];let subComponents=currentContentView.selectionPathComponents;if(subComponents)
return components.concat(subComponents);return components;}
saveToCookie(cookie)
{cookie[WebInspector.ScriptClusterTimelineView.ContentViewIdentifierCookieKey]=this._currentContentViewSetting.value;}
restoreFromCookie(cookie)
{this._showContentViewForIdentifier(cookie[WebInspector.ScriptClusterTimelineView.ContentViewIdentifierCookieKey]);}
showEvents()
{return this._showContentViewForIdentifier(WebInspector.ScriptClusterTimelineView.EventsIdentifier);}
showProfile()
{if(!this._canShowProfileView())
return this.showEvents();return this._showContentViewForIdentifier(WebInspector.ScriptClusterTimelineView.ProfileIdentifier);}
_canShowProfileView()
{return window.ScriptProfilerAgent;}
_pathComponentForContentView(contentView)
{if(!contentView)
return null;if(contentView===this._eventsContentView)
return this._eventsPathComponent;if(contentView===this._profileContentView)
return this._profilePathComponent;console.error("Unknown contentView.");return null;}
_identifierForContentView(contentView)
{if(!contentView)
return null;if(contentView===this._eventsContentView)
return WebInspector.ScriptClusterTimelineView.EventsIdentifier;if(contentView===this._profileContentView)
return WebInspector.ScriptClusterTimelineView.ProfileIdentifier;console.error("Unknown contentView.");return null;}
_showContentViewForIdentifier(identifier)
{let contentViewToShow=null;switch(identifier){case WebInspector.ScriptClusterTimelineView.EventsIdentifier:contentViewToShow=this.eventsContentView;break;case WebInspector.ScriptClusterTimelineView.ProfileIdentifier:contentViewToShow=this.profileContentView;break;}
if(!contentViewToShow)
contentViewToShow=this.eventsContentView;this._currentContentViewSetting.value=this._identifierForContentView(contentViewToShow);return this.contentViewContainer.showContentView(contentViewToShow);}
_pathComponentSelected(event)
{this._showContentViewForIdentifier(event.data.pathComponent.representedObject);}
_scriptClusterViewCurrentContentViewDidChange(event)
{let currentContentView=this._contentViewContainer.currentContentView;if(!currentContentView)
return;let previousContentView=currentContentView===this._eventsContentView?this._profileContentView:this._eventsContentView;currentContentView.zeroTime=previousContentView.zeroTime;currentContentView.startTime=previousContentView.startTime;currentContentView.endTime=previousContentView.endTime;currentContentView.currentTime=previousContentView.currentTime;}};WebInspector.ScriptClusterTimelineView.ContentViewIdentifierCookieKey="script-cluster-timeline-view-identifier";WebInspector.ScriptClusterTimelineView.EventsIdentifier="events";WebInspector.ScriptClusterTimelineView.ProfileIdentifier="profile";WebInspector.ScriptContentView=class ScriptContentView extends WebInspector.ContentView
{constructor(script)
{super(script);this.element.classList.add("script");var spinner=new WebInspector.IndeterminateProgressSpinner;this.element.appendChild(spinner.element);this._script=script;
this._textEditor=new WebInspector.SourceCodeTextEditor(script);this._textEditor.addEventListener(WebInspector.TextEditor.Event.ExecutionLineNumberDidChange,this._executionLineNumberDidChange,this);this._textEditor.addEventListener(WebInspector.TextEditor.Event.NumberOfSearchResultsDidChange,this._numberOfSearchResultsDidChange,this);this._textEditor.addEventListener(WebInspector.TextEditor.Event.FormattingDidChange,this._textEditorFormattingDidChange,this);this._textEditor.addEventListener(WebInspector.SourceCodeTextEditor.Event.ContentWillPopulate,this._contentWillPopulate,this);this._textEditor.addEventListener(WebInspector.SourceCodeTextEditor.Event.ContentDidPopulate,this._contentDidPopulate,this);var toolTip=WebInspector.UIString("Pretty print");var activatedToolTip=WebInspector.UIString("Original formatting");this._prettyPrintButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("pretty-print",toolTip,activatedToolTip,"Images/NavigationItemCurleyBraces.svg",13,13);this._prettyPrintButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._togglePrettyPrint,this);this._prettyPrintButtonNavigationItem.enabled=false;var toolTipTypes=WebInspector.UIString("Show type information");var activatedToolTipTypes=WebInspector.UIString("Hide type information");this._showTypesButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("show-types",toolTipTypes,activatedToolTipTypes,"Images/NavigationItemTypes.svg",13,14);this._showTypesButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._toggleTypeAnnotations,this);this._showTypesButtonNavigationItem.enabled=false;WebInspector.showJavaScriptTypeInformationSetting.addEventListener(WebInspector.Setting.Event.Changed,this._showJavaScriptTypeInformationSettingChanged,this);let toolTipCodeCoverage=WebInspector.UIString("Fade unexecuted code");let activatedToolTipCodeCoverage=WebInspector.UIString("Do not fade unexecuted code");this._codeCoverageButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("code-coverage",toolTipCodeCoverage,activatedToolTipCodeCoverage,"Images/NavigationItemCodeCoverage.svg",13,14);this._codeCoverageButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._toggleUnexecutedCodeHighlights,this);this._codeCoverageButtonNavigationItem.enabled=false;WebInspector.enableControlFlowProfilerSetting.addEventListener(WebInspector.Setting.Event.Changed,this._enableControlFlowProfilerSettingChanged,this);}
get navigationItems()
{return[this._prettyPrintButtonNavigationItem,this._showTypesButtonNavigationItem,this._codeCoverageButtonNavigationItem];}
get script()
{return this._script;}
get textEditor()
{return this._textEditor;}
get supplementalRepresentedObjects()
{if(isNaN(this._textEditor.executionLineNumber))
return[];
return[WebInspector.debuggerManager.activeCallFrame];}
revealPosition(position,textRangeToSelect,forceUnformatted)
{this._textEditor.revealPosition(position,textRangeToSelect,forceUnformatted);}
shown()
{super.shown();this._textEditor.shown();}
hidden()
{super.hidden();this._textEditor.hidden();}
closed()
{super.closed();WebInspector.showJavaScriptTypeInformationSetting.removeEventListener(null,null,this);WebInspector.enableControlFlowProfilerSetting.removeEventListener(null,null,this);this._textEditor.close();}
saveToCookie(cookie)
{cookie.type=WebInspector.ContentViewCookieType.Resource;cookie.url=this.representedObject.url;}
restoreFromCookie(cookie)
{if("lineNumber"in cookie&&"columnNumber"in cookie)
this.revealPosition(new WebInspector.SourceCodePosition(cookie.lineNumber,cookie.columnNumber));}
get supportsSave()
{return true;}
get saveData()
{var url=this._script.url||"web-inspector:///"+encodeURI(this._script.displayName)+".js";return{url,content:this._textEditor.string};}
get supportsSearch()
{return true;}
get numberOfSearchResults()
{return this._textEditor.numberOfSearchResults;}
get hasPerformedSearch()
{return this._textEditor.currentSearchQuery!==null;}
set automaticallyRevealFirstSearchResult(reveal)
{this._textEditor.automaticallyRevealFirstSearchResult=reveal;}
performSearch(query)
{this._textEditor.performSearch(query);}
searchCleared()
{this._textEditor.searchCleared();}
searchQueryWithSelection()
{return this._textEditor.searchQueryWithSelection();}
revealPreviousSearchResult(changeFocus)
{this._textEditor.revealPreviousSearchResult(changeFocus);}
revealNextSearchResult(changeFocus)
{this._textEditor.revealNextSearchResult(changeFocus);}
_contentWillPopulate(event)
{if(this._textEditor.element.parentNode===this.element)
return;if(this._script.urlComponents.scheme==="file")
this._textEditor.readOnly=false;this.element.removeChildren();this.addSubview(this._textEditor);}
_contentDidPopulate(event)
{this._prettyPrintButtonNavigationItem.enabled=this._textEditor.canBeFormatted();this._showTypesButtonNavigationItem.enabled=this._textEditor.canShowTypeAnnotations();this._showTypesButtonNavigationItem.activated=WebInspector.showJavaScriptTypeInformationSetting.value;this._codeCoverageButtonNavigationItem.enabled=this._textEditor.canShowCoverageHints();this._codeCoverageButtonNavigationItem.activated=WebInspector.enableControlFlowProfilerSetting.value;}
_togglePrettyPrint(event)
{var activated=!this._prettyPrintButtonNavigationItem.activated;this._textEditor.updateFormattedState(activated);}
_toggleTypeAnnotations(event)
{this._showTypesButtonNavigationItem.enabled=false;this._textEditor.toggleTypeAnnotations().then(()=>{this._showTypesButtonNavigationItem.enabled=true;});}
_toggleUnexecutedCodeHighlights(event)
{this._codeCoverageButtonNavigationItem.enabled=false;this._textEditor.toggleUnexecutedCodeHighlights().then(()=>{this._codeCoverageButtonNavigationItem.enabled=true;});}
_showJavaScriptTypeInformationSettingChanged(event)
{this._showTypesButtonNavigationItem.activated=WebInspector.showJavaScriptTypeInformationSetting.value;}
_enableControlFlowProfilerSettingChanged(event)
{this._codeCoverageButtonNavigationItem.activated=WebInspector.enableControlFlowProfilerSetting.value;}
_textEditorFormattingDidChange(event)
{this._prettyPrintButtonNavigationItem.activated=this._textEditor.formatted;}
_executionLineNumberDidChange(event)
{this.dispatchEventToListeners(WebInspector.ContentView.Event.SupplementalRepresentedObjectsDidChange);}
_numberOfSearchResultsDidChange(event)
{this.dispatchEventToListeners(WebInspector.ContentView.Event.NumberOfSearchResultsDidChange);}};WebInspector.ScriptDetailsTimelineView=class ScriptDetailsTimelineView extends WebInspector.TimelineView
{constructor(timeline,extraArguments)
{super(timeline,extraArguments);let columns={name:{},location:{},callCount:{},startTime:{},totalTime:{},selfTime:{},averageTime:{}};columns.name.title=WebInspector.UIString("Name");columns.name.width="10%";columns.name.icon=true;columns.name.disclosure=true;columns.name.locked=true;columns.location.title=WebInspector.UIString("Location");columns.location.icon=true;columns.location.width="15%";let isSamplingProfiler=!!window.ScriptProfilerAgent;if(isSamplingProfiler)
columns.callCount.title=WebInspector.UIString("Samples");else{columns.callCount.title=WebInspector.UIString("Calls");}
columns.callCount.width="5%";columns.callCount.aligned="right";columns.startTime.title=WebInspector.UIString("Start Time");columns.startTime.width="10%";columns.startTime.aligned="right";columns.totalTime.title=WebInspector.UIString("Total Time");columns.totalTime.width="10%";columns.totalTime.aligned="right";columns.selfTime.title=WebInspector.UIString("Self Time");columns.selfTime.width="10%";columns.selfTime.aligned="right";columns.averageTime.title=WebInspector.UIString("Average Time");columns.averageTime.width="10%";columns.averageTime.aligned="right";for(var column in columns)
columns[column].sortable=true;this._dataGrid=new WebInspector.ScriptTimelineDataGrid(columns);this._dataGrid.sortDelegate=this;this._dataGrid.sortColumnIdentifier="startTime";this._dataGrid.sortOrder=WebInspector.DataGrid.SortOrder.Ascending;this._dataGrid.createSettings("script-timeline-view");this.setupDataGrid(this._dataGrid);this.element.classList.add("script");this.addSubview(this._dataGrid);timeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._scriptTimelineRecordAdded,this);timeline.addEventListener(WebInspector.Timeline.Event.Refreshed,this._scriptTimelineRecordRefreshed,this);this._pendingRecords=[];}
get showsLiveRecordingData(){return false;}
shown()
{super.shown();this._dataGrid.shown();}
hidden()
{this._dataGrid.hidden();super.hidden();}
closed()
{this.representedObject.removeEventListener(null,null,this);this._dataGrid.closed();}
get selectionPathComponents()
{var dataGridNode=this._dataGrid.selectedNode;if(!dataGridNode)
return null;var pathComponents=[];while(dataGridNode&&!dataGridNode.root){if(dataGridNode.hidden)
return null;let pathComponent=new WebInspector.TimelineDataGridNodePathComponent(dataGridNode);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this.dataGridNodePathComponentSelected,this);pathComponents.unshift(pathComponent);dataGridNode=dataGridNode.parent;}
return pathComponents;}
reset()
{super.reset();this._dataGrid.reset();this._pendingRecords=[];}
dataGridSortComparator(sortColumnIdentifier,sortDirection,node1,node2)
{if(sortColumnIdentifier!=="name")
return null;let displayName1=node1.displayName();let displayName2=node2.displayName();if(displayName1!==displayName2)
return displayName1.extendedLocaleCompare(displayName2)*sortDirection;return node1.subtitle.extendedLocaleCompare(node2.subtitle)*sortDirection;}
dataGridNodePathComponentSelected(event)
{let dataGridNode=event.data.pathComponent.timelineDataGridNode;dataGridNode.revealAndSelect();}
layout()
{if(this.startTime!==this._oldStartTime||this.endTime!==this._oldEndTime){let dataGridNode=this._dataGrid.children[0];while(dataGridNode){dataGridNode.updateRangeTimes(this.startTime,this.endTime);if(dataGridNode.revealed)
dataGridNode.refreshIfNeeded();dataGridNode=dataGridNode.traverseNextNode(false,null,true);}
this._oldStartTime=this.startTime;this._oldEndTime=this.endTime;}
this._processPendingRecords();}
_processPendingRecords()
{if(WebInspector.timelineManager.scriptProfilerIsTracking())
return;if(!this._pendingRecords.length)
return;let zeroTime=this.zeroTime;let startTime=this.startTime;let endTime=this.endTime;for(let scriptTimelineRecord of this._pendingRecords){let rootNodes=[];if(scriptTimelineRecord.profile){rootNodes=scriptTimelineRecord.profile.topDownRootNodes;}
let dataGridNode=new WebInspector.ScriptTimelineDataGridNode(scriptTimelineRecord,zeroTime);this._dataGrid.addRowInSortOrder(null,dataGridNode);for(let profileNode of rootNodes){let profileNodeDataGridNode=new WebInspector.ProfileNodeDataGridNode(profileNode,zeroTime,startTime,endTime);this._dataGrid.addRowInSortOrder(null,profileNodeDataGridNode,dataGridNode);}}
this._pendingRecords=[];}
_scriptTimelineRecordAdded(event)
{var scriptTimelineRecord=event.data.record;this._pendingRecords.push(scriptTimelineRecord);this.needsLayout();}
_scriptTimelineRecordRefreshed(event)
{this.needsLayout();}};WebInspector.ScriptProfileTimelineView=class ScriptProfileTimelineView extends WebInspector.TimelineView
{constructor(timeline,extraArguments)
{super(timeline,extraArguments);this.element.classList.add("script");this._recording=extraArguments.recording;this._forceNextLayout=false;this._lastLayoutStartTime=undefined;this._lastLayoutEndTime=undefined;this._sharedProfileViewData={selectedNodeHash:null,};if(!WebInspector.ScriptProfileTimelineView.profileOrientationSetting)
WebInspector.ScriptProfileTimelineView.profileOrientationSetting=new WebInspector.Setting("script-profile-timeline-view-profile-orientation-setting",WebInspector.ScriptProfileTimelineView.ProfileOrientation.TopDown);if(!WebInspector.ScriptProfileTimelineView.profileTypeSetting)
WebInspector.ScriptProfileTimelineView.profileTypeSetting=new WebInspector.Setting("script-profile-timeline-view-profile-type-setting",WebInspector.ScriptProfileTimelineView.ProfileViewType.Hierarchy);this._showProfileViewForOrientation(WebInspector.ScriptProfileTimelineView.profileOrientationSetting.value,WebInspector.ScriptProfileTimelineView.profileTypeSetting.value);let clearTooltip=WebInspector.UIString("Clear focus");this._clearFocusNodesButtonItem=new WebInspector.ButtonNavigationItem("clear-profile-focus",clearTooltip,"Images/Close.svg",16,16);this._clearFocusNodesButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._clearFocusNodes,this);this._updateClearFocusNodesButtonItem();this._profileOrientationButton=new WebInspector.TextToggleButtonNavigationItem("profile-orientation",WebInspector.UIString("Inverted"));this._profileOrientationButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._profileOrientationButtonClicked,this);if(WebInspector.ScriptProfileTimelineView.profileOrientationSetting.value===WebInspector.ScriptProfileTimelineView.ProfileOrientation.TopDown)
this._profileOrientationButton.activated=false;else
this._profileOrientationButton.activated=true;this._topFunctionsButton=new WebInspector.TextToggleButtonNavigationItem("top-functions",WebInspector.UIString("Top Functions"));this._topFunctionsButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._topFunctionsButtonClicked,this);if(WebInspector.ScriptProfileTimelineView.profileTypeSetting.value===WebInspector.ScriptProfileTimelineView.ProfileViewType.Hierarchy)
this._topFunctionsButton.activated=false;else
this._topFunctionsButton.activated=true;timeline.addEventListener(WebInspector.Timeline.Event.Refreshed,this._scriptTimelineRecordRefreshed,this);}
get scrollableElements(){return this._profileView.scrollableElements;}
get showsLiveRecordingData(){return false;}
closed()
{this.representedObject.removeEventListener(null,null,this);}
get navigationItems()
{return[this._clearFocusNodesButtonItem,this._profileOrientationButton,this._topFunctionsButton];}
get selectionPathComponents()
{return this._profileView.selectionPathComponents;}
layout()
{if(!this._forceNextLayout&&(this._lastLayoutStartTime===this.startTime&&this._lastLayoutEndTime===this.endTime))
return;this._forceNextLayout=false;this._lastLayoutStartTime=this.startTime;this._lastLayoutEndTime=this.endTime;this._profileView.setStartAndEndTime(this.startTime,this.endTime);}
_callingContextTreeForOrientation(profileOrientation,profileViewType)
{switch(profileOrientation){case WebInspector.ScriptProfileTimelineView.ProfileOrientation.TopDown:return profileViewType===WebInspector.ScriptProfileTimelineView.ProfileViewType.Hierarchy?this._recording.topDownCallingContextTree:this._recording.topFunctionsTopDownCallingContextTree;case WebInspector.ScriptProfileTimelineView.ProfileOrientation.BottomUp:return profileViewType===WebInspector.ScriptProfileTimelineView.ProfileViewType.Hierarchy?this._recording.bottomUpCallingContextTree:this._recording.topFunctionsBottomUpCallingContextTree;}
return this._recording.topDownCallingContextTree;}
_profileViewSelectionPathComponentsDidChange(event)
{this._updateClearFocusNodesButtonItem();this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);}
_scriptTimelineRecordRefreshed(event)
{this._forceNextLayout=true;this.needsLayout();}
_profileOrientationButtonClicked()
{this._profileOrientationButton.activated=!this._profileOrientationButton.activated;let isInverted=this._profileOrientationButton.activated;let newOrientation;if(isInverted)
newOrientation=WebInspector.ScriptProfileTimelineView.ProfileOrientation.BottomUp;else
newOrientation=WebInspector.ScriptProfileTimelineView.ProfileOrientation.TopDown;WebInspector.ScriptProfileTimelineView.profileOrientationSetting.value=newOrientation;this._showProfileViewForOrientation(newOrientation,WebInspector.ScriptProfileTimelineView.profileTypeSetting.value);this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);this._forceNextLayout=true;this.needsLayout();}
_topFunctionsButtonClicked()
{this._topFunctionsButton.activated=!this._topFunctionsButton.activated;let isTopFunctionsEnabled=this._topFunctionsButton.activated;let newOrientation;if(isTopFunctionsEnabled)
newOrientation=WebInspector.ScriptProfileTimelineView.ProfileViewType.TopFunctions;else
newOrientation=WebInspector.ScriptProfileTimelineView.ProfileViewType.Hierarchy;WebInspector.ScriptProfileTimelineView.profileTypeSetting.value=newOrientation;this._showProfileViewForOrientation(WebInspector.ScriptProfileTimelineView.profileOrientationSetting.value,newOrientation);this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);this._forceNextLayout=true;this.needsLayout();}
_showProfileViewForOrientation(profileOrientation,profileViewType)
{let filterText;if(this._profileView){this._profileView.removeEventListener(WebInspector.ContentView.Event.SelectionPathComponentsDidChange,this._profileViewSelectionPathComponentsDidChange,this);this.removeSubview(this._profileView);filterText=this._profileView.dataGrid.filterText;}
let callingContextTree=this._callingContextTreeForOrientation(profileOrientation,profileViewType);this._profileView=new WebInspector.ProfileView(callingContextTree,this._sharedProfileViewData);this._profileView.addEventListener(WebInspector.ContentView.Event.SelectionPathComponentsDidChange,this._profileViewSelectionPathComponentsDidChange,this);this.addSubview(this._profileView);this.setupDataGrid(this._profileView.dataGrid);if(filterText)
this._profileView.dataGrid.filterText=filterText;}
_updateClearFocusNodesButtonItem()
{this._clearFocusNodesButtonItem.enabled=this._profileView.hasFocusNodes();}
_clearFocusNodes()
{this._profileView.clearFocusNodes();}};WebInspector.ScriptProfileTimelineView.ProfileOrientation={BottomUp:"bottom-up",TopDown:"top-down",};WebInspector.ScriptProfileTimelineView.ProfileViewType={Hierarchy:"hierarchy",TopFunctions:"top-functions",};WebInspector.ScriptTimelineDataGrid=class ScriptTimelineDataGrid extends WebInspector.TimelineDataGrid
{ callFramePopoverAnchorElement()
{return this.selectedNode.elementWithColumnIdentifier("location");}};WebInspector.ScriptTimelineDataGridNode=class ScriptTimelineDataGridNode extends WebInspector.TimelineDataGridNode
{constructor(scriptTimelineRecord,baseStartTime,rangeStartTime,rangeEndTime)
{super(false,null);this._record=scriptTimelineRecord;this._baseStartTime=baseStartTime||0;this._rangeStartTime=rangeStartTime||0;this._rangeEndTime=typeof rangeEndTime==="number"?rangeEndTime:Infinity;}
get records()
{return[this._record];}
get baseStartTime()
{return this._baseStartTime;}
get rangeStartTime()
{return this._rangeStartTime;}
get rangeEndTime()
{return this._rangeEndTime;}
get data()
{if(!this._cachedData){var startTime=this._record.startTime;var duration=this._record.startTime+this._record.duration-startTime;var callFrameOrSourceCodeLocation=this._record.initiatorCallFrame||this._record.sourceCodeLocation;if(this._record.profile){var oneRootNode=this._record.profile.topDownRootNodes[0];if(oneRootNode&&oneRootNode.calls){startTime=Math.max(this._rangeStartTime,this._record.startTime);duration=Math.min(this._record.startTime+this._record.duration,this._rangeEndTime)-startTime;}}
this._cachedData={eventType:this._record.eventType,startTime,selfTime:duration,totalTime:duration,averageTime:duration,callCount:this._record.callCountOrSamples,location:callFrameOrSourceCodeLocation,};}
return this._cachedData;}
get subtitle()
{if(this._subtitle!==undefined)
return this._subtitle;this._subtitle="";if(this._record.eventType===WebInspector.ScriptTimelineRecord.EventType.TimerInstalled){let timeoutString=Number.secondsToString(this._record.details.timeout/1000);if(this._record.details.repeating)
this._subtitle=WebInspector.UIString("%s interval").format(timeoutString);else
this._subtitle=WebInspector.UIString("%s delay").format(timeoutString);}
return this._subtitle;}
updateRangeTimes(startTime,endTime)
{var oldRangeStartTime=this._rangeStartTime;var oldRangeEndTime=this._rangeEndTime;if(oldRangeStartTime===startTime&&oldRangeEndTime===endTime)
return;this._rangeStartTime=startTime;this._rangeEndTime=endTime;if(!this._record.duration)
return;var recordStart=this._record.startTime;var recordEnd=this._record.startTime+this._record.duration;var oldStartBoundary=Number.constrain(oldRangeStartTime,recordStart,recordEnd);var oldEndBoundary=Number.constrain(oldRangeEndTime,recordStart,recordEnd);var newStartBoundary=Number.constrain(startTime,recordStart,recordEnd);var newEndBoundary=Number.constrain(endTime,recordStart,recordEnd);if(oldStartBoundary!==newStartBoundary||oldEndBoundary!==newEndBoundary)
this.needsRefresh();}
createCellContent(columnIdentifier,cell)
{var value=this.data[columnIdentifier];switch(columnIdentifier){case"name":cell.classList.add(...this.iconClassNames());return this._createNameCellDocumentFragment();case"startTime":return isNaN(value)?emDash:Number.secondsToString(value-this._baseStartTime,true);case"selfTime":case"totalTime":case"averageTime":return isNaN(value)?emDash:Number.secondsToString(value,true);case"callCount":return isNaN(value)?emDash:value.toLocaleString();}
return super.createCellContent(columnIdentifier,cell);}
filterableDataForColumn(columnIdentifier)
{if(columnIdentifier==="name")
return[this.displayName(),this.subtitle];return super.filterableDataForColumn(columnIdentifier);}
_createNameCellDocumentFragment(cellElement)
{let fragment=document.createDocumentFragment();fragment.append(this.displayName());if(this.subtitle){let subtitleElement=document.createElement("span");subtitleElement.classList.add("subtitle");subtitleElement.textContent=this.subtitle;fragment.append(subtitleElement);}
return fragment;}};WebInspector.ScriptTimelineOverviewGraph=class ScriptTimelineOverviewGraph extends WebInspector.TimelineOverviewGraph
{constructor(timeline,timelineOverview)
{super(timelineOverview);this.element.classList.add("script");this._scriptTimeline=timeline;this._scriptTimeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._scriptTimelineRecordAdded,this);this._timelineRecordBars=[];this.reset();}
reset()
{super.reset();this.element.removeChildren();}
layout()
{if(!this.visible)
return;let secondsPerPixel=this.timelineOverview.secondsPerPixel;let recordBarIndex=0;function createBar(records,renderMode)
{let timelineRecordBar=this._timelineRecordBars[recordBarIndex];if(!timelineRecordBar)
timelineRecordBar=this._timelineRecordBars[recordBarIndex]=new WebInspector.TimelineRecordBar(records,renderMode);else{timelineRecordBar.renderMode=renderMode;timelineRecordBar.records=records;}
timelineRecordBar.refresh(this);if(!timelineRecordBar.element.parentNode)
this.element.appendChild(timelineRecordBar.element);++recordBarIndex;}
let[gcRecords,nonGCRecords]=this._scriptTimeline.records.partition((x)=>x.isGarbageCollection());let boundCreateBar=createBar.bind(this);WebInspector.TimelineRecordBar.createCombinedBars(nonGCRecords,secondsPerPixel,this,boundCreateBar);WebInspector.TimelineRecordBar.createCombinedBars(gcRecords,secondsPerPixel,this,boundCreateBar);for(;recordBarIndex<this._timelineRecordBars.length;++recordBarIndex){this._timelineRecordBars[recordBarIndex].records=null;this._timelineRecordBars[recordBarIndex].element.remove();}}
_scriptTimelineRecordAdded(event)
{this.needsLayout();}};WebInspector.ScriptTreeElement=class ScriptTreeElement extends WebInspector.SourceCodeTreeElement
{constructor(script)
{super(script,"script",null,null,script,false);this.mainTitle=script.displayName;if(script.url&&!script.dynamicallyAddedScriptElement){var subtitle=WebInspector.displayNameForHost(script.urlComponents.host);this.subtitle=this.mainTitle!==subtitle?subtitle:null;this.tooltip=script.url;this.addClassName(WebInspector.ResourceTreeElement.ResourceIconStyleClassName);this.addClassName(WebInspector.Resource.Type.Script);}else
this.addClassName(WebInspector.ScriptTreeElement.AnonymousScriptIconStyleClassName);if(script.isMainResource()){this.addClassName("worker-icon");}
this._script=script;}
get script()
{return this._script;}};WebInspector.ScriptTreeElement.AnonymousScriptIconStyleClassName="anonymous-script-icon";WebInspector.SearchBar=class SearchBar extends WebInspector.NavigationItem
{constructor(identifier,placeholder,delegate,suppressIncremental)
{super(identifier);this.delegate=delegate;this._element.classList.add("search-bar");this._keyboardShortcutEsc=new WebInspector.KeyboardShortcut(null,WebInspector.KeyboardShortcut.Key.Escape);this._keyboardShortcutEnter=new WebInspector.KeyboardShortcut(null,WebInspector.KeyboardShortcut.Key.Enter);this._searchInput=this._element.appendChild(document.createElement("input"));this._searchInput.type="search";this._searchInput.spellcheck=false;this._searchInput.incremental=!suppressIncremental;this._searchInput.setAttribute("results",5);this._searchInput.setAttribute("autosave",identifier+"-autosave");this._searchInput.setAttribute("placeholder",placeholder);this._searchInput.addEventListener("search",this._handleSearchEvent.bind(this));this._searchInput.addEventListener("keydown",this._handleKeydownEvent.bind(this));}
get text()
{return this._searchInput.value;}
set text(newText)
{this._searchInput.value=newText;}
focus()
{if(!this._searchInput.value.length)
this._searchInput.focus();else
this._searchInput.select();}
_handleSearchEvent(event)
{this.dispatchEventToListeners(WebInspector.SearchBar.Event.TextChanged);}
_handleKeydownEvent(event)
{if(this._keyboardShortcutEsc.matchesEvent(event)){if(this.delegate&&typeof this.delegate.searchBarWantsToLoseFocus==="function"){this.delegate.searchBarWantsToLoseFocus(this);event.stopPropagation();event.preventDefault();}}else if(this._keyboardShortcutEnter.matchesEvent(event)){if(this.delegate&&typeof this.delegate.searchBarDidActivate==="function"){this.delegate.searchBarDidActivate(this);event.stopPropagation();event.preventDefault();}}}};WebInspector.SearchBar.Event={TextChanged:"searchbar-text-did-change"};WebInspector.SearchResultTreeElement=class SearchResultTreeElement extends WebInspector.GeneralTreeElement
{constructor(representedObject)
{var title=WebInspector.SearchResultTreeElement.truncateAndHighlightTitle(representedObject.title,representedObject.searchTerm,representedObject.sourceCodeTextRange);super(representedObject.className,title,null,representedObject,false);}
static truncateAndHighlightTitle(title,searchTerm,sourceCodeTextRange)
{let isRTL=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL;const charactersToShowBeforeSearchMatch=isRTL?20:15;const charactersToShowAfterSearchMatch=isRTL?15:50;var textRange=sourceCodeTextRange.textRange;var searchTermIndex=textRange.startColumn;
var modifiedTitle=null;if(searchTermIndex>charactersToShowBeforeSearchMatch){modifiedTitle=ellipsis+title.substring(searchTermIndex-charactersToShowBeforeSearchMatch);searchTermIndex=charactersToShowBeforeSearchMatch+1;}else
modifiedTitle=title;modifiedTitle=modifiedTitle.trimEnd(searchTermIndex+searchTerm.length+charactersToShowAfterSearchMatch);var highlightedTitle=document.createDocumentFragment();highlightedTitle.append(modifiedTitle.substring(0,searchTermIndex));var highlightSpan=document.createElement("span");highlightSpan.className="highlighted";highlightSpan.append(modifiedTitle.substring(searchTermIndex,searchTermIndex+searchTerm.length));highlightedTitle.appendChild(highlightSpan);highlightedTitle.append(modifiedTitle.substring(searchTermIndex+searchTerm.length));return highlightedTitle;}
get filterableData()
{return{text:[this.representedObject.title]};}
get synthesizedTextValue()
{return this.representedObject.sourceCodeTextRange.synthesizedTextValue+":"+this.representedObject.title;}};WebInspector.SearchSidebarPanel=class SearchSidebarPanel extends WebInspector.NavigationSidebarPanel
{constructor(contentBrowser)
{super("search",WebInspector.UIString("Search"),true,true);this.contentBrowser=contentBrowser;var searchElement=document.createElement("div");searchElement.classList.add("search-bar");this.element.appendChild(searchElement);this._inputElement=document.createElement("input");this._inputElement.type="search";this._inputElement.spellcheck=false;this._inputElement.addEventListener("search",this._searchFieldChanged.bind(this));this._inputElement.addEventListener("input",this._searchFieldInput.bind(this));this._inputElement.setAttribute("results",5);this._inputElement.setAttribute("autosave","inspector-search-autosave");this._inputElement.setAttribute("placeholder",WebInspector.UIString("Search Resource Content"));searchElement.appendChild(this._inputElement);this.filterBar.placeholder=WebInspector.UIString("Filter Search Results");this._searchQuerySetting=new WebInspector.Setting("search-sidebar-query","");this._inputElement.value=this._searchQuerySetting.value;WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);this.contentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._treeSelectionDidChange,this);}
closed()
{super.closed();WebInspector.Frame.removeEventListener(null,null,this);}
focusSearchField(performSearch)
{this.show();this._inputElement.select();if(performSearch)
this.performSearch(this._inputElement.value);}
performSearch(searchQuery)
{this.contentTreeOutline.removeChildren();this.contentBrowser.contentViewContainer.closeAllContentViews();this._inputElement.value=searchQuery;this._searchQuerySetting.value=searchQuery;this.hideEmptyContentPlaceholder();this.element.classList.remove("changed");if(this._changedBanner)
this._changedBanner.remove();searchQuery=searchQuery.trim();if(!searchQuery.length)
return;var isCaseSensitive=false;var isRegex=false;var updateEmptyContentPlaceholderTimeout=null;function createTreeElementForMatchObject(matchObject,parentTreeElement)
{let matchTreeElement=new WebInspector.SearchResultTreeElement(matchObject);matchTreeElement.addEventListener(WebInspector.TreeElement.Event.DoubleClick,this._treeElementDoubleClick,this);parentTreeElement.appendChild(matchTreeElement);if(!this.contentTreeOutline.selectedTreeElement)
matchTreeElement.revealAndSelect(false,true);}
function updateEmptyContentPlaceholderSoon()
{if(updateEmptyContentPlaceholderTimeout)
return;updateEmptyContentPlaceholderTimeout=setTimeout(updateEmptyContentPlaceholder.bind(this),100);}
function updateEmptyContentPlaceholder()
{if(updateEmptyContentPlaceholderTimeout){clearTimeout(updateEmptyContentPlaceholderTimeout);updateEmptyContentPlaceholderTimeout=null;}
this.updateEmptyContentPlaceholder(WebInspector.UIString("No Search Results"));}
function forEachMatch(searchQuery,lineContent,callback)
{var lineMatch;var searchRegex=new RegExp(searchQuery.escapeForRegExp(),"gi");while((searchRegex.lastIndex<lineContent.length)&&(lineMatch=searchRegex.exec(lineContent)))
callback(lineMatch,searchRegex.lastIndex);}
function resourcesCallback(error,result)
{updateEmptyContentPlaceholderSoon.call(this);if(error)
return;function resourceCallback(frameId,url,error,resourceMatches)
{updateEmptyContentPlaceholderSoon.call(this);if(error||!resourceMatches||!resourceMatches.length)
return;var frame=WebInspector.frameResourceManager.frameForIdentifier(frameId);if(!frame)
return;var resource=frame.url===url?frame.mainResource:frame.resourceForURL(url);if(!resource)
return;var resourceTreeElement=this._searchTreeElementForResource(resource);for(var i=0;i<resourceMatches.length;++i){var match=resourceMatches[i];forEachMatch(searchQuery,match.lineContent,(lineMatch,lastIndex)=>{var matchObject=new WebInspector.SourceCodeSearchMatchObject(resource,match.lineContent,searchQuery,new WebInspector.TextRange(match.lineNumber,lineMatch.index,match.lineNumber,lastIndex));createTreeElementForMatchObject.call(this,matchObject,resourceTreeElement);});}
updateEmptyContentPlaceholder.call(this);}
for(var i=0;i<result.length;++i){var searchResult=result[i];if(!searchResult.url||!searchResult.frameId)
continue;PageAgent.searchInResource(searchResult.frameId,searchResult.url,searchQuery,isCaseSensitive,isRegex,searchResult.requestId,resourceCallback.bind(this,searchResult.frameId,searchResult.url));}
let promises=[WebInspector.Frame.awaitEvent(WebInspector.Frame.Event.ResourceWasAdded),WebInspector.Target.awaitEvent(WebInspector.Target.Event.ResourceAdded)];Promise.race(promises).then(this._contentChanged.bind(this));}
function searchScripts(scriptsToSearch)
{updateEmptyContentPlaceholderSoon.call(this);if(!scriptsToSearch.length)
return;function scriptCallback(script,error,scriptMatches)
{updateEmptyContentPlaceholderSoon.call(this);if(error||!scriptMatches||!scriptMatches.length)
return;var scriptTreeElement=this._searchTreeElementForScript(script);for(var i=0;i<scriptMatches.length;++i){var match=scriptMatches[i];forEachMatch(searchQuery,match.lineContent,(lineMatch,lastIndex)=>{var matchObject=new WebInspector.SourceCodeSearchMatchObject(script,match.lineContent,searchQuery,new WebInspector.TextRange(match.lineNumber,lineMatch.index,match.lineNumber,lastIndex));createTreeElementForMatchObject.call(this,matchObject,scriptTreeElement);});}
updateEmptyContentPlaceholder.call(this);}
for(let script of scriptsToSearch)
script.target.DebuggerAgent.searchInContent(script.id,searchQuery,isCaseSensitive,isRegex,scriptCallback.bind(this,script));}
function domCallback(error,searchId,resultsCount)
{updateEmptyContentPlaceholderSoon.call(this);if(error||!resultsCount)
return;this._domSearchIdentifier=searchId;function domSearchResults(error,nodeIds)
{updateEmptyContentPlaceholderSoon.call(this);if(error)
return;for(var i=0;i<nodeIds.length;++i){if(this._domSearchIdentifier!==searchId)
return;var domNode=WebInspector.domTreeManager.nodeForId(nodeIds[i]);if(!domNode||!domNode.ownerDocument)
continue;if(domNode.nodeType()===Node.DOCUMENT_NODE)
continue;var resource=WebInspector.frameResourceManager.resourceForURL(domNode.ownerDocument.documentURL);if(!resource)
continue;var resourceTreeElement=this._searchTreeElementForResource(resource);var domNodeTitle=WebInspector.DOMSearchMatchObject.titleForDOMNode(domNode);var didFindTextualMatch=false;forEachMatch(searchQuery,domNodeTitle,(lineMatch,lastIndex)=>{var matchObject=new WebInspector.DOMSearchMatchObject(resource,domNode,domNodeTitle,searchQuery,new WebInspector.TextRange(0,lineMatch.index,0,lastIndex));createTreeElementForMatchObject.call(this,matchObject,resourceTreeElement);didFindTextualMatch=true;});if(!didFindTextualMatch){var matchObject=new WebInspector.DOMSearchMatchObject(resource,domNode,domNodeTitle,domNodeTitle,new WebInspector.TextRange(0,0,0,domNodeTitle.length));createTreeElementForMatchObject.call(this,matchObject,resourceTreeElement);}
updateEmptyContentPlaceholder.call(this);}}
DOMAgent.getSearchResults(searchId,0,resultsCount,domSearchResults.bind(this));}
if(window.DOMAgent)
WebInspector.domTreeManager.ensureDocument();if(window.PageAgent)
PageAgent.searchInResources(searchQuery,isCaseSensitive,isRegex,resourcesCallback.bind(this));setTimeout(searchScripts.bind(this,WebInspector.debuggerManager.searchableScripts),0);if(window.DOMAgent){if(this._domSearchIdentifier){DOMAgent.discardSearchResults(this._domSearchIdentifier);this._domSearchIdentifier=undefined;}
DOMAgent.performSearch(searchQuery,domCallback.bind(this));}
if(!window.DOMAgent&&!window.PageAgent)
updateEmptyContentPlaceholderSoon.call(this);}
_searchFieldChanged(event)
{this.performSearch(event.target.value);}
_searchFieldInput(event)
{if(!event.target.value.length)
this.performSearch("");}
_searchTreeElementForResource(resource)
{var resourceTreeElement=this.contentTreeOutline.getCachedTreeElement(resource);if(!resourceTreeElement){resourceTreeElement=new WebInspector.ResourceTreeElement(resource);resourceTreeElement.hasChildren=true;resourceTreeElement.expand();this.contentTreeOutline.appendChild(resourceTreeElement);}
return resourceTreeElement;}
_searchTreeElementForScript(script)
{var scriptTreeElement=this.contentTreeOutline.getCachedTreeElement(script);if(!scriptTreeElement){scriptTreeElement=new WebInspector.ScriptTreeElement(script);scriptTreeElement.hasChildren=true;scriptTreeElement.expand();this.contentTreeOutline.appendChild(scriptTreeElement);}
return scriptTreeElement;}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;if(this._delayedSearchTimeout){clearTimeout(this._delayedSearchTimeout);this._delayedSearchTimeout=undefined;}
this.contentTreeOutline.removeChildren();this.contentBrowser.contentViewContainer.closeAllContentViews();if(this.visible){const performSearch=true;this.focusSearchField(performSearch);}}
_treeSelectionDidChange(event)
{if(!this.visible)
return;let treeElement=event.data.selectedElement;if(!treeElement||treeElement instanceof WebInspector.FolderTreeElement)
return;const options={ignoreNetworkTab:true,};if(treeElement instanceof WebInspector.ResourceTreeElement||treeElement instanceof WebInspector.ScriptTreeElement){const cookie=null;WebInspector.showRepresentedObject(treeElement.representedObject,cookie,options);return;}
if(!(treeElement instanceof WebInspector.SearchResultTreeElement))
return;if(treeElement.representedObject instanceof WebInspector.DOMSearchMatchObject)
WebInspector.showMainFrameDOMTree(treeElement.representedObject.domNode);else if(treeElement.representedObject instanceof WebInspector.SourceCodeSearchMatchObject)
WebInspector.showOriginalOrFormattedSourceCodeTextRange(treeElement.representedObject.sourceCodeTextRange,options);}
_treeElementDoubleClick(event)
{let treeElement=event.target;if(!treeElement)
return;if(treeElement.representedObject instanceof WebInspector.DOMSearchMatchObject){WebInspector.showMainFrameDOMTree(treeElement.representedObject.domNode,{ignoreSearchTab:true,});}else if(treeElement.representedObject instanceof WebInspector.SourceCodeSearchMatchObject){WebInspector.showOriginalOrFormattedSourceCodeTextRange(treeElement.representedObject.sourceCodeTextRange,{ignoreNetworkTab:true,ignoreSearchTab:true,});}}
_contentChanged(event)
{this.element.classList.add("changed");if(!this._changedBanner){this._changedBanner=document.createElement("div");this._changedBanner.classList.add("banner");this._changedBanner.append(WebInspector.UIString("The page's content has changed"),document.createElement("br"));let performSearchLink=this._changedBanner.appendChild(document.createElement("a"));performSearchLink.textContent=WebInspector.UIString("Search Again");performSearchLink.addEventListener("click",()=>{const performSearch=true;this.focusSearchField(performSearch);});}
this.element.appendChild(this._changedBanner);}};WebInspector.Sidebar=class Sidebar extends WebInspector.View
{constructor(element,side,sidebarPanels,role,label,hasNavigationBar)
{super(element);this._side=side||WebInspector.Sidebar.Sides.Left;this._collapsed=true;this.element.classList.add("sidebar",this._side,WebInspector.Sidebar.CollapsedStyleClassName);this.element.setAttribute("role",role||"group");if(label)
this.element.setAttribute("aria-label",label);if(hasNavigationBar){this.element.classList.add("has-navigation-bar");this._navigationBar=new WebInspector.NavigationBar(null,null,"tablist");this._navigationBar.addEventListener(WebInspector.NavigationBar.Event.NavigationItemSelected,this._navigationItemSelected,this);this.addSubview(this._navigationBar);}
this._resizer=new WebInspector.Resizer(WebInspector.Resizer.RuleOrientation.Vertical,this);this.element.insertBefore(this._resizer.element,this.element.firstChild);this._sidebarPanels=[];if(sidebarPanels){for(let sidebarPanel of sidebarPanels)
this.addSidebarPanel(sidebarPanel);}}
addSidebarPanel(sidebarPanel)
{this.insertSidebarPanel(sidebarPanel,this._sidebarPanels.length);}
insertSidebarPanel(sidebarPanel,index)
{if(!(sidebarPanel instanceof WebInspector.SidebarPanel))
return;if(sidebarPanel.parentSidebar)
return;this._sidebarPanels.splice(index,0,sidebarPanel);let referenceView=this._sidebarPanels[index+1]||null;this.insertSubviewBefore(sidebarPanel,referenceView);if(this._navigationBar){this._navigationBar.insertNavigationItem(sidebarPanel.navigationItem,index);}
sidebarPanel.added();}
removeSidebarPanel(sidebarPanelOrIdentifierOrIndex)
{var sidebarPanel=this.findSidebarPanel(sidebarPanelOrIdentifierOrIndex);if(!sidebarPanel)
return;sidebarPanel.selected=false;if(sidebarPanel.visible){sidebarPanel.hidden();sidebarPanel.visibilityDidChange();}
if(this._selectedSidebarPanel===sidebarPanel){var index=this._sidebarPanels.indexOf(sidebarPanel);this.selectedSidebarPanel=this._sidebarPanels[index-1]||this._sidebarPanels[index+1]||null;}
this._sidebarPanels.remove(sidebarPanel);this.removeSubview(sidebarPanel);if(this._navigationBar){this._navigationBar.removeNavigationItem(sidebarPanel.navigationItem);}
sidebarPanel.removed();}
get selectedSidebarPanel()
{return this._selectedSidebarPanel||null;}
set selectedSidebarPanel(sidebarPanelOrIdentifierOrIndex)
{var sidebarPanel=this.findSidebarPanel(sidebarPanelOrIdentifierOrIndex);if(this._selectedSidebarPanel===sidebarPanel)
return;if(this._selectedSidebarPanel){var wasVisible=this._selectedSidebarPanel.visible;this._selectedSidebarPanel.selected=false;if(wasVisible){this._selectedSidebarPanel.hidden();this._selectedSidebarPanel.visibilityDidChange();}}
this._selectedSidebarPanel=sidebarPanel||null;if(this._navigationBar)
this._navigationBar.selectedNavigationItem=sidebarPanel?sidebarPanel.navigationItem:null;if(this._selectedSidebarPanel){this._selectedSidebarPanel.selected=true;if(this._selectedSidebarPanel.visible){this._selectedSidebarPanel.shown();this._selectedSidebarPanel.visibilityDidChange();}}
this.dispatchEventToListeners(WebInspector.Sidebar.Event.SidebarPanelSelected);}
get minimumWidth()
{if(this._navigationBar)
return Math.max(WebInspector.Sidebar.AbsoluteMinimumWidth,this._navigationBar.minimumWidth);if(this._selectedSidebarPanel)
return Math.max(WebInspector.Sidebar.AbsoluteMinimumWidth,this._selectedSidebarPanel.minimumWidth);return WebInspector.Sidebar.AbsoluteMinimumWidth;}
get maximumWidth()
{
return Math.round(window.innerWidth/3);}
get width()
{return this.element.offsetWidth;}
set width(newWidth)
{if(newWidth===this.width)
return;this._recalculateWidth(newWidth);}
get collapsed()
{return this._collapsed;}
set collapsed(flag)
{if(flag===this._collapsed)
return;this._collapsed=flag||false;this.element.classList.toggle(WebInspector.Sidebar.CollapsedStyleClassName);if(!this._collapsed&&this._navigationBar)
this._navigationBar.needsLayout();if(this._selectedSidebarPanel){if(this._selectedSidebarPanel.visible)
this._selectedSidebarPanel.shown();else
this._selectedSidebarPanel.hidden();this._selectedSidebarPanel.visibilityDidChange();}
this.dispatchEventToListeners(WebInspector.Sidebar.Event.CollapsedStateDidChange);this.dispatchEventToListeners(WebInspector.Sidebar.Event.WidthDidChange);}
get sidebarPanels()
{return this._sidebarPanels;}
get side()
{return this._side;}
findSidebarPanel(sidebarPanelOrIdentifierOrIndex)
{var sidebarPanel=null;if(sidebarPanelOrIdentifierOrIndex instanceof WebInspector.SidebarPanel){if(this._sidebarPanels.includes(sidebarPanelOrIdentifierOrIndex))
sidebarPanel=sidebarPanelOrIdentifierOrIndex;}else if(typeof sidebarPanelOrIdentifierOrIndex==="number"){sidebarPanel=this._sidebarPanels[sidebarPanelOrIdentifierOrIndex];}else if(typeof sidebarPanelOrIdentifierOrIndex==="string"){for(var i=0;i<this._sidebarPanels.length;++i){if(this._sidebarPanels[i].identifier===sidebarPanelOrIdentifierOrIndex){sidebarPanel=this._sidebarPanels[i];break;}}}
return sidebarPanel;}
resizerDragStarted(resizer)
{this._widthBeforeResize=this.width;}
resizerDragging(resizer,positionDelta)
{if(this._side===WebInspector.Sidebar.Sides.Left)
positionDelta*=-1;if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL)
positionDelta*=-1;var newWidth=positionDelta+this._widthBeforeResize;this.width=newWidth;this.collapsed=(newWidth<(this.minimumWidth/2));}
resizerDragEnded(resizer)
{if(this._widthBeforeResize===this.width)
return;if(!this.collapsed&&this._navigationBar)
this._navigationBar.sizeDidChange();if(!this.collapsed&&this._selectedSidebarPanel)
this._selectedSidebarPanel.sizeDidChange();}
_recalculateWidth(newWidth=this.width)
{newWidth=Math.ceil(Number.constrain(newWidth,this.minimumWidth+1,this.maximumWidth));this.element.style.width=`${newWidth}px`;if(this.collapsed)
return;if(this._navigationBar)
this._navigationBar.updateLayoutIfNeeded(WebInspector.View.LayoutReason.Resize);if(this._selectedSidebarPanel)
this._selectedSidebarPanel.updateLayoutIfNeeded(WebInspector.View.LayoutReason.Resize);this.dispatchEventToListeners(WebInspector.Sidebar.Event.WidthDidChange,{newWidth});}
_navigationItemSelected(event)
{this.selectedSidebarPanel=event.target.selectedNavigationItem?event.target.selectedNavigationItem.identifier:null;}};WebInspector.Sidebar.CollapsedStyleClassName="collapsed";WebInspector.Sidebar.AbsoluteMinimumWidth=200;WebInspector.Sidebar.Sides={Right:"right",Left:"left"};WebInspector.Sidebar.Event={SidebarPanelSelected:"sidebar-panel-selected",CollapsedStateDidChange:"sidebar-collapsed-state-did-change",WidthDidChange:"sidebar-width-did-change",};WebInspector.Slider=class Slider extends WebInspector.Object
{constructor()
{super();this._element=document.createElement("div");this._element.className="slider";this._knob=this._element.appendChild(document.createElement("img"));this._value=0;this._knobX=0;this._maxX=0;this._element.addEventListener("mousedown",this);}
get element()
{return this._element;}
get value()
{return this._value;}
set value(value)
{value=Math.max(Math.min(value,1),0);if(value===this._value)
return;this.knobX=value;if(this.delegate&&typeof this.delegate.sliderValueDidChange==="function")
this.delegate.sliderValueDidChange(this,value);}
set knobX(value)
{this._value=value;this._knobX=Math.round(value*this.maxX);this._knob.style.webkitTransform="translate3d("+this._knobX+"px, 0, 0)";}
get maxX()
{if(this._maxX<=0&&document.body.contains(this._element))
this._maxX=Math.max(this._element.offsetWidth-Math.ceil(WebInspector.Slider.KnobWidth/2),0);return this._maxX;}
recalculateKnobX()
{this._maxX=0;this.knobX=this._value;}
handleEvent(event)
{switch(event.type){case"mousedown":this._handleMousedown(event);break;case"mousemove":this._handleMousemove(event);break;case"mouseup":this._handleMouseup(event);break;}}
_handleMousedown(event)
{if(event.target!==this._knob)
this.value=(this._localPointForEvent(event).x-3)/this.maxX;this._startKnobX=this._knobX;this._startMouseX=this._localPointForEvent(event).x;this._element.classList.add("dragging");window.addEventListener("mousemove",this,true);window.addEventListener("mouseup",this,true);}
_handleMousemove(event)
{var dx=this._localPointForEvent(event).x-this._startMouseX;var x=Math.max(Math.min(this._startKnobX+dx,this.maxX),0);this.value=x/this.maxX;}
_handleMouseup(event)
{this._element.classList.remove("dragging");window.removeEventListener("mousemove",this,true);window.removeEventListener("mouseup",this,true);}
_localPointForEvent(event)
{
return window.webkitConvertPointFromPageToNode(this._element,new WebKitPoint(event.pageX,event.pageY));}};WebInspector.Slider.KnobWidth=13;WebInspector.SoftContextMenu=class SoftContextMenu
{constructor(items,parentMenu)
{this._items=items;this._parentMenu=parentMenu;}
show(event)
{const isSubMenu=!!this._parentMenu;this._contextMenuElement=document.createElement("div");this._contextMenuElement.className="soft-context-menu";this._contextMenuElement.style.left=event.pageX+"px";this._contextMenuElement.style.top=event.pageY+"px";this._contextMenuElement.tabIndex=0;this._contextMenuElement.addEventListener("keydown",this._menuKeyDown.bind(this),false);for(let item of this._items)
this._contextMenuElement.appendChild(this._createMenuItem(item));if(!isSubMenu){this._glassPaneElement=document.createElement("div");this._glassPaneElement.className="soft-context-menu-glass-pane";this._glassPaneElement.addEventListener("mousedown",this._glassPaneMouseDown.bind(this),false);this._glassPaneElement.appendChild(this._contextMenuElement);document.body.appendChild(this._glassPaneElement);this._focus();this._consumeEvent(event,true);}else
this._parentGlassPaneElement().appendChild(this._contextMenuElement);this._repositionMenuOnScreen(isSubMenu);}
_consumeEvent(event,preventDefault)
{event.stopImmediatePropagation();if(preventDefault)
event.preventDefault();event.handled=true;}
_parentGlassPaneElement()
{if(!this._parentMenu)
return null;if(this._parentMenu._glassPaneElement)
return this._parentMenu._glassPaneElement;return this._parentMenu._parentGlassPaneElement();}
_createMenuItem(item)
{if(item.type==="separator")
return this._createSeparator();const checkmark="\u2713";const blackRightPointingTriangle="\u25b6";const menuItemElement=document.createElement("div");menuItemElement.className="item";if(!item.enabled)
menuItemElement.classList.add("disabled");const checkMarkElement=document.createElement("span");checkMarkElement.textContent=item.checked?checkmark:"";checkMarkElement.className="checkmark";menuItemElement.appendChild(checkMarkElement);const labelElement=document.createElement("span");labelElement.textContent=item.label;labelElement.className="label";menuItemElement.appendChild(labelElement);if(item.type==="subMenu"){const subMenuArrowElement=document.createElement("span");subMenuArrowElement.textContent=blackRightPointingTriangle;subMenuArrowElement.className="submenu-arrow";menuItemElement.appendChild(subMenuArrowElement);menuItemElement._subItems=item.subItems;}else
menuItemElement._actionId=item.id;menuItemElement.addEventListener("contextmenu",this._menuItemContextMenu.bind(this),false);menuItemElement.addEventListener("mousedown",this._menuItemMouseDown.bind(this),false);menuItemElement.addEventListener("mouseup",this._menuItemMouseUp.bind(this),false);menuItemElement.addEventListener("mouseover",this._menuItemMouseOver.bind(this),false);menuItemElement.addEventListener("mouseout",this._menuItemMouseOut.bind(this),false);return menuItemElement;}
_createSeparator()
{const separatorElement=document.createElement("div");separatorElement.className="separator";separatorElement._isSeparator=true;separatorElement.createChild("div","line");separatorElement.addEventListener("contextmenu",this._menuItemContextMenu.bind(this),false);separatorElement.addEventListener("mousedown",this._menuItemMouseDown.bind(this),false);separatorElement.addEventListener("mouseup",this._menuItemMouseUp.bind(this),false);separatorElement.addEventListener("mouseover",this._menuItemMouseOver.bind(this),false);return separatorElement;}
_repositionMenuOnScreen(isSubMenu)
{if(this._contextMenuElement.offsetLeft+this._contextMenuElement.offsetWidth>document.body.offsetWidth){if(isSubMenu){const parentContextMenuElement=this._parentMenu._contextMenuElement;const leftOfParent=parentContextMenuElement.offsetLeft-this._contextMenuElement.offsetWidth+2;const fromParentRight=this._contextMenuElement.offsetLeft-this._contextMenuElement.offsetWidth+2;this._contextMenuElement.style.left=(leftOfParent>=0?leftOfParent:fromParentRight)+"px";}else{const leftOfCursor=this._contextMenuElement.offsetLeft-this._contextMenuElement.offsetWidth;const fromRightEdge=document.body.offsetWidth-this._contextMenuElement.offsetWidth;this._contextMenuElement.style.left=(leftOfCursor>=0?leftOfCursor:fromRightEdge)+"px";}}
if(this._contextMenuElement.offsetTop+this._contextMenuElement.offsetHeight>document.body.offsetHeight){const aboveCursor=this._contextMenuElement.offsetTop-this._contextMenuElement.offsetHeight;const fromBottomEdge=document.body.offsetHeight-this._contextMenuElement.offsetHeight;this._contextMenuElement.style.top=(!isSubMenu&&aboveCursor>=0?aboveCursor:fromBottomEdge)+"px";}}
_showSubMenu(menuItemElement)
{if(menuItemElement._subMenuTimer){clearTimeout(menuItemElement._subMenuTimer);menuItemElement._subMenuTimer=0;}
if(this._subMenu)
return;this._subMenu=new WebInspector.SoftContextMenu(menuItemElement._subItems,this);this._subMenu.show({pageX:this._contextMenuElement.offsetLeft+menuItemElement.offsetWidth,pageY:this._contextMenuElement.offsetTop+menuItemElement.offsetTop-4});}
_hideSubMenu()
{if(!this._subMenu)
return;this._subMenu._discardSubMenus();this._focus();}
_menuItemContextMenu(event)
{this._consumeEvent(event,true);}
_menuItemMouseDown(event)
{this._consumeEvent(event,true);}
_menuItemMouseUp(event)
{this._triggerAction(event.target,event);this._consumeEvent(event);}
_menuItemMouseOver(event)
{this._highlightMenuItem(event.target._isSeparator?null:event.target);}
_menuItemMouseOut(event)
{const shouldUnhighlight=!this._subMenu||!event.relatedTarget||this._contextMenuElement.isSelfOrAncestor(event.relatedTarget)||event.relatedTarget.classList.contains("soft-context-menu-glass-pane");if(shouldUnhighlight)
this._highlightMenuItem(null);}
_menuKeyDown(event)
{switch(event.keyIdentifier){case"Up":this._highlightPrevious();break;case"Down":this._highlightNext();break;case"Left":if(this._parentMenu){this._highlightMenuItem(null);this._parentMenu._hideSubMenu();}
break;case"Enter":if(!isEnterKey(event))
break; case"U+0020": if(this._highlightedMenuItemElement&&!this._highlightedMenuItemElement._subItems)
this._triggerAction(this._highlightedMenuItemElement,event); case"Right":if(this._highlightedMenuItemElement&&this._highlightedMenuItemElement._subItems){this._showSubMenu(this._highlightedMenuItemElement);this._subMenu._focus();this._subMenu._highlightNext();}
break;case"U+001B": this._discardMenu(true,event);break;}
this._consumeEvent(event,true);}
_glassPaneMouseDown(event)
{this._discardMenu(true,event);this._consumeEvent(event);}
_focus()
{this._contextMenuElement.focus();}
_triggerAction(menuItemElement,event)
{if(!menuItemElement._subItems){this._discardMenu(true,event);if(typeof menuItemElement._actionId==="number"){WebInspector.ContextMenu.contextMenuItemSelected(menuItemElement._actionId);menuItemElement._actionId=null;}
return;}
this._showSubMenu(menuItemElement);this._consumeEvent(event);}
_highlightMenuItem(menuItemElement,skipSubMenuExpansion)
{if(this._highlightedMenuItemElement===menuItemElement)
return;this._hideSubMenu();if(this._highlightedMenuItemElement){this._highlightedMenuItemElement.classList.remove("highlighted");if(this._highlightedMenuItemElement._subItems&&this._highlightedMenuItemElement._subMenuTimer){clearTimeout(this._highlightedMenuItemElement._subMenuTimer);this._highlightedMenuItemElement._subMenuTimer=0;}}
this._highlightedMenuItemElement=menuItemElement;if(this._highlightedMenuItemElement){this._highlightedMenuItemElement.classList.add("highlighted");this._contextMenuElement.focus();if(!skipSubMenuExpansion&&this._highlightedMenuItemElement._subItems&&!this._highlightedMenuItemElement._subMenuTimer)
this._highlightedMenuItemElement._subMenuTimer=setTimeout(this._showSubMenu.bind(this,this._highlightedMenuItemElement),150);}}
_highlightPrevious()
{let menuItemElement=this._highlightedMenuItemElement?this._highlightedMenuItemElement.previousSibling:this._contextMenuElement.lastChild;while(menuItemElement&&menuItemElement._isSeparator)
menuItemElement=menuItemElement.previousSibling;if(menuItemElement)
this._highlightMenuItem(menuItemElement,true);}
_highlightNext()
{let menuItemElement=this._highlightedMenuItemElement?this._highlightedMenuItemElement.nextSibling:this._contextMenuElement.firstChild;while(menuItemElement&&menuItemElement._isSeparator)
menuItemElement=menuItemElement.nextSibling;if(menuItemElement)
this._highlightMenuItem(menuItemElement,true);}
_discardMenu(closeParentMenus,event)
{if(this._subMenu&&!closeParentMenus)
return;if(this._glassPaneElement){const glassPane=this._glassPaneElement;this._glassPaneElement=null;document.body.removeChild(glassPane);if(this._parentMenu){this._parentMenu._subMenu=null;if(closeParentMenus)
this._parentMenu._discardMenu(closeParentMenus,event);}
if(event)
this._consumeEvent(event,true);}else if(this._parentMenu&&this._contextMenuElement.parentElement){this._discardSubMenus();if(closeParentMenus)
this._parentMenu._discardMenu(closeParentMenus,event);if(event)
this._consumeEvent(event,true);}}
_discardSubMenus()
{if(this._subMenu)
this._subMenu._discardSubMenus();if(this._contextMenuElement.parentElement)
this._contextMenuElement.parentElement.removeChild(this._contextMenuElement);if(this._parentMenu)
this._parentMenu._subMenu=null;}};WebInspector.SourceCodeTextEditor=class SourceCodeTextEditor extends WebInspector.TextEditor
{constructor(sourceCode)
{super();this.delegate=this;this._sourceCode=sourceCode;this._breakpointMap={};this._issuesLineNumberMap=new Map;this._widgetMap=new Map;this._contentPopulated=false;this._invalidLineNumbers={0:true};this._requestingScriptContent=false;this._activeCallFrameSourceCodeLocation=null;this._threadLineNumberMap=new Map;this._threadWidgetMap=new Map; this._threadTargetMap=new Map; this._typeTokenScrollHandler=null;this._typeTokenAnnotator=null;this._basicBlockAnnotator=null;this._editingController=null;this._autoFormat=false;this._isProbablyMinified=false;this._ignoreContentDidChange=0;this._ignoreLocationUpdateBreakpoint=null;this._ignoreBreakpointAddedBreakpoint=null;this._ignoreBreakpointRemovedBreakpoint=null;this._ignoreAllBreakpointLocationUpdates=false;this._updateTokenTrackingControllerState();this.element.classList.add("source-code");if(this._supportsDebugging){WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.DisabledStateDidChange,this._breakpointStatusDidChange,this);WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.AutoContinueDidChange,this._breakpointStatusDidChange,this);WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.ResolvedStateDidChange,this._breakpointStatusDidChange,this);WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.LocationDidChange,this._updateBreakpointLocation,this);WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event.TargetAdded,this._targetAdded,this);WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event.TargetRemoved,this._targetRemoved,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.BreakpointsEnabledDidChange,this._breakpointsEnabledDidChange,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.BreakpointAdded,this._breakpointAdded,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.BreakpointRemoved,this._breakpointRemoved,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.CallFramesDidChange,this._callFramesDidChange,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange,this._activeCallFrameDidChange,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.Paused,this._debuggerDidPause,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.Resumed,this._debuggerDidResume,this);if(WebInspector.debuggerManager.activeCallFrame)
this._debuggerDidPause();this._activeCallFrameDidChange();}
WebInspector.issueManager.addEventListener(WebInspector.IssueManager.Event.IssueWasAdded,this._issueWasAdded,this);if(this._sourceCode instanceof WebInspector.SourceMapResource||this._sourceCode.sourceMaps.length>0)
WebInspector.notifications.addEventListener(WebInspector.Notification.GlobalModifierKeysDidChange,this._updateTokenTrackingControllerState,this);else
this._sourceCode.addEventListener(WebInspector.SourceCode.Event.SourceMapAdded,this._sourceCodeSourceMapAdded,this);sourceCode.requestContent().then(this._contentAvailable.bind(this));new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.Control,"G",this.showGoToLineDialog.bind(this),this.element);WebInspector.logManager.addEventListener(WebInspector.LogManager.Event.Cleared,this._logCleared,this);}
get sourceCode()
{return this._sourceCode;}
get target()
{if(this._sourceCode instanceof WebInspector.SourceMapResource){if(this._sourceCode.sourceMap.originalSourceCode instanceof WebInspector.Script)
return this._sourceCode.sourceMap.originalSourceCode.target;}
if(this._sourceCode instanceof WebInspector.Script)
return this._sourceCode.target;return WebInspector.mainTarget;}
shown()
{super.shown();if(WebInspector.showJavaScriptTypeInformationSetting.value){if(this._typeTokenAnnotator)
this._typeTokenAnnotator.resume();if(!this._typeTokenScrollHandler&&this._typeTokenAnnotator)
this._enableScrollEventsForTypeTokenAnnotator();}else{if(this._typeTokenAnnotator)
this._setTypeTokenAnnotatorEnabledState(false);}
if(WebInspector.enableControlFlowProfilerSetting.value){if(this._basicBlockAnnotator)
this._basicBlockAnnotator.resume();if(!this._controlFlowScrollHandler&&this._basicBlockAnnotator)
this._enableScrollEventsForControlFlowAnnotator();}else{this._basicBlockAnnotatorEnabled=false;}}
hidden()
{super.hidden();this.tokenTrackingController.removeHighlightedRange();this._dismissPopover();this._dismissEditingController(true);if(this._typeTokenAnnotator)
this._typeTokenAnnotator.pause();if(this._basicBlockAnnotator)
this._basicBlockAnnotator.pause();}
close()
{super.close();if(this._supportsDebugging){WebInspector.Breakpoint.removeEventListener(null,null,this);WebInspector.debuggerManager.removeEventListener(null,null,this);WebInspector.targetManager.removeEventListener(null,null,this);if(this._activeCallFrameSourceCodeLocation){this._activeCallFrameSourceCodeLocation.removeEventListener(WebInspector.SourceCodeLocation.Event.LocationChanged,this._activeCallFrameSourceCodeLocationChanged,this);this._activeCallFrameSourceCodeLocation=null;}}
WebInspector.issueManager.removeEventListener(WebInspector.IssueManager.Event.IssueWasAdded,this._issueWasAdded,this);if(this._sourceCode instanceof WebInspector.SourceMapResource||this._sourceCode.sourceMaps.length>0)
WebInspector.notifications.removeEventListener(WebInspector.Notification.GlobalModifierKeysDidChange,this._updateTokenTrackingControllerState,this);else
this._sourceCode.removeEventListener(WebInspector.SourceCode.Event.SourceMapAdded,this._sourceCodeSourceMapAdded,this);}
canBeFormatted()
{
if(this._sourceCode instanceof WebInspector.SourceMapResource)
return false;return super.canBeFormatted();}
canShowTypeAnnotations()
{return!!this._getAssociatedScript()&&!this.hasModified;}
canShowCoverageHints()
{return!!this._getAssociatedScript()&&!this.hasModified;}
customPerformSearch(query)
{function searchResultCallback(error,matches)
{if(this.currentSearchQuery!==query)
return;if(error||!matches||!matches.length){this.dispatchEventToListeners(WebInspector.TextEditor.Event.NumberOfSearchResultsDidChange);return;}
var queryRegex=new RegExp(query.escapeForRegExp(),"gi");var searchResults=[];for(var i=0;i<matches.length;++i){var matchLineNumber=matches[i].lineNumber;var line=this.line(matchLineNumber);if(!line)
return;queryRegex.lastIndex=0;var lineMatch=null;while(queryRegex.lastIndex+query.length<=line.length&&(lineMatch=queryRegex.exec(line))){var resultTextRange=new WebInspector.TextRange(matchLineNumber,lineMatch.index,matchLineNumber,queryRegex.lastIndex);searchResults.push(resultTextRange);}}
this.addSearchResults(searchResults);this.dispatchEventToListeners(WebInspector.TextEditor.Event.NumberOfSearchResultsDidChange);}
if(this.hasEdits())
return false;if(this._sourceCode instanceof WebInspector.SourceMapResource)
return false;if(this._sourceCode instanceof WebInspector.Resource)
PageAgent.searchInResource(this._sourceCode.parentFrame.id,this._sourceCode.url,query,false,false,searchResultCallback.bind(this));else if(this._sourceCode instanceof WebInspector.Script)
this._sourceCode.target.DebuggerAgent.searchInContent(this._sourceCode.id,query,false,false,searchResultCallback.bind(this));return true;}
showGoToLineDialog()
{if(!this._goToLineDialog)
this._goToLineDialog=new WebInspector.GoToLineDialog(this);this._goToLineDialog.present(this.element);}
isDialogRepresentedObjectValid(goToLineDialog,lineNumber)
{return!isNaN(lineNumber)&&lineNumber>0&&lineNumber<=this.lineCount;}
dialogWasDismissed(goToLineDialog)
{let lineNumber=goToLineDialog.representedObject;let position=new WebInspector.SourceCodePosition(lineNumber-1,0);let range=new WebInspector.TextRange(lineNumber-1,0,lineNumber,0);this.revealPosition(position,range,false,true);this.focus();}
contentDidChange(replacedRanges,newRanges)
{super.contentDidChange(replacedRanges,newRanges);if(this._ignoreContentDidChange>0)
return;for(var range of newRanges)
this._updateEditableMarkers(range);if(this._basicBlockAnnotator){this._basicBlockAnnotatorEnabled=false;this._basicBlockAnnotator=null;}
if(this._typeTokenAnnotator){this._setTypeTokenAnnotatorEnabledState(false);this._typeTokenAnnotator=null;}}
toggleTypeAnnotations()
{if(!this._typeTokenAnnotator)
return false;var newActivatedState=!this._typeTokenAnnotator.isActive();if(newActivatedState&&this._isProbablyMinified&&!this.formatted){return this.updateFormattedState(true).then(()=>{this._setTypeTokenAnnotatorEnabledState(newActivatedState);});}
this._setTypeTokenAnnotatorEnabledState(newActivatedState);return Promise.resolve();}
toggleUnexecutedCodeHighlights()
{if(!this._basicBlockAnnotator)
return false;let newActivatedState=!this._basicBlockAnnotator.isActive();if(newActivatedState&&this._isProbablyMinified&&!this.formatted){return this.updateFormattedState(true).then(()=>{this._basicBlockAnnotatorEnabled=newActivatedState;});}
this._basicBlockAnnotatorEnabled=newActivatedState;return Promise.resolve();}
showPopoverForTypes(typeDescription,bounds,title)
{var content=document.createElement("div");content.className="object expandable";var titleElement=document.createElement("div");titleElement.className="title";titleElement.textContent=title;content.appendChild(titleElement);var bodyElement=content.appendChild(document.createElement("div"));bodyElement.className="body";var typeTreeView=new WebInspector.TypeTreeView(typeDescription);bodyElement.appendChild(typeTreeView.element);this._showPopover(content,bounds);}
prettyPrint(pretty)
{
var shouldResumeBasicBlockAnnotator=this._basicBlockAnnotator&&this._basicBlockAnnotator.isActive();if(shouldResumeBasicBlockAnnotator)
this._basicBlockAnnotatorEnabled=false;let shouldResumeTypeTokenAnnotator=this._typeTokenAnnotator&&this._typeTokenAnnotator.isActive();if(shouldResumeTypeTokenAnnotator)
this._setTypeTokenAnnotatorEnabledState(false);return super.prettyPrint(pretty).then(()=>{if(pretty||!this._isProbablyMinified){if(shouldResumeBasicBlockAnnotator)
this._basicBlockAnnotatorEnabled=true;if(shouldResumeTypeTokenAnnotator)
this._setTypeTokenAnnotatorEnabledState(true);}else{if(this._basicBlockAnnotator)
this._basicBlockAnnotatorEnabled=false;this._setTypeTokenAnnotatorEnabledState(false);}});}
_unformattedLineInfoForEditorLineInfo(lineInfo)
{if(this.formatterSourceMap)
return this.formatterSourceMap.formattedToOriginal(lineInfo.lineNumber,lineInfo.columnNumber);return lineInfo;}
_sourceCodeLocationForEditorPosition(position)
{var lineInfo={lineNumber:position.line,columnNumber:position.ch};var unformattedLineInfo=this._unformattedLineInfoForEditorLineInfo(lineInfo);return this.sourceCode.createSourceCodeLocation(unformattedLineInfo.lineNumber,unformattedLineInfo.columnNumber);}
_editorLineInfoForSourceCodeLocation(sourceCodeLocation)
{if(this._sourceCode instanceof WebInspector.SourceMapResource)
return{lineNumber:sourceCodeLocation.displayLineNumber,columnNumber:sourceCodeLocation.displayColumnNumber};return{lineNumber:sourceCodeLocation.formattedLineNumber,columnNumber:sourceCodeLocation.formattedColumnNumber};}
_breakpointForEditorLineInfo(lineInfo)
{if(!this._breakpointMap[lineInfo.lineNumber])
return null;return this._breakpointMap[lineInfo.lineNumber][lineInfo.columnNumber];}
_addBreakpointWithEditorLineInfo(breakpoint,lineInfo)
{if(!this._breakpointMap[lineInfo.lineNumber])
this._breakpointMap[lineInfo.lineNumber]={};this._breakpointMap[lineInfo.lineNumber][lineInfo.columnNumber]=breakpoint;}
_removeBreakpointWithEditorLineInfo(breakpoint,lineInfo)
{delete this._breakpointMap[lineInfo.lineNumber][lineInfo.columnNumber];if(isEmptyObject(this._breakpointMap[lineInfo.lineNumber]))
delete this._breakpointMap[lineInfo.lineNumber];}
_populateWithContent(content)
{content=content||"";this._prepareEditorForInitialContent(content);if(this._autoFormat){this._autoFormat=false;this.deferReveal=true;this.string=content;this.deferReveal=false;this.updateFormattedState(true).then(()=>{this._proceedPopulateWithContent(this.string);});return;}
this._proceedPopulateWithContent(content);}
_proceedPopulateWithContent(content)
{this.dispatchEventToListeners(WebInspector.SourceCodeTextEditor.Event.ContentWillPopulate);this.string=content;this._createBasicBlockAnnotator();if(WebInspector.enableControlFlowProfilerSetting.value&&this._basicBlockAnnotator)
this._basicBlockAnnotatorEnabled=true;this._createTypeTokenAnnotator();if(WebInspector.showJavaScriptTypeInformationSetting.value)
this._setTypeTokenAnnotatorEnabledState(true);this._contentDidPopulate();}
_contentDidPopulate()
{this._contentPopulated=true;this.dispatchEventToListeners(WebInspector.SourceCodeTextEditor.Event.ContentDidPopulate);
this._reinsertAllIssues();this._reinsertAllThreadIndicators();this._updateEditableMarkers();}
_prepareEditorForInitialContent(content)
{if(this._contentPopulated)
return;if(this._supportsDebugging){this._breakpointMap={};var breakpoints=WebInspector.debuggerManager.breakpointsForSourceCode(this._sourceCode);for(var i=0;i<breakpoints.length;++i){var breakpoint=breakpoints[i];var lineInfo=this._editorLineInfoForSourceCodeLocation(breakpoint.sourceCodeLocation);this._addBreakpointWithEditorLineInfo(breakpoint,lineInfo);this.setBreakpointInfoForLineAndColumn(lineInfo.lineNumber,lineInfo.columnNumber,this._breakpointInfoForBreakpoint(breakpoint));}}
if(this._sourceCode instanceof WebInspector.Resource)
this.mimeType=this._sourceCode.syntheticMIMEType;else if(this._sourceCode instanceof WebInspector.Script)
this.mimeType="text/javascript";else if(this._sourceCode instanceof WebInspector.CSSStyleSheet)
this.mimeType="text/css";if(this.canBeFormatted()&&isTextLikelyMinified(content)){this._autoFormat=true;this._isProbablyMinified=true;}}
_contentAvailable(parameters)
{if(parameters.error)
return;var sourceCode=parameters.sourceCode;var content=sourceCode.content;var base64Encoded=parameters.base64Encoded;if(this._fullContentPopulated)
return;this._fullContentPopulated=true;this._invalidLineNumbers={};this._populateWithContent(content);}
_breakpointStatusDidChange(event)
{this._updateBreakpointStatus(event.target);}
_breakpointsEnabledDidChange()
{var breakpoints=WebInspector.debuggerManager.breakpointsForSourceCode(this._sourceCode);for(var breakpoint of breakpoints)
this._updateBreakpointStatus(breakpoint);}
_updateBreakpointStatus(breakpoint)
{if(!this._contentPopulated)
return;if(!this._matchesBreakpoint(breakpoint))
return;var lineInfo=this._editorLineInfoForSourceCodeLocation(breakpoint.sourceCodeLocation);this.setBreakpointInfoForLineAndColumn(lineInfo.lineNumber,lineInfo.columnNumber,this._breakpointInfoForBreakpoint(breakpoint));}
_updateBreakpointLocation(event)
{if(!this._contentPopulated)
return;var breakpoint=event.target;if(!this._matchesBreakpoint(breakpoint))
return;if(this._ignoreAllBreakpointLocationUpdates)
return;if(breakpoint===this._ignoreLocationUpdateBreakpoint)
return;var sourceCodeLocation=breakpoint.sourceCodeLocation;if(this._sourceCode instanceof WebInspector.SourceMapResource){if(sourceCodeLocation.displaySourceCode!==this._sourceCode)
return;var oldLineInfo={lineNumber:event.data.oldDisplayLineNumber,columnNumber:event.data.oldDisplayColumnNumber};var newLineInfo={lineNumber:sourceCodeLocation.displayLineNumber,columnNumber:sourceCodeLocation.displayColumnNumber};}else{if(sourceCodeLocation.sourceCode!==this._sourceCode)
return;var oldLineInfo={lineNumber:event.data.oldFormattedLineNumber,columnNumber:event.data.oldFormattedColumnNumber};var newLineInfo={lineNumber:sourceCodeLocation.formattedLineNumber,columnNumber:sourceCodeLocation.formattedColumnNumber};}
var existingBreakpoint=this._breakpointForEditorLineInfo(oldLineInfo);if(!existingBreakpoint)
return;this.setBreakpointInfoForLineAndColumn(oldLineInfo.lineNumber,oldLineInfo.columnNumber,null);this.setBreakpointInfoForLineAndColumn(newLineInfo.lineNumber,newLineInfo.columnNumber,this._breakpointInfoForBreakpoint(breakpoint));this._removeBreakpointWithEditorLineInfo(breakpoint,oldLineInfo);this._addBreakpointWithEditorLineInfo(breakpoint,newLineInfo);}
_breakpointAdded(event)
{if(!this._contentPopulated)
return;var breakpoint=event.data.breakpoint;if(!this._matchesBreakpoint(breakpoint))
return;if(breakpoint===this._ignoreBreakpointAddedBreakpoint)
return;var lineInfo=this._editorLineInfoForSourceCodeLocation(breakpoint.sourceCodeLocation);this._addBreakpointWithEditorLineInfo(breakpoint,lineInfo);this.setBreakpointInfoForLineAndColumn(lineInfo.lineNumber,lineInfo.columnNumber,this._breakpointInfoForBreakpoint(breakpoint));}
_breakpointRemoved(event)
{if(!this._contentPopulated)
return;var breakpoint=event.data.breakpoint;if(!this._matchesBreakpoint(breakpoint))
return;if(breakpoint===this._ignoreBreakpointRemovedBreakpoint)
return;var lineInfo=this._editorLineInfoForSourceCodeLocation(breakpoint.sourceCodeLocation);this._removeBreakpointWithEditorLineInfo(breakpoint,lineInfo);this.setBreakpointInfoForLineAndColumn(lineInfo.lineNumber,lineInfo.columnNumber,null);}
_targetAdded(event)
{if(WebInspector.targets.size===2)
this._reinsertAllThreadIndicators();}
_targetRemoved(event)
{if(WebInspector.targets.size===1){this._reinsertAllThreadIndicators();return;}
let target=event.data.target;this._removeThreadIndicatorForTarget(target);}
_callFramesDidChange(event)
{if(WebInspector.targets.size===1)
return;let target=event.data.target;this._removeThreadIndicatorForTarget(target);this._addThreadIndicatorForTarget(target);}
_addThreadIndicatorForTarget(target)
{let targetData=WebInspector.debuggerManager.dataForTarget(target);let topCallFrame=targetData.callFrames[0];if(!topCallFrame)
return;let sourceCodeLocation=topCallFrame.sourceCodeLocation;if(!sourceCodeLocation)
return;if(!this._looselyMatchesSourceCodeLocation(sourceCodeLocation))
return;let lineNumberWithIndicator=sourceCodeLocation.formattedLineNumber;this._threadTargetMap.set(target,lineNumberWithIndicator);let threads=this._threadLineNumberMap.get(lineNumberWithIndicator);if(!threads){threads=[];this._threadLineNumberMap.set(lineNumberWithIndicator,threads);}
threads.push(target);let widget=this._threadIndicatorWidgetForLine(target,lineNumberWithIndicator);this._updateThreadIndicatorWidget(widget,threads);this.addStyleClassToLine(lineNumberWithIndicator,"thread-indicator");}
_removeThreadIndicatorForTarget(target)
{let lineNumberWithIndicator=this._threadTargetMap.take(target);if(lineNumberWithIndicator===undefined)
return;let threads=this._threadLineNumberMap.get(lineNumberWithIndicator);threads.remove(target);if(threads.length){let widget=this._threadWidgetMap.get(lineNumberWithIndicator);this._updateThreadIndicatorWidget(widget,threads);return;}
this._threadLineNumberMap.delete(lineNumberWithIndicator);let widget=this._threadWidgetMap.take(lineNumberWithIndicator);if(widget)
widget.clear();this.removeStyleClassFromLine(lineNumberWithIndicator,"thread-indicator");}
_threadIndicatorWidgetForLine(target,lineNumber)
{let widget=this._threadWidgetMap.get(lineNumber);if(widget)
return widget;widget=this.createWidgetForLine(lineNumber);if(!widget)
return null;let widgetElement=widget.widgetElement;widgetElement.classList.add("line-indicator-widget","thread-widget","inline");widgetElement.addEventListener("click",this._handleThreadIndicatorWidgetClick.bind(this,widget,lineNumber));this._threadWidgetMap.set(lineNumber,widget);return widget;}
_updateThreadIndicatorWidget(widget,threads)
{if(!widget)
return;let widgetElement=widget.widgetElement;widgetElement.removeChildren();widget[WebInspector.SourceCodeTextEditor.WidgetContainsMultipleThreadsSymbol]=threads.length>1;if(widgetElement.classList.contains("inline")||threads.length===1){let arrowElement=widgetElement.appendChild(document.createElement("span"));arrowElement.className="arrow";let textElement=widgetElement.appendChild(document.createElement("span"));textElement.className="text";textElement.textContent=threads.length===1?threads[0].displayName:WebInspector.UIString("%d Threads").format(threads.length);}else{for(let target of threads){let textElement=widgetElement.appendChild(document.createElement("span"));textElement.className="text";textElement.textContent=target.displayName;widgetElement.appendChild(document.createElement("br"));}}
widget.update();}
_handleThreadIndicatorWidgetClick(widget,lineNumber,event)
{if(!this._isWidgetToggleable(widget))
return;widget.widgetElement.classList.toggle("inline");let threads=this._threadLineNumberMap.get(lineNumber);this._updateThreadIndicatorWidget(widget,threads);}
_activeCallFrameDidChange()
{if(this._activeCallFrameSourceCodeLocation){this._activeCallFrameSourceCodeLocation.removeEventListener(WebInspector.SourceCodeLocation.Event.LocationChanged,this._activeCallFrameSourceCodeLocationChanged,this);this._activeCallFrameSourceCodeLocation=null;}
let activeCallFrame=WebInspector.debuggerManager.activeCallFrame;if(!activeCallFrame||!this._matchesSourceCodeLocation(activeCallFrame.sourceCodeLocation)){this.setExecutionLineAndColumn(NaN,NaN);return;}
this._dismissPopover();this._activeCallFrameSourceCodeLocation=activeCallFrame.sourceCodeLocation;this._activeCallFrameSourceCodeLocation.addEventListener(WebInspector.SourceCodeLocation.Event.LocationChanged,this._activeCallFrameSourceCodeLocationChanged,this);
let lineInfo=this._editorLineInfoForSourceCodeLocation(activeCallFrame.sourceCodeLocation);this.setExecutionLineAndColumn(lineInfo.lineNumber,lineInfo.columnNumber);if(this._fullContentPopulated||!(this._sourceCode instanceof WebInspector.Resource)||this._requestingScriptContent)
return;
if(this._sourceCode.type===WebInspector.Resource.Type.Document)
this._populateWithInlineScriptContent();else
this._populateWithScriptContent();}
_activeCallFrameSourceCodeLocationChanged(event)
{if(isNaN(this.executionLineNumber))
return;var lineInfo=this._editorLineInfoForSourceCodeLocation(this._activeCallFrameSourceCodeLocation);this.setExecutionLineAndColumn(lineInfo.lineNumber,lineInfo.columnNumber);}
_populateWithInlineScriptContent()
{var scripts=this._sourceCode.scripts;if(!scripts.length)
return;var pendingRequestCount=scripts.length;if(this._inlineScriptContentPopulated===pendingRequestCount)
return;this._inlineScriptContentPopulated=pendingRequestCount;function scriptContentAvailable(parameters)
{if(--pendingRequestCount)
return;this._requestingScriptContent=false;if(this._fullContentPopulated)
return;var scriptOpenTag="<script>";var scriptCloseTag="</script>";var content="";var lineNumber=0;var columnNumber=0;this._invalidLineNumbers={};for(var i=0;i<scripts.length;++i){for(var newLinesCount=scripts[i].range.startLine-lineNumber;newLinesCount>0;--newLinesCount){if(!columnNumber)
this._invalidLineNumbers[scripts[i].range.startLine-newLinesCount]=true;columnNumber=0;content+="\n";}
for(var spacesCount=scripts[i].range.startColumn-columnNumber-scriptOpenTag.length;spacesCount>0;--spacesCount)
content+=" ";content+=scriptOpenTag;content+=scripts[i].content;content+=scriptCloseTag;lineNumber=scripts[i].range.endLine;columnNumber=scripts[i].range.endColumn+scriptCloseTag.length;}
this._populateWithContent(content);}
this._requestingScriptContent=true;var boundScriptContentAvailable=scriptContentAvailable.bind(this);for(var i=0;i<scripts.length;++i)
scripts[i].requestContent().then(boundScriptContentAvailable);}
_populateWithScriptContent()
{var scripts=this._sourceCode.scripts;if(!scripts.length)
return;function scriptContentAvailable(parameters)
{var content=parameters.content;this._requestingScriptContent=false;if(this._fullContentPopulated)
return;this._fullContentPopulated=true;this._populateWithContent(content);}
this._requestingScriptContent=true;scripts[0].requestContent().then(scriptContentAvailable.bind(this));}
_looselyMatchesSourceCodeLocation(sourceCodeLocation)
{if(this._sourceCode instanceof WebInspector.SourceMapResource)
return sourceCodeLocation.displaySourceCode===this._sourceCode;if(this._sourceCode instanceof WebInspector.Resource||this._sourceCode instanceof WebInspector.Script||this._sourceCode instanceof WebInspector.CSSStyleSheet)
return sourceCodeLocation.sourceCode.url===this._sourceCode.url;return false;}
_matchesSourceCodeLocation(sourceCodeLocation)
{if(this._sourceCode instanceof WebInspector.SourceMapResource)
return sourceCodeLocation.displaySourceCode===this._sourceCode;if(this._sourceCode instanceof WebInspector.Resource||this._sourceCode instanceof WebInspector.CSSStyleSheet)
return sourceCodeLocation.sourceCode.url===this._sourceCode.url;if(this._sourceCode instanceof WebInspector.Script)
return sourceCodeLocation.sourceCode===this._sourceCode;return false;}
_matchesBreakpoint(breakpoint)
{if(this._sourceCode instanceof WebInspector.SourceMapResource)
return breakpoint.sourceCodeLocation.displaySourceCode===this._sourceCode;if(this._sourceCode instanceof WebInspector.Resource)
return breakpoint.contentIdentifier===this._sourceCode.contentIdentifier;if(this._sourceCode instanceof WebInspector.Script)
return breakpoint.contentIdentifier===this._sourceCode.contentIdentifier||breakpoint.scriptIdentifier===this._sourceCode.id;return false;}
_issueWasAdded(event)
{var issue=event.data.issue;if(!WebInspector.IssueManager.issueMatchSourceCode(issue,this._sourceCode))
return;this._addIssue(issue);}
_addIssue(issue)
{var sourceCodeLocation=issue.sourceCodeLocation;if(!sourceCodeLocation)
return;var lineNumber=sourceCodeLocation.formattedLineNumber;var lineNumberIssues=this._issuesLineNumberMap.get(lineNumber);if(!lineNumberIssues){lineNumberIssues=[];this._issuesLineNumberMap.set(lineNumber,lineNumberIssues);}
for(var existingIssue of lineNumberIssues){if(existingIssue.sourceCodeLocation.columnNumber===sourceCodeLocation.columnNumber&&existingIssue.text===issue.text)
return;}
lineNumberIssues.push(issue);if(issue.level===WebInspector.IssueMessage.Level.Error)
this.addStyleClassToLine(lineNumber,WebInspector.SourceCodeTextEditor.LineErrorStyleClassName);else if(issue.level===WebInspector.IssueMessage.Level.Warning)
this.addStyleClassToLine(lineNumber,WebInspector.SourceCodeTextEditor.LineWarningStyleClassName);else
console.error("Unknown issue level");var widget=this._issueWidgetForLine(lineNumber);if(widget){if(issue.level===WebInspector.IssueMessage.Level.Error)
widget.widgetElement.classList.add(WebInspector.SourceCodeTextEditor.LineErrorStyleClassName);else if(issue.level===WebInspector.IssueMessage.Level.Warning)
widget.widgetElement.classList.add(WebInspector.SourceCodeTextEditor.LineWarningStyleClassName);this._updateIssueWidgetForIssues(widget,lineNumberIssues);}}
_issueWidgetForLine(lineNumber)
{var widget=this._widgetMap.get(lineNumber);if(widget)
return widget;widget=this.createWidgetForLine(lineNumber);if(!widget)
return null;var widgetElement=widget.widgetElement;widgetElement.classList.add("line-indicator-widget","issue-widget","inline");widgetElement.addEventListener("click",this._handleWidgetClick.bind(this,widget,lineNumber));this._widgetMap.set(lineNumber,widget);return widget;}
_iconClassNameForIssueLevel(level)
{if(level===WebInspector.IssueMessage.Level.Warning)
return"icon-warning";return"icon-error";}
_updateIssueWidgetForIssues(widget,issues)
{var widgetElement=widget.widgetElement;widgetElement.removeChildren();if(widgetElement.classList.contains("inline")||issues.length===1){var arrowElement=widgetElement.appendChild(document.createElement("span"));arrowElement.className="arrow";var iconElement=widgetElement.appendChild(document.createElement("span"));iconElement.className="icon";var textElement=widgetElement.appendChild(document.createElement("span"));textElement.className="text";if(issues.length===1){iconElement.classList.add(this._iconClassNameForIssueLevel(issues[0].level));textElement.textContent=issues[0].text;}else{var errorsCount=0;var warningsCount=0;for(var issue of issues){if(issue.level===WebInspector.IssueMessage.Level.Error)
++errorsCount;else if(issue.level===WebInspector.IssueMessage.Level.Warning)
++warningsCount;}
if(warningsCount&&errorsCount){iconElement.classList.add(this._iconClassNameForIssueLevel(issue.level));textElement.textContent=WebInspector.UIString("%d Errors, %d Warnings").format(errorsCount,warningsCount);}else if(errorsCount){iconElement.classList.add(this._iconClassNameForIssueLevel(issue.level));textElement.textContent=WebInspector.UIString("%d Errors").format(errorsCount);}else if(warningsCount){iconElement.classList.add(this._iconClassNameForIssueLevel(issue.level));textElement.textContent=WebInspector.UIString("%d Warnings").format(warningsCount);}
widget[WebInspector.SourceCodeTextEditor.WidgetContainsMultipleIssuesSymbol]=true;}}else{for(var issue of issues){var iconElement=widgetElement.appendChild(document.createElement("span"));iconElement.className="icon";iconElement.classList.add(this._iconClassNameForIssueLevel(issue.level));var textElement=widgetElement.appendChild(document.createElement("span"));textElement.className="text";textElement.textContent=issue.text;widgetElement.appendChild(document.createElement("br"));}}
widget.update();}
_isWidgetToggleable(widget)
{if(widget[WebInspector.SourceCodeTextEditor.WidgetContainsMultipleIssuesSymbol])
return true;if(widget[WebInspector.SourceCodeTextEditor.WidgetContainsMultipleThreadsSymbol])
return true;if(!widget.widgetElement.classList.contains("inline"))
return true;var textElement=widget.widgetElement.lastChild;if(textElement.offsetWidth!==textElement.scrollWidth)
return true;return false;}
_handleWidgetClick(widget,lineNumber,event)
{if(!this._isWidgetToggleable(widget))
return;widget.widgetElement.classList.toggle("inline");var lineNumberIssues=this._issuesLineNumberMap.get(lineNumber);this._updateIssueWidgetForIssues(widget,lineNumberIssues);}
_breakpointInfoForBreakpoint(breakpoint)
{return{resolved:breakpoint.resolved,disabled:breakpoint.disabled,autoContinue:breakpoint.autoContinue};}
get _supportsDebugging()
{if(this._sourceCode instanceof WebInspector.Resource)
return this._sourceCode.type===WebInspector.Resource.Type.Document||this._sourceCode.type===WebInspector.Resource.Type.Script;if(this._sourceCode instanceof WebInspector.Script)
return true;return false;}
textEditorBaseURL(textEditor)
{return this._sourceCode.url;}
textEditorScriptSourceType(textEditor)
{let script=this._getAssociatedScript();return script?script.sourceType:WebInspector.Script.SourceType.Program;}
textEditorShouldHideLineNumber(textEditor,lineNumber)
{return lineNumber in this._invalidLineNumbers;}
textEditorGutterContextMenu(textEditor,lineNumber,columnNumber,editorBreakpoints,event)
{if(!this._supportsDebugging)
return;event.preventDefault();let addBreakpoint=()=>{let data=this.textEditorBreakpointAdded(this,lineNumber,columnNumber);this.setBreakpointInfoForLineAndColumn(data.lineNumber,data.columnNumber,data.breakpointInfo);};let contextMenu=WebInspector.ContextMenu.createFromEvent(event);if(WebInspector.debuggerManager.paused){let editorLineInfo={lineNumber,columnNumber};let unformattedLineInfo=this._unformattedLineInfoForEditorLineInfo(editorLineInfo);let sourceCodeLocation=this._sourceCode.createSourceCodeLocation(unformattedLineInfo.lineNumber,unformattedLineInfo.columnNumber);let script;if(sourceCodeLocation.sourceCode instanceof WebInspector.Script)
script=sourceCodeLocation.sourceCode;else if(sourceCodeLocation.sourceCode instanceof WebInspector.Resource)
script=sourceCodeLocation.sourceCode.scriptForLocation(sourceCodeLocation);if(script){contextMenu.appendItem(WebInspector.UIString("Continue to Here"),()=>{WebInspector.debuggerManager.continueToLocation(script,sourceCodeLocation.lineNumber,sourceCodeLocation.columnNumber);});contextMenu.appendSeparator();}}
let breakpoints=[];for(let lineInfo of editorBreakpoints){let breakpoint=this._breakpointForEditorLineInfo(lineInfo);if(breakpoint)
breakpoints.push(breakpoint);}
if(!breakpoints.length){contextMenu.appendItem(WebInspector.UIString("Add Breakpoint"),addBreakpoint.bind(this));return;}
if(breakpoints.length===1){WebInspector.breakpointPopoverController.appendContextMenuItems(contextMenu,breakpoints[0],event.target);if(!WebInspector.isShowingDebuggerTab()){contextMenu.appendSeparator();contextMenu.appendItem(WebInspector.UIString("Reveal in Debugger Tab"),()=>{WebInspector.showDebuggerTab({breakpointToSelect:breakpoints[0]});});}
return;}
let removeBreakpoints=()=>{for(let breakpoint of breakpoints){if(WebInspector.debuggerManager.isBreakpointRemovable(breakpoint))
WebInspector.debuggerManager.removeBreakpoint(breakpoint);}};let shouldDisable=breakpoints.some((breakpoint)=>!breakpoint.disabled);let toggleBreakpoints=(shouldDisable)=>{for(let breakpoint of breakpoints)
breakpoint.disabled=shouldDisable;};if(shouldDisable)
contextMenu.appendItem(WebInspector.UIString("Disable Breakpoints"),toggleBreakpoints);else
contextMenu.appendItem(WebInspector.UIString("Enable Breakpoints"),toggleBreakpoints);contextMenu.appendItem(WebInspector.UIString("Delete Breakpoints"),removeBreakpoints);}
textEditorBreakpointAdded(textEditor,lineNumber,columnNumber)
{if(!this._supportsDebugging)
return null;var editorLineInfo={lineNumber,columnNumber};var unformattedLineInfo=this._unformattedLineInfoForEditorLineInfo(editorLineInfo);var sourceCodeLocation=this._sourceCode.createSourceCodeLocation(unformattedLineInfo.lineNumber,unformattedLineInfo.columnNumber);var breakpoint=new WebInspector.Breakpoint(sourceCodeLocation);var lineInfo=this._editorLineInfoForSourceCodeLocation(breakpoint.sourceCodeLocation);this._addBreakpointWithEditorLineInfo(breakpoint,lineInfo);this._ignoreBreakpointAddedBreakpoint=breakpoint;const shouldSpeculativelyResolveBreakpoint=true;WebInspector.debuggerManager.addBreakpoint(breakpoint,shouldSpeculativelyResolveBreakpoint);this._ignoreBreakpointAddedBreakpoint=null;return{breakpointInfo:this._breakpointInfoForBreakpoint(breakpoint),lineNumber:lineInfo.lineNumber,columnNumber:lineInfo.columnNumber};}
textEditorBreakpointRemoved(textEditor,lineNumber,columnNumber)
{if(!this._supportsDebugging)
return;var lineInfo={lineNumber,columnNumber};var breakpoint=this._breakpointForEditorLineInfo(lineInfo);if(!breakpoint)
return;this._removeBreakpointWithEditorLineInfo(breakpoint,lineInfo);this._ignoreBreakpointRemovedBreakpoint=breakpoint;WebInspector.debuggerManager.removeBreakpoint(breakpoint);this._ignoreBreakpointRemovedBreakpoint=null;}
textEditorBreakpointMoved(textEditor,oldLineNumber,oldColumnNumber,newLineNumber,newColumnNumber)
{if(!this._supportsDebugging)
return;var oldLineInfo={lineNumber:oldLineNumber,columnNumber:oldColumnNumber};var breakpoint=this._breakpointForEditorLineInfo(oldLineInfo);if(!breakpoint)
return;this._removeBreakpointWithEditorLineInfo(breakpoint,oldLineInfo);var newLineInfo={lineNumber:newLineNumber,columnNumber:newColumnNumber};var unformattedNewLineInfo=this._unformattedLineInfoForEditorLineInfo(newLineInfo);this._ignoreLocationUpdateBreakpoint=breakpoint;breakpoint.sourceCodeLocation.update(this._sourceCode,unformattedNewLineInfo.lineNumber,unformattedNewLineInfo.columnNumber);this._ignoreLocationUpdateBreakpoint=null;var accurateNewLineInfo=this._editorLineInfoForSourceCodeLocation(breakpoint.sourceCodeLocation);this._addBreakpointWithEditorLineInfo(breakpoint,accurateNewLineInfo);if(accurateNewLineInfo.lineNumber!==newLineInfo.lineNumber||accurateNewLineInfo.columnNumber!==newLineInfo.columnNumber)
this.updateBreakpointLineAndColumn(newLineInfo.lineNumber,newLineInfo.columnNumber,accurateNewLineInfo.lineNumber,accurateNewLineInfo.columnNumber);}
textEditorBreakpointClicked(textEditor,lineNumber,columnNumber)
{if(!this._supportsDebugging)
return;var breakpoint=this._breakpointForEditorLineInfo({lineNumber,columnNumber});if(!breakpoint)
return;breakpoint.cycleToNextMode();}
textEditorUpdatedFormatting(textEditor)
{this._ignoreAllBreakpointLocationUpdates=true;this._sourceCode.formatterSourceMap=this.formatterSourceMap;this._ignoreAllBreakpointLocationUpdates=false;
if(this._sourceCode instanceof WebInspector.Resource&&!(this._sourceCode instanceof WebInspector.SourceMapResource)){var scripts=this._sourceCode.scripts;for(var i=0;i<scripts.length;++i)
scripts[i].formatterSourceMap=this.formatterSourceMap;}else if(this._sourceCode instanceof WebInspector.Script){if(this._sourceCode.resource)
this._sourceCode.resource.formatterSourceMap=this.formatterSourceMap;}
var oldBreakpointMap=this._breakpointMap;this._breakpointMap={};for(var lineNumber in oldBreakpointMap){for(var columnNumber in oldBreakpointMap[lineNumber]){var breakpoint=oldBreakpointMap[lineNumber][columnNumber];var newLineInfo=this._editorLineInfoForSourceCodeLocation(breakpoint.sourceCodeLocation);this._addBreakpointWithEditorLineInfo(breakpoint,newLineInfo);this.setBreakpointInfoForLineAndColumn(lineNumber,columnNumber,null);this.setBreakpointInfoForLineAndColumn(newLineInfo.lineNumber,newLineInfo.columnNumber,this._breakpointInfoForBreakpoint(breakpoint));}}
this._reinsertAllIssues();this._reinsertAllThreadIndicators();}
textEditorExecutionHighlightRange(offset,position,characterAtOffset,callback)
{let script=this._getAssociatedScript(position);if(!script){callback(null);return;}
let adjustment=script.range.startOffset||0;offset=offset-adjustment;function convertRangeOffsetsToSourceCodeOffsets(range){return range.map((offset)=>offset+adjustment);}
script.requestScriptSyntaxTree((syntaxTree)=>{let nodes=syntaxTree.containersOfOffset(offset);if(!nodes.length){callback(null);return;}
for(let node of nodes){let startOffset=node.range[0];if(startOffset===offset&&node.type!==WebInspector.ScriptSyntaxTree.NodeType.Program){callback(convertRangeOffsetsToSourceCodeOffsets(node.range));return;}
if(node.type===WebInspector.ScriptSyntaxTree.NodeType.ForInStatement||node.type===WebInspector.ScriptSyntaxTree.NodeType.ForOfStatement){if(node.left.range[0]===offset){callback(convertRangeOffsetsToSourceCodeOffsets([node.left.range[0],node.right.range[1]]));return;}}
if(startOffset>offset)
break;}
for(let node of nodes){let startOffset=node.range[0];let endOffset=node.range[1];if(endOffset===offset){if(node.type===WebInspector.ScriptSyntaxTree.NodeType.BlockStatement){callback(convertRangeOffsetsToSourceCodeOffsets([offset-1,offset]));return;}}
if(startOffset>offset)
break;}
nodes.sort((a,b)=>{let aLength=a.range[1]-a.range[0];let bLength=b.range[1]-b.range[0];return aLength-bLength;});let characterAtOffsetIsDotOrBracket=characterAtOffset==="."||characterAtOffset==="[";for(let i=0;i<nodes.length;++i){let node=nodes[i];if(node.type===WebInspector.ScriptSyntaxTree.NodeType.CallExpression||node.type===WebInspector.ScriptSyntaxTree.NodeType.NewExpression||node.type===WebInspector.ScriptSyntaxTree.NodeType.ThrowStatement){callback(convertRangeOffsetsToSourceCodeOffsets(node.range));return;}
if(node.type===WebInspector.ScriptSyntaxTree.NodeType.ThisExpression||(characterAtOffsetIsDotOrBracket&&(node.type===WebInspector.ScriptSyntaxTree.NodeType.Identifier||node.type===WebInspector.ScriptSyntaxTree.NodeType.MemberExpression))){let memberExpressionNode=null;for(let j=i+1;j<nodes.length;++j){let nextNode=nodes[j];if(nextNode.type===WebInspector.ScriptSyntaxTree.NodeType.MemberExpression){memberExpressionNode=nextNode;if(offset===memberExpressionNode.range[1])
continue;}
break;}
if(memberExpressionNode){callback(convertRangeOffsetsToSourceCodeOffsets(memberExpressionNode.range));return;}
callback(convertRangeOffsetsToSourceCodeOffsets(node.range));return;}}
callback(null);});}
_clearIssueWidgets()
{for(var widget of this._widgetMap.values())
widget.clear();this._widgetMap.clear();}
_reinsertAllIssues()
{this._issuesLineNumberMap.clear();this._clearIssueWidgets();let issues=WebInspector.issueManager.issuesForSourceCode(this._sourceCode);for(let issue of issues)
this._addIssue(issue);}
_reinsertAllThreadIndicators()
{for(let lineNumber of this._threadLineNumberMap.keys())
this.removeStyleClassFromLine(lineNumber,"thread-indicator");this._threadLineNumberMap.clear();for(let widget of this._threadWidgetMap.values())
widget.clear();this._threadWidgetMap.clear();this._threadTargetMap.clear();if(WebInspector.targets.size>1){for(let target of WebInspector.targets)
this._addThreadIndicatorForTarget(target);}}
_debuggerDidPause(event)
{this._updateTokenTrackingControllerState();if(this._typeTokenAnnotator&&this._typeTokenAnnotator.isActive())
this._typeTokenAnnotator.refresh();if(this._basicBlockAnnotator&&this._basicBlockAnnotator.isActive())
this._basicBlockAnnotator.refresh();}
_debuggerDidResume(event)
{this._updateTokenTrackingControllerState();this._dismissPopover();if(this._typeTokenAnnotator&&this._typeTokenAnnotator.isActive())
this._typeTokenAnnotator.refresh();if(this._basicBlockAnnotator&&this._basicBlockAnnotator.isActive())
this._basicBlockAnnotator.refresh();}
_sourceCodeSourceMapAdded(event)
{WebInspector.notifications.addEventListener(WebInspector.Notification.GlobalModifierKeysDidChange,this._updateTokenTrackingControllerState,this);this._sourceCode.removeEventListener(WebInspector.SourceCode.Event.SourceMapAdded,this._sourceCodeSourceMapAdded,this);this._updateTokenTrackingControllerState();}
_updateTokenTrackingControllerState()
{var mode=WebInspector.CodeMirrorTokenTrackingController.Mode.None;if(WebInspector.debuggerManager.paused)
mode=WebInspector.CodeMirrorTokenTrackingController.Mode.JavaScriptExpression;else if(this._typeTokenAnnotator&&this._typeTokenAnnotator.isActive())
mode=WebInspector.CodeMirrorTokenTrackingController.Mode.JavaScriptTypeInformation;else if(this._hasColorMarkers())
mode=WebInspector.CodeMirrorTokenTrackingController.Mode.MarkedTokens;else if((this._sourceCode instanceof WebInspector.SourceMapResource||this._sourceCode.sourceMaps.length!==0)&&WebInspector.modifierKeys.metaKey&&!WebInspector.modifierKeys.altKey&&!WebInspector.modifierKeys.shiftKey)
mode=WebInspector.CodeMirrorTokenTrackingController.Mode.NonSymbolTokens;this.tokenTrackingController.enabled=mode!==WebInspector.CodeMirrorTokenTrackingController.Mode.None;if(mode===this.tokenTrackingController.mode)
return;switch(mode){case WebInspector.CodeMirrorTokenTrackingController.Mode.MarkedTokens:this.tokenTrackingController.mouseOverDelayDuration=0;this.tokenTrackingController.mouseOutReleaseDelayDuration=0;break;case WebInspector.CodeMirrorTokenTrackingController.Mode.NonSymbolTokens:this.tokenTrackingController.mouseOverDelayDuration=0;this.tokenTrackingController.mouseOutReleaseDelayDuration=0;this.tokenTrackingController.classNameForHighlightedRange=WebInspector.CodeMirrorTokenTrackingController.JumpToSymbolHighlightStyleClassName;this._dismissPopover();break;case WebInspector.CodeMirrorTokenTrackingController.Mode.JavaScriptExpression:case WebInspector.CodeMirrorTokenTrackingController.Mode.JavaScriptTypeInformation:this.tokenTrackingController.mouseOverDelayDuration=WebInspector.SourceCodeTextEditor.DurationToMouseOverTokenToMakeHoveredToken;this.tokenTrackingController.mouseOutReleaseDelayDuration=WebInspector.SourceCodeTextEditor.DurationToMouseOutOfHoveredTokenToRelease;this.tokenTrackingController.classNameForHighlightedRange=WebInspector.SourceCodeTextEditor.HoveredExpressionHighlightStyleClassName;break;}
this.tokenTrackingController.mode=mode;}
_hasColorMarkers()
{for(var marker of this.markers){if(marker.type===WebInspector.TextMarker.Type.Color)
return true;}
return false;}
tokenTrackingControllerCanReleaseHighlightedRange(tokenTrackingController,element)
{if(!this._popover)
return true;if(!window.getSelection().isCollapsed&&this._popover.element.contains(window.getSelection().anchorNode))
return false;return true;}
tokenTrackingControllerHighlightedRangeReleased(tokenTrackingController,forceHide=false)
{if(forceHide||!this._mouseIsOverPopover)
this._dismissPopover();}
tokenTrackingControllerHighlightedRangeWasClicked(tokenTrackingController)
{if(this.tokenTrackingController.mode!==WebInspector.CodeMirrorTokenTrackingController.Mode.NonSymbolTokens)
return;if(/\blink\b/.test(this.tokenTrackingController.candidate.hoveredToken.type))
return;const options={ignoreNetworkTab:true,ignoreSearchTab:true,};var sourceCodeLocation=this._sourceCodeLocationForEditorPosition(this.tokenTrackingController.candidate.hoveredTokenRange.start);if(this.sourceCode instanceof WebInspector.SourceMapResource)
WebInspector.showOriginalOrFormattedSourceCodeLocation(sourceCodeLocation,options);else
WebInspector.showSourceCodeLocation(sourceCodeLocation,options);}
tokenTrackingControllerNewHighlightCandidate(tokenTrackingController,candidate)
{if(this.tokenTrackingController.mode===WebInspector.CodeMirrorTokenTrackingController.Mode.NonSymbolTokens){this.tokenTrackingController.highlightRange(candidate.hoveredTokenRange);return;}
if(this.tokenTrackingController.mode===WebInspector.CodeMirrorTokenTrackingController.Mode.JavaScriptExpression){this._tokenTrackingControllerHighlightedJavaScriptExpression(candidate);return;}
if(this.tokenTrackingController.mode===WebInspector.CodeMirrorTokenTrackingController.Mode.JavaScriptTypeInformation){this._tokenTrackingControllerHighlightedJavaScriptTypeInformation(candidate);return;}
if(this.tokenTrackingController.mode===WebInspector.CodeMirrorTokenTrackingController.Mode.MarkedTokens){var markers=this.markersAtPosition(candidate.hoveredTokenRange.start);if(markers.length>0)
this._tokenTrackingControllerHighlightedMarkedExpression(candidate,markers);else
this._dismissEditingController();}}
tokenTrackingControllerMouseOutOfHoveredMarker(tokenTrackingController,hoveredMarker)
{this._dismissEditingController();}
_tokenTrackingControllerHighlightedJavaScriptExpression(candidate)
{function populate(error,result,wasThrown)
{if(error||wasThrown)
return;if(candidate!==this.tokenTrackingController.candidate)
return;let data=WebInspector.RemoteObject.fromPayload(result,this.target);switch(data.type){case"function":this._showPopoverForFunction(data);break;case"object":if(data.subtype==="null"||data.subtype==="regexp")
this._showPopoverWithFormattedValue(data);else
this._showPopoverForObject(data);break;case"string":case"number":case"boolean":case"undefined":case"symbol":this._showPopoverWithFormattedValue(data);break;}}
let target=WebInspector.debuggerManager.activeCallFrame?WebInspector.debuggerManager.activeCallFrame.target:this.target;let expression=appendWebInspectorSourceURL(candidate.expression);if(WebInspector.debuggerManager.activeCallFrame){target.DebuggerAgent.evaluateOnCallFrame.invoke({callFrameId:WebInspector.debuggerManager.activeCallFrame.id,expression,objectGroup:"popover",doNotPauseOnExceptionsAndMuteConsole:true},populate.bind(this),target.DebuggerAgent);return;}
target.RuntimeAgent.evaluate.invoke({expression,objectGroup:"popover",doNotPauseOnExceptionsAndMuteConsole:true},populate.bind(this),target.RuntimeAgent);}
_tokenTrackingControllerHighlightedJavaScriptTypeInformation(candidate)
{var sourceCode=this._sourceCode;var sourceID=sourceCode instanceof WebInspector.Script?sourceCode.id:sourceCode.scripts[0].id;var range=candidate.hoveredTokenRange;var offset=this.currentPositionToOriginalOffset(range.start);var allRequests=[{typeInformationDescriptor:WebInspector.ScriptSyntaxTree.TypeProfilerSearchDescriptor.NormalExpression,sourceID,divot:offset}];function handler(error,allTypes){if(error)
return;if(candidate!==this.tokenTrackingController.candidate)
return;if(!allTypes.length)
return;var typeDescription=WebInspector.TypeDescription.fromPayload(allTypes[0]);if(typeDescription.valid){var popoverTitle=WebInspector.TypeTokenView.titleForPopover(WebInspector.TypeTokenView.TitleType.Variable,candidate.expression);this.showPopoverForTypes(typeDescription,null,popoverTitle);}}
this.target.RuntimeAgent.getRuntimeTypesForVariablesAtOffsets(allRequests,handler.bind(this));}
_showPopover(content,bounds)
{var shouldHighlightRange=false;var candidate=this.tokenTrackingController.candidate;if(!bounds){if(!candidate)
return;var rects=this.rectsForRange(candidate.hoveredTokenRange);bounds=WebInspector.Rect.unionOfRects(rects);shouldHighlightRange=true;}
content.classList.add(WebInspector.SourceCodeTextEditor.PopoverDebuggerContentStyleClassName);this._popover=this._popover||new WebInspector.Popover(this);this._popover.presentNewContentWithFrame(content,bounds.pad(5),[WebInspector.RectEdge.MIN_Y,WebInspector.RectEdge.MAX_Y,WebInspector.RectEdge.MAX_X]);if(shouldHighlightRange)
this.tokenTrackingController.highlightRange(candidate.expressionRange);this._trackPopoverEvents();}
_showPopoverForFunction(data)
{let candidate=this.tokenTrackingController.candidate;function didGetDetails(error,response)
{if(error){console.error(error);this._dismissPopover();return;}
if(candidate!==this.tokenTrackingController.candidate)
return;let content=document.createElement("div");content.classList.add("function");let title=document.createElement("div");title.classList.add("title");title.textContent=response.name||response.displayName||WebInspector.UIString("(anonymous function)");content.appendChild(title);let location=response.location;let sourceCode=WebInspector.debuggerManager.scriptForIdentifier(location.scriptId,this.target);let sourceCodeLocation=sourceCode.createSourceCodeLocation(location.lineNumber,location.columnNumber);let functionSourceCodeLink=WebInspector.createSourceCodeLocationLink(sourceCodeLocation);title.appendChild(functionSourceCodeLink);let wrapper=document.createElement("div");wrapper.classList.add("body");content.appendChild(wrapper);let codeMirror=WebInspector.CodeMirrorEditor.create(wrapper,{mode:"text/javascript",readOnly:"nocursor",});codeMirror.on("update",()=>{this._popover.update();});const isModule=false;const indentString=WebInspector.indentString();const includeSourceMapData=false;let workerProxy=WebInspector.FormatterWorkerProxy.singleton();workerProxy.formatJavaScript(data.description,isModule,indentString,includeSourceMapData,({formattedText})=>{codeMirror.setValue(formattedText||data.description);});this._showPopover(content);}
data.target.DebuggerAgent.getFunctionDetails(data.objectId,didGetDetails.bind(this));}
_showPopoverForObject(data)
{var content=document.createElement("div");content.className="object expandable";var titleElement=document.createElement("div");titleElement.className="title";titleElement.textContent=data.description;content.appendChild(titleElement);if(data.subtype==="node"){data.pushNodeToFrontend(function(nodeId){if(!nodeId)
return;var domNode=WebInspector.domTreeManager.nodeForId(nodeId);if(!domNode.ownerDocument)
return;var goToButton=titleElement.appendChild(WebInspector.createGoToArrowButton());goToButton.addEventListener("click",function(){WebInspector.domTreeManager.inspectElement(nodeId);});});}
var objectTree=new WebInspector.ObjectTreeView(data);objectTree.showOnlyProperties();objectTree.expand();var bodyElement=content.appendChild(document.createElement("div"));bodyElement.className="body";bodyElement.appendChild(objectTree.element);var candidate=this.tokenTrackingController.candidate;objectTree.addEventListener(WebInspector.ObjectTreeView.Event.Updated,function(){if(candidate===this.tokenTrackingController.candidate)
this._showPopover(content);objectTree.removeEventListener(null,null,this);},this);}
_showPopoverWithFormattedValue(remoteObject)
{var content=WebInspector.FormattedValue.createElementForRemoteObject(remoteObject);this._showPopover(content);}
willDismissPopover(popover)
{this.tokenTrackingController.removeHighlightedRange();this.target.RuntimeAgent.releaseObjectGroup("popover");}
_dismissPopover()
{if(!this._popover)
return;this._popover.dismiss();if(this._popoverEventListeners&&this._popoverEventListenersAreRegistered){this._popoverEventListenersAreRegistered=false;this._popoverEventListeners.unregister();}}
_trackPopoverEvents()
{if(!this._popoverEventListeners)
this._popoverEventListeners=new WebInspector.EventListenerSet(this,"Popover listeners");if(!this._popoverEventListenersAreRegistered){this._popoverEventListenersAreRegistered=true;this._popoverEventListeners.register(this._popover.element,"mouseover",this._popoverMouseover);this._popoverEventListeners.register(this._popover.element,"mouseout",this._popoverMouseout);this._popoverEventListeners.install();}}
_popoverMouseover(event)
{this._mouseIsOverPopover=true;}
_popoverMouseout(event)
{this._mouseIsOverPopover=this._popover.element.contains(event.relatedTarget);}
_hasStyleSheetContents()
{let mimeType=this.mimeType;return mimeType==="text/css"||mimeType==="text/x-less"||mimeType==="text/x-sass"||mimeType==="text/x-scss";}
_updateEditableMarkers(range)
{if(this._hasStyleSheetContents()){this.createColorMarkers(range);this.createGradientMarkers(range);this.createCubicBezierMarkers(range);this.createSpringMarkers(range);}
this._updateTokenTrackingControllerState();}
_tokenTrackingControllerHighlightedMarkedExpression(candidate,markers)
{var editableMarker;for(var marker of markers){if(!marker.range||!Object.values(WebInspector.TextMarker.Type).includes(marker.type))
continue;if(!editableMarker||(marker.range.startLine<editableMarker.range.startLine||(marker.range.startLine===editableMarker.range.startLine&&marker.range.startColumn<editableMarker.range.startColumn)))
editableMarker=marker;}
if(!editableMarker){this.tokenTrackingController.hoveredMarker=null;return;}
if(this.tokenTrackingController.hoveredMarker===editableMarker)
return;this._dismissEditingController();this.tokenTrackingController.hoveredMarker=editableMarker;this._editingController=this.editingControllerForMarker(editableMarker);if(marker.type===WebInspector.TextMarker.Type.Color){var color=this._editingController.value;if(!color||!color.valid){editableMarker.clear();this._editingController=null;return;}}
this._editingController.delegate=this;this._editingController.presentHoverMenu();}
_dismissEditingController(discrete)
{if(this._editingController)
this._editingController.dismissHoverMenu(discrete);this.tokenTrackingController.hoveredMarker=null;this._editingController=null;}
editingControllerDidStartEditing(editingController)
{
this.tokenTrackingController.enabled=false;editingController.marker.clear();this._ignoreContentDidChange++;}
editingControllerDidFinishEditing(editingController)
{this._updateEditableMarkers(editingController.range);this._ignoreContentDidChange--;this._editingController=null;}
_setTypeTokenAnnotatorEnabledState(shouldActivate)
{if(!this._typeTokenAnnotator)
return;if(shouldActivate){this._typeTokenAnnotator.reset();if(!this._typeTokenScrollHandler)
this._enableScrollEventsForTypeTokenAnnotator();}else{this._typeTokenAnnotator.clear();if(this._typeTokenScrollHandler)
this._disableScrollEventsForTypeTokenAnnotator();}
WebInspector.showJavaScriptTypeInformationSetting.value=shouldActivate;this._updateTokenTrackingControllerState();}
set _basicBlockAnnotatorEnabled(shouldActivate)
{if(!this._basicBlockAnnotator)
return;if(shouldActivate){this._basicBlockAnnotator.reset();if(!this._controlFlowScrollHandler)
this._enableScrollEventsForControlFlowAnnotator();}else{this._basicBlockAnnotator.clear();if(this._controlFlowScrollHandler)
this._disableScrollEventsForControlFlowAnnotator();}
WebInspector.enableControlFlowProfilerSetting.value=shouldActivate;}
_getAssociatedScript(position)
{let script=null;if(this._sourceCode instanceof WebInspector.Script)
script=this._sourceCode;else if(this._sourceCode instanceof WebInspector.Resource&&this._sourceCode.scripts.length){if(this._sourceCode.type===WebInspector.Resource.Type.Script)
script=this._sourceCode.scripts[0];else if(this._sourceCode.type===WebInspector.Resource.Type.Document&&position){for(let inlineScript of this._sourceCode.scripts){if(inlineScript.range.contains(position.lineNumber,position.columnNumber)){if(isNaN(inlineScript.range.startOffset))
inlineScript.range.resolveOffsets(this._sourceCode.content);script=inlineScript;break;}}}}
return script;}
_createTypeTokenAnnotator()
{if(!RuntimeAgent.getRuntimeTypesForVariablesAtOffsets)
return;var script=this._getAssociatedScript();if(!script)
return;this._typeTokenAnnotator=new WebInspector.TypeTokenAnnotator(this,script);}
_createBasicBlockAnnotator()
{if(!RuntimeAgent.getBasicBlocks)
return;var script=this._getAssociatedScript();if(!script)
return;this._basicBlockAnnotator=new WebInspector.BasicBlockAnnotator(this,script);}
_enableScrollEventsForTypeTokenAnnotator()
{this._typeTokenScrollHandler=this._createTypeTokenScrollEventHandler();this.addScrollHandler(this._typeTokenScrollHandler);}
_enableScrollEventsForControlFlowAnnotator()
{this._controlFlowScrollHandler=this._createControlFlowScrollEventHandler();this.addScrollHandler(this._controlFlowScrollHandler);}
_disableScrollEventsForTypeTokenAnnotator()
{this.removeScrollHandler(this._typeTokenScrollHandler);this._typeTokenScrollHandler=null;}
_disableScrollEventsForControlFlowAnnotator()
{this.removeScrollHandler(this._controlFlowScrollHandler);this._controlFlowScrollHandler=null;}
_createTypeTokenScrollEventHandler()
{let timeoutIdentifier=null;let scrollHandler=()=>{if(timeoutIdentifier)
clearTimeout(timeoutIdentifier);else{if(this._typeTokenAnnotator)
this._typeTokenAnnotator.pause();}
timeoutIdentifier=setTimeout(()=>{timeoutIdentifier=null;if(this._typeTokenAnnotator)
this._typeTokenAnnotator.resume();},WebInspector.SourceCodeTextEditor.DurationToUpdateTypeTokensAfterScrolling);};return scrollHandler;}
_createControlFlowScrollEventHandler()
{let timeoutIdentifier=null;let scrollHandler=()=>{if(timeoutIdentifier)
clearTimeout(timeoutIdentifier);else if(this._basicBlockAnnotator)
this._basicBlockAnnotator.pause();timeoutIdentifier=setTimeout(()=>{timeoutIdentifier=null;if(this._basicBlockAnnotator)
this._basicBlockAnnotator.resume();},WebInspector.SourceCodeTextEditor.DurationToUpdateTypeTokensAfterScrolling);};return scrollHandler;}
_logCleared(event)
{for(let lineNumber of this._issuesLineNumberMap.keys()){this.removeStyleClassFromLine(lineNumber,WebInspector.SourceCodeTextEditor.LineErrorStyleClassName);this.removeStyleClassFromLine(lineNumber,WebInspector.SourceCodeTextEditor.LineWarningStyleClassName);}
this._issuesLineNumberMap.clear();this._clearIssueWidgets();}};WebInspector.SourceCodeTextEditor.LineErrorStyleClassName="error";WebInspector.SourceCodeTextEditor.LineWarningStyleClassName="warning";WebInspector.SourceCodeTextEditor.PopoverDebuggerContentStyleClassName="debugger-popover-content";WebInspector.SourceCodeTextEditor.HoveredExpressionHighlightStyleClassName="hovered-expression-highlight";WebInspector.SourceCodeTextEditor.DurationToMouseOverTokenToMakeHoveredToken=500;WebInspector.SourceCodeTextEditor.DurationToMouseOutOfHoveredTokenToRelease=1000;WebInspector.SourceCodeTextEditor.DurationToUpdateTypeTokensAfterScrolling=100;WebInspector.SourceCodeTextEditor.WidgetContainsMultipleIssuesSymbol=Symbol("source-code-widget-contains-multiple-issues");WebInspector.SourceCodeTextEditor.WidgetContainsMultipleThreadsSymbol=Symbol("source-code-widget-contains-multiple-threads");WebInspector.SourceCodeTextEditor.Event={ContentWillPopulate:"source-code-text-editor-content-will-populate",ContentDidPopulate:"source-code-text-editor-content-did-populate"};WebInspector.SourceCodeTimelineTimelineDataGridNode=class SourceCodeTimelineTimelineDataGridNode extends WebInspector.TimelineDataGridNode
{constructor(sourceCodeTimeline,graphDataSource)
{super(true,graphDataSource);this._sourceCodeTimeline=sourceCodeTimeline;this._sourceCodeTimeline.addEventListener(WebInspector.Timeline.Event.RecordAdded,this._timelineRecordAdded,this);}
get records()
{return this._sourceCodeTimeline.records;}
get sourceCodeTimeline()
{return this._sourceCodeTimeline;}
get data()
{return{graph:this._sourceCodeTimeline.startTime};}
createCellContent(columnIdentifier,cell)
{if(columnIdentifier==="name"&&this.records.length){cell.classList.add(...this.iconClassNames());return this._createNameCellContent(cell);}
return super.createCellContent(columnIdentifier,cell);}
filterableDataForColumn(columnIdentifier)
{if(columnIdentifier==="name")
return this.displayName();return super.filterableDataForColumn(columnIdentifier);}
_createNameCellContent(cellElement)
{if(!this.records.length)
return null;let fragment=document.createDocumentFragment();let mainTitle=this.displayName();fragment.append(mainTitle);let sourceCodeLocation=this._sourceCodeTimeline.sourceCodeLocation;if(sourceCodeLocation){let subtitleElement=document.createElement("span");subtitleElement.classList.add("subtitle");sourceCodeLocation.populateLiveDisplayLocationString(subtitleElement,"textContent",null,WebInspector.SourceCodeLocation.NameStyle.None,WebInspector.UIString("line "));const options={useGoToArrowButton:true,ignoreNetworkTab:true,ignoreSearchTab:true,};let goToArrowButtonLink=WebInspector.createSourceCodeLocationLink(sourceCodeLocation,options);fragment.append(goToArrowButtonLink,subtitleElement);sourceCodeLocation.populateLiveDisplayLocationTooltip(cellElement,mainTitle+"\n");}else
cellElement.title=mainTitle;return fragment;}
_timelineRecordAdded(event)
{if(this.isRecordVisible(event.data.record))
this.needsGraphRefresh();}};WebInspector.SourceCodeTimelineTreeElement=class SourceCodeTimelineTreeElement extends WebInspector.TimelineRecordTreeElement
{constructor(sourceCodeTimeline,subtitleNameStyle,includeDetailsInMainTitle)
{subtitleNameStyle=subtitleNameStyle||WebInspector.SourceCodeLocation.NameStyle.None;super(sourceCodeTimeline.records[0],subtitleNameStyle,includeDetailsInMainTitle,sourceCodeTimeline.sourceCodeLocation,sourceCodeTimeline);this._sourceCodeTimeline=sourceCodeTimeline;}
get record()
{return undefined;}
get sourceCodeTimeline()
{return this._sourceCodeTimeline;}};WebInspector.SourceMapResourceTreeElement=class SourceMapResourceTreeElement extends WebInspector.ResourceTreeElement
{constructor(sourceMapResource,representedObject)
{super(sourceMapResource);this.addClassName("source-map-resource");}
_updateTitles()
{var oldMainTitle=this.mainTitle;this.mainTitle=this.resource.displayName;var sourceMapHost=this.resource.urlComponents.host;var originalHost=this.resource.sourceMap.originalSourceCode.urlComponents.host;var subtitle=sourceMapHost!==originalHost?WebInspector.displayNameForHost(sourceMapHost):null;this.subtitle=this.mainTitle!==subtitle?subtitle:null;if(oldMainTitle!==this.mainTitle)
this.callFirstAncestorFunction("descendantResourceTreeElementMainTitleDidChange",[this,oldMainTitle]);}};WebInspector.SpanningDataGridNode=class SpanningDataGridNode extends WebInspector.DataGridNode
{constructor(text)
{super({[WebInspector.SpanningDataGridNode.ColumnIdentifier]:text});}
createCells()
{let cellElement=this.createCell(WebInspector.SpanningDataGridNode.ColumnIdentifier);cellElement.classList.add("spanning");cellElement.setAttribute("colspan",this.dataGrid.columns.size);this.element.appendChild(cellElement);}};WebInspector.SpanningDataGridNode.ColumnIdentifier="spanning-text";WebInspector.SpringEditor=class SpringEditor extends WebInspector.Object
{constructor()
{super();this._element=document.createElement("div");this._element.classList.add("spring-editor");this._previewContainer=this._element.createChild("div","spring-preview");this._previewContainer.title=WebInspector.UIString("Restart animation");this._previewContainer.addEventListener("mousedown",this._resetPreviewAnimation.bind(this));this._previewElement=this._previewContainer.createChild("div");this._previewElement.addEventListener("transitionend",this.debounce(500)._resetPreviewAnimation);this._timingContainer=this._element.createChild("div","spring-timing");this._timingElement=this._timingContainer.createChild("div");this._numberInputContainer=this._element.createChild("div","number-input-container");function createInputsForParameter(id,title)
{let row=this._numberInputContainer.createChild("div",`number-input-row ${id}`);row.createChild("div","number-input-row-title").textContent=title;let sliderKey=`_${id}Slider`;this[sliderKey]=row.createChild("input");this[sliderKey].type="range";this[sliderKey].addEventListener("input",this._handleNumberSliderInput.bind(this));this[sliderKey].addEventListener("mousedown",this._handleNumberSliderMousedown.bind(this));this[sliderKey].addEventListener("mouseup",this._handleNumberSliderMouseup.bind(this));let inputKey=`_${id}Input`;this[inputKey]=row.createChild("input");this[inputKey].type="number";this[inputKey].addEventListener("input",this._handleNumberInputInput.bind(this));this[inputKey].addEventListener("keydown",this._handleNumberInputKeydown.bind(this));}
createInputsForParameter.call(this,"mass",WebInspector.UIString("Mass"));this._massInput.min=this._massSlider.min=1;createInputsForParameter.call(this,"stiffness",WebInspector.UIString("Stiffness"));this._stiffnessInput.min=this._stiffnessSlider.min=1;createInputsForParameter.call(this,"damping",WebInspector.UIString("Damping"));this._dampingInput.min=this._dampingSlider.min=0;createInputsForParameter.call(this,"initialVelocity",WebInspector.UIString("Initial Velocity"));this._spring=new WebInspector.Spring(1,100,10,0);}
get element()
{return this._element;}
get spring()
{return this._spring;}
set spring(spring)
{if(!spring)
return;let isSpring=spring instanceof WebInspector.Spring;if(!isSpring)
return;this._spring=spring;this._massInput.value=this._massSlider.value=this._spring.mass;this._stiffnessInput.value=this._stiffnessSlider.value=this._spring.stiffness;this._dampingInput.value=this._dampingSlider.value=this._spring.damping;this._initialVelocityInput.value=this._initialVelocitySlider.value=this._spring.initialVelocity;this._resetPreviewAnimation();}
_handleNumberInputInput(event)
{this._changeSpringForInput(event.target,event.target.value);}
_handleNumberInputKeydown(event)
{let shift=0;if(event.keyIdentifier==="Up")
shift=1;else if(event.keyIdentifier==="Down")
shift=-1;if(!shift)
return;if(event.shiftKey)
shift*=10;else if(event.altKey)
shift/=10;let value=parseFloat(event.target.value)||0;this._changeSpringForInput(event.target,value+shift);event.preventDefault();}
_handleNumberSliderInput(event)
{this._changeSpringForInput(event.target,event.target.value);}
_handleNumberSliderMousedown(event)
{this._changeSpringForInput(event.target,event.target.value);}
_handleNumberSliderMouseup(event)
{this._changeSpringForInput(event.target,event.target.value);}
_changeSpringForInput(target,value)
{value=parseFloat(value)||0;switch(target){case this._massInput:case this._massSlider:if(this._spring.mass===value)
return;this._spring.mass=Math.max(1,value);this._massInput.value=this._massSlider.value=this._spring.mass.maxDecimals(3);break;case this._stiffnessInput:case this._stiffnessSlider:if(this._spring.stiffness===value)
return;this._spring.stiffness=Math.max(1,value);this._stiffnessInput.value=this._stiffnessSlider.value=this._spring.stiffness.maxDecimals(3);break;case this._dampingInput:case this._dampingSlider:if(this._spring.damping===value)
return;this._spring.damping=Math.max(0,value);this._dampingInput.value=this._dampingSlider.value=this._spring.damping.maxDecimals(3);break;case this._initialVelocityInput:case this._initialVelocitySlider:if(this._spring.initialVelocity===value)
return;this._spring.initialVelocity=value;this._initialVelocityInput.value=this._initialVelocitySlider.value=this._spring.initialVelocity.maxDecimals(3);break;default:WebInspector.reportInternalError("Input event fired for unrecognized element");return;}
this.dispatchEventToListeners(WebInspector.SpringEditor.Event.SpringChanged,{spring:this._spring});this._resetPreviewAnimation();}
_resetPreviewAnimation(event)
{this._previewContainer.classList.remove("animate");this._previewElement.style.transitionTimingFunction=null;this._previewElement.style.transform=null;this._timingContainer.classList.remove("animate");this._timingElement.style.transform=null;if(!event)
this._timingContainer.dataset.duration="0";this.debounce(500)._updatePreviewAnimation(event);}
_updatePreviewAnimation(event)
{this._previewContainer.classList.add("animate");this._previewElement.style.transitionTimingFunction=this._spring.toString();this._timingContainer.classList.add("animate");if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL){this._previewElement.style.transform="translateX(-85px)";this._timingElement.style.transform="translateX(-170px)";}else{this._previewElement.style.transform="translateX(85px)";this._timingElement.style.transform="translateX(170px)";}
if(!event){let duration=this._spring.calculateDuration();this._timingContainer.dataset.duration=duration.toFixed(2);this._timingElement.style.transitionDuration=`${duration}s`;this._previewElement.style.transitionDuration=`${duration}s`;}}};WebInspector.SpringEditor.Event={SpringChanged:"spring-editor-spring-changed"};WebInspector.SVGImageResourceClusterContentView=class SVGImageResourceClusterContentView extends WebInspector.ClusterContentView
{constructor(resource)
{super(resource);this._resource=resource;let createPathComponent=(displayName,className,identifier)=>{const textOnly=false;const showSelectorArrows=true;let pathComponent=new WebInspector.HierarchicalPathComponent(displayName,className,identifier,textOnly,showSelectorArrows);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this._pathComponentSelected,this);pathComponent.comparisonData=resource;return pathComponent;};this._imagePathComponent=createPathComponent(WebInspector.UIString("Image"),"image-icon",WebInspector.SVGImageResourceClusterContentView.Identifier.Image);this._sourcePathComponent=createPathComponent(WebInspector.UIString("Source"),"source-icon",WebInspector.SVGImageResourceClusterContentView.Identifier.Source);this._imagePathComponent.nextSibling=this._sourcePathComponent;this._sourcePathComponent.previousSibling=this._imagePathComponent;this._currentContentViewSetting=new WebInspector.Setting("svg-image-resource-cluster-current-view-"+this._resource.url.hash,WebInspector.SVGImageResourceClusterContentView.Identifier.Image);}
get resource(){return this._resource;}
get selectionPathComponents()
{let currentContentView=this._contentViewContainer.currentContentView;if(!currentContentView)
return[];let components=[this._pathComponentForContentView(currentContentView)];return components.concat(currentContentView.selectionPathComponents);}
shown()
{super.shown();if(this._shownInitialContent)
return;this._showContentViewForIdentifier(this._currentContentViewSetting.value);}
closed()
{super.closed();this._shownInitialContent=false;}
saveToCookie(cookie)
{cookie[WebInspector.SVGImageResourceClusterContentView.ContentViewIdentifierCookieKey]=this._currentContentViewSetting.value;}
restoreFromCookie(cookie)
{let contentView=this._showContentViewForIdentifier(cookie[WebInspector.SVGImageResourceClusterContentView.ContentViewIdentifierCookieKey]);if(typeof contentView.revealPosition==="function"&&"lineNumber"in cookie&&"columnNumber"in cookie)
contentView.revealPosition(new WebInspector.SourceCodePosition(cookie.lineNumber,cookie.columnNumber));}
_pathComponentForContentView(contentView)
{if(!contentView)
return null;if(contentView instanceof WebInspector.ImageResourceContentView)
return this._imagePathComponent;if(contentView instanceof WebInspector.TextContentView)
return this._sourcePathComponent;console.error("Unknown contentView.");return null;}
_identifierForContentView(contentView)
{if(!contentView)
return null;if(contentView instanceof WebInspector.ImageResourceContentView)
return WebInspector.SVGImageResourceClusterContentView.Identifier.Image;if(contentView instanceof WebInspector.TextContentView)
return WebInspector.SVGImageResourceClusterContentView.Identifier.Source;console.error("Unknown contentView.");return null;}
_showContentViewForIdentifier(identifier)
{let contentViewToShow=null;switch(identifier){case WebInspector.SVGImageResourceClusterContentView.Identifier.Image:contentViewToShow=new WebInspector.ImageResourceContentView(this._resource);break;case WebInspector.SVGImageResourceClusterContentView.Identifier.Source:contentViewToShow=new WebInspector.TextContentView("",this._resource.mimeType);this._resource.requestContent().then((result)=>{let fileReader=new FileReader;fileReader.addEventListener("loadend",()=>{contentViewToShow.textEditor.string=fileReader.result;});fileReader.readAsText(result.content);});break;default:contentViewToShow=new WebInspector.ImageResourceContentView(this._resource);break;}
this._currentContentViewSetting.value=this._identifierForContentView(contentViewToShow);return this.contentViewContainer.showContentView(contentViewToShow);}
_pathComponentSelected(event)
{this._showContentViewForIdentifier(event.data.pathComponent.representedObject);}};WebInspector.SVGImageResourceClusterContentView.ContentViewIdentifierCookieKey="svg-image-resource-cluster-content-view-identifier";WebInspector.SVGImageResourceClusterContentView.Identifier={Image:"image",Source:"source",};WebInspector.StackTraceView=class StackTraceView extends WebInspector.Object
{constructor(stackTrace)
{super();var element=this._element=document.createElement("div");element.classList.add("stack-trace");for(var callFrame of stackTrace.callFrames){if(!callFrame.sourceCodeLocation&&callFrame.functionName===null)
continue;if(callFrame.isConsoleEvaluation&&!WebInspector.isDebugUIEnabled())
continue;var callFrameElement=new WebInspector.CallFrameView(callFrame,true);element.appendChild(callFrameElement);}}
get element()
{return this._element;}};
WebInspector.StackedLineChart=class StackedLineChart
{constructor(size)
{this._element=document.createElement("div");this._element.classList.add("stacked-line-chart");this._chartElement=this._element.appendChild(createSVGElement("svg"));this._pathElements=[];this._points=[];this.size=size;}
get element()
{return this._element;}
get points()
{return this._points;}
get size()
{return this._size;}
set size(size)
{this._size=size;this._chartElement.setAttribute("width",size.width);this._chartElement.setAttribute("height",size.height);this._chartElement.setAttribute("viewbox",`0 0 ${size.width} ${size.height}`);}
initializeSections(sectionClassNames)
{sectionClassNames.reverse();for(let i=0;i<sectionClassNames.length;++i){let pathElement=this._chartElement.appendChild(createSVGElement("path"));pathElement.classList.add(sectionClassNames[i]);this._pathElements.push(pathElement);}
this._pathElements.reverse();}
addPointSet(x,ys)
{this._points.push({x,ys});}
clear()
{this._points=[];}
needsLayout()
{if(this._scheduledLayoutUpdateIdentifier)
return;this._scheduledLayoutUpdateIdentifier=requestAnimationFrame(this.updateLayout.bind(this));}
updateLayout()
{if(this._scheduledLayoutUpdateIdentifier){cancelAnimationFrame(this._scheduledLayoutUpdateIdentifier);this._scheduledLayoutUpdateIdentifier=undefined;}
let pathComponents=[];let length=this._pathElements.length;for(let i=0;i<length;++i)
pathComponents[i]=[`M 0 ${this._size.height}`];for(let{x,ys}of this._points){for(let i=0;i<length;++i)
pathComponents[i].push(`L ${x} ${ys[i]}`);}
let lastX=this._points.length?this._points.lastValue.x:0;for(let i=0;i<length;++i){pathComponents[i].push(`L ${lastX} ${this._size.height}`);pathComponents[i].push("Z");let pathString=pathComponents[i].join(" ");this._pathElements[i].setAttribute("d",pathString);}}};WebInspector.StorageSidebarPanel=class StorageSidebarPanel extends WebInspector.NavigationSidebarPanel
{constructor(contentBrowser)
{super("storage",WebInspector.UIString("Storage"));this.contentBrowser=contentBrowser;this.filterBar.placeholder=WebInspector.UIString("Filter Storage List");this._navigationBar=new WebInspector.NavigationBar;this.addSubview(this._navigationBar);var scopeItemPrefix="storage-sidebar-";var scopeBarItems=[];scopeBarItems.push(new WebInspector.ScopeBarItem(scopeItemPrefix+"type-all",WebInspector.UIString("All Storage"),true));var storageTypes=[{identifier:"application-cache",title:WebInspector.UIString("Application Cache"),classes:[WebInspector.ApplicationCacheFrameTreeElement,WebInspector.ApplicationCacheManifestTreeElement]},{identifier:"cookies",title:WebInspector.UIString("Cookies"),classes:[WebInspector.CookieStorageTreeElement]},{identifier:"database",title:WebInspector.UIString("Databases"),classes:[WebInspector.DatabaseHostTreeElement,WebInspector.DatabaseTableTreeElement,WebInspector.DatabaseTreeElement]},{identifier:"indexed-database",title:WebInspector.UIString("Indexed Databases"),classes:[WebInspector.IndexedDatabaseHostTreeElement,WebInspector.IndexedDatabaseObjectStoreTreeElement,WebInspector.IndexedDatabaseTreeElement]},{identifier:"local-storage",title:WebInspector.UIString("Local Storage"),classes:[WebInspector.DOMStorageTreeElement],localStorage:true},{identifier:"session-storage",title:WebInspector.UIString("Session Storage"),classes:[WebInspector.DOMStorageTreeElement],localStorage:false}];storageTypes.sort(function(a,b){return a.title.extendedLocaleCompare(b.title);});for(var info of storageTypes){var scopeBarItem=new WebInspector.ScopeBarItem(scopeItemPrefix+info.identifier,info.title);scopeBarItem.__storageTypeInfo=info;scopeBarItems.push(scopeBarItem);}
this._scopeBar=new WebInspector.ScopeBar("storage-sidebar-scope-bar",scopeBarItems,scopeBarItems[0],true);this._scopeBar.addEventListener(WebInspector.ScopeBar.Event.SelectionChanged,this._scopeBarSelectionDidChange,this);this._navigationBar.addNavigationItem(this._scopeBar);this._localStorageRootTreeElement=null;this._sessionStorageRootTreeElement=null;this._databaseRootTreeElement=null;this._databaseHostTreeElementMap=new Map;this._indexedDatabaseRootTreeElement=null;this._indexedDatabaseHostTreeElementMap=new Map;this._cookieStorageRootTreeElement=null;this._applicationCacheRootTreeElement=null;this._applicationCacheURLTreeElementMap=new Map;WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.CookieStorageObjectWasAdded,this._cookieStorageObjectWasAdded,this);WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DOMStorageObjectWasAdded,this._domStorageObjectWasAdded,this);WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DOMStorageObjectWasInspected,this._domStorageObjectWasInspected,this);WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DatabaseWasAdded,this._databaseWasAdded,this);WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DatabaseWasInspected,this._databaseWasInspected,this);WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.IndexedDatabaseWasAdded,this._indexedDatabaseWasAdded,this);WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.Cleared,this._storageCleared,this);WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationCacheManager.Event.FrameManifestAdded,this._frameManifestAdded,this);WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationCacheManager.Event.FrameManifestRemoved,this._frameManifestRemoved,this);this.contentTreeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._treeSelectionDidChange,this);for(var domStorageObject of WebInspector.storageManager.domStorageObjects)
this._addDOMStorageObject(domStorageObject);for(var cookieStorageObject of WebInspector.storageManager.cookieStorageObjects)
this._addCookieStorageObject(cookieStorageObject);for(var database of WebInspector.storageManager.databases)
this._addDatabase(database);for(var indexedDatabase of WebInspector.storageManager.indexedDatabases)
this._addIndexedDatabase(indexedDatabase);for(var applicationCacheObject of WebInspector.applicationCacheManager.applicationCacheObjects)
this._addFrameManifest(applicationCacheObject);}
get minimumWidth()
{return this._navigationBar.minimumWidth;}
showDefaultContentView()
{}
closed()
{super.closed();WebInspector.storageManager.removeEventListener(null,null,this);WebInspector.applicationCacheManager.removeEventListener(null,null,this);}
hasCustomFilters()
{var selectedScopeBarItem=this._scopeBar.selectedItems[0];return selectedScopeBarItem&&!selectedScopeBarItem.exclusive;}
matchTreeElementAgainstCustomFilters(treeElement,flags)
{var selectedScopeBarItem=this._scopeBar.selectedItems[0];if(!selectedScopeBarItem||selectedScopeBarItem.exclusive)
return true;if(treeElement instanceof WebInspector.FolderTreeElement)
return false;function match()
{for(var constructor of selectedScopeBarItem.__storageTypeInfo.classes){if(constructor===WebInspector.DOMStorageTreeElement&&treeElement instanceof constructor)
return treeElement.representedObject.isLocalStorage()===selectedScopeBarItem.__storageTypeInfo.localStorage;if(treeElement instanceof constructor)
return true;}
return false;}
var matched=match();if(matched)
flags.expandTreeElement=true;return matched;}
_treeSelectionDidChange(event)
{if(!this.visible)
return;let treeElement=event.data.selectedElement;if(!treeElement)
return;if(treeElement instanceof WebInspector.FolderTreeElement||treeElement instanceof WebInspector.DatabaseHostTreeElement||treeElement instanceof WebInspector.IndexedDatabaseHostTreeElement||treeElement instanceof WebInspector.ApplicationCacheManifestTreeElement)
return;if(treeElement instanceof WebInspector.StorageTreeElement||treeElement instanceof WebInspector.DatabaseTableTreeElement||treeElement instanceof WebInspector.DatabaseTreeElement||treeElement instanceof WebInspector.ApplicationCacheFrameTreeElement||treeElement instanceof WebInspector.IndexedDatabaseTreeElement||treeElement instanceof WebInspector.IndexedDatabaseObjectStoreTreeElement||treeElement instanceof WebInspector.IndexedDatabaseObjectStoreIndexTreeElement){WebInspector.showRepresentedObject(treeElement.representedObject);return;}
console.error("Unknown tree element",treeElement);}
_domStorageObjectWasAdded(event)
{this._addDOMStorageObject(event.data.domStorage);}
_addDOMStorageObject(domStorage)
{var storageElement=new WebInspector.DOMStorageTreeElement(domStorage);if(domStorage.isLocalStorage())
this._localStorageRootTreeElement=this._addStorageChild(storageElement,this._localStorageRootTreeElement,WebInspector.UIString("Local Storage"));else
this._sessionStorageRootTreeElement=this._addStorageChild(storageElement,this._sessionStorageRootTreeElement,WebInspector.UIString("Session Storage"));}
_domStorageObjectWasInspected(event)
{var domStorage=event.data.domStorage;var treeElement=this.treeElementForRepresentedObject(domStorage);treeElement.revealAndSelect(true);}
_databaseWasAdded(event)
{this._addDatabase(event.data.database);}
_addDatabase(database)
{let databaseHostElement=this._databaseHostTreeElementMap.get(database.host);if(!databaseHostElement){databaseHostElement=new WebInspector.DatabaseHostTreeElement(database.host);this._databaseHostTreeElementMap.set(database.host,databaseHostElement);this._databaseRootTreeElement=this._addStorageChild(databaseHostElement,this._databaseRootTreeElement,WebInspector.UIString("Databases"));}
let databaseElement=new WebInspector.DatabaseTreeElement(database);databaseHostElement.appendChild(databaseElement);}
_databaseWasInspected(event)
{var database=event.data.database;var treeElement=this.treeElementForRepresentedObject(database);treeElement.revealAndSelect(true);}
_indexedDatabaseWasAdded(event)
{this._addIndexedDatabase(event.data.indexedDatabase);}
_addIndexedDatabase(indexedDatabase)
{let indexedDatabaseHostElement=this._indexedDatabaseHostTreeElementMap.get(indexedDatabase.host);if(!indexedDatabaseHostElement){indexedDatabaseHostElement=new WebInspector.IndexedDatabaseHostTreeElement(indexedDatabase.host);this._indexedDatabaseHostTreeElementMap.set(indexedDatabase.host,indexedDatabaseHostElement);this._indexedDatabaseRootTreeElement=this._addStorageChild(indexedDatabaseHostElement,this._indexedDatabaseRootTreeElement,WebInspector.UIString("Indexed Databases"));}
let indexedDatabaseElement=new WebInspector.IndexedDatabaseTreeElement(indexedDatabase);indexedDatabaseHostElement.appendChild(indexedDatabaseElement);}
_cookieStorageObjectWasAdded(event)
{this._addCookieStorageObject(event.data.cookieStorage);}
_addCookieStorageObject(cookieStorage)
{var cookieElement=new WebInspector.CookieStorageTreeElement(cookieStorage);this._cookieStorageRootTreeElement=this._addStorageChild(cookieElement,this._cookieStorageRootTreeElement,WebInspector.UIString("Cookies"));}
_frameManifestAdded(event)
{this._addFrameManifest(event.data.frameManifest);}
_addFrameManifest(frameManifest)
{let manifest=frameManifest.manifest;let manifestURL=manifest.manifestURL;let applicationCacheManifestElement=this._applicationCacheURLTreeElementMap.get(manifestURL);if(!applicationCacheManifestElement){applicationCacheManifestElement=new WebInspector.ApplicationCacheManifestTreeElement(manifest);this._applicationCacheURLTreeElementMap.set(manifestURL,applicationCacheManifestElement);this._applicationCacheRootTreeElement=this._addStorageChild(applicationCacheManifestElement,this._applicationCacheRootTreeElement,WebInspector.UIString("Application Cache"));}
let frameCacheElement=new WebInspector.ApplicationCacheFrameTreeElement(frameManifest);applicationCacheManifestElement.appendChild(frameCacheElement);}
_frameManifestRemoved(event)
{}
_compareTreeElements(a,b)
{return(a.mainTitle||"").extendedLocaleCompare(b.mainTitle||"");}
_addStorageChild(childElement,parentElement,folderName)
{if(!parentElement){childElement.flattened=true;this.contentTreeOutline.insertChild(childElement,insertionIndexForObjectInListSortedByFunction(childElement,this.contentTreeOutline.children,this._compareTreeElements));return childElement;}
if(parentElement instanceof WebInspector.StorageTreeElement){var previousOnlyChild=parentElement;previousOnlyChild.flattened=false;this.contentTreeOutline.removeChild(previousOnlyChild);var folderElement=new WebInspector.FolderTreeElement(folderName);this.contentTreeOutline.insertChild(folderElement,insertionIndexForObjectInListSortedByFunction(folderElement,this.contentTreeOutline.children,this._compareTreeElements));folderElement.appendChild(previousOnlyChild);folderElement.insertChild(childElement,insertionIndexForObjectInListSortedByFunction(childElement,folderElement.children,this._compareTreeElements));return folderElement;}
parentElement.insertChild(childElement,insertionIndexForObjectInListSortedByFunction(childElement,parentElement.children,this._compareTreeElements));return parentElement;}
_storageCleared(event)
{this.contentBrowser.contentViewContainer.closeAllContentViews();if(this._localStorageRootTreeElement&&this._localStorageRootTreeElement.parent)
this._localStorageRootTreeElement.parent.removeChild(this._localStorageRootTreeElement);if(this._sessionStorageRootTreeElement&&this._sessionStorageRootTreeElement.parent)
this._sessionStorageRootTreeElement.parent.removeChild(this._sessionStorageRootTreeElement);if(this._databaseRootTreeElement&&this._databaseRootTreeElement.parent)
this._databaseRootTreeElement.parent.removeChild(this._databaseRootTreeElement);if(this._indexedDatabaseRootTreeElement&&this._indexedDatabaseRootTreeElement.parent)
this._indexedDatabaseRootTreeElement.parent.removeChild(this._indexedDatabaseRootTreeElement);if(this._cookieStorageRootTreeElement&&this._cookieStorageRootTreeElement.parent)
this._cookieStorageRootTreeElement.parent.removeChild(this._cookieStorageRootTreeElement);if(this._applicationCacheRootTreeElement&&this._applicationCacheRootTreeElement.parent)
this._applicationCacheRootTreeElement.parent.removeChild(this._applicationCacheRootTreeElement);this._localStorageRootTreeElement=null;this._sessionStorageRootTreeElement=null;this._databaseRootTreeElement=null;this._databaseHostTreeElementMap.clear();this._indexedDatabaseRootTreeElement=null;this._indexedDatabaseHostTreeElementMap.clear();this._cookieStorageRootTreeElement=null;this._applicationCacheRootTreeElement=null;this._applicationCacheURLTreeElementMap.clear();}
_scopeBarSelectionDidChange(event)
{this.updateFilter();}};WebInspector.SyntaxHighlightedStyleClassName="syntax-highlighted";WebInspector.syntaxHighlightStringAsDocumentFragment=function(string,mimeType,baseURL)
{var resultFragment=document.createDocumentFragment();function appendText(text,style)
{if(!style){resultFragment.append(text);return;}
var span=document.createElement("span");span.className="cm-"+style;span.textContent=text;resultFragment.appendChild(span);}
mimeType=parseMIMEType(mimeType).type;CodeMirror.runMode(string,mimeType,appendText);return resultFragment;};WebInspector.TextContentView=class TextContentView extends WebInspector.ContentView
{constructor(string,mimeType)
{super(string);this.element.classList.add("text");this._textEditor=new WebInspector.TextEditor;this._textEditor.addEventListener(WebInspector.TextEditor.Event.NumberOfSearchResultsDidChange,this._numberOfSearchResultsDidChange,this);this._textEditor.addEventListener(WebInspector.TextEditor.Event.FormattingDidChange,this._textEditorFormattingDidChange,this);this.addSubview(this._textEditor);this._textEditor.readOnly=true;this._textEditor.mimeType=mimeType;this._textEditor.string=string;var toolTip=WebInspector.UIString("Pretty print");var activatedToolTip=WebInspector.UIString("Original formatting");this._prettyPrintButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("pretty-print",toolTip,activatedToolTip,"Images/NavigationItemCurleyBraces.svg",13,13);this._prettyPrintButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._togglePrettyPrint,this);this._prettyPrintButtonNavigationItem.enabled=this._textEditor.canBeFormatted();var toolTipTypes=WebInspector.UIString("Show type information");var activatedToolTipTypes=WebInspector.UIString("Hide type information");this._showTypesButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("show-types",toolTipTypes,activatedToolTipTypes,"Images/NavigationItemTypes.svg",13,14);this._showTypesButtonNavigationItem.enabled=false;let toolTipCodeCoverage=WebInspector.UIString("Fade unexecuted code");let activatedToolTipCodeCoverage=WebInspector.UIString("Do not fade unexecuted code");this._codeCoverageButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("code-coverage",toolTipCodeCoverage,activatedToolTipCodeCoverage,"Images/NavigationItemCodeCoverage.svg",13,14);this._codeCoverageButtonNavigationItem.enabled=false;}
get textEditor()
{return this._textEditor;}
get navigationItems()
{return[this._prettyPrintButtonNavigationItem,this._showTypesButtonNavigationItem,this._codeCoverageButtonNavigationItem];}
revealPosition(position,textRangeToSelect,forceUnformatted)
{this._textEditor.revealPosition(position,textRangeToSelect,forceUnformatted);}
shown()
{super.shown();this._textEditor.shown();}
hidden()
{super.hidden();this._textEditor.hidden();}
closed()
{super.closed();this._textEditor.close();}
get supportsSave()
{return true;}
get saveData()
{var url="web-inspector:///"+encodeURI(WebInspector.UIString("Untitled"))+".txt";return{url,content:this._textEditor.string,forceSaveAs:true};}
get supportsSearch()
{return true;}
get numberOfSearchResults()
{return this._textEditor.numberOfSearchResults;}
get hasPerformedSearch()
{return this._textEditor.currentSearchQuery!==null;}
set automaticallyRevealFirstSearchResult(reveal)
{this._textEditor.automaticallyRevealFirstSearchResult=reveal;}
performSearch(query)
{this._textEditor.performSearch(query);}
searchCleared()
{this._textEditor.searchCleared();}
searchQueryWithSelection()
{return this._textEditor.searchQueryWithSelection();}
revealPreviousSearchResult(changeFocus)
{this._textEditor.revealPreviousSearchResult(changeFocus);}
revealNextSearchResult(changeFocus)
{this._textEditor.revealNextSearchResult(changeFocus);}
_togglePrettyPrint(event)
{var activated=!this._prettyPrintButtonNavigationItem.activated;this._textEditor.updateFormattedState(activated);}
_textEditorFormattingDidChange(event)
{this._prettyPrintButtonNavigationItem.activated=this._textEditor.formatted;}
_numberOfSearchResultsDidChange(event)
{this.dispatchEventToListeners(WebInspector.ContentView.Event.NumberOfSearchResultsDidChange);}};WebInspector.TextNavigationItem=class TextNavigationItem extends WebInspector.NavigationItem
{constructor(identifier,label)
{super(identifier);this._element.classList.add("text");this._element.textContent=label||"";}
get text()
{return this._element.textContent;}
set text(x)
{this._element.textContent=x||"";}};WebInspector.TextResourceContentView=class TextResourceContentView extends WebInspector.ResourceContentView
{constructor(resource)
{super(resource,"text");resource.addEventListener(WebInspector.SourceCode.Event.ContentDidChange,this._sourceCodeContentDidChange,this);this._textEditor=new WebInspector.SourceCodeTextEditor(resource);this._textEditor.addEventListener(WebInspector.TextEditor.Event.ExecutionLineNumberDidChange,this._executionLineNumberDidChange,this);this._textEditor.addEventListener(WebInspector.TextEditor.Event.NumberOfSearchResultsDidChange,this._numberOfSearchResultsDidChange,this);this._textEditor.addEventListener(WebInspector.TextEditor.Event.ContentDidChange,this._textEditorContentDidChange,this);this._textEditor.addEventListener(WebInspector.TextEditor.Event.FormattingDidChange,this._textEditorFormattingDidChange,this);this._textEditor.addEventListener(WebInspector.SourceCodeTextEditor.Event.ContentWillPopulate,this._contentWillPopulate,this);this._textEditor.addEventListener(WebInspector.SourceCodeTextEditor.Event.ContentDidPopulate,this._contentDidPopulate,this);this._textEditor.readOnly=!this._shouldBeEditable();WebInspector.probeManager.addEventListener(WebInspector.ProbeManager.Event.ProbeSetAdded,this._probeSetsChanged,this);WebInspector.probeManager.addEventListener(WebInspector.ProbeManager.Event.ProbeSetRemoved,this._probeSetsChanged,this);var toolTip=WebInspector.UIString("Pretty print");var activatedToolTip=WebInspector.UIString("Original formatting");this._prettyPrintButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("pretty-print",toolTip,activatedToolTip,"Images/NavigationItemCurleyBraces.svg",13,13);this._prettyPrintButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._togglePrettyPrint,this);this._prettyPrintButtonNavigationItem.enabled=false;var toolTipTypes=WebInspector.UIString("Show type information");var activatedToolTipTypes=WebInspector.UIString("Hide type information");this._showTypesButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("show-types",toolTipTypes,activatedToolTipTypes,"Images/NavigationItemTypes.svg",13,14);this._showTypesButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._toggleTypeAnnotations,this);this._showTypesButtonNavigationItem.enabled=false;WebInspector.showJavaScriptTypeInformationSetting.addEventListener(WebInspector.Setting.Event.Changed,this._showJavaScriptTypeInformationSettingChanged,this);let toolTipCodeCoverage=WebInspector.UIString("Fade unexecuted code");let activatedToolTipCodeCoverage=WebInspector.UIString("Do not fade unexecuted code");this._codeCoverageButtonNavigationItem=new WebInspector.ActivateButtonNavigationItem("code-coverage",toolTipCodeCoverage,activatedToolTipCodeCoverage,"Images/NavigationItemCodeCoverage.svg",13,14);this._codeCoverageButtonNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._toggleUnexecutedCodeHighlights,this);this._codeCoverageButtonNavigationItem.enabled=false;WebInspector.enableControlFlowProfilerSetting.addEventListener(WebInspector.Setting.Event.Changed,this._enableControlFlowProfilerSettingChanged,this);}
get navigationItems()
{return[this._prettyPrintButtonNavigationItem,this._showTypesButtonNavigationItem,this._codeCoverageButtonNavigationItem];}
get managesOwnIssues()
{return true;}
get textEditor()
{return this._textEditor;}
get supplementalRepresentedObjects()
{var objects=WebInspector.probeManager.probeSets.filter(function(probeSet){return this._resource.contentIdentifier===probeSet.breakpoint.contentIdentifier;},this);
if(!isNaN(this._textEditor.executionLineNumber))
objects.push(WebInspector.debuggerManager.activeCallFrame);return objects;}
revealPosition(position,textRangeToSelect,forceUnformatted)
{this._textEditor.revealPosition(position,textRangeToSelect,forceUnformatted);}
shown()
{super.shown();this._textEditor.shown();}
hidden()
{super.hidden();this._textEditor.hidden();}
closed()
{super.closed();this.resource.removeEventListener(null,null,this);WebInspector.probeManager.removeEventListener(null,null,this);WebInspector.showJavaScriptTypeInformationSetting.removeEventListener(null,null,this);WebInspector.enableControlFlowProfilerSetting.removeEventListener(null,null,this);this._textEditor.close();}
get supportsSave()
{return super.supportsSave||this.resource instanceof WebInspector.CSSStyleSheet;}
get saveData()
{if(this.resource instanceof WebInspector.CSSStyleSheet)
return{url:"web-inspector:///InspectorStyleSheet.css",content:this._textEditor.string,forceSaveAs:true};return{url:this.resource.url,content:this._textEditor.string};}
get supportsSearch()
{return true;}
get numberOfSearchResults()
{return this._textEditor.numberOfSearchResults;}
get hasPerformedSearch()
{return this._textEditor.currentSearchQuery!==null;}
set automaticallyRevealFirstSearchResult(reveal)
{this._textEditor.automaticallyRevealFirstSearchResult=reveal;}
performSearch(query)
{this._textEditor.performSearch(query);}
searchCleared()
{this._textEditor.searchCleared();}
searchQueryWithSelection()
{return this._textEditor.searchQueryWithSelection();}
revealPreviousSearchResult(changeFocus)
{this._textEditor.revealPreviousSearchResult(changeFocus);}
revealNextSearchResult(changeFocus)
{this._textEditor.revealNextSearchResult(changeFocus);}
_contentWillPopulate(event)
{if(this._textEditor.parentView===this)
return;this.removeLoadingIndicator();this.addSubview(this._textEditor);}
_contentDidPopulate(event)
{this._prettyPrintButtonNavigationItem.enabled=this._textEditor.canBeFormatted();this._showTypesButtonNavigationItem.enabled=this._textEditor.canShowTypeAnnotations();this._showTypesButtonNavigationItem.activated=WebInspector.showJavaScriptTypeInformationSetting.value;this._codeCoverageButtonNavigationItem.enabled=this._textEditor.canShowCoverageHints();this._codeCoverageButtonNavigationItem.activated=WebInspector.enableControlFlowProfilerSetting.value;}
_togglePrettyPrint(event)
{var activated=!this._prettyPrintButtonNavigationItem.activated;this._textEditor.updateFormattedState(activated);}
_toggleTypeAnnotations(event)
{this._showTypesButtonNavigationItem.enabled=false;this._textEditor.toggleTypeAnnotations().then(()=>{this._showTypesButtonNavigationItem.enabled=true;});}
_toggleUnexecutedCodeHighlights(event)
{this._codeCoverageButtonNavigationItem.enabled=false;this._textEditor.toggleUnexecutedCodeHighlights().then(()=>{this._codeCoverageButtonNavigationItem.enabled=true;});}
_showJavaScriptTypeInformationSettingChanged(event)
{this._showTypesButtonNavigationItem.activated=WebInspector.showJavaScriptTypeInformationSetting.value;}
_enableControlFlowProfilerSettingChanged(event)
{this._codeCoverageButtonNavigationItem.activated=WebInspector.enableControlFlowProfilerSetting.value;}
_textEditorFormattingDidChange(event)
{this._prettyPrintButtonNavigationItem.activated=this._textEditor.formatted;}
_sourceCodeContentDidChange(event)
{if(this._ignoreSourceCodeContentDidChangeEvent)
return;this._textEditor.string=this.resource.currentRevision.content;}
_textEditorContentDidChange(event)
{this._ignoreSourceCodeContentDidChangeEvent=true;WebInspector.branchManager.currentBranch.revisionForRepresentedObject(this.resource).content=this._textEditor.string;delete this._ignoreSourceCodeContentDidChangeEvent;}
_executionLineNumberDidChange(event)
{this.dispatchEventToListeners(WebInspector.ContentView.Event.SupplementalRepresentedObjectsDidChange);}
_numberOfSearchResultsDidChange(event)
{this.dispatchEventToListeners(WebInspector.ContentView.Event.NumberOfSearchResultsDidChange);}
_probeSetsChanged(event)
{var breakpoint=event.data.probeSet.breakpoint;if(breakpoint.sourceCodeLocation.sourceCode===this.resource)
this.dispatchEventToListeners(WebInspector.ContentView.Event.SupplementalRepresentedObjectsDidChange);}
_shouldBeEditable()
{if(this.resource instanceof WebInspector.CSSStyleSheet)
return true;if(this.resource.type===WebInspector.Resource.Type.Stylesheet&&this.resource.syntheticMIMEType==="text/css")
return true;if(this.resource.urlComponents.scheme==="file")
return true;return false;}};{const selectedStyleClassName="selected";WebInspector.TextToggleButtonNavigationItem=class TextToggleButtonNavigationItem extends WebInspector.ButtonNavigationItem
{constructor(identifier,title)
{super(identifier,title);this._title=title;}
get title()
{return this._title;}
get activated()
{return this.element.classList.contains(selectedStyleClassName);}
set activated(flag)
{this.element.classList.toggle(selectedStyleClassName,flag);}
get additionalClassNames()
{return["text-toggle","button"];}};}
WebInspector.ThreadTreeElement=class ThreadTreeElement extends WebInspector.GeneralTreeElement
{constructor(target)
{super("thread",target.displayName);this._target=target;this._idleTreeElement=new WebInspector.IdleTreeElement;}
get target(){return this._target;}
refresh()
{this.removeChildren();this._updateStatus();let targetData=WebInspector.debuggerManager.dataForTarget(this._target);let callFrames=targetData.callFrames;if(targetData.pausing||!callFrames.length){this.appendChild(this._idleTreeElement);this.expand();return;}
let activeCallFrame=WebInspector.debuggerManager.activeCallFrame;let activeCallFrameTreeElement=null;for(let callFrame of callFrames){let callFrameTreeElement=new WebInspector.CallFrameTreeElement(callFrame);if(callFrame===activeCallFrame)
activeCallFrameTreeElement=callFrameTreeElement;this.appendChild(callFrameTreeElement);}
if(activeCallFrameTreeElement){activeCallFrameTreeElement.select(true,true);activeCallFrameTreeElement.isActiveCallFrame=true;}
let currentStackTrace=targetData.asyncStackTrace;while(currentStackTrace){if(!currentStackTrace.callFrames.length)
break;let boundaryCallFrame;if(currentStackTrace.topCallFrameIsBoundary){boundaryCallFrame=currentStackTrace.callFrames[0];}else{const functionName=WebInspector.UIString("(async)");const nativeCode=true;boundaryCallFrame=new WebInspector.CallFrame(null,null,null,functionName,null,null,nativeCode);}
const isAsyncBoundaryCallFrame=true;this.appendChild(new WebInspector.CallFrameTreeElement(boundaryCallFrame,isAsyncBoundaryCallFrame));let startIndex=currentStackTrace.topCallFrameIsBoundary?1:0;for(let i=startIndex;i<currentStackTrace.callFrames.length;++i)
this.appendChild(new WebInspector.CallFrameTreeElement(currentStackTrace.callFrames[i]));if(currentStackTrace.truncated){let truncatedTreeElement=new WebInspector.GeneralTreeElement("truncated-call-frames",WebInspector.UIString("Call Frames Truncated"));truncatedTreeElement.selectable=false;this.appendChild(truncatedTreeElement);}
currentStackTrace=currentStackTrace.parentStackTrace;}
this.expand();}
onattach()
{super.onattach();this.refresh();this.expand();}
populateContextMenu(contextMenu,event)
{let targetData=WebInspector.debuggerManager.dataForTarget(this._target);contextMenu.appendItem(WebInspector.UIString("Resume Thread"),()=>{WebInspector.debuggerManager.continueUntilNextRunLoop(this._target);},!targetData.paused);super.populateContextMenu(contextMenu,event);}
_updateStatus()
{this.status=null;if(!this.element)
return;let targetData=WebInspector.debuggerManager.dataForTarget(this._target);if(!targetData.paused)
return;if(!this._statusButton){let tooltip=WebInspector.UIString("Resume Thread");this._statusButton=new WebInspector.TreeElementStatusButton(useSVGSymbol("Images/Resume.svg","resume",tooltip));this._statusButton.addEventListener(WebInspector.TreeElementStatusButton.Event.Clicked,()=>{WebInspector.debuggerManager.continueUntilNextRunLoop(this._target);});this._statusButton.element.addEventListener("mousedown",(event)=>{event.stopPropagation();});}
this.status=this._statusButton.element;}};WebInspector.TimelineRecordBar=class TimelineRecordBar extends WebInspector.Object
{constructor(records,renderMode)
{super();this._element=document.createElement("div");this._element.classList.add("timeline-record-bar");this._element[WebInspector.TimelineRecordBar.ElementReferenceSymbol]=this;this.renderMode=renderMode;this.records=records;}
static createCombinedBars(records,secondsPerPixel,graphDataSource,createBarCallback)
{if(!records.length)
return;var startTime=graphDataSource.startTime;var currentTime=graphDataSource.currentTime;var endTime=graphDataSource.endTime;var visibleRecords=[];var usesActiveStartTime=false;var lastRecordType=null;for(var i=0;i<records.length;++i){var record=records[i];if(isNaN(record.startTime))
continue;if(record.endTime<startTime)
continue;if(record.startTime>currentTime||record.startTime>endTime)
break;if(record.usesActiveStartTime)
usesActiveStartTime=true;visibleRecords.push(record);lastRecordType=record.type;}
if(!visibleRecords.length)
return;if(visibleRecords.length===1){createBarCallback(visibleRecords,WebInspector.TimelineRecordBar.RenderMode.Normal);return;}
function compareByActiveStartTime(a,b)
{return a.activeStartTime-b.activeStartTime;}
var minimumDuration=secondsPerPixel*WebInspector.TimelineRecordBar.MinimumWidthPixels;var minimumMargin=secondsPerPixel*WebInspector.TimelineRecordBar.MinimumMarginPixels;if(usesActiveStartTime){var inactiveStartTime=NaN;var inactiveEndTime=NaN;var inactiveRecords=[];for(var i=0;i<visibleRecords.length;++i){var record=visibleRecords[i];if(!isNaN(inactiveStartTime)&&inactiveStartTime+Math.max(inactiveEndTime-inactiveStartTime,minimumDuration)+minimumMargin<=record.startTime){createBarCallback(inactiveRecords,WebInspector.TimelineRecordBar.RenderMode.InactiveOnly);inactiveRecords=[];inactiveStartTime=NaN;inactiveEndTime=NaN;}
if(isNaN(inactiveStartTime))
inactiveStartTime=record.startTime;inactiveEndTime=Math.max(inactiveEndTime||0,record.activeStartTime);inactiveRecords.push(record);}
if(!isNaN(inactiveStartTime))
createBarCallback(inactiveRecords,WebInspector.TimelineRecordBar.RenderMode.InactiveOnly);visibleRecords.sort(compareByActiveStartTime);}
var activeStartTime=NaN;var activeEndTime=NaN;var activeRecords=[];var startTimeProperty=usesActiveStartTime?"activeStartTime":"startTime";for(var i=0;i<visibleRecords.length;++i){var record=visibleRecords[i];var startTime=record[startTimeProperty];if(!isNaN(activeStartTime)&&(activeStartTime+Math.max(activeEndTime-activeStartTime,minimumDuration)+minimumMargin<=startTime||(isNaN(startTime)&&!isNaN(activeEndTime)))){createBarCallback(activeRecords,WebInspector.TimelineRecordBar.RenderMode.ActiveOnly);activeRecords=[];activeStartTime=NaN;activeEndTime=NaN;}
if(isNaN(startTime))
continue;if(isNaN(activeStartTime))
activeStartTime=startTime;if(!isNaN(record.endTime))
activeEndTime=Math.max(activeEndTime||0,record.endTime);activeRecords.push(record);}
if(!isNaN(activeStartTime))
createBarCallback(activeRecords,WebInspector.TimelineRecordBar.RenderMode.ActiveOnly);}
static fromElement(element)
{return element[WebInspector.TimelineRecordBar.ElementReferenceSymbol]||null;}
get element()
{return this._element;}
get renderMode()
{return this._renderMode;}
set renderMode(renderMode)
{this._renderMode=renderMode||WebInspector.TimelineRecordBar.RenderMode.Normal;}
get records()
{return this._records;}
set records(records)
{let oldRecordType;let oldRecordEventType;let oldRecordUsesActiveStartTime=false;if(this._records&&this._records.length){let oldRecord=this._records[0];oldRecordType=oldRecord.type;oldRecordEventType=oldRecord.eventType;oldRecordUsesActiveStartTime=oldRecord.usesActiveStartTime;}
records=records||[];this._records=records;if(this._records.length){let newRecord=this._records[0];if(newRecord.type!==oldRecordType){this._element.classList.remove(oldRecordType);this._element.classList.add(newRecord.type);}
if(newRecord.eventType!==oldRecordEventType){this._element.classList.remove(oldRecordEventType);this._element.classList.add(newRecord.eventType);}
if(newRecord.usesActiveStartTime!==oldRecordUsesActiveStartTime)
this._element.classList.toggle("has-inactive-segment",newRecord.usesActiveStartTime);}else
this._element.classList.remove(oldRecordType,oldRecordEventType,"has-inactive-segment");}
refresh(graphDataSource)
{if(isNaN(graphDataSource.secondsPerPixel))
return;if(!this._records||!this._records.length)
return false;var firstRecord=this._records[0];var barStartTime=firstRecord.startTime;if(isNaN(barStartTime))
return false;var graphStartTime=graphDataSource.startTime;var graphEndTime=graphDataSource.endTime;var graphCurrentTime=graphDataSource.currentTime;var barEndTime=this._records.reduce(function(previousValue,currentValue){return Math.max(previousValue,currentValue.endTime);},0);if(barStartTime>graphCurrentTime)
return false;if(barEndTime<graphStartTime||barStartTime>graphEndTime)
return false;var barUnfinished=isNaN(barEndTime)||barEndTime>=graphCurrentTime;if(barUnfinished)
barEndTime=graphCurrentTime;var graphDuration=graphEndTime-graphStartTime;let newBarPosition=(barStartTime-graphStartTime)/graphDuration;let property=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"right":"left";this._updateElementPosition(this._element,newBarPosition,property);var newBarWidth=((barEndTime-graphStartTime)/graphDuration)-newBarPosition;this._updateElementPosition(this._element,newBarWidth,"width");if(!this._activeBarElement&&this._renderMode!==WebInspector.TimelineRecordBar.RenderMode.InactiveOnly){this._activeBarElement=document.createElement("div");this._activeBarElement.classList.add("segment");}
if(!firstRecord.usesActiveStartTime){this._element.classList.toggle("unfinished",barUnfinished);if(this._inactiveBarElement)
this._inactiveBarElement.remove();if(this._renderMode===WebInspector.TimelineRecordBar.RenderMode.InactiveOnly){if(this._activeBarElement)
this._activeBarElement.remove();return false;}
this._activeBarElement.style.removeProperty(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"right":"left");this._activeBarElement.style.removeProperty("width");if(!this._activeBarElement.parentNode)
this._element.appendChild(this._activeBarElement);return true;}
if(this._renderMode===WebInspector.TimelineRecordBar.RenderMode.ActiveOnly)
var barActiveStartTime=this._records.reduce(function(previousValue,currentValue){return Math.min(previousValue,currentValue.activeStartTime);},Infinity);else
var barActiveStartTime=this._records.reduce(function(previousValue,currentValue){return Math.max(previousValue,currentValue.activeStartTime);},0);var barDuration=barEndTime-barStartTime;var inactiveUnfinished=isNaN(barActiveStartTime)||barActiveStartTime>=graphCurrentTime;this._element.classList.toggle("unfinished",inactiveUnfinished);if(inactiveUnfinished)
barActiveStartTime=graphCurrentTime;else if(this._renderMode===WebInspector.TimelineRecordBar.RenderMode.Normal){let minimumSegmentDuration=graphDataSource.secondsPerPixel*WebInspector.TimelineRecordBar.MinimumWidthPixels;if(barActiveStartTime-barStartTime<minimumSegmentDuration){barActiveStartTime=barStartTime;if(this._inactiveBarElement)
this._inactiveBarElement.remove();}}
let showInactiveSegment=barActiveStartTime>barStartTime;this._element.classList.toggle("has-inactive-segment",showInactiveSegment);let middlePercentage=(barActiveStartTime-barStartTime)/barDuration;if(showInactiveSegment&&this._renderMode!==WebInspector.TimelineRecordBar.RenderMode.ActiveOnly){if(!this._inactiveBarElement){this._inactiveBarElement=document.createElement("div");this._inactiveBarElement.classList.add("segment");this._inactiveBarElement.classList.add("inactive");}
let property=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"left":"right";this._updateElementPosition(this._inactiveBarElement,1-middlePercentage,property);this._updateElementPosition(this._inactiveBarElement,middlePercentage,"width");if(!this._inactiveBarElement.parentNode)
this._element.insertBefore(this._inactiveBarElement,this._element.firstChild);}
if(!inactiveUnfinished&&this._renderMode!==WebInspector.TimelineRecordBar.RenderMode.InactiveOnly){let property=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"right":"left";this._updateElementPosition(this._activeBarElement,middlePercentage,property);this._updateElementPosition(this._activeBarElement,1-middlePercentage,"width");if(!this._activeBarElement.parentNode)
this._element.appendChild(this._activeBarElement);}else if(this._activeBarElement)
this._activeBarElement.remove();return true;}
_updateElementPosition(element,newPosition,property)
{newPosition*=100;let newPositionAprox=Math.round(newPosition*100);let currentPositionAprox=Math.round(parseFloat(element.style[property])*100);if(currentPositionAprox!==newPositionAprox)
element.style[property]=(newPositionAprox/100)+"%";}};WebInspector.TimelineRecordBar.ElementReferenceSymbol=Symbol("timeline-record-bar");WebInspector.TimelineRecordBar.MinimumWidthPixels=4;WebInspector.TimelineRecordBar.MinimumMarginPixels=1;WebInspector.TimelineRecordBar.RenderMode={Normal:"timeline-record-bar-normal-render-mode",InactiveOnly:"timeline-record-bar-inactive-only-render-mode",ActiveOnly:"timeline-record-bar-active-only-render-mode"};WebInspector.TimelineRecordFrame=class TimelineRecordFrame extends WebInspector.Object
{constructor(graphDataSource,record)
{super();this._element=document.createElement("div");this._element.classList.add("timeline-record-frame");this._graphDataSource=graphDataSource;this._record=record||null;this._filtered=false;}
get element()
{return this._element;}
get record()
{return this._record;}
set record(record)
{this._record=record;}
get selected()
{return this._element.classList.contains("selected");}
set selected(x)
{if(this.selected===x)
return;this._element.classList.toggle("selected");}
get filtered()
{return this._filtered;}
set filtered(x)
{if(this._filtered===x)
return;this._filtered=x;this._element.classList.toggle("filtered");}
refresh(graphDataSource)
{if(!this._record)
return false;var frameIndex=this._record.frameIndex;var graphStartFrameIndex=Math.floor(graphDataSource.startTime);var graphEndFrameIndex=graphDataSource.endTime;if(frameIndex<graphStartFrameIndex||frameIndex>graphEndFrameIndex)
return false;this._element.style.width=(1/graphDataSource.timelineOverview.secondsPerPixel)+"px";var graphDuration=graphDataSource.endTime-graphDataSource.startTime;let recordPosition=(frameIndex-graphDataSource.startTime)/graphDuration;let property=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"right":"left";this._updateElementPosition(this._element,recordPosition,property);this._updateChildElements(graphDataSource);return true;}
_calculateFrameDisplayData(graphDataSource)
{var secondsPerBlock=(graphDataSource.graphHeightSeconds/graphDataSource.height)*WebInspector.TimelineRecordFrame.MinimumHeightPixels;var segments=[];var invisibleSegments=[];var currentSegment=null;function updateDurationRemainder(segment)
{if(segment.duration<=secondsPerBlock){segment.remainder=0;return;}
var roundedDuration=Math.roundTo(segment.duration,secondsPerBlock);segment.remainder=Math.max(segment.duration-roundedDuration,0);}
function pushCurrentSegment()
{updateDurationRemainder(currentSegment);segments.push(currentSegment);if(currentSegment.duration<secondsPerBlock)
invisibleSegments.push({segment:currentSegment,index:segments.length-1});currentSegment=null;}
for(var key in WebInspector.RenderingFrameTimelineRecord.TaskType){var taskType=WebInspector.RenderingFrameTimelineRecord.TaskType[key];var duration=this._record.durationForTask(taskType);if(duration===0)
continue;if(currentSegment&&duration>=secondsPerBlock)
pushCurrentSegment();if(!currentSegment)
currentSegment={taskType:null,longestTaskDuration:0,duration:0,remainder:0};currentSegment.duration+=duration;if(duration>currentSegment.longestTaskDuration){currentSegment.taskType=taskType;currentSegment.longestTaskDuration=duration;}
if(currentSegment.duration>=secondsPerBlock)
pushCurrentSegment();}
if(currentSegment)
pushCurrentSegment();if(segments.length===1){segments[0].duration=Math.max(segments[0].duration,secondsPerBlock);invisibleSegments=[];}
invisibleSegments.sort(function(a,b){return a.segment.duration-b.segment.duration;});for(var item of invisibleSegments){var segment=item.segment;var previousSegment=item.index>0?segments[item.index-1]:null;var nextSegment=item.index<segments.length-1?segments[item.index+1]:null;var adjacentSegments;var availableDuration;if(previousSegment&&nextSegment){adjacentSegments=previousSegment.remainder>nextSegment.remainder?[previousSegment,nextSegment]:[nextSegment,previousSegment];availableDuration=previousSegment.remainder+nextSegment.remainder;}else{adjacentSegments=[previousSegment||nextSegment];availableDuration=adjacentSegments[0].remainder;}
if(availableDuration<(secondsPerBlock-segment.duration)){var targetSegment;if(previousSegment&&nextSegment)
targetSegment=previousSegment.duration>nextSegment.duration?previousSegment:nextSegment;else
targetSegment=previousSegment||nextSegment;targetSegment.duration+=segment.duration;updateDurationRemainder(targetSegment);continue;}
adjacentSegments.forEach(function(adjacentSegment){if(segment.duration>=secondsPerBlock)
return;var remainder=Math.min(secondsPerBlock-segment.duration,adjacentSegment.remainder);segment.duration+=remainder;adjacentSegment.remainder-=remainder;});}
var frameDuration=0;segments=segments.filter(function(segment){if(segment.duration<secondsPerBlock)
return false;segment.duration=Math.roundTo(segment.duration,secondsPerBlock);frameDuration+=segment.duration;return true;});return{frameDuration,segments};}
_updateChildElements(graphDataSource)
{this._element.removeChildren();if(!this._record)
return;if(graphDataSource.graphHeightSeconds===0)
return;var frameElement=document.createElement("div");frameElement.classList.add("frame");this._element.appendChild(frameElement);if(this._record.__displayData&&this._record.__displayData.graphHeightSeconds!==graphDataSource.graphHeightSeconds)
this._record.__displayData=null;if(!this._record.__displayData){this._record.__displayData=this._calculateFrameDisplayData(graphDataSource);this._record.__displayData.graphHeightSeconds=graphDataSource.graphHeightSeconds;}
var frameHeight=this._record.__displayData.frameDuration/graphDataSource.graphHeightSeconds;if(frameHeight>=0.95)
this._element.classList.add("tall");else
this._element.classList.remove("tall");this._updateElementPosition(frameElement,frameHeight,"height");for(var segment of this._record.__displayData.segments){var element=document.createElement("div");this._updateElementPosition(element,segment.duration/this._record.__displayData.frameDuration,"height");element.classList.add("duration",segment.taskType);frameElement.insertBefore(element,frameElement.firstChild);}}
_updateElementPosition(element,newPosition,property)
{newPosition*=100;let newPositionAprox=Math.round(newPosition*100);let currentPositionAprox=Math.round(parseFloat(element.style[property])*100);if(currentPositionAprox!==newPositionAprox)
element.style[property]=(newPositionAprox/100)+"%";}};WebInspector.TimelineRecordFrame.MinimumHeightPixels=3;WebInspector.TimelineRecordFrame.MaximumWidthPixels=14;WebInspector.TimelineRecordFrame.MinimumWidthPixels=4;WebInspector.TimelineRecordingContentView=class TimelineRecordingContentView extends WebInspector.ContentView
{constructor(recording)
{super(recording);this._recording=recording;this.element.classList.add("timeline-recording");this._timelineOverview=new WebInspector.TimelineOverview(this._recording,this);this._timelineOverview.addEventListener(WebInspector.TimelineOverview.Event.TimeRangeSelectionChanged,this._timeRangeSelectionChanged,this);this._timelineOverview.addEventListener(WebInspector.TimelineOverview.Event.RecordSelected,this._recordSelected,this);this._timelineOverview.addEventListener(WebInspector.TimelineOverview.Event.TimelineSelected,this._timelineSelected,this);this._timelineOverview.addEventListener(WebInspector.TimelineOverview.Event.EditingInstrumentsDidChange,this._editingInstrumentsDidChange,this);this.addSubview(this._timelineOverview);const disableBackForward=true;const disableFindBanner=true;this._timelineContentBrowser=new WebInspector.ContentBrowser(null,this,disableBackForward,disableFindBanner);this._timelineContentBrowser.addEventListener(WebInspector.ContentBrowser.Event.CurrentContentViewDidChange,this._currentContentViewDidChange,this);this._entireRecordingPathComponent=this._createTimelineRangePathComponent(WebInspector.UIString("Entire Recording"));this._timelineSelectionPathComponent=this._createTimelineRangePathComponent();this._timelineSelectionPathComponent.previousSibling=this._entireRecordingPathComponent;this._selectedTimeRangePathComponent=this._entireRecordingPathComponent;this._filterBarNavigationItem=new WebInspector.FilterBarNavigationItem;this._filterBarNavigationItem.filterBar.placeholder=WebInspector.UIString("Filter Records");this._filterBarNavigationItem.filterBar.addEventListener(WebInspector.FilterBar.Event.FilterDidChange,this._filterDidChange,this);this._timelineContentBrowser.navigationBar.addNavigationItem(this._filterBarNavigationItem);this.addSubview(this._timelineContentBrowser);this._clearTimelineNavigationItem=new WebInspector.ButtonNavigationItem("clear-timeline",WebInspector.UIString("Clear Timeline (%s)").format(WebInspector.clearKeyboardShortcut.displayName),"Images/NavigationItemClear.svg",16,16);this._clearTimelineNavigationItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._clearTimeline,this);this._overviewTimelineView=new WebInspector.OverviewTimelineView(recording);this._overviewTimelineView.secondsPerPixel=this._timelineOverview.secondsPerPixel;this._progressView=new WebInspector.TimelineRecordingProgressView;this._timelineContentBrowser.addSubview(this._progressView);this._timelineViewMap=new Map;this._pathComponentMap=new Map;this._updating=false;this._currentTime=NaN;this._discontinuityStartTime=NaN;this._lastUpdateTimestamp=NaN;this._startTimeNeedsReset=true;this._renderingFrameTimeline=null;this._recording.addEventListener(WebInspector.TimelineRecording.Event.InstrumentAdded,this._instrumentAdded,this);this._recording.addEventListener(WebInspector.TimelineRecording.Event.InstrumentRemoved,this._instrumentRemoved,this);this._recording.addEventListener(WebInspector.TimelineRecording.Event.Reset,this._recordingReset,this);this._recording.addEventListener(WebInspector.TimelineRecording.Event.Unloaded,this._recordingUnloaded,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.CapturingStarted,this._capturingStarted,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.CapturingStopped,this._capturingStopped,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.Paused,this._debuggerPaused,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.Resumed,this._debuggerResumed,this);WebInspector.ContentView.addEventListener(WebInspector.ContentView.Event.SelectionPathComponentsDidChange,this._contentViewSelectionPathComponentDidChange,this);WebInspector.ContentView.addEventListener(WebInspector.ContentView.Event.SupplementalRepresentedObjectsDidChange,this._contentViewSupplementalRepresentedObjectsDidChange,this);WebInspector.TimelineView.addEventListener(WebInspector.TimelineView.Event.RecordWasFiltered,this._recordWasFiltered,this);WebInspector.notifications.addEventListener(WebInspector.Notification.VisibilityStateDidChange,this._inspectorVisibilityStateChanged,this);for(let instrument of this._recording.instruments)
this._instrumentAdded(instrument);this.showOverviewTimelineView();}
showOverviewTimelineView()
{this._timelineContentBrowser.showContentView(this._overviewTimelineView);}
showTimelineViewForTimeline(timeline)
{if(!this._timelineViewMap.has(timeline))
return;this._timelineContentBrowser.showContentView(this._timelineViewMap.get(timeline));}
get supportsSplitContentBrowser()
{return false;}
get selectionPathComponents()
{if(!this._timelineContentBrowser.currentContentView)
return[];let pathComponents=[];let representedObject=this._timelineContentBrowser.currentContentView.representedObject;if(representedObject instanceof WebInspector.Timeline)
pathComponents.push(this._pathComponentMap.get(representedObject));pathComponents.push(this._selectedTimeRangePathComponent);return pathComponents;}
get supplementalRepresentedObjects()
{if(!this._timelineContentBrowser.currentContentView)
return[];return this._timelineContentBrowser.currentContentView.supplementalRepresentedObjects;}
get navigationItems()
{return[this._clearTimelineNavigationItem];}
get handleCopyEvent()
{let currentContentView=this._timelineContentBrowser.currentContentView;return currentContentView&&typeof currentContentView.handleCopyEvent==="function"?currentContentView.handleCopyEvent.bind(currentContentView):null;}
get supportsSave()
{let currentContentView=this._timelineContentBrowser.currentContentView;return currentContentView&&currentContentView.supportsSave;}
get saveData()
{let currentContentView=this._timelineContentBrowser.currentContentView;return currentContentView&&currentContentView.saveData||null;}
get currentTimelineView()
{return this._timelineContentBrowser.currentContentView;}
shown()
{super.shown();this._timelineOverview.shown();this._timelineContentBrowser.shown();this._clearTimelineNavigationItem.enabled=!this._recording.readonly&&!isNaN(this._recording.startTime);this._currentContentViewDidChange();if(!this._updating&&WebInspector.timelineManager.activeRecording===this._recording&&WebInspector.timelineManager.isCapturing())
this._startUpdatingCurrentTime(this._currentTime);}
hidden()
{super.hidden();this._timelineOverview.hidden();this._timelineContentBrowser.hidden();if(this._updating)
this._stopUpdatingCurrentTime();}
closed()
{super.closed();this._timelineContentBrowser.contentViewContainer.closeAllContentViews();this._recording.removeEventListener(null,null,this);WebInspector.timelineManager.removeEventListener(null,null,this);WebInspector.debuggerManager.removeEventListener(null,null,this);WebInspector.ContentView.removeEventListener(null,null,this);}
canGoBack()
{return this._timelineContentBrowser.canGoBack();}
canGoForward()
{return this._timelineContentBrowser.canGoForward();}
goBack()
{this._timelineContentBrowser.goBack();}
goForward()
{this._timelineContentBrowser.goForward();}
handleClearShortcut(event)
{this._clearTimeline();}
contentBrowserTreeElementForRepresentedObject(contentBrowser,representedObject)
{if(!(representedObject instanceof WebInspector.Timeline)&&!(representedObject instanceof WebInspector.TimelineRecording))
return null;let iconClassName;let title;if(representedObject instanceof WebInspector.Timeline){iconClassName=WebInspector.TimelineTabContentView.iconClassNameForTimelineType(representedObject.type);title=WebInspector.UIString("Details");}else{iconClassName=WebInspector.TimelineTabContentView.StopwatchIconStyleClass;title=WebInspector.UIString("Overview");}
const hasChildren=false;return new WebInspector.GeneralTreeElement(iconClassName,title,representedObject,hasChildren);}
timelineOverviewUserSelectedRecord(timelineOverview,timelineRecord)
{let timelineViewForRecord=null;for(let timelineView of this._timelineViewMap.values()){if(timelineView.representedObject.type===timelineRecord.type){timelineViewForRecord=timelineView;break;}}
if(!timelineViewForRecord)
return;this._timelineContentBrowser.showContentView(timelineViewForRecord);timelineViewForRecord.userSelectedRecordFromOverview(timelineRecord);}
_currentContentViewDidChange(event)
{let newViewMode;let timelineView=this.currentTimelineView;if(timelineView&&timelineView.representedObject.type===WebInspector.TimelineRecord.Type.RenderingFrame)
newViewMode=WebInspector.TimelineOverview.ViewMode.RenderingFrames;else
newViewMode=WebInspector.TimelineOverview.ViewMode.Timelines;this._timelineOverview.viewMode=newViewMode;this._updateTimelineOverviewHeight();this._updateProgressView();this._updateFilterBar();if(timelineView){this._updateTimelineViewTimes(timelineView);this._filterDidChange();let timeline=null;if(timelineView.representedObject instanceof WebInspector.Timeline)
timeline=timelineView.representedObject;this._timelineOverview.selectedTimeline=timeline;}
this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);this.dispatchEventToListeners(WebInspector.ContentView.Event.NavigationItemsDidChange);}
_timelinePathComponentSelected(event)
{let selectedTimeline=event.data.pathComponent.representedObject;this.showTimelineViewForTimeline(selectedTimeline);}
_timeRangePathComponentSelected(event)
{let selectedPathComponent=event.data.pathComponent;if(selectedPathComponent===this._selectedTimeRangePathComponent)
return;let timelineRuler=this._timelineOverview.timelineRuler;if(selectedPathComponent===this._entireRecordingPathComponent)
timelineRuler.selectEntireRange();else{let timelineRange=selectedPathComponent.representedObject;timelineRuler.selectionStartTime=timelineRuler.zeroTime+timelineRange.startValue;timelineRuler.selectionEndTime=timelineRuler.zeroTime+timelineRange.endValue;}}
_contentViewSelectionPathComponentDidChange(event)
{if(!this.visible)
return;if(event.target!==this._timelineContentBrowser.currentContentView)
return;this._updateFilterBar();this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);if(this.currentTimelineView===this._overviewTimelineView)
return;let record=null;if(this.currentTimelineView.selectionPathComponents){let recordPathComponent=this.currentTimelineView.selectionPathComponents.find((element)=>element.representedObject instanceof WebInspector.TimelineRecord);record=recordPathComponent?recordPathComponent.representedObject:null;}
this._timelineOverview.selectRecord(event.target.representedObject,record);}
_contentViewSupplementalRepresentedObjectsDidChange(event)
{if(event.target!==this._timelineContentBrowser.currentContentView)
return;this.dispatchEventToListeners(WebInspector.ContentView.Event.SupplementalRepresentedObjectsDidChange);}
_inspectorVisibilityStateChanged()
{if(WebInspector.timelineManager.activeRecording!==this._recording)
return;if(!WebInspector.visible&&this._updating){this._stopUpdatingCurrentTime();return;}
if(!WebInspector.visible)
return;let{startTime,endTime}=this.representedObject;if(!WebInspector.timelineManager.isCapturing()){
this._updateTimes(startTime,endTime,endTime);return;}
this._startUpdatingCurrentTime(endTime);}
_update(timestamp)
{ if(!(WebInspector.tabBrowser.selectedTabContentView instanceof WebInspector.TimelineTabContentView))
return;if(this._waitingToResetCurrentTime){requestAnimationFrame(this._updateCallback);return;}
var startTime=this._recording.startTime;var currentTime=this._currentTime||startTime;var endTime=this._recording.endTime;var timespanSinceLastUpdate=(timestamp-this._lastUpdateTimestamp)/1000||0;currentTime+=timespanSinceLastUpdate;this._updateTimes(startTime,currentTime,endTime);if(!this._updating&&(currentTime>=endTime||isNaN(endTime))){if(this.visible)
this._lastUpdateTimestamp=NaN;return;}
this._lastUpdateTimestamp=timestamp;requestAnimationFrame(this._updateCallback);}
_updateTimes(startTime,currentTime,endTime)
{if(this._startTimeNeedsReset&&!isNaN(startTime)){this._timelineOverview.startTime=startTime;this._overviewTimelineView.zeroTime=startTime;for(let timelineView of this._timelineViewMap.values())
timelineView.zeroTime=startTime;this._startTimeNeedsReset=false;}
this._timelineOverview.endTime=Math.max(endTime,currentTime);this._currentTime=currentTime;this._timelineOverview.currentTime=currentTime;if(this.currentTimelineView)
this._updateTimelineViewTimes(this.currentTimelineView);this._timelineOverview.updateLayoutIfNeeded();if(this.currentTimelineView)
this.currentTimelineView.updateLayoutIfNeeded();}
_startUpdatingCurrentTime(startTime)
{if(this._updating)
return;if(!WebInspector.visible)
return;if(typeof startTime==="number")
this._currentTime=startTime;else if(!isNaN(this._currentTime)){
this._waitingToResetCurrentTime=true;this._recording.addEventListener(WebInspector.TimelineRecording.Event.TimesUpdated,this._recordingTimesUpdated,this);}
this._updating=true;if(!this._updateCallback)
this._updateCallback=this._update.bind(this);requestAnimationFrame(this._updateCallback);}
_stopUpdatingCurrentTime()
{this._updating=false;if(this._waitingToResetCurrentTime){this._recording.removeEventListener(WebInspector.TimelineRecording.Event.TimesUpdated,this._recordingTimesUpdated,this);this._waitingToResetCurrentTime=false;}}
_capturingStarted(event)
{this._updateProgressView();let startTime=event.data.startTime;if(!this._updating)
this._startUpdatingCurrentTime(startTime);this._clearTimelineNavigationItem.enabled=!this._recording.readonly;
if(!isNaN(this._discontinuityStartTime)){this._recording.addDiscontinuity(this._discontinuityStartTime,startTime);this._discontinuityStartTime=NaN;}}
_capturingStopped(event)
{this._updateProgressView();if(this._updating)
this._stopUpdatingCurrentTime();if(this.currentTimelineView)
this._updateTimelineViewTimes(this.currentTimelineView);this._discontinuityStartTime=event.data.endTime||this._currentTime;}
_debuggerPaused(event)
{if(this._updating)
this._stopUpdatingCurrentTime();}
_debuggerResumed(event)
{if(!this._updating)
this._startUpdatingCurrentTime();}
_recordingTimesUpdated(event)
{if(!this._waitingToResetCurrentTime)
return;
for(var timeline of this._recording.timelines.values()){var lastRecord=timeline.records.lastValue;if(!lastRecord)
continue;this._currentTime=Math.max(this._currentTime,lastRecord.startTime);}
this._recording.removeEventListener(WebInspector.TimelineRecording.Event.TimesUpdated,this._recordingTimesUpdated,this);this._waitingToResetCurrentTime=false;}
_clearTimeline(event)
{if(WebInspector.timelineManager.activeRecording===this._recording&&WebInspector.timelineManager.isCapturing())
WebInspector.timelineManager.stopCapturing();this._recording.reset();}
_updateTimelineOverviewHeight()
{if(this._timelineOverview.editingInstruments)
this._timelineOverview.element.style.height="";else{const rulerHeight=23;let styleValue=(rulerHeight+this._timelineOverview.height)+"px";this._timelineOverview.element.style.height=styleValue;this._timelineContentBrowser.element.style.top=styleValue;}}
_instrumentAdded(instrumentOrEvent)
{let instrument=instrumentOrEvent instanceof WebInspector.Instrument?instrumentOrEvent:instrumentOrEvent.data.instrument;let timeline=this._recording.timelineForInstrument(instrument);this._timelineViewMap.set(timeline,WebInspector.ContentView.createFromRepresentedObject(timeline,{recording:this._recording}));if(timeline.type===WebInspector.TimelineRecord.Type.RenderingFrame)
this._renderingFrameTimeline=timeline;let displayName=WebInspector.TimelineTabContentView.displayNameForTimelineType(timeline.type);let iconClassName=WebInspector.TimelineTabContentView.iconClassNameForTimelineType(timeline.type);let pathComponent=new WebInspector.HierarchicalPathComponent(displayName,iconClassName,timeline);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this._timelinePathComponentSelected,this);this._pathComponentMap.set(timeline,pathComponent);this._timelineCountChanged();}
_instrumentRemoved(event)
{let instrument=event.data.instrument;let timeline=this._recording.timelineForInstrument(instrument);let timelineView=this._timelineViewMap.take(timeline);if(this.currentTimelineView===timelineView)
this.showOverviewTimelineView();if(timeline.type===WebInspector.TimelineRecord.Type.RenderingFrame)
this._renderingFrameTimeline=null;this._pathComponentMap.delete(timeline);this._timelineCountChanged();}
_timelineCountChanged()
{var previousPathComponent=null;for(var pathComponent of this._pathComponentMap.values()){if(previousPathComponent){previousPathComponent.nextSibling=pathComponent;pathComponent.previousSibling=previousPathComponent;}
previousPathComponent=pathComponent;}
this._updateTimelineOverviewHeight();}
_recordingReset(event)
{for(let timelineView of this._timelineViewMap.values())
timelineView.reset();this._currentTime=NaN;this._discontinuityStartTime=NaN;if(!this._updating){this._startTimeNeedsReset=true;this._updateTimes(0,0,0);}
this._lastUpdateTimestamp=NaN;this._startTimeNeedsReset=true;this._recording.removeEventListener(WebInspector.TimelineRecording.Event.TimesUpdated,this._recordingTimesUpdated,this);this._waitingToResetCurrentTime=false;this._timelineOverview.reset();this._overviewTimelineView.reset();this._clearTimelineNavigationItem.enabled=false;}
_recordingUnloaded(event)
{WebInspector.timelineManager.removeEventListener(WebInspector.TimelineManager.Event.CapturingStarted,this._capturingStarted,this);WebInspector.timelineManager.removeEventListener(WebInspector.TimelineManager.Event.CapturingStopped,this._capturingStopped,this);}
_timeRangeSelectionChanged(event)
{if(!this.currentTimelineView)
return;this._updateTimelineViewTimes(this.currentTimelineView);let selectedPathComponent;if(this._timelineOverview.timelineRuler.entireRangeSelected)
selectedPathComponent=this._entireRecordingPathComponent;else{let timelineRange=this._timelineSelectionPathComponent.representedObject;timelineRange.startValue=this.currentTimelineView.startTime;timelineRange.endValue=this.currentTimelineView.endTime;if(!(this.currentTimelineView instanceof WebInspector.RenderingFrameTimelineView)){timelineRange.startValue-=this.currentTimelineView.zeroTime;timelineRange.endValue-=this.currentTimelineView.zeroTime;}
this._updateTimeRangePathComponents();selectedPathComponent=this._timelineSelectionPathComponent;}
if(this._selectedTimeRangePathComponent!==selectedPathComponent){this._selectedTimeRangePathComponent=selectedPathComponent;this.dispatchEventToListeners(WebInspector.ContentView.Event.SelectionPathComponentsDidChange);}}
_recordSelected(event)
{let{record,timeline}=event.data;let timelineView=this._timelineViewMap.get(timeline);if(record&&timelineView!==this.currentTimelineView)
this.showTimelineViewForTimeline(timeline);timelineView.selectRecord(record);}
_timelineSelected()
{let timeline=this._timelineOverview.selectedTimeline;if(timeline)
this.showTimelineViewForTimeline(timeline);else
this.showOverviewTimelineView();}
_updateTimeRangePathComponents()
{let timelineRange=this._timelineSelectionPathComponent.representedObject;let startValue=timelineRange.startValue;let endValue=timelineRange.endValue;if(isNaN(startValue)||isNaN(endValue)){this._entireRecordingPathComponent.nextSibling=null;return;}
this._entireRecordingPathComponent.nextSibling=this._timelineSelectionPathComponent;let displayName;if(this._timelineOverview.viewMode===WebInspector.TimelineOverview.ViewMode.Timelines){let selectionStart=Number.secondsToString(startValue,true);let selectionEnd=Number.secondsToString(endValue,true);displayName=WebInspector.UIString("%s \u2013 %s").format(selectionStart,selectionEnd);}else{startValue+=1;if(startValue===endValue)
displayName=WebInspector.UIString("Frame %d").format(startValue);else
displayName=WebInspector.UIString("Frames %d \u2013 %d").format(startValue,endValue);}
this._timelineSelectionPathComponent.displayName=displayName;this._timelineSelectionPathComponent.title=displayName;}
_createTimelineRangePathComponent(title)
{let range=new WebInspector.TimelineRange(NaN,NaN);let pathComponent=new WebInspector.HierarchicalPathComponent(title||enDash,"time-icon",range);pathComponent.addEventListener(WebInspector.HierarchicalPathComponent.Event.SiblingWasSelected,this._timeRangePathComponentSelected,this);return pathComponent;}
_updateTimelineViewTimes(timelineView)
{let timelineRuler=this._timelineOverview.timelineRuler;let entireRangeSelected=timelineRuler.entireRangeSelected;let endTime=this._timelineOverview.selectionStartTime+this._timelineOverview.selectionDuration;if(entireRangeSelected){if(timelineView instanceof WebInspector.RenderingFrameTimelineView){endTime=this._renderingFrameTimeline.records.length;}else{
endTime=isNaN(this._recording.endTime)?this._recording.currentTime:this._recording.endTime;endTime+=timelineRuler.minimumSelectionDuration;}}
timelineView.startTime=this._timelineOverview.selectionStartTime;timelineView.currentTime=this._currentTime;timelineView.endTime=endTime;}
_editingInstrumentsDidChange(event)
{let editingInstruments=this._timelineOverview.editingInstruments;this.element.classList.toggle(WebInspector.TimelineOverview.EditInstrumentsStyleClassName,editingInstruments);this._updateTimelineOverviewHeight();}
_filterDidChange()
{if(!this.currentTimelineView)
return;this.currentTimelineView.updateFilter(this._filterBarNavigationItem.filterBar.filters);}
_recordWasFiltered(event)
{if(event.target!==this.currentTimelineView)
return;let timeline=this.currentTimelineView.representedObject;if(!(timeline instanceof WebInspector.Timeline))
return;let record=event.data.record;let filtered=event.data.filtered;this._timelineOverview.recordWasFiltered(timeline,record,filtered);}
_updateProgressView()
{let isCapturing=WebInspector.timelineManager.isCapturing();this._progressView.visible=isCapturing&&this.currentTimelineView&&!this.currentTimelineView.showsLiveRecordingData;}
_updateFilterBar()
{this._filterBarNavigationItem.hidden=!this.currentTimelineView||!this.currentTimelineView.showsFilterBar;}};WebInspector.TimelineRecordingProgressView=class TimelineRecordingProgressView extends WebInspector.View
{constructor()
{super();this.element.classList.add("recording-progress");let statusElement=document.createElement("div");statusElement.classList.add("status");statusElement.textContent=WebInspector.UIString("Recording Timeline Data");this.element.append(statusElement);let spinner=new WebInspector.IndeterminateProgressSpinner;statusElement.append(spinner.element);this._stopRecordingButtonElement=document.createElement("button");this._stopRecordingButtonElement.textContent=WebInspector.UIString("Stop Recording");this._stopRecordingButtonElement.addEventListener("click",()=>WebInspector.timelineManager.stopCapturing());this.element.append(this._stopRecordingButtonElement);}
get visible(){return this._visible;}
set visible(x)
{if(this._visible===x)
return;this._visible=x;this.element.classList.toggle("hidden",!this._visible);}};WebInspector.TimelineRuler=class TimelineRuler extends WebInspector.View
{constructor()
{super();this.element.classList.add("timeline-ruler");this._headerElement=document.createElement("div");this._headerElement.classList.add("header");this.element.appendChild(this._headerElement);this._markersElement=document.createElement("div");this._markersElement.classList.add("markers");this.element.appendChild(this._markersElement);this._zeroTime=0;this._startTime=0;this._endTime=0;this._duration=NaN;this._secondsPerPixel=0;this._selectionStartTime=0;this._selectionEndTime=Number.MAX_VALUE;this._endTimePinned=false;this._snapInterval=0;this._allowsClippedLabels=false;this._allowsTimeRangeSelection=false;this._minimumSelectionDuration=0.01;this._formatLabelCallback=null;this._timeRangeSelectionChanged=false;this._enabled=true;this._markerElementMap=new Map;}
get enabled()
{return this._enabled;}
set enabled(x)
{if(this._enabled===x)
return;this._enabled=x;this.element.classList.toggle(WebInspector.TreeElementStatusButton.DisabledStyleClassName,!this._enabled);}
get allowsClippedLabels()
{return this._allowsClippedLabels;}
set allowsClippedLabels(x)
{x=!!x;if(this._allowsClippedLabels===x)
return;this._allowsClippedLabels=x;this.needsLayout();}
set formatLabelCallback(x)
{x=x||null;if(this._formatLabelCallback===x)
return;this._formatLabelCallback=x;this.needsLayout();}
get allowsTimeRangeSelection()
{return this._allowsTimeRangeSelection;}
set allowsTimeRangeSelection(x)
{x=!!x;if(this._allowsTimeRangeSelection===x)
return;this._allowsTimeRangeSelection=x;if(x){this._clickEventListener=this._handleClick.bind(this);this._doubleClickEventListener=this._handleDoubleClick.bind(this);this._mouseDownEventListener=this._handleMouseDown.bind(this);this.element.addEventListener("click",this._clickEventListener);this.element.addEventListener("dblclick",this._doubleClickEventListener);this.element.addEventListener("mousedown",this._mouseDownEventListener);this._leftShadedAreaElement=document.createElement("div");this._leftShadedAreaElement.classList.add("shaded-area");this._leftShadedAreaElement.classList.add("left");this._rightShadedAreaElement=document.createElement("div");this._rightShadedAreaElement.classList.add("shaded-area");this._rightShadedAreaElement.classList.add("right");this._leftSelectionHandleElement=document.createElement("div");this._leftSelectionHandleElement.classList.add("selection-handle");this._leftSelectionHandleElement.classList.add("left");this._leftSelectionHandleElement.addEventListener("mousedown",this._handleSelectionHandleMouseDown.bind(this));this._rightSelectionHandleElement=document.createElement("div");this._rightSelectionHandleElement.classList.add("selection-handle");this._rightSelectionHandleElement.classList.add("right");this._rightSelectionHandleElement.addEventListener("mousedown",this._handleSelectionHandleMouseDown.bind(this));this._selectionDragElement=document.createElement("div");this._selectionDragElement.classList.add("selection-drag");this._needsSelectionLayout();}else{this.element.removeEventListener("click",this._clickEventListener);this.element.removeEventListener("dblclick",this._doubleClickEventListener);this.element.removeEventListener("mousedown",this._mouseDownEventListener);this._clickEventListener=null;this._doubleClickEventListener=null;this._mouseDownEventListener=null;this._leftShadedAreaElement.remove();this._rightShadedAreaElement.remove();this._leftSelectionHandleElement.remove();this._rightSelectionHandleElement.remove();this._selectionDragElement.remove();delete this._leftShadedAreaElement;delete this._rightShadedAreaElement;delete this._leftSelectionHandleElement;delete this._rightSelectionHandleElement;delete this._selectionDragElement;}}
get minimumSelectionDuration()
{return this._minimumSelectionDuration;}
set minimumSelectionDuration(x)
{this._minimumSelectionDuration=x;}
get zeroTime()
{return this._zeroTime;}
set zeroTime(x)
{x=x||0;if(this._zeroTime===x)
return;if(this.entireRangeSelected)
this.selectionStartTime=x;this._zeroTime=x;this.needsLayout();}
get startTime()
{return this._startTime;}
set startTime(x)
{x=x||0;if(this._startTime===x)
return;this._startTime=x;if(!isNaN(this._duration))
this._endTime=this._startTime+this._duration;this._currentDividers=null;this.needsLayout();}
get duration()
{if(!isNaN(this._duration))
return this._duration;return this.endTime-this.startTime;}
get endTime()
{if(!this._endTimePinned&&this.layoutPending)
this._recalculate();return this._endTime;}
set endTime(x)
{x=x||0;if(this._endTime===x)
return;this._endTime=x;this._endTimePinned=true;this.needsLayout();}
get secondsPerPixel()
{if(this.layoutPending)
this._recalculate();return this._secondsPerPixel;}
set secondsPerPixel(x)
{x=x||0;if(this._secondsPerPixel===x)
return;this._secondsPerPixel=x;this._endTimePinned=false;this._currentDividers=null;this._currentSliceTime=0;this.needsLayout();}
get snapInterval()
{return this._snapInterval;}
set snapInterval(x)
{if(this._snapInterval===x)
return;this._snapInterval=x;}
get selectionStartTime()
{return this._selectionStartTime;}
set selectionStartTime(x)
{x=this._snapValue(x)||0;if(this._selectionStartTime===x)
return;this._selectionStartTime=x;this._timeRangeSelectionChanged=true;this._needsSelectionLayout();}
get selectionEndTime()
{return this._selectionEndTime;}
set selectionEndTime(x)
{x=this._snapValue(x)||0;if(this._selectionEndTime===x)
return;this._selectionEndTime=x;this._timeRangeSelectionChanged=true;this._needsSelectionLayout();}
get entireRangeSelected()
{return this._selectionStartTime===this._zeroTime&&this._selectionEndTime===Number.MAX_VALUE;}
selectEntireRange()
{this.selectionStartTime=this._zeroTime;this.selectionEndTime=Number.MAX_VALUE;}
addMarker(marker)
{if(this._markerElementMap.has(marker))
return;marker.addEventListener(WebInspector.TimelineMarker.Event.TimeChanged,this._timelineMarkerTimeChanged,this);let markerTime=marker.time-this._startTime;let markerElement=document.createElement("div");markerElement.classList.add(marker.type,"marker");switch(marker.type){case WebInspector.TimelineMarker.Type.LoadEvent:markerElement.title=WebInspector.UIString("Load \u2014 %s").format(Number.secondsToString(markerTime));break;case WebInspector.TimelineMarker.Type.DOMContentEvent:markerElement.title=WebInspector.UIString("DOM Content Loaded \u2014 %s").format(Number.secondsToString(markerTime));break;case WebInspector.TimelineMarker.Type.TimeStamp:if(marker.details)
markerElement.title=WebInspector.UIString("%s \u2014 %s").format(marker.details,Number.secondsToString(markerTime));else
markerElement.title=WebInspector.UIString("Timestamp \u2014 %s").format(Number.secondsToString(markerTime));break;}
this._markerElementMap.set(marker,markerElement);this._needsMarkerLayout();}
clearMarkers()
{for(let markerElement of this._markerElementMap.values())
markerElement.remove();this._markerElementMap.clear();}
elementForMarker(marker)
{return this._markerElementMap.get(marker)||null;}
updateLayoutIfNeeded(layoutReason)
{
if(this.layoutPending){super.updateLayoutIfNeeded(layoutReason);return;}
let visibleWidth=this._recalculate();if(visibleWidth<=0)
return;if(this._scheduledMarkerLayoutUpdateIdentifier)
this._updateMarkers(visibleWidth,this.duration);if(this._scheduledSelectionLayoutUpdateIdentifier)
this._updateSelection(visibleWidth,this.duration);}
needsLayout(layoutReason)
{if(this.layoutPending)
return;if(this._scheduledMarkerLayoutUpdateIdentifier){cancelAnimationFrame(this._scheduledMarkerLayoutUpdateIdentifier);this._scheduledMarkerLayoutUpdateIdentifier=undefined;}
if(this._scheduledSelectionLayoutUpdateIdentifier){cancelAnimationFrame(this._scheduledSelectionLayoutUpdateIdentifier);this._scheduledSelectionLayoutUpdateIdentifier=undefined;}
super.needsLayout(layoutReason);}
layout()
{let visibleWidth=this._recalculate();if(visibleWidth<=0)
return;let duration=this.duration;let pixelsPerSecond=visibleWidth/duration;let dividerCount=Math.round(visibleWidth/WebInspector.TimelineRuler.MinimumDividerSpacing);let sliceTime;if(this._endTimePinned||!this._currentSliceTime){sliceTime=duration/dividerCount;sliceTime=Math.pow(10,Math.ceil(Math.log(sliceTime)/Math.LN10));if(sliceTime*pixelsPerSecond>=5*WebInspector.TimelineRuler.MinimumDividerSpacing)
sliceTime=sliceTime/5;if(sliceTime*pixelsPerSecond>=2*WebInspector.TimelineRuler.MinimumDividerSpacing)
sliceTime=sliceTime/2;this._currentSliceTime=sliceTime;}else{sliceTime=this._currentSliceTime;}
dividerCount=Math.floor(visibleWidth*this.secondsPerPixel/sliceTime);let firstDividerTime=(Math.ceil((this._startTime-this._zeroTime)/sliceTime)*sliceTime)+this._zeroTime;let lastDividerTime=firstDividerTime+sliceTime*dividerCount;if(!this._endTimePinned)
++dividerCount;let dividerData={count:dividerCount,firstTime:firstDividerTime,lastTime:lastDividerTime,};if(Object.shallowEqual(dividerData,this._currentDividers)){this._updateMarkers(visibleWidth,duration);this._updateSelection(visibleWidth,duration);return;}
this._currentDividers=dividerData;let markerDividers=this._markersElement.querySelectorAll("."+WebInspector.TimelineRuler.DividerElementStyleClassName);let dividerElement=this._headerElement.firstChild;for(var i=0;i<=dividerCount;++i){if(!dividerElement){dividerElement=document.createElement("div");dividerElement.className=WebInspector.TimelineRuler.DividerElementStyleClassName;this._headerElement.appendChild(dividerElement);let labelElement=document.createElement("div");labelElement.className=WebInspector.TimelineRuler.DividerLabelElementStyleClassName;dividerElement.appendChild(labelElement);}
let markerDividerElement=markerDividers[i];if(!markerDividerElement){markerDividerElement=document.createElement("div");markerDividerElement.className=WebInspector.TimelineRuler.DividerElementStyleClassName;this._markersElement.appendChild(markerDividerElement);}
let dividerTime=firstDividerTime+(sliceTime*i);let newPosition=(dividerTime-this._startTime)/duration;if(!this._allowsClippedLabels){if(newPosition<0)
continue;if(newPosition>1)
break;if((newPosition*visibleWidth)<WebInspector.TimelineRuler.MinimumLeftDividerSpacing)
continue;}
let property=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"right":"left";this._updatePositionOfElement(dividerElement,newPosition,visibleWidth,property);this._updatePositionOfElement(markerDividerElement,newPosition,visibleWidth,property);dividerElement.firstChild.textContent=isNaN(dividerTime)?"":this._formatDividerLabelText(dividerTime-this._zeroTime);dividerElement=dividerElement.nextSibling;}
while(dividerElement){let nextDividerElement=dividerElement.nextSibling;dividerElement.remove();dividerElement=nextDividerElement;}
for(;i<markerDividers.length;++i)
markerDividers[i].remove();this._updateMarkers(visibleWidth,duration);this._updateSelection(visibleWidth,duration);}
sizeDidChange()
{this._cachedClientWidth=this.element.clientWidth;}
_needsMarkerLayout()
{if(this.layoutPending)
return;if(this._scheduledMarkerLayoutUpdateIdentifier)
return;this._scheduledMarkerLayoutUpdateIdentifier=requestAnimationFrame(()=>{this._scheduledMarkerLayoutUpdateIdentifier=undefined;let visibleWidth=this._cachedClientWidth;if(visibleWidth<=0)
return;this._updateMarkers(visibleWidth,this.duration);});}
_needsSelectionLayout()
{if(!this._allowsTimeRangeSelection)
return;if(this.layoutPending)
return;if(this._scheduledSelectionLayoutUpdateIdentifier)
return;this._scheduledSelectionLayoutUpdateIdentifier=requestAnimationFrame(()=>{this._scheduledSelectionLayoutUpdateIdentifier=undefined;let visibleWidth=this._cachedClientWidth;if(visibleWidth<=0)
return;this._updateSelection(visibleWidth,this.duration);});}
_recalculate()
{let visibleWidth=this._cachedClientWidth;if(visibleWidth<=0)
return 0;let duration;if(this._endTimePinned)
duration=this._endTime-this._startTime;else
duration=visibleWidth*this._secondsPerPixel;this._secondsPerPixel=duration/visibleWidth;if(!this._endTimePinned)
this._endTime=this._startTime+(visibleWidth*this._secondsPerPixel);return visibleWidth;}
_updatePositionOfElement(element,newPosition,visibleWidth,property)
{newPosition*=this._endTimePinned?100:visibleWidth;let newPositionAprox=Math.round(newPosition*100);let currentPositionAprox=Math.round(parseFloat(element.style[property])*100);if(currentPositionAprox!==newPositionAprox)
element.style[property]=(newPositionAprox/100)+(this._endTimePinned?"%":"px");}
_updateMarkers(visibleWidth,duration)
{if(this._scheduledMarkerLayoutUpdateIdentifier){cancelAnimationFrame(this._scheduledMarkerLayoutUpdateIdentifier);this._scheduledMarkerLayoutUpdateIdentifier=undefined;}
for(let[marker,markerElement]of this._markerElementMap){let newPosition=(marker.time-this._startTime)/duration;let property=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"right":"left";this._updatePositionOfElement(markerElement,newPosition,visibleWidth,property);if(!markerElement.parentNode)
this._markersElement.appendChild(markerElement);}}
_updateSelection(visibleWidth,duration)
{if(this._scheduledSelectionLayoutUpdateIdentifier){cancelAnimationFrame(this._scheduledSelectionLayoutUpdateIdentifier);this._scheduledSelectionLayoutUpdateIdentifier=undefined;}
this.element.classList.toggle("allows-time-range-selection",this._allowsTimeRangeSelection);if(!this._allowsTimeRangeSelection)
return;this.element.classList.toggle("selection-hidden",this.entireRangeSelected);if(this.entireRangeSelected){this._dispatchTimeRangeSelectionChangedEvent();return;}
let startTimeClamped=this._selectionStartTime<this._startTime||this._selectionStartTime>this._endTime;let endTimeClamped=this._selectionEndTime<this._startTime||this._selectionEndTime>this._endTime;this.element.classList.toggle("both-handles-clamped",startTimeClamped&&endTimeClamped);let formattedStartTimeText=this._formatDividerLabelText(this._selectionStartTime-this._zeroTime);let formattedEndTimeText=this._formatDividerLabelText(this._selectionEndTime-this._zeroTime);let startProperty=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"right":"left";let newStartPosition=Number.constrain((this._selectionStartTime-this._startTime)/duration,0,1);this._updatePositionOfElement(this._leftShadedAreaElement,newStartPosition,visibleWidth,"width");this._updatePositionOfElement(this._leftSelectionHandleElement,newStartPosition,visibleWidth,startProperty);this._updatePositionOfElement(this._selectionDragElement,newStartPosition,visibleWidth,startProperty);this._leftSelectionHandleElement.classList.toggle("clamped",startTimeClamped);this._leftSelectionHandleElement.classList.toggle("hidden",startTimeClamped&&endTimeClamped&&this._selectionStartTime<this._startTime);this._leftSelectionHandleElement.title=formattedStartTimeText;let endProperty=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"left":"right";let newEndPosition=1-Number.constrain((this._selectionEndTime-this._startTime)/duration,0,1);this._updatePositionOfElement(this._rightShadedAreaElement,newEndPosition,visibleWidth,"width");this._updatePositionOfElement(this._rightSelectionHandleElement,newEndPosition,visibleWidth,endProperty);this._updatePositionOfElement(this._selectionDragElement,newEndPosition,visibleWidth,endProperty);this._rightSelectionHandleElement.classList.toggle("clamped",endTimeClamped);this._rightSelectionHandleElement.classList.toggle("hidden",startTimeClamped&&endTimeClamped&&this._selectionEndTime>this._endTime);this._rightSelectionHandleElement.title=formattedEndTimeText;if(!this._selectionDragElement.parentNode){this.element.appendChild(this._selectionDragElement);this.element.appendChild(this._leftShadedAreaElement);this.element.appendChild(this._leftSelectionHandleElement);this.element.appendChild(this._rightShadedAreaElement);this.element.appendChild(this._rightSelectionHandleElement);}
this._dispatchTimeRangeSelectionChangedEvent();}
_formatDividerLabelText(value)
{if(this._formatLabelCallback)
return this._formatLabelCallback(value);return Number.secondsToString(value,true);}
_snapValue(value)
{if(!value||!this.snapInterval)
return value;return Math.round(value/this.snapInterval)*this.snapInterval;}
_dispatchTimeRangeSelectionChangedEvent()
{if(!this._timeRangeSelectionChanged)
return;this._timeRangeSelectionChanged=false;this.dispatchEventToListeners(WebInspector.TimelineRuler.Event.TimeRangeSelectionChanged);}
_timelineMarkerTimeChanged()
{this._needsMarkerLayout();}
_handleClick(event)
{if(!this._enabled)
return;if(this._mouseMoved)
return;this.element.style.pointerEvents="none";let newTarget=document.elementFromPoint(event.pageX,event.pageY);this.element.style.pointerEvents=null;if(newTarget&&newTarget.click)
newTarget.click();}
_handleDoubleClick(event)
{if(this.entireRangeSelected)
return;this.selectEntireRange();}
_handleMouseDown(event)
{if(event.button!==0||event.ctrlKey)
return;this._selectionIsMove=event.target===this._selectionDragElement;this._rulerBoundingClientRect=this.element.getBoundingClientRect();if(this._selectionIsMove){this._lastMousePosition=event.pageX;var selectionDragElementRect=this._selectionDragElement.getBoundingClientRect();this._moveSelectionMaximumLeftOffset=this._rulerBoundingClientRect.left+(event.pageX-selectionDragElementRect.left);this._moveSelectionMaximumRightOffset=this._rulerBoundingClientRect.right-(selectionDragElementRect.right-event.pageX);}else{if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL)
this._mouseDownPosition=this._rulerBoundingClientRect.right-event.pageX;else
this._mouseDownPosition=event.pageX-this._rulerBoundingClientRect.left;}
this._mouseMoved=false;this._mouseMoveEventListener=this._handleMouseMove.bind(this);this._mouseUpEventListener=this._handleMouseUp.bind(this);document.addEventListener("mousemove",this._mouseMoveEventListener);document.addEventListener("mouseup",this._mouseUpEventListener);event.preventDefault();event.stopPropagation();}
_handleMouseMove(event)
{this._mouseMoved=true;let isRTL=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL;let currentMousePosition;if(this._selectionIsMove){currentMousePosition=Math.max(this._moveSelectionMaximumLeftOffset,Math.min(this._moveSelectionMaximumRightOffset,event.pageX));let positionDelta=0;if(isRTL)
positionDelta=this._lastMousePosition-currentMousePosition;else
positionDelta=currentMousePosition-this._lastMousePosition;let offsetTime=positionDelta*this.secondsPerPixel;let selectionDuration=this.selectionEndTime-this.selectionStartTime;let oldSelectionStartTime=this.selectionStartTime;this.selectionStartTime=Math.max(this.startTime,Math.min(this.selectionStartTime+offsetTime,this.endTime-selectionDuration));this.selectionEndTime=this.selectionStartTime+selectionDuration;if(this.snapInterval){
let snapOffset=this.selectionStartTime-oldSelectionStartTime;if(!snapOffset)
return;let positionDrift=(offsetTime-snapOffset*this.snapInterval)/this.secondsPerPixel;currentMousePosition-=positionDrift;}
this._lastMousePosition=currentMousePosition;}else{if(isRTL)
currentMousePosition=this._rulerBoundingClientRect.right-event.pageX;else
currentMousePosition=event.pageX-this._rulerBoundingClientRect.left;this.selectionStartTime=Math.max(this.startTime,this.startTime+(Math.min(currentMousePosition,this._mouseDownPosition)*this.secondsPerPixel));this.selectionEndTime=Math.min(this.startTime+(Math.max(currentMousePosition,this._mouseDownPosition)*this.secondsPerPixel),this.endTime);this.element.classList.add(WebInspector.TimelineRuler.ResizingSelectionStyleClassName);}
this._updateSelection(this._cachedClientWidth,this.duration);event.preventDefault();event.stopPropagation();}
_handleMouseUp(event)
{if(!this._selectionIsMove){this.element.classList.remove(WebInspector.TimelineRuler.ResizingSelectionStyleClassName);if(this.selectionEndTime-this.selectionStartTime<this.minimumSelectionDuration){let currentMousePosition=0;if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL)
currentMousePosition=this._rulerBoundingClientRect.right-event.pageX;else
currentMousePosition=event.pageX-this._rulerBoundingClientRect.left;if(currentMousePosition>this._mouseDownPosition){this.selectionEndTime=Math.min(this.selectionStartTime+this.minimumSelectionDuration,this.endTime);this.selectionStartTime=this.selectionEndTime-this.minimumSelectionDuration;}else{this.selectionStartTime=Math.max(this.startTime,this.selectionEndTime-this.minimumSelectionDuration);this.selectionEndTime=this.selectionStartTime+this.minimumSelectionDuration;}}}
this._dispatchTimeRangeSelectionChangedEvent();document.removeEventListener("mousemove",this._mouseMoveEventListener);document.removeEventListener("mouseup",this._mouseUpEventListener);delete this._mouseMoveEventListener;delete this._mouseUpEventListener;delete this._mouseDownPosition;delete this._lastMousePosition;delete this._selectionIsMove;delete this._rulerBoundingClientRect;delete this._moveSelectionMaximumLeftOffset;delete this._moveSelectionMaximumRightOffset;event.preventDefault();event.stopPropagation();}
_handleSelectionHandleMouseDown(event)
{if(event.button!==0||event.ctrlKey)
return;this._dragHandleIsStartTime=event.target===this._leftSelectionHandleElement;if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL)
this._mouseDownPosition=this.element.totalOffsetRight-event.pageX;else
this._mouseDownPosition=event.pageX-this.element.totalOffsetLeft;this._selectionHandleMouseMoveEventListener=this._handleSelectionHandleMouseMove.bind(this);this._selectionHandleMouseUpEventListener=this._handleSelectionHandleMouseUp.bind(this);document.addEventListener("mousemove",this._selectionHandleMouseMoveEventListener);document.addEventListener("mouseup",this._selectionHandleMouseUpEventListener);this.element.classList.add(WebInspector.TimelineRuler.ResizingSelectionStyleClassName);event.preventDefault();event.stopPropagation();}
_handleSelectionHandleMouseMove(event)
{let currentMousePosition=0;if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL)
currentMousePosition=this.element.totalOffsetRight-event.pageX;else
currentMousePosition=event.pageX-this.element.totalOffsetLeft;let currentTime=this.startTime+(currentMousePosition*this.secondsPerPixel);if(this.snapInterval)
currentTime=this._snapValue(currentTime);if(event.altKey&&!event.ctrlKey&&!event.metaKey&&!event.shiftKey){if(this._dragHandleIsStartTime){let timeDifference=currentTime-this.selectionStartTime;this.selectionStartTime=Math.max(this.startTime,Math.min(currentTime,this.selectionEndTime-this.minimumSelectionDuration));this.selectionEndTime=Math.min(Math.max(this.selectionStartTime+this.minimumSelectionDuration,this.selectionEndTime-timeDifference),this.endTime);}else{let timeDifference=currentTime-this.selectionEndTime;this.selectionEndTime=Math.min(Math.max(this.selectionStartTime+this.minimumSelectionDuration,currentTime),this.endTime);this.selectionStartTime=Math.max(this.startTime,Math.min(this.selectionStartTime-timeDifference,this.selectionEndTime-this.minimumSelectionDuration));}}else{if(this._dragHandleIsStartTime)
this.selectionStartTime=Math.max(this.startTime,Math.min(currentTime,this.selectionEndTime-this.minimumSelectionDuration));else
this.selectionEndTime=Math.min(Math.max(this.selectionStartTime+this.minimumSelectionDuration,currentTime),this.endTime);}
this._updateSelection(this._cachedClientWidth,this.duration);event.preventDefault();event.stopPropagation();}
_handleSelectionHandleMouseUp(event)
{this.element.classList.remove(WebInspector.TimelineRuler.ResizingSelectionStyleClassName);document.removeEventListener("mousemove",this._selectionHandleMouseMoveEventListener);document.removeEventListener("mouseup",this._selectionHandleMouseUpEventListener);delete this._selectionHandleMouseMoveEventListener;delete this._selectionHandleMouseUpEventListener;delete this._dragHandleIsStartTime;delete this._mouseDownPosition;event.preventDefault();event.stopPropagation();}};WebInspector.TimelineRuler.MinimumLeftDividerSpacing=48;WebInspector.TimelineRuler.MinimumDividerSpacing=64;WebInspector.TimelineRuler.ResizingSelectionStyleClassName="resizing-selection";WebInspector.TimelineRuler.DividerElementStyleClassName="divider";WebInspector.TimelineRuler.DividerLabelElementStyleClassName="label";WebInspector.TimelineRuler.Event={TimeRangeSelectionChanged:"time-ruler-time-range-selection-changed"};WebInspector.TitleView=class TitleView extends WebInspector.View
{constructor(title)
{super();this.element.classList.add("title-view");this.element.textContent=title;}};WebInspector.ToggleButtonNavigationItem=class ToggleButtonNavigationItem extends WebInspector.ButtonNavigationItem
{constructor(identifier,defaultToolTip,alternateToolTip,defaultImage,alternateImage,imageWidth,imageHeight)
{super(identifier,defaultToolTip,defaultImage,imageWidth,imageHeight);this._toggled=false;this._defaultImage=defaultImage;this._alternateImage=alternateImage;this._defaultToolTip=defaultToolTip;this._alternateToolTip=alternateToolTip||defaultToolTip;}
get defaultToolTip()
{return this._defaultToolTip;}
get alternateToolTip()
{return this._alternateToolTip;}
set alternateToolTip(toolTip)
{this._alternateToolTip=toolTip;if(this._toggled)
this.toolTip=this._alternateToolTip;}
get defaultImage()
{return this._defaultImage;}
get alternateImage()
{return this._alternateImage;}
set alternateImage(image)
{this._alternateImage=image;if(this._toggled)
this.image=this._alternateImage;}
get toggled()
{return this._toggled;}
set toggled(flag)
{flag=flag||false;if(this._toggled===flag)
return;this._toggled=flag;if(this._toggled){this.toolTip=this._alternateToolTip;this.image=this._alternateImage;}else{this.toolTip=this._defaultToolTip;this.image=this._defaultImage;}}
get additionalClassNames()
{return["toggle","button"];}};WebInspector.Toolbar=class Toolbar extends WebInspector.NavigationBar
{constructor(element)
{super(element,null,"toolbar");this._controlSectionElement=document.createElement("div");this._controlSectionElement.className=WebInspector.Toolbar.ControlSectionStyleClassName;this.element.appendChild(this._controlSectionElement);this._leftSectionElement=document.createElement("div");this._leftSectionElement.className=WebInspector.Toolbar.ItemSectionStyleClassName+" "+WebInspector.Toolbar.LeftItemSectionStyleClassName;this.element.appendChild(this._leftSectionElement);this._centerLeftSectionElement=document.createElement("div");this._centerLeftSectionElement.className=WebInspector.Toolbar.ItemSectionStyleClassName+" "+WebInspector.Toolbar.CenterLeftItemSectionStyleClassName;this.element.appendChild(this._centerLeftSectionElement);this._centerSectionElement=document.createElement("div");this._centerSectionElement.className=WebInspector.Toolbar.ItemSectionStyleClassName+" "+WebInspector.Toolbar.CenterItemSectionStyleClassName;this.element.appendChild(this._centerSectionElement);this._centerRightSectionElement=document.createElement("div");this._centerRightSectionElement.className=WebInspector.Toolbar.ItemSectionStyleClassName+" "+WebInspector.Toolbar.CenterRightItemSectionStyleClassName;this.element.appendChild(this._centerRightSectionElement);this._rightSectionElement=document.createElement("div");this._rightSectionElement.className=WebInspector.Toolbar.ItemSectionStyleClassName+" "+WebInspector.Toolbar.RightItemSectionStyleClassName;this.element.appendChild(this._rightSectionElement);}
addToolbarItem(toolbarItem,sectionIdentifier)
{var sectionElement;switch(sectionIdentifier){case WebInspector.Toolbar.Section.Control:sectionElement=this._controlSectionElement;break;case WebInspector.Toolbar.Section.Left:sectionElement=this._leftSectionElement;break;case WebInspector.Toolbar.Section.CenterLeft:sectionElement=this._centerLeftSectionElement;break;default:case WebInspector.Toolbar.Section.Center:sectionElement=this._centerSectionElement;break;case WebInspector.Toolbar.Section.CenterRight:sectionElement=this._centerRightSectionElement;break;case WebInspector.Toolbar.Section.Right:sectionElement=this._rightSectionElement;break;}
this.addNavigationItem(toolbarItem,sectionElement);}
layout()
{if(!this._leftSectionElement||!this._centerSectionElement||!this._rightSectionElement)
return;if(WebInspector.debuggableType===WebInspector.DebuggableType.JavaScript){this.element.classList.add(WebInspector.NavigationBar.CollapsedStyleClassName);return;}
this.element.classList.remove(WebInspector.NavigationBar.CollapsedStyleClassName);function isOverflowingToolbar()
{var controlSectionWidth=this._controlSectionElement.realOffsetWidth;var leftSectionWidth=this._leftSectionElement.realOffsetWidth;var centerLeftSectionWidth=this._centerLeftSectionElement.realOffsetWidth;var centerSectionWidth=this._centerSectionElement.realOffsetWidth;var centerRightSectionWidth=this._centerRightSectionElement.realOffsetWidth;var rightSectionWidth=this._rightSectionElement.realOffsetWidth;var toolbarWidth=Math.round(this.element.realOffsetWidth);return Math.round(controlSectionWidth+leftSectionWidth+centerLeftSectionWidth+centerSectionWidth+centerRightSectionWidth+rightSectionWidth)>toolbarWidth;}
if(!isOverflowingToolbar.call(this))
return;this.element.classList.add(WebInspector.NavigationBar.CollapsedStyleClassName);}};WebInspector.Toolbar.StyleClassName="toolbar";WebInspector.Toolbar.ControlSectionStyleClassName="control-section";WebInspector.Toolbar.ItemSectionStyleClassName="item-section";WebInspector.Toolbar.LeftItemSectionStyleClassName="left";WebInspector.Toolbar.CenterLeftItemSectionStyleClassName="center-left";WebInspector.Toolbar.CenterItemSectionStyleClassName="center";WebInspector.Toolbar.CenterRightItemSectionStyleClassName="center-right";WebInspector.Toolbar.RightItemSectionStyleClassName="right";WebInspector.Toolbar.Section={Control:"control",Left:"left",CenterLeft:"center-left",Center:"center",CenterRight:"center-right",Right:"right"};WebInspector.TreeElementStatusButton=class TreeElementStatusButton extends WebInspector.Object
{constructor(element)
{super();this._element=element;this._element.classList.add("status-button");this._element.addEventListener("click",this._clicked.bind(this));}
get element()
{return this._element;}
get hidden()
{return!this._element.classList.contains(WebInspector.TreeElementStatusButton.DisabledStyleClassName);}
set hidden(flag)
{this._element.classList.toggle("hidden",flag);}
get enabled()
{return!this._element.classList.contains(WebInspector.TreeElementStatusButton.DisabledStyleClassName);}
set enabled(flag)
{if(flag)
this._element.classList.remove(WebInspector.TreeElementStatusButton.DisabledStyleClassName);else
this._element.classList.add(WebInspector.TreeElementStatusButton.DisabledStyleClassName);}
_clicked(event)
{if(!this.enabled)
return;event.stopPropagation();this.dispatchEventToListeners(WebInspector.TreeElementStatusButton.Event.Clicked,event);}};WebInspector.TreeElementStatusButton.DisabledStyleClassName="disabled";WebInspector.TreeElementStatusButton.Event={Clicked:"status-button-clicked"};WebInspector.TreeOutlineDataGridSynchronizer=class TreeOutlineDataGridSynchronizer extends WebInspector.Object
{constructor(treeOutline,dataGrid,delegate)
{super();this._treeOutline=treeOutline;this._dataGrid=dataGrid;this._delegate=delegate||null;this._enabled=true;this._treeOutline.element.parentNode.addEventListener("scroll",this._treeOutlineScrolled.bind(this));this._dataGrid.scrollContainer.addEventListener("scroll",this._dataGridScrolled.bind(this));this._treeOutline.__dataGridNode=this._dataGrid;this._dataGrid.addEventListener(WebInspector.DataGrid.Event.ExpandedNode,this._dataGridNodeExpanded,this);this._dataGrid.addEventListener(WebInspector.DataGrid.Event.CollapsedNode,this._dataGridNodeCollapsed,this);this._dataGrid.addEventListener(WebInspector.DataGrid.Event.SelectedNodeChanged,this._dataGridNodeSelected,this);this._dataGrid.element.addEventListener("focus",this._dataGridGainedFocus.bind(this));this._dataGrid.element.addEventListener("blur",this._dataGridLostFocus.bind(this));this._treeOutline.element.addEventListener("focus",this._treeOutlineGainedFocus.bind(this));this._treeOutline.element.addEventListener("blur",this._treeOutlineLostFocus.bind(this));treeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementAdded,this._treeElementAdded,this);treeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementRemoved,this._treeElementRemoved,this);treeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementDisclosureDidChanged,this._treeElementDisclosureDidChange,this);treeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementVisibilityDidChange,this._treeElementVisibilityDidChange,this);treeOutline.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._treeSelectionDidChange,this);}
get treeOutline()
{return this._treeOutline;}
get dataGrid()
{return this._dataGrid;}
get delegate()
{return this._delegate;}
get enabled()
{return this._enabled;}
set enabled(x)
{this._enabled=x||false;}
associate(treeElement,dataGridNode)
{treeElement.__dataGridNode=dataGridNode;dataGridNode.__treeElement=treeElement;}
synchronize()
{this._dataGrid.scrollContainer.scrollTop=this._treeOutline.element.parentNode.scrollTop;if(this._treeOutline.selectedTreeElement)
this._treeOutline.selectedTreeElement.__dataGridNode.select(true);else if(this._dataGrid.selectedNode)
this._dataGrid.selectedNode.deselect(true);}
treeElementForDataGridNode(dataGridNode)
{return dataGridNode.__treeElement||null;}
dataGridNodeForTreeElement(treeElement)
{if(treeElement.__dataGridNode)
return treeElement.__dataGridNode;if(typeof this._delegate.dataGridNodeForTreeElement==="function"){var dataGridNode=this._delegate.dataGridNodeForTreeElement(treeElement);if(dataGridNode)
this.associate(treeElement,dataGridNode);return dataGridNode;}
return null;}
_treeOutlineScrolled(event)
{if(!this._enabled)
return;if(this._ignoreNextTreeOutlineScrollEvent){this._ignoreNextTreeOutlineScrollEvent=false;return;}
this._ignoreNextDataGridScrollEvent=true;this._dataGrid.scrollContainer.scrollTop=this._treeOutline.element.parentNode.scrollTop;}
_dataGridGainedFocus(event)
{this._treeOutline.element.classList.add("force-focus");}
_dataGridLostFocus(event)
{this._treeOutline.element.classList.remove("force-focus");}
_dataGridScrolled(event)
{if(!this._enabled)
return;if(this._ignoreNextDataGridScrollEvent){this._ignoreNextDataGridScrollEvent=false;return;}
this._ignoreNextTreeOutlineScrollEvent=true;this._treeOutline.element.parentNode.scrollTop=this._dataGrid.scrollContainer.scrollTop;}
_dataGridNodeSelected(event)
{if(!this._enabled)
return;var dataGridNode=this._dataGrid.selectedNode;if(dataGridNode)
dataGridNode.__treeElement.select(true,true,true,true);}
_dataGridNodeExpanded(event)
{if(!this._enabled)
return;var dataGridNode=event.data.dataGridNode;if(!dataGridNode.__treeElement.expanded)
dataGridNode.__treeElement.expand();}
_dataGridNodeCollapsed(event)
{if(!this._enabled)
return;var dataGridNode=event.data.dataGridNode;if(dataGridNode.__treeElement.expanded)
dataGridNode.__treeElement.collapse();}
_treeOutlineGainedFocus(event)
{this._dataGrid.element.classList.add("force-focus");}
_treeOutlineLostFocus(event)
{this._dataGrid.element.classList.remove("force-focus");}
_treeSelectionDidChange(event)
{if(!this._enabled)
return;let treeElement=event.data.selectedElement||event.data.deselectedElement;if(!treeElement)
return;let dataGridNode=treeElement.__dataGridNode;if(event.data.selectedElement)
dataGridNode.select();else
dataGridNode.deselect();}
_treeElementAdded(event)
{if(!this._enabled)
return;let treeElement=event.data.element;let dataGridNode=this.dataGridNodeForTreeElement(treeElement);var parentDataGridNode=treeElement.parent.__dataGridNode;var childIndex=treeElement.parent.children.indexOf(treeElement);parentDataGridNode.insertChild(dataGridNode,childIndex);}
_treeElementRemoved(event)
{if(!this._enabled)
return;let treeElement=event.data.element;let dataGridNode=treeElement.__dataGridNode;if(dataGridNode.parent)
dataGridNode.parent.removeChild(dataGridNode);}
_treeElementDisclosureDidChange(event)
{if(!this._enabled)
return;let treeElement=event.data.element;let dataGridNode=treeElement.__dataGridNode;if(treeElement.expanded)
dataGridNode.expand();else
dataGridNode.collapse();}
_treeElementVisibilityDidChange(event)
{if(!this._enabled)
return;let treeElement=event.data.element;let dataGridNode=treeElement.__dataGridNode;dataGridNode.hidden=treeElement.hidden;}};WebInspector.TypeTokenView=class TypeTokenView extends WebInspector.Object
{constructor(tokenAnnotator,shouldHaveRightMargin,shouldHaveLeftMargin,titleType,functionOrVariableName)
{super();var span=document.createElement("span");span.classList.add("type-token");if(shouldHaveRightMargin)
span.classList.add("type-token-right-spacing");if(shouldHaveLeftMargin)
span.classList.add("type-token-left-spacing");this.element=span;this._tokenAnnotator=tokenAnnotator;this._typeDescription=null;this._colorClass=null;this._popoverTitle=WebInspector.TypeTokenView.titleForPopover(titleType,functionOrVariableName);this._setUpMouseoverHandlers();}
static titleForPopover(titleType,functionOrVariableName)
{if(titleType===WebInspector.TypeTokenView.TitleType.Variable)
return WebInspector.UIString("Type information for variable: %s").format(functionOrVariableName);if(functionOrVariableName)
return WebInspector.UIString("Return type for function: %s").format(functionOrVariableName);return WebInspector.UIString("Return type for anonymous function");}
update(typeDescription)
{this._typeDescription=typeDescription;var title=this._displayTypeName();if(title===this.element.textContent)
return;this.element.textContent=title;var hashString=title[title.length-1]==="?"?title.slice(0,title.length-1):title;if(this._colorClass)
this.element.classList.remove(this._colorClass);this._colorClass=WebInspector.TypeTokenView.ColorClassForType[hashString]||"type-token-default";this.element.classList.add(this._colorClass);}
_setUpMouseoverHandlers()
{var timeoutID=null;this.element.addEventListener("mouseover",function(){function showPopoverAfterDelay()
{timeoutID=null;var domRect=this.element.getBoundingClientRect();var bounds=new WebInspector.Rect(domRect.left,domRect.top,domRect.width,domRect.height);this._tokenAnnotator.sourceCodeTextEditor.showPopoverForTypes(this._typeDescription,bounds,this._popoverTitle);}
if(this._shouldShowPopover())
timeoutID=setTimeout(showPopoverAfterDelay.bind(this),WebInspector.TypeTokenView.DelayHoverTime);}.bind(this));this.element.addEventListener("mouseout",function(){if(timeoutID)
clearTimeout(timeoutID);});}
_shouldShowPopover()
{if(!this._typeDescription.valid)
return false;if(this._typeDescription.typeSet.primitiveTypeNames.length>1)
return true;if(this._typeDescription.structures&&this._typeDescription.structures.length)
return true;return false;}
_displayTypeName()
{if(!this._typeDescription.valid)
return"";var typeSet=this._typeDescription.typeSet;if(this._typeDescription.leastCommonAncestor){if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Object))
return this._typeDescription.leastCommonAncestor;if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Object|WebInspector.TypeSet.NullOrUndefinedTypeBits))
return this._typeDescription.leastCommonAncestor+"?";}
if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Function))
return"Function";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Undefined))
return"Undefined";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Null))
return"Null";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Boolean))
return"Boolean";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Integer))
return"Integer";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Number|WebInspector.TypeSet.TypeBit.Integer))
return"Number";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.String))
return"String";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Symbol))
return"Symbol";if(typeSet.isContainedIn(WebInspector.TypeSet.NullOrUndefinedTypeBits))
return"(?)";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Function|WebInspector.TypeSet.NullOrUndefinedTypeBits))
return"Function?";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Boolean|WebInspector.TypeSet.NullOrUndefinedTypeBits))
return"Boolean?";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Integer|WebInspector.TypeSet.NullOrUndefinedTypeBits))
return"Integer?";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Number|WebInspector.TypeSet.TypeBit.Integer|WebInspector.TypeSet.NullOrUndefinedTypeBits))
return"Number?";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.String|WebInspector.TypeSet.NullOrUndefinedTypeBits))
return"String?";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Symbol|WebInspector.TypeSet.NullOrUndefinedTypeBits))
return"Symbol?";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Object|WebInspector.TypeSet.TypeBit.Function|WebInspector.TypeSet.TypeBit.String))
return"Object";if(typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Object|WebInspector.TypeSet.TypeBit.Function|WebInspector.TypeSet.TypeBit.String|WebInspector.TypeSet.NullOrUndefinedTypeBits))
return"Object?";return WebInspector.UIString("(many)");}};WebInspector.TypeTokenView.TitleType={Variable:Symbol("title-type-variable"),ReturnStatement:Symbol("title-type-return-statement")};WebInspector.TypeTokenView.ColorClassForType={"String":"type-token-string","Symbol":"type-token-symbol","Function":"type-token-function","Number":"type-token-number","Integer":"type-token-number","Undefined":"type-token-empty","Null":"type-token-empty","(?)":"type-token-empty","Boolean":"type-token-boolean","(many)":"type-token-many"};WebInspector.TypeTokenView.DelayHoverTime=350;WebInspector.TypeTreeElement=class TypeTreeElement extends WebInspector.GeneralTreeElement
{constructor(name,structureDescription,isPrototype)
{super(null,null,null,structureDescription||null,false);this._name=name;this._structureDescription=structureDescription||null;this._isPrototype=isPrototype;this._populated=false;this._autoExpandedChildren=false;this.toggleOnClick=true;this.selectable=false;this.tooltipHandledSeparately=true;this.hasChildren=structureDescription;var displayName=this._isPrototype?WebInspector.UIString("%s Prototype").format(name.replace(/Prototype$/,"")):name;var nameElement=document.createElement("span");nameElement.classList.add("type-name");nameElement.textContent=displayName;this.mainTitle=nameElement;this.addClassName("type-tree-element");if(this._isPrototype)
this.addClassName("prototype");}
get name()
{return this._name;}
get isPrototype()
{return this._isPrototype;}
onpopulate()
{if(this._populated)
return;this._populated=true;var properties=[];for(var name of this._structureDescription.fields){if(name==="")
continue;properties.push({name});}
properties.sort(WebInspector.ObjectTreeView.comparePropertyDescriptors);var optionalProperties=[];for(var name of this._structureDescription.optionalFields){if(name==="")
continue;optionalProperties.push({name:name+"?"});}
optionalProperties.sort(WebInspector.ObjectTreeView.comparePropertyDescriptors);for(var property of properties)
this.appendChild(new WebInspector.TypeTreeElement(property.name,null));for(var property of optionalProperties)
this.appendChild(new WebInspector.TypeTreeElement(property.name,null));if(this._structureDescription.imprecise){var truncatedMessageElement=WebInspector.ObjectTreeView.createEmptyMessageElement(ellipsis);this.appendChild(new WebInspector.TreeElement(truncatedMessageElement,null,false));}
if(!this.children.length){var emptyMessageElement=WebInspector.ObjectTreeView.createEmptyMessageElement(WebInspector.UIString("No Properties"));this.appendChild(new WebInspector.TreeElement(emptyMessageElement,null,false));}
var prototypeStructure=this._structureDescription.prototypeStructure;if(prototypeStructure)
this.appendChild(new WebInspector.TypeTreeElement(prototypeStructure.constructorName,prototypeStructure,true));}
onexpand()
{if(this._autoExpandedChildren)
return;this._autoExpandedChildren=true;var lastChild=this.children[this.children.length-1];if(lastChild&&lastChild.hasChildren&&lastChild.isPrototype&&lastChild.name!=="Object")
lastChild.expand();}};WebInspector.TypeTreeView=class TypeTreeView extends WebInspector.Object
{constructor(typeDescription)
{super();this._typeDescription=typeDescription;this._element=document.createElement("div");this._element.className="type-tree";this._outline=new WebInspector.TreeOutline;this._outline.customIndent=true;this._outline.element.classList.add("type");this._element.appendChild(this._outline.element);this._populate();if(this._outline.children.length===1)
this._outline.children[0].expand();}
get typeDescription()
{return this._typeDescription;}
get element()
{return this._element;}
get treeOutline()
{return this._outline;}
_populate()
{var types=[];for(var structure of this._typeDescription.structures)
types.push({name:structure.constructorName,structure});for(var primitiveName of this._typeDescription.typeSet.primitiveTypeNames)
types.push({name:primitiveName});types.sort(WebInspector.ObjectTreeView.comparePropertyDescriptors);for(var type of types)
this._outline.appendChild(new WebInspector.TypeTreeElement(type.name,type.structure,false));if(this._typeDescription.truncated){var truncatedMessageElement=WebInspector.ObjectTreeView.createEmptyMessageElement(ellipsis);this._outline.appendChild(new WebInspector.TreeElement(truncatedMessageElement,null,false));}
if(!this._outline.children.length){var errorMessageElement=WebInspector.ObjectTreeView.createEmptyMessageElement(WebInspector.UIString("No Properties"));this._outline.appendChild(new WebInspector.TreeElement(errorMessageElement,null,false));}}};WebInspector.WebSocketContentView=class WebSocketContentView extends WebInspector.ContentView
{constructor(resource)
{super(resource);this._resource=resource;this._framesRendered=0;this._lastRenderedReadyState=null;this._showTimeColumn=NetworkAgent.hasEventParameter("webSocketWillSendHandshakeRequest","walltime");this.element.classList.add("web-socket","resource");let columns={data:{}};columns.data.title=WebInspector.UIString("Data");columns.data.sortable=false;columns.data.width="85%";if(this._showTimeColumn)
columns.time={title:WebInspector.UIString("Time"),sortable:true};this._dataGrid=new WebInspector.DataGrid(columns);this._dataGrid.variableHeightRows=true;this.addSubview(this._dataGrid);this._addRow(WebInspector.UIString("WebSocket Connection Established"),this._resource.walltime);this._dataGrid.updateLayout();}
static textForOpcode(opcode)
{switch(opcode){case WebInspector.WebSocketResource.OpCodes.ContinuationFrame:return WebInspector.UIString("Continuation Frame");case WebInspector.WebSocketResource.OpCodes.TextFrame:return WebInspector.UIString("Text Frame");case WebInspector.WebSocketResource.OpCodes.BinaryFrame:return WebInspector.UIString("Binary Frame");case WebInspector.WebSocketResource.OpCodes.ConnectionCloseFrame:return WebInspector.UIString("Connection Close Frame");case WebInspector.WebSocketResource.OpCodes.PingFrame:return WebInspector.UIString("Ping Frame");case WebInspector.WebSocketResource.OpCodes.PongFrame:return WebInspector.UIString("Pong Frame");}}
shown()
{this._updateFrames();this._resource.addEventListener(WebInspector.WebSocketResource.Event.FrameAdded,this._updateFramesSoon,this);this._resource.addEventListener(WebInspector.WebSocketResource.Event.ReadyStateChanged,this._updateFramesSoon,this);}
hidden()
{this._resource.removeEventListener(WebInspector.WebSocketResource.Event.FrameAdded,this._updateFramesSoon,this);this._resource.removeEventListener(WebInspector.WebSocketResource.Event.ReadyStateChanged,this._updateFramesSoon,this);}
_updateFramesSoon()
{this.onNextFrame._updateFrames();}
_updateFrames()
{let shouldScrollToBottom=this._dataGrid.isScrolledToLastRow();let framesLength=this._resource.frames.length;for(let index=this._framesRendered;index<framesLength;index++){let frame=this._resource.frames[index];let{data,isOutgoing,opcode,walltime}=frame;this._addFrame(data,isOutgoing,opcode,walltime);}
this._framesRendered=framesLength;if(this._lastRenderedReadyState!==this._resource.readyState){if(this._resource.readyState===WebInspector.WebSocketResource.ReadyState.Closed)
this._dataGrid.appendChild(new WebInspector.SpanningDataGridNode(WebInspector.UIString("Connection Closed")));this._lastRenderedReadyState=this._resource.readyState;}
if(shouldScrollToBottom)
this._dataGrid.onNextFrame.scrollToLastRow();}
_addFrame(data,isOutgoing,opcode,time)
{let nodeText;let isText=opcode===WebInspector.WebSocketResource.OpCodes.TextFrame;if(isText)
nodeText=data;else
nodeText=WebInspector.WebSocketContentView.textForOpcode(opcode);this._addRow(nodeText,time,{isOutgoing,isText});}
_addRow(data,time,attributes={})
{let node;if(this._showTimeColumn)
node=new WebInspector.WebSocketDataGridNode(Object.shallowMerge({data,time},attributes));else
node=new WebInspector.WebSocketDataGridNode(Object.shallowMerge({data},attributes));this._dataGrid.appendChild(node);if(attributes.isText)
node.element.classList.add("text-frame");else
node.element.classList.add("non-text-frame");if(attributes.isOutgoing)
node.element.classList.add("outgoing");else
node.element.classList.add("incoming");}};WebInspector.WebSocketDataGridNode=class WebSocketDataGridNode extends WebInspector.DataGridNode
{ createCellContent(columnIdentifier)
{if(columnIdentifier==="data"){let fragment=document.createDocumentFragment();if(this._data.isOutgoing){let iconElement=useSVGSymbol("Images/ArrowUp.svg","icon",WebInspector.UIString("Outgoing message"));fragment.appendChild(iconElement);}
fragment.appendChild(document.createTextNode(this._data.data));return fragment;}
if(columnIdentifier==="time")
return this._timeStringFromTimestamp(this._data.time);return super.createCellContent(columnIdentifier);}
appendContextMenuItems(contextMenu)
{let logResult=(result,wasThrown,savedResultIndex)=>{const title=WebInspector.UIString("Selected Frame");const addSpecialUserLogClass=true;const shouldRevealConsole=true;WebInspector.consoleLogViewController.appendImmediateExecutionWithResult(title,result,addSpecialUserLogClass,shouldRevealConsole);};if(this._data.isText){let remoteObject=WebInspector.RemoteObject.fromPrimitiveValue(this._data.data);contextMenu.appendItem(WebInspector.UIString("Log Frame Text"),()=>{WebInspector.runtimeManager.saveResult(remoteObject,(savedResultIndex)=>{logResult(remoteObject,false,savedResultIndex);});});try{JSON.parse(this._data.data);contextMenu.appendItem(WebInspector.UIString("Log Frame Value"),()=>{const options={objectGroup:WebInspector.RuntimeManager.ConsoleObjectGroup,generatePreview:true,saveResult:true,doNotPauseOnExceptionsAndMuteConsole:true,};let expression="("+this._data.data+")";WebInspector.runtimeManager.evaluateInInspectedWindow(expression,options,logResult);});}catch(error){}
contextMenu.appendSeparator();}
return super.appendContextMenuItems(contextMenu);}
_timeStringFromTimestamp(timestamp)
{return new Date(timestamp*1000).toLocaleTimeString();}};WebInspector.WebSocketResourceTreeElement=class WebSocketResourceTreeElement extends WebInspector.ResourceTreeElement
{ onattach()
{super.onattach();this._updateConnectionStatus();this.resource.addEventListener(WebInspector.WebSocketResource.Event.ReadyStateChanged,this._updateConnectionStatus,this);}
ondetach()
{super.ondetach();this.resource.removeEventListener(WebInspector.WebSocketResource.Event.ReadyStateChanged,this._updateConnectionStatus,this);}
populateContextMenu(contextMenu,event)
{contextMenu.appendItem(WebInspector.UIString("Log WebSocket"),()=>{WebInspector.RemoteObject.resolveWebSocket(this._resource,WebInspector.RuntimeManager.ConsoleObjectGroup,(remoteObject)=>{if(!remoteObject)
return;const text=WebInspector.UIString("Selected WebSocket");const addSpecialUserLogClass=true;WebInspector.consoleLogViewController.appendImmediateExecutionWithResult(text,remoteObject,addSpecialUserLogClass);});});contextMenu.appendSeparator();super.populateContextMenu(contextMenu,event);}
_updateConnectionStatus()
{switch(this.resource.readyState){case WebInspector.WebSocketResource.ReadyState.Closed:this.status="";break;case WebInspector.WebSocketResource.ReadyState.Connecting:var connectionIndicatorElement=document.createElement("div");connectionIndicatorElement.classList.add("ready-state","connecting");connectionIndicatorElement.title=WebInspector.UIString("Connecting");this.status=connectionIndicatorElement;break;case WebInspector.WebSocketResource.ReadyState.Open:var connectionIndicatorElement=document.createElement("div");connectionIndicatorElement.classList.add("ready-state","open");connectionIndicatorElement.title=WebInspector.UIString("Open");this.status=connectionIndicatorElement;break;}}};
WebInspector.WorkerTreeElement=class WorkerTreeElement extends WebInspector.ScriptTreeElement
{constructor(target)
{super(target.mainResource);this._target=target;this._target.addEventListener(WebInspector.Target.Event.ResourceAdded,this._resourceAdded,this);this._target.addEventListener(WebInspector.Target.Event.ScriptAdded,this._scriptAdded,this);this._expandedSetting=new WebInspector.Setting("worker-expanded-"+this._target.name.hash,true);this.registerFolderizeSettings("scripts",null,this._target.resourceCollection.resourceCollectionForType(WebInspector.Resource.Type.Script),WebInspector.ResourceTreeElement);this.registerFolderizeSettings("extra-scripts",null,this._target.extraScriptCollection,WebInspector.ScriptTreeElement);for(let[key,value]of Object.entries(WebInspector.Resource.Type)){if(value===WebInspector.Resource.Type.Script)
continue;let folderName=WebInspector.Resource.displayNameForType(value,true);this.registerFolderizeSettings(key,folderName,this._target.resourceCollection.resourceCollectionForType(value),WebInspector.ResourceTreeElement);}
this.updateParentStatus();if(this._expandedSetting.value)
this.expand();}
get target(){return this._target;}
onexpand()
{this._expandedSetting.value=true;}
oncollapse()
{if(this.hasChildren)
this._expandedSetting.value=false;}
onpopulate()
{if(this.children.length&&!this.shouldRefreshChildren)
return;this.shouldRefreshChildren=false;this.removeChildren();this.prepareToPopulate();for(let resource of this._target.resourceCollection.items)
this.addChildForRepresentedObject(resource);for(let script of this._target.extraScriptCollection.items)
this.addChildForRepresentedObject(script);let sourceMaps=this._target.mainResource.sourceMaps;for(let sourceMap of sourceMaps){for(let resource of sourceMap.resources)
this.addChildForRepresentedObject(resource);}}
populateContextMenu(contextMenu,event)
{ WebInspector.appendContextMenuItemsForSourceCode(contextMenu,this.script.resource?this.script.resource:this.script);super.populateContextMenu(contextMenu,event);}
updateSourceMapResources()
{if(!this.treeOutline||!this.treeOutline.includeSourceMapResourceChildren)
return;this.updateParentStatus();if(this._target.mainResource.sourceMaps.length){this.hasChildren=true;this.shouldRefreshChildren=true;}}
onattach()
{WebInspector.GeneralTreeElement.prototype.onattach.call(this);}
compareChildTreeElements(a,b)
{let aIsResource=a instanceof WebInspector.ResourceTreeElement;let bIsResource=b instanceof WebInspector.ResourceTreeElement;if(aIsResource&&bIsResource)
return WebInspector.ResourceTreeElement.compareResourceTreeElements(a,b);if(!aIsResource&&!bIsResource)
return super.compareChildTreeElements(a,b);return aIsResource?1:-1;}
_scriptAdded(event)
{let script=event.data.script;if(!script.url&&!script.sourceURL)
return;this.addRepresentedObjectToNewChildQueue(script);}
_resourceAdded(event)
{this.addRepresentedObjectToNewChildQueue(event.data.resource);}};WebInspector.XHRBreakpointPopover=class XHRBreakpointPopover extends WebInspector.Popover
{constructor(delegate)
{super(delegate);this._result=WebInspector.InputPopover.Result.None;this._type=WebInspector.XHRBreakpoint.Type.Text;this._value=null;this._codeMirror=null;this._targetElement=null;this._preferredEdges=null;this.windowResizeHandler=this._presentOverTargetElement.bind(this);}
get result(){return this._result;}
get type(){return this._type;}
get value(){return this._value;}
show(targetElement,preferredEdges)
{this._targetElement=targetElement;this._preferredEdges=preferredEdges;let contentElement=document.createElement("div");contentElement.classList.add("xhr-breakpoint-content");let label=document.createElement("div");label.classList.add("label");label.textContent=WebInspector.UIString("Break on request with URL:");let editorWrapper=document.createElement("div");editorWrapper.classList.add("editor-wrapper");let selectElement=document.createElement("select");function addOption(text,value)
{let optionElement=document.createElement("option");optionElement.textContent=text;optionElement.value=value;selectElement.append(optionElement);}
addOption(WebInspector.UIString("Containing"),WebInspector.XHRBreakpoint.Type.Text);addOption(WebInspector.UIString("Matching"),WebInspector.XHRBreakpoint.Type.RegularExpression);selectElement.value=this._type;selectElement.addEventListener("change",(event)=>{this._type=event.target.value;this._updateEditor();this._codeMirror.focus();});editorWrapper.append(selectElement,this._createEditor());contentElement.append(label,editorWrapper);this.content=contentElement;this._presentOverTargetElement();}
_createEditor()
{let editorElement=document.createElement("div");editorElement.classList.add("editor");this._codeMirror=WebInspector.CodeMirrorEditor.create(editorElement,{lineWrapping:false,matchBrackets:false,scrollbarStyle:null,value:"",});this._codeMirror.addKeyMap({"Enter":()=>{this._result=WebInspector.InputPopover.Result.Committed;this._value=this._codeMirror.getValue().trim();this.dismiss();},});this._updateEditor();return editorElement;}
_updateEditor()
{let placeholder;let mimeType;if(this._type===WebInspector.XHRBreakpoint.Type.Text){placeholder=WebInspector.UIString("Text");mimeType="text/plain";}else{placeholder=WebInspector.UIString("Regular Expression");mimeType="text/x-regex";}
this._codeMirror.setOption("mode",mimeType);this._codeMirror.setOption("placeholder",placeholder);}
_presentOverTargetElement()
{if(!this._targetElement)
return;let targetFrame=WebInspector.Rect.rectFromClientRect(this._targetElement.getBoundingClientRect());this.present(targetFrame,this._preferredEdges);setTimeout(()=>{this._codeMirror.refresh();this._codeMirror.focus();this.update();},0);}};WebInspector.XHRBreakpointTreeElement=class XHRBreakpointTreeElement extends WebInspector.GeneralTreeElement
{constructor(breakpoint,className,title)
{if(!className)
className=WebInspector.BreakpointTreeElement.GenericLineIconStyleClassName;let subtitle;if(!title){title=WebInspector.UIString("URL");if(breakpoint.type===WebInspector.XHRBreakpoint.Type.Text)
subtitle=doubleQuotedString(breakpoint.url);else
subtitle="/"+breakpoint.url+"/";}
super(["breakpoint",className],title,subtitle,breakpoint);this._statusImageElement=document.createElement("img");this._statusImageElement.classList.add("status-image","resolved");this.status=this._statusImageElement;breakpoint.addEventListener(WebInspector.XHRBreakpoint.Event.DisabledStateDidChange,this._updateStatus,this);this._updateStatus();}
onattach()
{super.onattach();this._boundStatusImageElementClicked=this._statusImageElementClicked.bind(this);this._boundStatusImageElementFocused=this._statusImageElementFocused.bind(this);this._boundStatusImageElementMouseDown=this._statusImageElementMouseDown.bind(this);this._statusImageElement.addEventListener("click",this._boundStatusImageElementClicked);this._statusImageElement.addEventListener("focus",this._boundStatusImageElementFocused);this._statusImageElement.addEventListener("mousedown",this._boundStatusImageElementMouseDown);}
ondetach()
{super.ondetach();this._statusImageElement.removeEventListener("click",this._boundStatusImageElementClicked);this._statusImageElement.removeEventListener("focus",this._boundStatusImageElementFocused);this._statusImageElement.removeEventListener("mousedown",this._boundStatusImageElementMouseDown);this._boundStatusImageElementClicked=null;this._boundStatusImageElementFocused=null;this._boundStatusImageElementMouseDown=null;}
ondelete()
{WebInspector.domDebuggerManager.removeXHRBreakpoint(this.representedObject);return true;}
onenter()
{this._toggleBreakpoint();return true;}
onspace()
{this._toggleBreakpoint();return true;}
populateContextMenu(contextMenu,event)
{let breakpoint=this.representedObject;let label=breakpoint.disabled?WebInspector.UIString("Enable Breakpoint"):WebInspector.UIString("Disable Breakpoint");contextMenu.appendItem(label,this._toggleBreakpoint.bind(this));if(WebInspector.domDebuggerManager.isBreakpointRemovable(breakpoint)){contextMenu.appendSeparator();contextMenu.appendItem(WebInspector.UIString("Delete Breakpoint"),function(){WebInspector.domDebuggerManager.removeXHRBreakpoint(breakpoint);});}}
_statusImageElementClicked(event)
{this._toggleBreakpoint();}
_statusImageElementFocused(event)
{event.stopPropagation();}
_statusImageElementMouseDown(event)
{event.stopPropagation();}
_toggleBreakpoint()
{this.representedObject.disabled=!this.representedObject.disabled;}
_updateStatus()
{this._statusImageElement.classList.toggle("disabled",this.representedObject.disabled);}};WebInspector.VisualStyleDetailsPanel=class VisualStyleDetailsPanel extends WebInspector.StyleDetailsPanel
{constructor(delegate)
{super(delegate,"visual","visual",WebInspector.UIString("Styles \u2014 Visual"));this._currentStyle=null;this._sections={};this._groups={};this._keywords={};this._units={};this._keywords.defaults=["Inherit","Initial","Unset","Revert"];this._keywords.normal=this._keywords.defaults.concat(["Normal"]);this._keywords.boxModel=this._keywords.defaults.concat(["Auto"]);this._keywords.borderStyle={basic:this._keywords.defaults.concat(["None","Hidden","Solid"]),advanced:["Dashed","Dotted","Double","Groove","Inset","Outset","Ridge"]};this._keywords.borderWidth=this._keywords.defaults.concat(["Medium","Thick","Thin"]);this._units.defaultsSansPercent={basic:["px","em"],advanced:["ch","cm","ex","in","mm","pc","pt","rem","vh","vw","vmax","vmin"]};this._units.defaults={basic:["%"].concat(this._units.defaultsSansPercent.basic),advanced:this._units.defaultsSansPercent.advanced};}
refresh(significantChange)
{if(significantChange)
this._selectorSection.update(this._nodeStyles);else
this._updateSections();super.refresh();}
initialLayout()
{ this._selectorSection=new WebInspector.VisualStyleSelectorSection;this._selectorSection.addEventListener(WebInspector.VisualStyleSelectorSection.Event.SelectorChanged,this._updateSections,this);this.element.appendChild(this._selectorSection.element); this._generateSection("display",WebInspector.UIString("Display"));this._generateSection("position",WebInspector.UIString("Position"));this._generateSection("float",WebInspector.UIString("Float and Clear"));this._generateSection("dimensions",WebInspector.UIString("Dimensions"));this._generateSection("margin",WebInspector.UIString("Margin"));this._generateSection("padding",WebInspector.UIString("Padding"));this._generateSection("flexbox",WebInspector.UIString("Flexbox"));this._generateSection("alignment",WebInspector.UIString("Alignment"));this._sections.layout=new WebInspector.DetailsSection("layout",WebInspector.UIString("Layout"),[this._groups.display.section,this._groups.position.section,this._groups.float.section,this._groups.dimensions.section,this._groups.margin.section,this._groups.padding.section,this._groups.flexbox.section,this._groups.alignment.section]);this.element.appendChild(this._sections.layout.element); this._generateSection("content",WebInspector.UIString("Content"));this._generateSection("text-style",WebInspector.UIString("Style"));this._generateSection("font",WebInspector.UIString("Font"));this._generateSection("font-variants",WebInspector.UIString("Variants"));this._generateSection("text-spacing",WebInspector.UIString("Spacing"));this._generateSection("text-shadow",WebInspector.UIString("Shadow"));this._sections.text=new WebInspector.DetailsSection("text",WebInspector.UIString("Text"),[this._groups.content.section,this._groups.textStyle.section,this._groups.font.section,this._groups.fontVariants.section,this._groups.textSpacing.section,this._groups.textShadow.section]);this.element.appendChild(this._sections.text.element); this._generateSection("fill",WebInspector.UIString("Fill"));this._generateSection("stroke",WebInspector.UIString("Stroke"));this._generateSection("background-style",WebInspector.UIString("Style"));this._generateSection("border",WebInspector.UIString("Border"));this._generateSection("outline",WebInspector.UIString("Outline"));this._generateSection("box-shadow",WebInspector.UIString("Box Shadow"));this._generateSection("list-style",WebInspector.UIString("List Styles"));this._sections.background=new WebInspector.DetailsSection("background",WebInspector.UIString("Background"),[this._groups.fill.section,this._groups.stroke.section,this._groups.backgroundStyle.section,this._groups.border.section,this._groups.outline.section,this._groups.boxShadow.section,this._groups.listStyle.section]);this.element.appendChild(this._sections.background.element); this._generateSection("transition",WebInspector.UIString("Transition"));this._generateSection("animation",WebInspector.UIString("Animation"));this._sections.effects=new WebInspector.DetailsSection("effects",WebInspector.UIString("Effects"),[this._groups.transition.section,this._groups.animation.section]);this.element.appendChild(this._sections.effects.element);}
sizeDidChange()
{super.sizeDidChange();let sidebarWidth=this.element.realOffsetWidth;for(let key in this._groups){let group=this._groups[key];if(!group.specifiedWidthProperties)
continue;for(let editor of group.specifiedWidthProperties)
editor.recalculateWidth(sidebarWidth);}}
_generateSection(id,displayName)
{if(!id||!displayName)
return;let camelCaseId=id.toCamelCase();function createOptionsElement(){let container=document.createElement("div");container.title=WebInspector.UIString("Clear modified properties");container.addEventListener("click",this._clearModifiedSection.bind(this,camelCaseId));return container;}
this._groups[camelCaseId]={section:new WebInspector.DetailsSection(id,displayName,[],createOptionsElement.call(this)),properties:{}};let populateFunction=this["_populate"+camelCaseId.capitalize()+"Section"];populateFunction.call(this);}
_updateSections(event)
{this._currentStyle=this._selectorSection.currentStyle();if(!this._currentStyle)
return;let disabled=this._currentStyle[WebInspector.VisualStyleDetailsPanel.StyleDisabledSymbol];this.element.classList.toggle("disabled",!!disabled);if(disabled)
return;for(let key in this._groups)
this._updateProperties(this._groups[key],!!event);if(event){for(let key in this._sections){let section=this._sections[key];let oneSectionExpanded=false;for(let group of section.groups){let camelCaseId=group.identifier.toCamelCase();group.collapsed=!group.expandedByUser&&!this._groupHasSetProperty(this._groups[camelCaseId]);if(!group.collapsed)
oneSectionExpanded=true;}
if(oneSectionExpanded)
section.collapsed=false;}}
let hasMatchedElementPseudoSelector=this._currentStyle.ownerRule&&this._currentStyle.ownerRule.hasMatchedPseudoElementSelector();this._groups.content.section.element.classList.toggle("inactive",!hasMatchedElementPseudoSelector);this._groups.listStyle.section.element.classList.toggle("inactive",hasMatchedElementPseudoSelector);let node=this._nodeStyles.node;let isSVGElement=node.isSVGElement();this._groups.float.section.element.classList.toggle("inactive",isSVGElement);this._groups.border.section.element.classList.toggle("inactive",isSVGElement);this._groups.boxShadow.section.element.classList.toggle("inactive",isSVGElement);this._groups.listStyle.section.element.classList.toggle("inactive",isSVGElement);this._groups.fill.section.element.classList.toggle("inactive",!isSVGElement);this._groups.stroke.section.element.classList.toggle("inactive",!isSVGElement);let isSVGCircle=node.nodeName()==="circle";let isSVGEllipse=node.nodeName()==="ellipse";let isSVGRadialGradient=node.nodeName()==="radialGradient";let isSVGRect=node.nodeName()==="rect";let isSVGLine=node.nodeName()==="line";let isSVGLinearGradient=node.nodeName()==="linearGradient";this._groups.dimensions.section.element.classList.toggle("inactive",!(!isSVGElement||isSVGEllipse||isSVGRect||isSVGCircle||isSVGRadialGradient));this._groups.dimensions.defaultGroup.element.classList.toggle("inactive",!(!isSVGElement||isSVGRect));this._groups.dimensions.svgGroup.element.classList.toggle("inactive",!(isSVGEllipse||isSVGRect||isSVGCircle||isSVGRadialGradient));this._groups.dimensions.properties.r.element.classList.toggle("inactive",!(isSVGCircle||isSVGRadialGradient));this._groups.dimensions.properties.rx.element.classList.toggle("inactive",!(isSVGEllipse||isSVGRect));this._groups.dimensions.properties.ry.element.classList.toggle("inactive",!(isSVGEllipse||isSVGRect));this._groups.position.svgGroup.element.classList.toggle("inactive",!(isSVGRect||isSVGCircle||isSVGEllipse||isSVGLine||isSVGRadialGradient||isSVGLinearGradient));this._groups.position.properties.x.element.classList.toggle("inactive",!isSVGRect);this._groups.position.properties.y.element.classList.toggle("inactive",!isSVGRect);this._groups.position.properties.x1.element.classList.toggle("inactive",!(isSVGLine||isSVGLinearGradient));this._groups.position.properties.y1.element.classList.toggle("inactive",!(isSVGLine||isSVGLinearGradient));this._groups.position.properties.x2.element.classList.toggle("inactive",!(isSVGLine||isSVGLinearGradient));this._groups.position.properties.y2.element.classList.toggle("inactive",!(isSVGLine||isSVGLinearGradient));this._groups.position.properties.cx.element.classList.toggle("inactive",!(isSVGCircle||isSVGEllipse||isSVGRadialGradient));this._groups.position.properties.cy.element.classList.toggle("inactive",!(isSVGCircle||isSVGEllipse||isSVGRadialGradient));}
_updateProperties(group,forceStyleUpdate)
{if(!group.section)
return;if(forceStyleUpdate&&group.links){for(let key in group.links)
group.links[key].linked=false;}
let initialTextList=this._initialTextList;if(!initialTextList)
this._currentStyle[WebInspector.VisualStyleDetailsPanel.InitialPropertySectionTextListSymbol]=initialTextList=new WeakMap;let initialPropertyText={};let initialPropertyTextMissing=!initialTextList.has(group);for(let key in group.properties){let propertyEditor=group.properties[key];propertyEditor.update(!propertyEditor.style||forceStyleUpdate?this._currentStyle:null);let value=propertyEditor.synthesizedValue;if(value&&!propertyEditor.propertyMissing&&initialPropertyTextMissing)
initialPropertyText[key]=value;}
if(initialPropertyTextMissing)
initialTextList.set(group,initialPropertyText);this._sectionModified(group);if(group.autocompleteCompatibleProperties){for(let editor of group.autocompleteCompatibleProperties)
this._updateAutocompleteCompatiblePropertyEditor(editor,forceStyleUpdate);}
if(group.specifiedWidthProperties){let sidebarWidth=this.element.realOffsetWidth;for(let editor of group.specifiedWidthProperties)
editor.recalculateWidth(sidebarWidth);}}
_updateAutocompleteCompatiblePropertyEditor(editor,force)
{if(!editor||(editor.hasCompletions&&!force))
return;editor.completions=WebInspector.CSSKeywordCompletions.forProperty(editor.propertyReferenceName);}
_sectionModified(group)
{group.section.element.classList.toggle("modified",this._initialPropertyTextModified(group));group.section.element.classList.toggle("has-set-property",this._groupHasSetProperty(group));}
_clearModifiedSection(groupId)
{let group=this._groups[groupId];group.section.element.classList.remove("modified");let initialPropertyTextList=this._currentStyle[WebInspector.VisualStyleDetailsPanel.InitialPropertySectionTextListSymbol].get(group);if(!initialPropertyTextList)
return;let newStyleText=this._currentStyle.text;for(let key in group.properties){let propertyEditor=group.properties[key];let initialValue=initialPropertyTextList[key]||null;newStyleText=propertyEditor.modifyPropertyText(newStyleText,initialValue);propertyEditor.resetEditorValues(initialValue);}
this._currentStyle.text=newStyleText;group.section.element.classList.toggle("has-set-property",this._groupHasSetProperty(group));}
get _initialTextList()
{return this._currentStyle[WebInspector.VisualStyleDetailsPanel.InitialPropertySectionTextListSymbol];}
_initialPropertyTextModified(group)
{if(!group.properties)
return false;let initialPropertyTextList=this._initialTextList.get(group);if(!initialPropertyTextList)
return false;for(let key in group.properties){let propertyEditor=group.properties[key];if(propertyEditor.propertyMissing)
continue;let value=propertyEditor.synthesizedValue;if(value&&initialPropertyTextList[key]!==value)
return true;}
return false;}
_groupHasSetProperty(group)
{for(let key in group.properties){let propertyEditor=group.properties[key];let value=propertyEditor.synthesizedValue;if(value&&!propertyEditor.propertyMissing)
return true;}
return false;}
_populateSection(group,groups)
{if(!group||!groups)
return;group.section.groups=groups;for(let key in group.properties)
group.properties[key].addEventListener(WebInspector.VisualStylePropertyEditor.Event.ValueDidChange,this._sectionModified.bind(this,group));}
_populateDisplaySection()
{let group=this._groups.display;let properties=group.properties;let displayRow=new WebInspector.DetailsSectionRow;properties.display=new WebInspector.VisualStyleKeywordPicker("display",WebInspector.UIString("Type"),{basic:["None","Block","Flex","Inline","Inline Block"],advanced:["Compact","Inline Flex","Inline Table","List Item","Table","Table Caption","Table Cell","Table Column","Table Column Group","Table Footer Group","Table Header Group","Table Row","Table Row Group"," WAP Marquee"," WebKit Box"," WebKit Grid"," WebKit Inline Box"," WebKit Inline Grid"]});properties.visibility=new WebInspector.VisualStyleKeywordPicker("visibility",WebInspector.UIString("Visibility"),{basic:["Hidden","Visible"],advanced:["Collapse"]});displayRow.element.appendChild(properties.display.element);displayRow.element.appendChild(properties.visibility.element);let sizingRow=new WebInspector.DetailsSectionRow;properties.boxSizing=new WebInspector.VisualStyleKeywordPicker("box-sizing",WebInspector.UIString("Sizing"),this._keywords.defaults.concat(["Border Box","Content Box"]));properties.cursor=new WebInspector.VisualStyleKeywordPicker("cursor",WebInspector.UIString("Cursor"),{basic:["Auto","Default","None","Pointer","Crosshair","Text"],advanced:["Context Menu","Help","Progress","Wait","Cell","Vertical Text","Alias","Copy","Move","No Drop","Not Allowed","All Scroll","Col Resize","Row Resize","N Resize","E Resize","S Resize","W Resize","NS Resize","EW Resize","NE Resize","NW Resize","SE Resize","sW Resize","NESW Resize","NWSE Resize"]});sizingRow.element.appendChild(properties.boxSizing.element);sizingRow.element.appendChild(properties.cursor.element);let overflowRow=new WebInspector.DetailsSectionRow;properties.opacity=new WebInspector.VisualStyleUnitSlider("opacity",WebInspector.UIString("Opacity"));properties.overflow=new WebInspector.VisualStyleKeywordPicker(["overflow-x","overflow-y"],WebInspector.UIString("Overflow"),{basic:["Initial","Unset","Revert","Auto","Hidden","Scroll","Visible"],advanced:["Marquee","Overlay"," WebKit Paged X"," WebKit Paged Y"]});overflowRow.element.appendChild(properties.opacity.element);overflowRow.element.appendChild(properties.overflow.element);group.specifiedWidthProperties=[properties.opacity];let displayGroup=new WebInspector.DetailsSectionGroup([displayRow,sizingRow,overflowRow]);this._populateSection(group,[displayGroup]);}
_addMetricsMouseListeners(editor,mode)
{function editorMouseover(){if(!this._currentStyle)
return;if(!this._currentStyle.ownerRule){WebInspector.domTreeManager.highlightDOMNode(this._currentStyle.node.id,mode);return;}
WebInspector.domTreeManager.highlightSelector(this._currentStyle.ownerRule.selectorText,this._currentStyle.node.ownerDocument.frameIdentifier,mode);}
function editorMouseout(){WebInspector.domTreeManager.hideDOMNodeHighlight();}
editor.element.addEventListener("mouseover",editorMouseover.bind(this));editor.element.addEventListener("mouseout",editorMouseout);}
_generateMetricSectionRows(group,prefix,allowNegatives,highlightOnHover)
{let properties=group.properties;let links=group.links={};let hasPrefix=prefix&&prefix.length;let propertyNamePrefix=hasPrefix?prefix+"-":"";let top=hasPrefix?prefix+"Top":"top";let bottom=hasPrefix?prefix+"Bottom":"bottom";let left=hasPrefix?prefix+"Left":"left";let right=hasPrefix?prefix+"Right":"right";let vertical=new WebInspector.DetailsSectionRow;properties[top]=new WebInspector.VisualStyleNumberInputBox(propertyNamePrefix+"top",WebInspector.UIString("Top"),this._keywords.boxModel,this._units.defaults,allowNegatives);properties[bottom]=new WebInspector.VisualStyleNumberInputBox(propertyNamePrefix+"bottom",WebInspector.UIString("Bottom"),this._keywords.boxModel,this._units.defaults,allowNegatives,true);links["vertical"]=new WebInspector.VisualStylePropertyEditorLink([properties[top],properties[bottom]],"link-vertical");vertical.element.appendChild(properties[top].element);vertical.element.appendChild(links["vertical"].element);vertical.element.appendChild(properties[bottom].element);let horizontal=new WebInspector.DetailsSectionRow;properties[left]=new WebInspector.VisualStyleNumberInputBox(propertyNamePrefix+"left",WebInspector.UIString("Left"),this._keywords.boxModel,this._units.defaults,allowNegatives);properties[right]=new WebInspector.VisualStyleNumberInputBox(propertyNamePrefix+"right",WebInspector.UIString("Right"),this._keywords.boxModel,this._units.defaults,allowNegatives,true);links["horizontal"]=new WebInspector.VisualStylePropertyEditorLink([properties[left],properties[right]],"link-horizontal");horizontal.element.appendChild(properties[left].element);horizontal.element.appendChild(links["horizontal"].element);horizontal.element.appendChild(properties[right].element);let allLinkRow=new WebInspector.DetailsSectionRow;links["all"]=new WebInspector.VisualStylePropertyEditorLink([properties[top],properties[bottom],properties[left],properties[right]],"link-all",[links["vertical"],links["horizontal"]]);allLinkRow.element.appendChild(links["all"].element);if(highlightOnHover){this._addMetricsMouseListeners(properties[top],prefix);this._addMetricsMouseListeners(links["vertical"],prefix);this._addMetricsMouseListeners(properties[bottom],prefix);this._addMetricsMouseListeners(links["all"],prefix);this._addMetricsMouseListeners(properties[left],prefix);this._addMetricsMouseListeners(links["horizontal"],prefix);this._addMetricsMouseListeners(properties[right],prefix);}
vertical.element.classList.add("metric-section-row");horizontal.element.classList.add("metric-section-row");allLinkRow.element.classList.add("metric-section-row");return[vertical,allLinkRow,horizontal];}
_populatePositionSection()
{let group=this._groups.position;let rows=this._generateMetricSectionRows(group,null,true);let properties=group.properties;let positionType=new WebInspector.DetailsSectionRow;properties.position=new WebInspector.VisualStyleKeywordPicker("position",WebInspector.UIString("Type"),{basic:["Static","Relative","Absolute","Fixed"],advanced:[" WebKit Sticky"]});properties.zIndex=new WebInspector.VisualStyleNumberInputBox("z-index",WebInspector.UIString("Z-Index"),this._keywords.boxModel,null,true);positionType.element.appendChild(properties.position.element);positionType.element.appendChild(properties.zIndex.element);positionType.element.classList.add("visual-style-separated-row");rows.unshift(positionType);group.defaultGroup=new WebInspector.DetailsSectionGroup(rows);let xyRow=new WebInspector.DetailsSectionRow;properties.x=new WebInspector.VisualStyleNumberInputBox("x",WebInspector.UIString("X"),this._keywords.boxModel,this._units.defaults,true);properties.y=new WebInspector.VisualStyleNumberInputBox("y",WebInspector.UIString("Y"),this._keywords.boxModel,this._units.defaults,true);xyRow.element.appendChild(properties.x.element);xyRow.element.appendChild(properties.y.element);let x1y1Row=new WebInspector.DetailsSectionRow;properties.x1=new WebInspector.VisualStyleNumberInputBox("x1",WebInspector.UIString("X1"),this._keywords.boxModel,this._units.defaults,true);properties.y1=new WebInspector.VisualStyleNumberInputBox("y1",WebInspector.UIString("Y1"),this._keywords.boxModel,this._units.defaults,true);x1y1Row.element.appendChild(properties.x1.element);x1y1Row.element.appendChild(properties.y1.element);let x2y2Row=new WebInspector.DetailsSectionRow;properties.x2=new WebInspector.VisualStyleNumberInputBox("x2",WebInspector.UIString("X2"),this._keywords.boxModel,this._units.defaults,true);properties.y2=new WebInspector.VisualStyleNumberInputBox("y2",WebInspector.UIString("Y2"),this._keywords.boxModel,this._units.defaults,true);x2y2Row.element.appendChild(properties.x2.element);x2y2Row.element.appendChild(properties.y2.element);let cxcyRow=new WebInspector.DetailsSectionRow;properties.cx=new WebInspector.VisualStyleNumberInputBox("cx",WebInspector.UIString("Center X"),this._keywords.boxModel,this._units.defaults,true);properties.cy=new WebInspector.VisualStyleNumberInputBox("cy",WebInspector.UIString("Center Y"),this._keywords.boxModel,this._units.defaults,true);cxcyRow.element.appendChild(properties.cx.element);cxcyRow.element.appendChild(properties.cy.element);group.svgGroup=new WebInspector.DetailsSectionGroup([xyRow,x1y1Row,x2y2Row,cxcyRow]);this._populateSection(group,[group.defaultGroup,group.svgGroup]);let allowedPositionValues=["relative","absolute","fixed","-webkit-sticky"];properties.zIndex.addDependency("position",allowedPositionValues);properties.top.addDependency("position",allowedPositionValues);properties.right.addDependency("position",allowedPositionValues);properties.bottom.addDependency("position",allowedPositionValues);properties.left.addDependency("position",allowedPositionValues);}
_populateFloatSection()
{let group=this._groups.float;let properties=group.properties;let floatRow=new WebInspector.DetailsSectionRow;properties.float=new WebInspector.VisualStyleKeywordIconList("float",WebInspector.UIString("Float"),["Left","Right","None"]);floatRow.element.appendChild(properties.float.element);let clearRow=new WebInspector.DetailsSectionRow;properties.clear=new WebInspector.VisualStyleKeywordIconList("clear",WebInspector.UIString("Clear"),["Left","Right","Both","None"]);clearRow.element.appendChild(properties.clear.element);let floatGroup=new WebInspector.DetailsSectionGroup([floatRow,clearRow]);this._populateSection(group,[floatGroup]);}
_populateDimensionsSection()
{let group=this._groups.dimensions;let properties=group.properties;let dimensionsWidth=new WebInspector.DetailsSectionRow;properties.width=new WebInspector.VisualStyleRelativeNumberSlider("width",WebInspector.UIString("Width"),this._keywords.boxModel,this._units.defaults);dimensionsWidth.element.appendChild(properties.width.element);let dimensionsHeight=new WebInspector.DetailsSectionRow;properties.height=new WebInspector.VisualStyleRelativeNumberSlider("height",WebInspector.UIString("Height"),this._keywords.boxModel,this._units.defaults,true);dimensionsHeight.element.appendChild(properties.height.element);let dimensionsProperties=[properties.width,properties.height];let dimensionsRegularGroup=new WebInspector.DetailsSectionGroup([dimensionsWidth,dimensionsHeight]);let dimensionsMinWidth=new WebInspector.DetailsSectionRow;properties.minWidth=new WebInspector.VisualStyleRelativeNumberSlider("min-width",WebInspector.UIString("Width"),this._keywords.boxModel,this._units.defaults);dimensionsMinWidth.element.appendChild(properties.minWidth.element);let dimensionsMinHeight=new WebInspector.DetailsSectionRow;properties.minHeight=new WebInspector.VisualStyleRelativeNumberSlider("min-height",WebInspector.UIString("Height"),this._keywords.boxModel,this._units.defaults);dimensionsMinHeight.element.appendChild(properties.minHeight.element);let dimensionsMinProperties=[properties.minWidth,properties.minHeight];let dimensionsMinGroup=new WebInspector.DetailsSectionGroup([dimensionsMinWidth,dimensionsMinHeight]);let dimensionsMaxKeywords=this._keywords.defaults.concat("None");let dimensionsMaxWidth=new WebInspector.DetailsSectionRow;properties.maxWidth=new WebInspector.VisualStyleRelativeNumberSlider("max-width",WebInspector.UIString("Width"),dimensionsMaxKeywords,this._units.defaults);dimensionsMaxWidth.element.appendChild(properties.maxWidth.element);let dimensionsMaxHeight=new WebInspector.DetailsSectionRow;properties.maxHeight=new WebInspector.VisualStyleRelativeNumberSlider("max-height",WebInspector.UIString("Height"),dimensionsMaxKeywords,this._units.defaults);dimensionsMaxHeight.element.appendChild(properties.maxHeight.element);let dimensionsMaxProperties=[properties.maxWidth,properties.maxHeight];let dimensionsMaxGroup=new WebInspector.DetailsSectionGroup([dimensionsMaxWidth,dimensionsMaxHeight]);let dimensionsTabController=new WebInspector.VisualStyleTabbedPropertiesRow({"default":{title:WebInspector.UIString("Default"),element:dimensionsRegularGroup.element,properties:dimensionsProperties},"min":{title:WebInspector.UIString("Min"),element:dimensionsMinGroup.element,properties:dimensionsMinProperties},"max":{title:WebInspector.UIString("Max"),element:dimensionsMaxGroup.element,properties:dimensionsMaxProperties}});let highlightMode="content";this._addMetricsMouseListeners(group.properties.width,highlightMode);this._addMetricsMouseListeners(group.properties.height,highlightMode);this._addMetricsMouseListeners(group.properties.minWidth,highlightMode);this._addMetricsMouseListeners(group.properties.minHeight,highlightMode);this._addMetricsMouseListeners(group.properties.maxWidth,highlightMode);this._addMetricsMouseListeners(group.properties.maxHeight,highlightMode);group.defaultGroup=new WebInspector.DetailsSectionGroup([dimensionsTabController,dimensionsRegularGroup,dimensionsMinGroup,dimensionsMaxGroup]);let rRow=new WebInspector.DetailsSectionRow;properties.r=new WebInspector.VisualStyleRelativeNumberSlider("r",WebInspector.UIString("Radius"),this._keywords.boxModel,this._units.defaults);rRow.element.appendChild(properties.r.element);let rxRow=new WebInspector.DetailsSectionRow;properties.rx=new WebInspector.VisualStyleRelativeNumberSlider("rx",WebInspector.UIString("Radius X"),this._keywords.boxModel,this._units.defaults);rxRow.element.appendChild(properties.rx.element);let ryRow=new WebInspector.DetailsSectionRow;properties.ry=new WebInspector.VisualStyleRelativeNumberSlider("ry",WebInspector.UIString("Radius Y"),this._keywords.boxModel,this._units.defaults);ryRow.element.appendChild(properties.ry.element);group.svgGroup=new WebInspector.DetailsSectionGroup([rRow,rxRow,ryRow]);this._populateSection(group,[group.defaultGroup,group.svgGroup]);}
_populateMarginSection()
{let group=this._groups.margin;let rows=this._generateMetricSectionRows(group,"margin",true,true);let marginGroup=new WebInspector.DetailsSectionGroup(rows);this._populateSection(group,[marginGroup]);}
_populatePaddingSection()
{let group=this._groups.padding;let rows=this._generateMetricSectionRows(group,"padding",false,true);let paddingGroup=new WebInspector.DetailsSectionGroup(rows);this._populateSection(group,[paddingGroup]);}
_populateFlexboxSection()
{let group=this._groups.flexbox;let properties=group.properties;let flexOrderRow=new WebInspector.DetailsSectionRow;properties.order=new WebInspector.VisualStyleNumberInputBox("order",WebInspector.UIString("Order"),this._keywords.defaults);properties.flexBasis=new WebInspector.VisualStyleNumberInputBox("flex-basis",WebInspector.UIString("Basis"),this._keywords.boxModel,this._units.defaults,true);flexOrderRow.element.appendChild(properties.order.element);flexOrderRow.element.appendChild(properties.flexBasis.element);let flexSizeRow=new WebInspector.DetailsSectionRow;properties.flexGrow=new WebInspector.VisualStyleNumberInputBox("flex-grow",WebInspector.UIString("Grow"),this._keywords.defaults);properties.flexShrink=new WebInspector.VisualStyleNumberInputBox("flex-shrink",WebInspector.UIString("Shrink"),this._keywords.defaults);flexSizeRow.element.appendChild(properties.flexGrow.element);flexSizeRow.element.appendChild(properties.flexShrink.element);let flexFlowRow=new WebInspector.DetailsSectionRow;properties.flexDirection=new WebInspector.VisualStyleKeywordPicker("flex-direction",WebInspector.UIString("Direction"),this._keywords.defaults.concat(["Row","Row Reverse","Column","Column Reverse"]));properties.flexWrap=new WebInspector.VisualStyleKeywordPicker("flex-wrap",WebInspector.UIString("Wrap"),this._keywords.defaults.concat(["Wrap","Wrap Reverse","Nowrap"]));flexFlowRow.element.appendChild(properties.flexDirection.element);flexFlowRow.element.appendChild(properties.flexWrap.element);let flexboxGroup=new WebInspector.DetailsSectionGroup([flexOrderRow,flexSizeRow,flexFlowRow]);this._populateSection(group,[flexboxGroup]);let allowedDisplayValues=["flex","inline-flex","-webkit-box","-webkit-inline-box"];properties.order.addDependency("display",allowedDisplayValues);properties.flexBasis.addDependency("display",allowedDisplayValues);properties.flexGrow.addDependency("display",allowedDisplayValues);properties.flexShrink.addDependency("display",allowedDisplayValues);properties.flexDirection.addDependency("display",allowedDisplayValues);properties.flexWrap.addDependency("display",allowedDisplayValues);}
_populateAlignmentSection()
{let group=this._groups.alignment;let properties=group.properties;let alignmentKeywords=["Initial","Unset","Revert","Auto","Flex Start","Flex End","Center","Stretch"];let advancedAlignmentKeywords=["Start","End","Left","Right","Baseline","Last Baseline"];let contentRow=new WebInspector.DetailsSectionRow;let contentKeywords={basic:alignmentKeywords.concat(["Space Between","Space Around"]),advanced:advancedAlignmentKeywords.concat(["Space Evenly"])};properties.justifyContent=new WebInspector.VisualStyleKeywordPicker("justify-content",WebInspector.UIString("Horizontal"),contentKeywords);properties.alignContent=new WebInspector.VisualStyleKeywordPicker("align-content",WebInspector.UIString("Vertical"),contentKeywords);contentRow.element.appendChild(properties.justifyContent.element);contentRow.element.appendChild(properties.alignContent.element);let itemsRow=new WebInspector.DetailsSectionRow;let itemKeywords={basic:alignmentKeywords,advanced:["Self Start","Self End"].concat(advancedAlignmentKeywords)};properties.alignItems=new WebInspector.VisualStyleKeywordPicker("align-items",WebInspector.UIString("Children"),itemKeywords);properties.alignSelf=new WebInspector.VisualStyleKeywordPicker("align-self",WebInspector.UIString("Self"),itemKeywords);itemsRow.element.appendChild(properties.alignItems.element);itemsRow.element.appendChild(properties.alignSelf.element);let alignmentGroup=new WebInspector.DetailsSectionGroup([contentRow,itemsRow]);this._populateSection(group,[alignmentGroup]);let allowedDisplayValues=["flex","inline-flex","-webkit-box","-webkit-inline-box"];properties.justifyContent.addDependency("display",allowedDisplayValues);properties.alignContent.addDependency("display",allowedDisplayValues);properties.alignItems.addDependency("display",allowedDisplayValues);properties.alignSelf.addDependency("display",allowedDisplayValues);}
_populateContentSection()
{let group=this._groups.content;let properties=group.properties;let contentRow=new WebInspector.DetailsSectionRow;properties.content=new WebInspector.VisualStyleBasicInput("content",null,WebInspector.UIString("Enter value"));contentRow.element.appendChild(properties.content.element);let contentGroup=new WebInspector.DetailsSectionGroup([contentRow]);this._populateSection(group,[contentGroup]);}
_populateTextStyleSection()
{let group=this._groups.textStyle;let properties=group.properties;let textAppearanceRow=new WebInspector.DetailsSectionRow;properties.color=new WebInspector.VisualStyleColorPicker("color",WebInspector.UIString("Color"));properties.textDirection=new WebInspector.VisualStyleKeywordPicker("direction",WebInspector.UIString("Direction"),this._keywords.defaults.concat(["LTR","RTL"]));textAppearanceRow.element.appendChild(properties.color.element);textAppearanceRow.element.appendChild(properties.textDirection.element);let textAlignRow=new WebInspector.DetailsSectionRow;properties.textAlign=new WebInspector.VisualStyleKeywordIconList("text-align",WebInspector.UIString("Align"),["Left","Center","Right","Justify"]);textAlignRow.element.appendChild(properties.textAlign.element);let textTransformRow=new WebInspector.DetailsSectionRow;properties.textTransform=new WebInspector.VisualStyleKeywordIconList("text-transform",WebInspector.UIString("Transform"),["Capitalize","Uppercase","Lowercase","None"]);textTransformRow.element.appendChild(properties.textTransform.element);let textDecorationRow=new WebInspector.DetailsSectionRow;properties.textDecoration=new WebInspector.VisualStyleKeywordIconList("text-decoration",WebInspector.UIString("Decoration"),["Underline","Line Through","Overline","None"]);textDecorationRow.element.appendChild(properties.textDecoration.element);group.autocompleteCompatibleProperties=[properties.color];let textStyleGroup=new WebInspector.DetailsSectionGroup([textAppearanceRow,textAlignRow,textTransformRow,textDecorationRow]);this._populateSection(group,[textStyleGroup]);}
_populateFontSection()
{let group=this._groups.font;let properties=group.properties;let fontFamilyRow=new WebInspector.DetailsSectionRow;properties.fontFamily=new WebInspector.VisualStyleFontFamilyListEditor("font-family",WebInspector.UIString("Family"));fontFamilyRow.element.appendChild(properties.fontFamily.element);let fontSizeRow=new WebInspector.DetailsSectionRow;properties.fontSize=new WebInspector.VisualStyleNumberInputBox("font-size",WebInspector.UIString("Size"),this._keywords.defaults.concat(["Larger","XX Large","X Large","Large","Medium","Small","X Small","XX Small","Smaller"]),this._units.defaults);properties.fontWeight=new WebInspector.VisualStyleKeywordPicker("font-weight",WebInspector.UIString("Weight"),{basic:this._keywords.defaults.concat(["Bolder","Bold","Normal","Lighter"]),advanced:["100","200","300","400","500","600","700","800","900"]});fontSizeRow.element.appendChild(properties.fontSize.element);fontSizeRow.element.appendChild(properties.fontWeight.element);let fontStyleRow=new WebInspector.DetailsSectionRow;properties.fontStyle=new WebInspector.VisualStyleKeywordIconList("font-style",WebInspector.UIString("Style"),["Italic","Normal"]);properties.fontFeatureSettings=new WebInspector.VisualStyleBasicInput("font-feature-settings",WebInspector.UIString("Features"),WebInspector.UIString("Enter Tag"));fontStyleRow.element.appendChild(properties.fontStyle.element);fontStyleRow.element.appendChild(properties.fontFeatureSettings.element);group.autocompleteCompatibleProperties=[properties.fontFamily];group.specifiedWidthProperties=[properties.fontFamily];let fontGroup=new WebInspector.DetailsSectionGroup([fontFamilyRow,fontSizeRow,fontStyleRow]);this._populateSection(group,[fontGroup]);}
_populateFontVariantsSection()
{let group=this._groups.fontVariants;let properties=group.properties;let alternatesRow=new WebInspector.DetailsSectionRow;properties.fontVariantAlternates=new WebInspector.VisualStyleBasicInput("font-variant-alternates",WebInspector.UIString("Alternates"),WebInspector.UIString("Enter Value"));alternatesRow.element.appendChild(properties.fontVariantAlternates.element);let positionRow=new WebInspector.DetailsSectionRow;properties.fontVariantPosition=new WebInspector.VisualStyleKeywordPicker("font-variant-position",WebInspector.UIString("Position"),this._keywords.normal.concat(["Sub","Super"]));positionRow.element.appendChild(properties.fontVariantPosition.element);properties.fontVariantCaps=new WebInspector.VisualStyleKeywordPicker("font-variant-caps",WebInspector.UIString("Caps"),this._keywords.normal.concat(["None","Small Caps","All Small Caps","Petite Caps","All Petite Caps","Unicase","Titling Caps"]));positionRow.element.appendChild(properties.fontVariantCaps.element);let ligaturesRow=new WebInspector.DetailsSectionRow; properties.fontVariantLigatures=new WebInspector.VisualStyleKeywordPicker("font-variant-ligatures",WebInspector.UIString("Ligatures"),this._keywords.normal.concat(["None","Common Ligatures","No Common Ligatures","Discretionary Ligatures","No Discretionary Ligatures","Historical Ligatures","No Historical Ligatures","Contextual","No Contextual"]));ligaturesRow.element.appendChild(properties.fontVariantLigatures.element);properties.fontVariantNumeric=new WebInspector.VisualStyleKeywordPicker("font-variant-numeric",WebInspector.UIString("Numeric"),this._keywords.normal.concat(["None","Ordinal","Slashed Zero","Lining Nums","Oldstyle Nums","Proportional Nums","Tabular Nums","Diagonal Fractions","Stacked Fractions"]));ligaturesRow.element.appendChild(properties.fontVariantNumeric.element);let variantsGroup=new WebInspector.DetailsSectionGroup([alternatesRow,positionRow,ligaturesRow]);this._populateSection(group,[variantsGroup]);}
_populateTextSpacingSection()
{let group=this._groups.textSpacing;let properties=group.properties;let textLayoutRow=new WebInspector.DetailsSectionRow;properties.lineHeight=new WebInspector.VisualStyleNumberInputBox("line-height",WebInspector.UIString("Height"),this._keywords.normal,this._units.defaults);properties.verticalAlign=new WebInspector.VisualStyleNumberInputBox("vertical-align",WebInspector.UIString("Align"),["Baseline","Bottom"].concat(this._keywords.defaults,["Middle","Sub","Super","Text Bottom","Text Top","Top"]),this._units.defaults);textLayoutRow.element.appendChild(properties.lineHeight.element);textLayoutRow.element.appendChild(properties.verticalAlign.element);let textSpacingRow=new WebInspector.DetailsSectionRow;properties.letterSpacing=new WebInspector.VisualStyleNumberInputBox("letter-spacing",WebInspector.UIString("Letter"),this._keywords.normal,this._units.defaults);properties.wordSpacing=new WebInspector.VisualStyleNumberInputBox("word-spacing",WebInspector.UIString("Word"),this._keywords.normal,this._units.defaults);textSpacingRow.element.appendChild(properties.letterSpacing.element);textSpacingRow.element.appendChild(properties.wordSpacing.element);let textWhitespaceRow=new WebInspector.DetailsSectionRow;properties.textIndent=new WebInspector.VisualStyleNumberInputBox("text-indent",WebInspector.UIString("Indent"),this._keywords.defaults,this._units.defaults);properties.whiteSpace=new WebInspector.VisualStyleKeywordPicker("white-space",WebInspector.UIString("Whitespace"),this._keywords.defaults.concat(["Normal","Nowrap","Pre","Pre Line","Pre Wrap"]));textWhitespaceRow.element.appendChild(properties.textIndent.element);textWhitespaceRow.element.appendChild(properties.whiteSpace.element);let textSpacingGroup=new WebInspector.DetailsSectionGroup([textLayoutRow,textSpacingRow,textWhitespaceRow]);this._populateSection(group,[textSpacingGroup]);}
_populateTextShadowSection()
{let group=this._groups.textShadow;let properties=group.properties;let textShadowSizing=new WebInspector.DetailsSectionRow;let textShadowH=new WebInspector.VisualStyleNumberInputBox("text-shadow",WebInspector.UIString("Horizontal"),null,this._units.defaultsSansPercent);let textShadowV=new WebInspector.VisualStyleNumberInputBox("text-shadow",WebInspector.UIString("Vertical"),null,this._units.defaultsSansPercent);textShadowSizing.element.appendChild(textShadowH.element);textShadowSizing.element.appendChild(textShadowV.element);let textShadowStyle=new WebInspector.DetailsSectionRow;let textShadowColor=new WebInspector.VisualStyleColorPicker("text-shadow",WebInspector.UIString("Color"));let textShadowBlur=new WebInspector.VisualStyleNumberInputBox("text-shadow",WebInspector.UIString("Blur"),null,this._units.defaultsSansPercent);textShadowBlur.optionalProperty=true;textShadowStyle.element.appendChild(textShadowColor.element);textShadowStyle.element.appendChild(textShadowBlur.element);properties.textShadow=new WebInspector.VisualStylePropertyCombiner("text-shadow",[textShadowH,textShadowV,textShadowBlur,textShadowColor]);group.autocompleteCompatibleProperties=[textShadowColor];let textShadowGroup=new WebInspector.DetailsSectionGroup([textShadowSizing,textShadowStyle]);this._populateSection(group,[textShadowGroup]);}
_populateFillSection()
{let group=this._groups.fill;let properties=group.properties;let fillRow=new WebInspector.DetailsSectionRow;properties.fill=new WebInspector.VisualStyleColorPicker("fill",WebInspector.UIString("Color"));properties.fillRule=new WebInspector.VisualStyleKeywordPicker("fill-rule",WebInspector.UIString("Rule"),this._keywords.defaults.concat(["Nonzero","Evenodd"]));fillRow.element.appendChild(properties.fill.element);fillRow.element.appendChild(properties.fillRule.element);let fillOpacityRow=new WebInspector.DetailsSectionRow;properties.fillOpacity=new WebInspector.VisualStyleUnitSlider("fill-opacity",WebInspector.UIString("Opacity"));fillOpacityRow.element.appendChild(properties.fillOpacity.element);group.specifiedWidthProperties=[properties.fillOpacity];let fillGroup=new WebInspector.DetailsSectionGroup([fillRow,fillOpacityRow]);this._populateSection(group,[fillGroup]);}
_populateStrokeSection()
{let group=this._groups.stroke;let properties=group.properties;let strokeRow=new WebInspector.DetailsSectionRow;properties.stroke=new WebInspector.VisualStyleColorPicker("stroke",WebInspector.UIString("Color"));properties.strokeWidth=new WebInspector.VisualStyleNumberInputBox("stroke-width",WebInspector.UIString("Width"),this._keywords.defaults,this._units.defaults);strokeRow.element.appendChild(properties.stroke.element);strokeRow.element.appendChild(properties.strokeWidth.element);let strokeOpacity=new WebInspector.DetailsSectionRow;properties.strokeOpacity=new WebInspector.VisualStyleUnitSlider("stroke-opacity",WebInspector.UIString("Opacity"));strokeOpacity.element.appendChild(properties.strokeOpacity.element);let strokeDasharrayRow=new WebInspector.DetailsSectionRow;properties.strokeDasharray=new WebInspector.VisualStyleBasicInput("stroke-dasharray",WebInspector.UIString("Dash Array"),WebInspector.UIString("Enter an array value"));strokeDasharrayRow.element.appendChild(properties.strokeDasharray.element);let strokeDasharrayOptionsRow=new WebInspector.DetailsSectionRow;properties.strokeDashoffset=new WebInspector.VisualStyleNumberInputBox("stroke-dashoffset",WebInspector.UIString("Offset"),this._keywords.defaults,this._units.defaults);properties.strokeMiterlimit=new WebInspector.VisualStyleNumberInputBox("stroke-miterlimit",WebInspector.UIString("Miter"),this._keywords.defaults);strokeDasharrayOptionsRow.element.appendChild(properties.strokeDashoffset.element);strokeDasharrayOptionsRow.element.appendChild(properties.strokeMiterlimit.element);let strokeLineOptionsRow=new WebInspector.DetailsSectionRow;properties.strokeLinecap=new WebInspector.VisualStyleKeywordPicker("stroke-linecap",WebInspector.UIString("Cap"),this._keywords.defaults.concat(["Butt","Round","Square"]));properties.strokeLinejoin=new WebInspector.VisualStyleKeywordPicker("stroke-linejoin",WebInspector.UIString("Join"),this._keywords.defaults.concat(["Miter","Round","Bevel"]));strokeLineOptionsRow.element.appendChild(properties.strokeLinecap.element);strokeLineOptionsRow.element.appendChild(properties.strokeLinejoin.element);group.specifiedWidthProperties=[properties.strokeOpacity];let strokeGroup=new WebInspector.DetailsSectionGroup([strokeRow,strokeOpacity,strokeDasharrayRow,strokeDasharrayOptionsRow,strokeLineOptionsRow]);this._populateSection(group,[strokeGroup]);}
_populateBackgroundStyleSection()
{let group=this._groups.backgroundStyle;let properties=group.properties;let backgroundStyleRow=new WebInspector.DetailsSectionRow;properties.backgroundColor=new WebInspector.VisualStyleColorPicker("background-color",WebInspector.UIString("Color"));properties.backgroundBlendMode=new WebInspector.VisualStyleKeywordPicker("background-blend-mode",WebInspector.UIString("Blend"),["Normal","Multiply","Screen","Overlay","Darken","Lighten","Color","Color Dodge","Saturation","Luminosity"]);backgroundStyleRow.element.appendChild(properties.backgroundColor.element);backgroundStyleRow.element.appendChild(properties.backgroundBlendMode.element);let backgroundClipRow=new WebInspector.DetailsSectionRow;let backgroundClipKeywords=["Initial","Border Box","Padding Box","Content Box"];properties.backgroundClip=new WebInspector.VisualStyleKeywordPicker("background-clip",WebInspector.UIString("Clip"),backgroundClipKeywords);properties.backgroundOrigin=new WebInspector.VisualStyleKeywordPicker("background-origin",WebInspector.UIString("Origin"),backgroundClipKeywords);backgroundClipRow.element.appendChild(properties.backgroundClip.element);backgroundClipRow.element.appendChild(properties.backgroundOrigin.element);let backgroundSizeRow=new WebInspector.DetailsSectionRow;let backgroundSizeKeywords=this._keywords.boxModel.concat(["Contain","Cover"]);let backgroundSizeX=new WebInspector.VisualStyleNumberInputBox("background-size",WebInspector.UIString("Width"),backgroundSizeKeywords,this._units.defaults);backgroundSizeX.masterProperty=true;let backgroundSizeY=new WebInspector.VisualStyleNumberInputBox("background-size",WebInspector.UIString("Height"),backgroundSizeKeywords,this._units.defaults);backgroundSizeY.masterProperty=true;properties.backgroundSize=new WebInspector.VisualStylePropertyCombiner("background-size",[backgroundSizeX,backgroundSizeY]);backgroundSizeRow.element.appendChild(backgroundSizeX.element);backgroundSizeRow.element.appendChild(backgroundSizeY.element);let backgroundRow=new WebInspector.DetailsSectionRow;properties.background=new WebInspector.VisualStyleCommaSeparatedKeywordEditor("background",null,{"background-image":"none","background-position":"0% 0%","background-repeat":"repeat","background-attachment":"scroll",});backgroundRow.element.appendChild(properties.background.element);let backgroundImageRow=new WebInspector.DetailsSectionRow;let backgroundImage=new WebInspector.VisualStyleBackgroundPicker("background-image",WebInspector.UIString("Type"),this._keywords.defaults.concat(["None"]));backgroundImageRow.element.appendChild(backgroundImage.element);let backgroundPositionRow=new WebInspector.DetailsSectionRow;let backgroundPositionX=new WebInspector.VisualStyleNumberInputBox("background-position",WebInspector.UIString("Position X"),["Center","Left","Right"],this._units.defaults);backgroundPositionX.optionalProperty=true;let backgroundPositionY=new WebInspector.VisualStyleNumberInputBox("background-position",WebInspector.UIString("Position Y"),["Bottom","Center","Top"],this._units.defaults);backgroundPositionY.optionalProperty=true;backgroundPositionRow.element.appendChild(backgroundPositionX.element);backgroundPositionRow.element.appendChild(backgroundPositionY.element);let backgroundRepeatRow=new WebInspector.DetailsSectionRow;let backgroundRepeat=new WebInspector.VisualStyleKeywordPicker("background-repeat",WebInspector.UIString("Repeat"),this._keywords.defaults.concat(["No Repeat","Repeat","Repeat X","Repeat Y"]));backgroundRepeat.optionalProperty=true;let backgroundAttachment=new WebInspector.VisualStyleKeywordPicker("background-attachment",WebInspector.UIString("Attach"),this._keywords.defaults.concat(["Fixed","Local","Scroll"]));backgroundAttachment.optionalProperty=true;backgroundRepeatRow.element.appendChild(backgroundRepeat.element);backgroundRepeatRow.element.appendChild(backgroundAttachment.element);let backgroundProperties=[backgroundImage,backgroundPositionX,backgroundPositionY,backgroundRepeat,backgroundAttachment];let backgroundPropertyCombiner=new WebInspector.VisualStylePropertyCombiner("background",backgroundProperties);let noRemainingCommaSeparatedEditorItems=this._noRemainingCommaSeparatedEditorItems.bind(this,backgroundPropertyCombiner,backgroundProperties);properties.background.addEventListener(WebInspector.VisualStyleCommaSeparatedKeywordEditor.Event.NoRemainingTreeItems,noRemainingCommaSeparatedEditorItems,this);let selectedCommaSeparatedEditorItemValueChanged=this._selectedCommaSeparatedEditorItemValueChanged.bind(this,properties.background,backgroundPropertyCombiner);backgroundPropertyCombiner.addEventListener(WebInspector.VisualStylePropertyEditor.Event.ValueDidChange,selectedCommaSeparatedEditorItemValueChanged,this);let commaSeparatedEditorTreeItemSelected=this._commaSeparatedEditorTreeItemSelected.bind(backgroundPropertyCombiner);properties.background.addEventListener(WebInspector.VisualStyleCommaSeparatedKeywordEditor.Event.TreeItemSelected,commaSeparatedEditorTreeItemSelected,this);group.autocompleteCompatibleProperties=[properties.backgroundColor];group.specifiedWidthProperties=[properties.background];let backgroundStyleGroup=new WebInspector.DetailsSectionGroup([backgroundStyleRow,backgroundClipRow,backgroundSizeRow,backgroundRow,backgroundImageRow,backgroundPositionRow,backgroundRepeatRow]);this._populateSection(group,[backgroundStyleGroup]);}
_populateBorderSection()
{let group=this._groups.border;let properties=group.properties;let borderAllSize=new WebInspector.DetailsSectionRow;properties.borderStyle=new WebInspector.VisualStyleKeywordPicker(["border-top-style","border-right-style","border-bottom-style","border-left-style"],WebInspector.UIString("Style"),this._keywords.borderStyle);properties.borderStyle.propertyReferenceName="border-style";properties.borderWidth=new WebInspector.VisualStyleNumberInputBox(["border-top-width","border-right-width","border-bottom-width","border-left-width"],WebInspector.UIString("Width"),this._keywords.borderWidth,this._units.defaults);properties.borderWidth.propertyReferenceName="border-width";borderAllSize.element.appendChild(properties.borderStyle.element);borderAllSize.element.appendChild(properties.borderWidth.element);let borderAllStyle=new WebInspector.DetailsSectionRow;properties.borderColor=new WebInspector.VisualStyleColorPicker(["border-top-color","border-right-color","border-bottom-color","border-left-color"],WebInspector.UIString("Color"));properties.borderColor.propertyReferenceName="border-color";properties.borderRadius=new WebInspector.VisualStyleNumberInputBox(["border-top-left-radius","border-top-right-radius","border-bottom-left-radius","border-bottom-right-radius"],WebInspector.UIString("Radius"),this._keywords.defaults,this._units.defaults);properties.borderRadius.propertyReferenceName="border-radius";borderAllStyle.element.appendChild(properties.borderColor.element);borderAllStyle.element.appendChild(properties.borderRadius.element);let borderAllProperties=[properties.borderStyle,properties.borderWidth,properties.borderColor,properties.borderRadius];let borderAllGroup=new WebInspector.DetailsSectionGroup([borderAllSize,borderAllStyle]);let borderTopSize=new WebInspector.DetailsSectionRow;properties.borderTopStyle=new WebInspector.VisualStyleKeywordPicker("border-top-style",WebInspector.UIString("Style"),this._keywords.borderStyle);properties.borderTopWidth=new WebInspector.VisualStyleNumberInputBox("border-top-width",WebInspector.UIString("Width"),this._keywords.borderWidth,this._units.defaults);borderTopSize.element.appendChild(properties.borderTopStyle.element);borderTopSize.element.appendChild(properties.borderTopWidth.element);let borderTopStyle=new WebInspector.DetailsSectionRow;properties.borderTopColor=new WebInspector.VisualStyleColorPicker("border-top-color",WebInspector.UIString("Color"));properties.borderTopRadius=new WebInspector.VisualStyleNumberInputBox(["border-top-left-radius","border-top-right-radius"],WebInspector.UIString("Radius"),this._keywords.defaults,this._units.defaults);borderTopStyle.element.appendChild(properties.borderTopColor.element);borderTopStyle.element.appendChild(properties.borderTopRadius.element);let borderTopProperties=[properties.borderTopStyle,properties.borderTopWidth,properties.borderTopColor,properties.borderTopRadius];let borderTopGroup=new WebInspector.DetailsSectionGroup([borderTopSize,borderTopStyle]);let borderRightSize=new WebInspector.DetailsSectionRow;properties.borderRightStyle=new WebInspector.VisualStyleKeywordPicker("border-right-style",WebInspector.UIString("Style"),this._keywords.borderStyle);properties.borderRightWidth=new WebInspector.VisualStyleNumberInputBox("border-right-width",WebInspector.UIString("Width"),this._keywords.borderWidth,this._units.defaults);borderRightSize.element.appendChild(properties.borderRightStyle.element);borderRightSize.element.appendChild(properties.borderRightWidth.element);let borderRightStyle=new WebInspector.DetailsSectionRow;properties.borderRightColor=new WebInspector.VisualStyleColorPicker("border-right-color",WebInspector.UIString("Color"));properties.borderRightRadius=new WebInspector.VisualStyleNumberInputBox(["border-top-right-radius","border-bottom-right-radius"],WebInspector.UIString("Radius"),this._keywords.defaults,this._units.defaults);borderRightStyle.element.appendChild(properties.borderRightColor.element);borderRightStyle.element.appendChild(properties.borderRightRadius.element);let borderRightProperties=[properties.borderRightStyle,properties.borderRightWidth,properties.borderRightColor,properties.borderRightRadius];let borderRightGroup=new WebInspector.DetailsSectionGroup([borderRightSize,borderRightStyle]);let borderBottomSize=new WebInspector.DetailsSectionRow;properties.borderBottomStyle=new WebInspector.VisualStyleKeywordPicker("border-bottom-style",WebInspector.UIString("Style"),this._keywords.borderStyle);properties.borderBottomWidth=new WebInspector.VisualStyleNumberInputBox("border-bottom-width",WebInspector.UIString("Width"),this._keywords.borderWidth,this._units.defaults);borderBottomSize.element.appendChild(properties.borderBottomStyle.element);borderBottomSize.element.appendChild(properties.borderBottomWidth.element);let borderBottomStyle=new WebInspector.DetailsSectionRow;properties.borderBottomColor=new WebInspector.VisualStyleColorPicker("border-bottom-color",WebInspector.UIString("Color"));properties.borderBottomRadius=new WebInspector.VisualStyleNumberInputBox(["border-bottom-left-radius","border-bottom-right-radius"],WebInspector.UIString("Radius"),this._keywords.defaults,this._units.defaults);borderBottomStyle.element.appendChild(properties.borderBottomColor.element);borderBottomStyle.element.appendChild(properties.borderBottomRadius.element);let borderBottomProperties=[properties.borderBottomStyle,properties.borderBottomWidth,properties.borderBottomColor,properties.borderBottomRadius];let borderBottomGroup=new WebInspector.DetailsSectionGroup([borderBottomSize,borderBottomStyle]);let borderLeftSize=new WebInspector.DetailsSectionRow;properties.borderLeftStyle=new WebInspector.VisualStyleKeywordPicker("border-left-style",WebInspector.UIString("Style"),this._keywords.borderStyle);properties.borderLeftWidth=new WebInspector.VisualStyleNumberInputBox("border-left-width",WebInspector.UIString("Width"),this._keywords.borderWidth,this._units.defaults);borderLeftSize.element.appendChild(properties.borderLeftStyle.element);borderLeftSize.element.appendChild(properties.borderLeftWidth.element);let borderLeftStyle=new WebInspector.DetailsSectionRow;properties.borderLeftColor=new WebInspector.VisualStyleColorPicker("border-left-color",WebInspector.UIString("Color"));properties.borderLeftRadius=new WebInspector.VisualStyleNumberInputBox(["border-top-left-radius","border-bottom-left-radius"],WebInspector.UIString("Radius"),this._keywords.defaults,this._units.defaults);borderLeftStyle.element.appendChild(properties.borderLeftColor.element);borderLeftStyle.element.appendChild(properties.borderLeftRadius.element);let borderLeftProperties=[properties.borderLeftStyle,properties.borderLeftWidth,properties.borderLeftColor,properties.borderLeftRadius];let borderLeftGroup=new WebInspector.DetailsSectionGroup([borderLeftSize,borderLeftStyle]);let borderTabController=new WebInspector.VisualStyleTabbedPropertiesRow({"all":{title:WebInspector.UIString("All"),element:borderAllGroup.element,properties:borderAllProperties},"top":{title:WebInspector.UIString("Top"),element:borderTopGroup.element,properties:borderTopProperties},"right":{title:WebInspector.UIString("Right"),element:borderRightGroup.element,properties:borderRightProperties},"bottom":{title:WebInspector.UIString("Bottom"),element:borderBottomGroup.element,properties:borderBottomProperties},"left":{title:WebInspector.UIString("Left"),element:borderLeftGroup.element,properties:borderLeftProperties}});let highlightMode="border";this._addMetricsMouseListeners(group.properties.borderWidth,highlightMode);this._addMetricsMouseListeners(group.properties.borderTopWidth,highlightMode);this._addMetricsMouseListeners(group.properties.borderBottomWidth,highlightMode);this._addMetricsMouseListeners(group.properties.borderLeftWidth,highlightMode);this._addMetricsMouseListeners(group.properties.borderRightWidth,highlightMode);let borderGroup=new WebInspector.DetailsSectionGroup([borderTabController,borderAllGroup,borderTopGroup,borderRightGroup,borderBottomGroup,borderLeftGroup]);let borderImageSourceRow=new WebInspector.DetailsSectionRow;properties.borderImageSource=new WebInspector.VisualStyleURLInput("border-image-source",WebInspector.UIString("Image"),this._keywords.defaults.concat(["None"]));borderImageSourceRow.element.appendChild(properties.borderImageSource.element);let borderImageRepeatRow=new WebInspector.DetailsSectionRow;let borderImageSliceFill=new WebInspector.VisualStyleKeywordCheckbox("border-image-slice",WebInspector.UIString("Fill"),"Fill");borderImageSliceFill.optionalProperty=true;properties.borderImageRepeat=new WebInspector.VisualStyleKeywordPicker("border-image-repeat",WebInspector.UIString("Repeat"),this._keywords.defaults.concat(["Stretch","Repeat","Round","Space"]));borderImageRepeatRow.element.appendChild(borderImageSliceFill.element);borderImageRepeatRow.element.appendChild(properties.borderImageRepeat.element);function generateBorderImagePropertyEditors(propertyName,keywords,units){let vertical=new WebInspector.DetailsSectionRow;let top=new WebInspector.VisualStyleNumberInputBox(propertyName,WebInspector.UIString("Top"),keywords,units);top.masterProperty=true;let bottom=new WebInspector.VisualStyleNumberInputBox(propertyName,WebInspector.UIString("Bottom"),keywords,units);bottom.masterProperty=true;vertical.element.appendChild(top.element);vertical.element.appendChild(bottom.element);let horizontal=new WebInspector.DetailsSectionRow;let left=new WebInspector.VisualStyleNumberInputBox(propertyName,WebInspector.UIString("Left"),keywords,units);left.masterProperty=true;let right=new WebInspector.VisualStyleNumberInputBox(propertyName,WebInspector.UIString("Right"),keywords,units);right.masterProperty=true;horizontal.element.appendChild(left.element);horizontal.element.appendChild(right.element);return{group:new WebInspector.DetailsSectionGroup([vertical,horizontal]),properties:[top,bottom,left,right]};}
let nonKeywordUnits=[WebInspector.UIString("Number")];let borderImageUnits=Object.shallowCopy(this._units.defaults);borderImageUnits.basic=nonKeywordUnits.concat(borderImageUnits.basic);let borderImageWidth=generateBorderImagePropertyEditors("border-image-width",this._keywords.boxModel,borderImageUnits);properties.borderImageWidth=new WebInspector.VisualStylePropertyCombiner("border-image-width",borderImageWidth.properties,true);let borderOutsetUnits=Object.shallowCopy(this._units.defaultsSansPercent);borderOutsetUnits.basic=nonKeywordUnits.concat(borderOutsetUnits.basic);let borderImageOutset=generateBorderImagePropertyEditors("border-image-outset",this._keywords.defaults,borderOutsetUnits);properties.borderImageOutset=new WebInspector.VisualStylePropertyCombiner("border-image-outset",borderImageOutset.properties,true);let borderImageSlice=generateBorderImagePropertyEditors("border-image-slice",this._keywords.defaults,["%"].concat(nonKeywordUnits));borderImageSlice.properties.push(borderImageSliceFill);properties.borderImageSlice=new WebInspector.VisualStylePropertyCombiner("border-image-slice",borderImageSlice.properties,true);let borderImagePropertiesTabController=new WebInspector.VisualStyleTabbedPropertiesRow({"width":{title:WebInspector.UIString("Width"),element:borderImageWidth.group.element,properties:[properties.borderImageWidth]},"outset":{title:WebInspector.UIString("Outset"),element:borderImageOutset.group.element,properties:[properties.borderImageOutset]},"slice":{title:WebInspector.UIString("Slice"),element:borderImageSlice.group.element,properties:[properties.borderImageSlice]}});let borderImageGroup=new WebInspector.DetailsSectionGroup([borderImageSourceRow,borderImageRepeatRow,borderImagePropertiesTabController,borderImageWidth.group,borderImageOutset.group,borderImageSlice.group]);group.autocompleteCompatibleProperties=[properties.borderColor,properties.borderTopColor,properties.borderBottomColor,properties.borderLeftColor,properties.borderRightColor];this._populateSection(group,[borderGroup,borderImageGroup]);let allowedBorderValues=["solid","dashed","dotted","double","groove","inset","outset","ridge"];properties.borderWidth.addDependency(["border-top-style","border-right-style","border-bottom-style","border-left-style"],allowedBorderValues);properties.borderColor.addDependency(["border-top-style","border-right-style","border-bottom-style","border-left-style"],allowedBorderValues);properties.borderTopWidth.addDependency("border-top-style",allowedBorderValues);properties.borderTopColor.addDependency("border-top-style",allowedBorderValues);properties.borderRightWidth.addDependency("border-right-style",allowedBorderValues);properties.borderRightColor.addDependency("border-right-style",allowedBorderValues);properties.borderBottomWidth.addDependency("border-bottom-style",allowedBorderValues);properties.borderBottomColor.addDependency("border-bottom-style",allowedBorderValues);properties.borderLeftWidth.addDependency("border-left-style",allowedBorderValues);properties.borderLeftColor.addDependency("border-left-style",allowedBorderValues);}
_populateOutlineSection()
{let group=this._groups.outline;let properties=group.properties;let outlineSizeRow=new WebInspector.DetailsSectionRow;properties.outlineStyle=new WebInspector.VisualStyleKeywordPicker("outline-style",WebInspector.UIString("Style"),this._keywords.borderStyle);properties.outlineWidth=new WebInspector.VisualStyleNumberInputBox("outline-width",WebInspector.UIString("Width"),this._keywords.borderWidth,this._units.defaults);outlineSizeRow.element.appendChild(properties.outlineStyle.element);outlineSizeRow.element.appendChild(properties.outlineWidth.element);let outlineStyleRow=new WebInspector.DetailsSectionRow;properties.outlineColor=new WebInspector.VisualStyleColorPicker("outline-color",WebInspector.UIString("Color"));properties.outlineOffset=new WebInspector.VisualStyleNumberInputBox("outline-offset",WebInspector.UIString("Offset"),this._keywords.defaults,this._units.defaults,true);outlineStyleRow.element.appendChild(properties.outlineColor.element);outlineStyleRow.element.appendChild(properties.outlineOffset.element);group.autocompleteCompatibleProperties=[properties.outlineColor];let outlineGroup=new WebInspector.DetailsSectionGroup([outlineSizeRow,outlineStyleRow]);this._populateSection(group,[outlineGroup]);let allowedOutlineValues=["solid","dashed","dotted","double","groove","inset","outset","ridge"];properties.outlineWidth.addDependency("outline-style",allowedOutlineValues);properties.outlineColor.addDependency("outline-style",allowedOutlineValues);}
_populateBoxShadowSection()
{let group=this._groups.boxShadow;let properties=group.properties;let boxShadowRow=new WebInspector.DetailsSectionRow;properties.boxShadow=new WebInspector.VisualStyleCommaSeparatedKeywordEditor("box-shadow");boxShadowRow.element.appendChild(properties.boxShadow.element);let boxShadowHRow=new WebInspector.DetailsSectionRow;let boxShadowH=new WebInspector.VisualStyleRelativeNumberSlider("box-shadow",WebInspector.UIString("Left"),null,this._units.defaultsSansPercent,true);boxShadowHRow.element.appendChild(boxShadowH.element);let boxShadowVRow=new WebInspector.DetailsSectionRow;let boxShadowV=new WebInspector.VisualStyleRelativeNumberSlider("box-shadow",WebInspector.UIString("Top"),null,this._units.defaultsSansPercent,true);boxShadowVRow.element.appendChild(boxShadowV.element);let boxShadowBlurRow=new WebInspector.DetailsSectionRow;let boxShadowBlur=new WebInspector.VisualStyleNumberInputBox("box-shadow",WebInspector.UIString("Blur"),null,this._units.defaultsSansPercent);boxShadowBlur.optionalProperty=true;let boxShadowSpread=new WebInspector.VisualStyleNumberInputBox("box-shadow",WebInspector.UIString("Spread"),null,this._units.defaultsSansPercent,true);boxShadowSpread.optionalProperty=true;boxShadowBlurRow.element.appendChild(boxShadowBlur.element);boxShadowBlurRow.element.appendChild(boxShadowSpread.element);let boxShadowColorRow=new WebInspector.DetailsSectionRow;let boxShadowColor=new WebInspector.VisualStyleColorPicker("box-shadow",WebInspector.UIString("Color"));let boxShadowInset=new WebInspector.VisualStyleKeywordCheckbox("box-shadow",WebInspector.UIString("Inset"),"Inset");boxShadowInset.optionalProperty=true;boxShadowColorRow.element.appendChild(boxShadowColor.element);boxShadowColorRow.element.appendChild(boxShadowInset.element);let boxShadowProperties=[boxShadowH,boxShadowV,boxShadowBlur,boxShadowSpread,boxShadowColor,boxShadowInset];let boxShadowPropertyCombiner=new WebInspector.VisualStylePropertyCombiner("box-shadow",boxShadowProperties);let noRemainingCommaSeparatedEditorItems=this._noRemainingCommaSeparatedEditorItems.bind(this,boxShadowPropertyCombiner,boxShadowProperties);properties.boxShadow.addEventListener(WebInspector.VisualStyleCommaSeparatedKeywordEditor.Event.NoRemainingTreeItems,noRemainingCommaSeparatedEditorItems,this);let selectedCommaSeparatedEditorItemValueChanged=this._selectedCommaSeparatedEditorItemValueChanged.bind(this,properties.boxShadow,boxShadowPropertyCombiner);boxShadowPropertyCombiner.addEventListener(WebInspector.VisualStylePropertyEditor.Event.ValueDidChange,selectedCommaSeparatedEditorItemValueChanged,this);let commaSeparatedEditorTreeItemSelected=this._commaSeparatedEditorTreeItemSelected.bind(boxShadowPropertyCombiner);properties.boxShadow.addEventListener(WebInspector.VisualStyleCommaSeparatedKeywordEditor.Event.TreeItemSelected,commaSeparatedEditorTreeItemSelected,this);group.autocompleteCompatibleProperties=[boxShadowColor];group.specifiedWidthProperties=[properties.boxShadow];let boxShadow=new WebInspector.DetailsSectionGroup([boxShadowRow,boxShadowHRow,boxShadowVRow,boxShadowBlurRow,boxShadowColorRow]);this._populateSection(group,[boxShadow]);}
_populateListStyleSection()
{let group=this._groups.listStyle;let properties=group.properties;let listStyleTypeRow=new WebInspector.DetailsSectionRow;properties.listStyleType=new WebInspector.VisualStyleKeywordPicker("list-style-type",WebInspector.UIString("Type"),{basic:this._keywords.defaults.concat(["None","Circle","Disc","Square","Decimal","Lower Alpha","Upper Alpha","Lower Roman","Upper Roman"]),advanced:["Decimal Leading Zero","Asterisks","Footnotes","Binary","Octal","Lower Hexadecimal","Upper Hexadecimal","Lower Latin","Upper Latin","Lower Greek","Upper Greek","Arabic Indic","Hebrew","Hiragana","Katakana","Hiragana Iroha","Katakana Iroha","CJK Earthly Branch","CJK Heavenly Stem","CJK Ideographic","Bengali","Cambodian","Khmer","Devanagari","Gujarati","Gurmukhi","Kannada","Lao","Malayalam","Mongolian","Myanmar","Oriya","Persian","Urdu","Telugu","Armenian","Lower Armenian","Upper Armenian","Georgian","Tibetan","Thai","Afar","Hangul Consonant","Hangul","Lower Norwegian","Upper Norwegian","Ethiopic","Ethiopic Halehame Gez","Ethiopic Halehame Aa Et","Ethiopic Halehame Aa Er","Oromo","Ethiopic Halehame Om Et","Sidama","Ethiopic Halehame Sid Et","Somali","Ethiopic Halehame So Et","Amharic","Ethiopic Halehame Am Et","Tigre","Ethiopic Halehame Tig","Tigrinya Er","Ethiopic Halehame Ti Er","Tigrinya Et","Ethiopic Halehame Ti Et","Ethiopic Abegede","Ethiopic Abegede Gez","Amharic Abegede","Ethiopic Abegede Am Et","Tigrinya Er Abegede","Ethiopic Abegede Ti Er","Tigrinya Et Abegede","Ethiopic Abegede Ti Et"]});properties.listStylePosition=new WebInspector.VisualStyleKeywordIconList("list-style-position",WebInspector.UIString("Position"),["Outside","Inside","Initial"]);listStyleTypeRow.element.appendChild(properties.listStyleType.element);listStyleTypeRow.element.appendChild(properties.listStylePosition.element);let listStyleImageRow=new WebInspector.DetailsSectionRow;properties.listStyleImage=new WebInspector.VisualStyleURLInput("list-style-image",WebInspector.UIString("Image"),this._keywords.defaults.concat(["None"]));listStyleImageRow.element.appendChild(properties.listStyleImage.element);let listStyle=new WebInspector.DetailsSectionGroup([listStyleTypeRow,listStyleImageRow]);this._populateSection(group,[listStyle]);}
_populateTransitionSection()
{let group=this._groups.transition;let properties=group.properties;let transitionRow=new WebInspector.DetailsSectionRow;properties.transition=new WebInspector.VisualStyleCommaSeparatedKeywordEditor("transition",null,{"transition-property":"all","transition-timing-function":"ease","transition-duration":"0","transition-delay":"0"});transitionRow.element.appendChild(properties.transition.element);let transitionPropertyRow=new WebInspector.DetailsSectionRow;let transitionProperty=new WebInspector.VisualStylePropertyNameInput("transition-property",WebInspector.UIString("Property"));transitionProperty.masterProperty=true;let transitionTiming=new WebInspector.VisualStyleTimingEditor("transition-timing-function",WebInspector.UIString("Timing"),["Linear","Ease","Ease In","Ease Out","Ease In Out"]);transitionTiming.optionalProperty=true;transitionPropertyRow.element.appendChild(transitionProperty.element);transitionPropertyRow.element.appendChild(transitionTiming.element);let transitionDurationRow=new WebInspector.DetailsSectionRow;let transitionTimeKeywords=["s","ms"];let transitionDuration=new WebInspector.VisualStyleNumberInputBox("transition-duration",WebInspector.UIString("Duration"),null,transitionTimeKeywords);transitionDuration.optionalProperty=true;let transitionDelay=new WebInspector.VisualStyleNumberInputBox("transition-delay",WebInspector.UIString("Delay"),null,transitionTimeKeywords);transitionDelay.optionalProperty=true;transitionDurationRow.element.appendChild(transitionDuration.element);transitionDurationRow.element.appendChild(transitionDelay.element);let transitionProperties=[transitionProperty,transitionDuration,transitionTiming,transitionDelay];let transitionPropertyCombiner=new WebInspector.VisualStylePropertyCombiner("transition",transitionProperties);let noRemainingCommaSeparatedEditorItems=this._noRemainingCommaSeparatedEditorItems.bind(this,transitionPropertyCombiner,transitionProperties);properties.transition.addEventListener(WebInspector.VisualStyleCommaSeparatedKeywordEditor.Event.NoRemainingTreeItems,noRemainingCommaSeparatedEditorItems,this);let selectedCommaSeparatedEditorItemValueChanged=this._selectedCommaSeparatedEditorItemValueChanged.bind(this,properties.transition,transitionPropertyCombiner);transitionPropertyCombiner.addEventListener(WebInspector.VisualStylePropertyEditor.Event.ValueDidChange,selectedCommaSeparatedEditorItemValueChanged,this);let commaSeparatedEditorTreeItemSelected=this._commaSeparatedEditorTreeItemSelected.bind(transitionPropertyCombiner);properties.transition.addEventListener(WebInspector.VisualStyleCommaSeparatedKeywordEditor.Event.TreeItemSelected,commaSeparatedEditorTreeItemSelected,this);group.autocompleteCompatibleProperties=[transitionProperty];group.specifiedWidthProperties=[properties.transition];let transitionGroup=new WebInspector.DetailsSectionGroup([transitionRow,transitionPropertyRow,transitionDurationRow]);this._populateSection(group,[transitionGroup]);}
_populateAnimationSection()
{let group=this._groups.animation;let properties=group.properties;let animationRow=new WebInspector.DetailsSectionRow;properties.animation=new WebInspector.VisualStyleCommaSeparatedKeywordEditor("animation",null,{"animation-name":"none","animation-timing-function":"ease","animation-iteration-count":"1","animation-duration":"0","animation-delay":"0","animation-direction":"normal","animation-fill-mode":"none","animation-play-state":"running"});animationRow.element.appendChild(properties.animation.element);let animationNameRow=new WebInspector.DetailsSectionRow;let animationName=new WebInspector.VisualStyleBasicInput("animation-name",WebInspector.UIString("Name"),WebInspector.UIString("Enter the name of a Keyframe"));animationName.masterProperty=true;animationNameRow.element.appendChild(animationName.element);let animationTimingRow=new WebInspector.DetailsSectionRow;let animationTiming=new WebInspector.VisualStyleTimingEditor("animation-timing-function",WebInspector.UIString("Timing"),["Linear","Ease","Ease In","Ease Out","Ease In Out"]);animationTiming.optionalProperty=true;let animationIterationCount=new WebInspector.VisualStyleNumberInputBox("animation-iteration-count",WebInspector.UIString("Iterations"),this._keywords.defaults.concat(["Infinite"]),null);animationIterationCount.optionalProperty=true;animationTimingRow.element.appendChild(animationTiming.element);animationTimingRow.element.appendChild(animationIterationCount.element);let animationDurationRow=new WebInspector.DetailsSectionRow;let animationTimeKeywords=["s","ms"];let animationDuration=new WebInspector.VisualStyleNumberInputBox("animation-duration",WebInspector.UIString("Duration"),null,animationTimeKeywords);animationDuration.optionalProperty=true;let animationDelay=new WebInspector.VisualStyleNumberInputBox("animation-delay",WebInspector.UIString("Delay"),null,animationTimeKeywords);animationDelay.optionalProperty=true;animationDurationRow.element.appendChild(animationDuration.element);animationDurationRow.element.appendChild(animationDelay.element);let animationDirectionRow=new WebInspector.DetailsSectionRow;let animationDirection=new WebInspector.VisualStyleKeywordPicker("animation-direction",WebInspector.UIString("Direction"),{basic:this._keywords.normal.concat(["Reverse"]),advanced:["Alternate","Alternate Reverse"]});animationDirection.optionalProperty=true;let animationFillMode=new WebInspector.VisualStyleKeywordPicker("animation-fill-mode",WebInspector.UIString("Fill Mode"),this._keywords.defaults.concat(["None","Forwards","Backwards","Both"]));animationFillMode.optionalProperty=true;animationDirectionRow.element.appendChild(animationDirection.element);animationDirectionRow.element.appendChild(animationFillMode.element);let animationStateRow=new WebInspector.DetailsSectionRow;let animationPlayState=new WebInspector.VisualStyleKeywordIconList("animation-play-state",WebInspector.UIString("State"),["Running","Paused","Initial"]);animationPlayState.optionalProperty=true;animationStateRow.element.appendChild(animationPlayState.element);let animationProperties=[animationName,animationDuration,animationTiming,animationDelay,animationIterationCount,animationDirection,animationFillMode,animationPlayState];let animationPropertyCombiner=new WebInspector.VisualStylePropertyCombiner("animation",animationProperties);let noRemainingCommaSeparatedEditorItems=this._noRemainingCommaSeparatedEditorItems.bind(this,animationPropertyCombiner,animationProperties);properties.animation.addEventListener(WebInspector.VisualStyleCommaSeparatedKeywordEditor.Event.NoRemainingTreeItems,noRemainingCommaSeparatedEditorItems,this);let selectedCommaSeparatedEditorItemValueChanged=this._selectedCommaSeparatedEditorItemValueChanged.bind(this,properties.animation,animationPropertyCombiner);animationPropertyCombiner.addEventListener(WebInspector.VisualStylePropertyEditor.Event.ValueDidChange,selectedCommaSeparatedEditorItemValueChanged,this);let commaSeparatedEditorTreeItemSelected=this._commaSeparatedEditorTreeItemSelected.bind(animationPropertyCombiner);properties.animation.addEventListener(WebInspector.VisualStyleCommaSeparatedKeywordEditor.Event.TreeItemSelected,commaSeparatedEditorTreeItemSelected,this);group.specifiedWidthProperties=[properties.animation];let animationGroup=new WebInspector.DetailsSectionGroup([animationRow,animationNameRow,animationTimingRow,animationDurationRow,animationDirectionRow,animationStateRow]);this._populateSection(group,[animationGroup]);}
_noRemainingCommaSeparatedEditorItems(propertyCombiner,propertyEditors)
{if(!propertyCombiner||!propertyEditors)
return;propertyCombiner.updateValuesFromText("");for(let editor of propertyEditors)
editor.disabled=true;}
_selectedCommaSeparatedEditorItemValueChanged(propertyEditor,propertyCombiner)
{propertyEditor.selectedTreeElementValue=propertyCombiner.synthesizedValue;}
_commaSeparatedEditorTreeItemSelected(event)
{if(typeof this.updateValuesFromText==="function")
this.updateValuesFromText(event.data.text||"");}};WebInspector.VisualStyleDetailsPanel.StyleDisabledSymbol=Symbol("visual-style-style-disabled");WebInspector.VisualStyleDetailsPanel.InitialPropertySectionTextListSymbol=Symbol("visual-style-initial-property-section-text");
WebInspector.VisualStyleDetailsPanel.propertyReferenceInfo={};WebInspector.VisualStylePropertyEditor=class VisualStylePropertyEditor extends WebInspector.Object
{constructor(propertyNames,label,possibleValues,possibleUnits,className,layoutReversed)
{super();this._propertyInfoList=[];this._style=null;function canonicalizeValues(values)
{if(!values)
return;let canonicalizedValues={};for(let value of values)
canonicalizedValues[value.toLowerCase().replace(/\s/g,"-")]=value;return canonicalizedValues;}
this._possibleValues=null;if(possibleValues){this._possibleValues={};if(Array.isArray(possibleValues))
this._possibleValues.basic=canonicalizeValues(possibleValues);else{this._possibleValues.basic=canonicalizeValues(possibleValues.basic);this._possibleValues.advanced=canonicalizeValues(possibleValues.advanced);}}
this._possibleUnits=null;if(possibleUnits){this._possibleUnits={};if(Array.isArray(possibleUnits))
this._possibleUnits.basic=possibleUnits;else
this._possibleUnits=possibleUnits;}
this._dependencies=new Map;this._element=document.createElement("div");this._element.classList.add("visual-style-property-container",className);this._element.classList.toggle("layout-reversed",!!layoutReversed);if(label&&label.length){let titleContainer=this._element.createChild("div","visual-style-property-title");this._titleElement=titleContainer.createChild("span");this._titleElement.append(label);this._titleElement.title=label;this._titleElement.addEventListener("mouseover",this._titleElementMouseOver.bind(this));this._titleElement.addEventListener("mouseout",this._titleElementMouseOut.bind(this));this._titleElement.addEventListener("click",this._titleElementClick.bind(this));this._boundTitleElementPrepareForClick=this._titleElementPrepareForClick.bind(this);}
this._contentElement=this._element.createChild("div","visual-style-property-value-container");this._specialPropertyPlaceholderElement=this._contentElement.createChild("span","visual-style-special-property-placeholder");this._specialPropertyPlaceholderElement.hidden=true;this._warningElement=this._element.createChild("div","visual-style-property-editor-warning");this._updatedValues={};this._lastValue=null;this._propertyMissing=false;if(typeof propertyNames==="string")
propertyNames=[propertyNames];else{this._hasMultipleProperties=true;this._element.classList.add("multiple");}
for(let name of propertyNames){this._element.classList.add(name);this._propertyInfoList.push({name,textContainsNameRegExp:new RegExp("(?:(?:^|;)\\s*"+name+"\\s*:)"),replacementRegExp:new RegExp("((?:^|;)\\s*)("+name+")(.+?(?:;|$))")});}
this._propertyReferenceName=propertyNames[0];this._propertyReferenceText=WebInspector.VisualStyleDetailsPanel.propertyReferenceInfo[this._propertyReferenceName];this._hasPropertyReference=this._propertyReferenceText&&!!this._propertyReferenceText.trim().length;this._representedProperty=null;}
static generateFormattedTextForNewProperty(styleText,propertyName,propertyValue){if(!propertyName||!propertyValue)
return"";styleText=styleText||"";let linePrefixText=WebInspector.indentString();let lineSuffixWhitespace="\n";let trimmedText=styleText.trimRight();let textHasNewlines=trimmedText.includes("\n");if(trimmedText.trimLeft().length){let styleTextPrefixWhitespace=trimmedText.match(/^\s*/);if(styleTextPrefixWhitespace){let linePrefixWhitespaceMatch=styleTextPrefixWhitespace[0].match(/[^\S\n]+$/);if(linePrefixWhitespaceMatch&&textHasNewlines)
linePrefixText=linePrefixWhitespaceMatch[0];else{linePrefixText="";lineSuffixWhitespace=styleTextPrefixWhitespace[0];}}
if(!trimmedText.endsWith(";"))
linePrefixText=";"+linePrefixText;}else
linePrefixText="\n"+linePrefixText;return linePrefixText+propertyName+": "+propertyValue+";"+lineSuffixWhitespace;}
get element()
{return this._element;}
get style()
{return this._style;}
get value()
{}
set value(value)
{}
get units()
{}
set units(unit)
{}
get placeholder()
{}
set placeholder(text)
{}
get synthesizedValue()
{}
set suppressStyleTextUpdate(flag)
{this._suppressStyleTextUpdate=flag;}
set masterProperty(flag)
{this._masterProperty=flag;}
get masterProperty()
{return this._masterProperty;}
set optionalProperty(flag)
{this._optionalProperty=flag;}
get optionalProperty()
{return this._optionalProperty;}
set colorProperty(flag)
{this._colorProperty=flag;}
get colorProperty()
{return this._colorProperty;}
get propertyReferenceName()
{return this._propertyReferenceName;}
set propertyReferenceName(name)
{if(!name||!name.length)
return;this._propertyReferenceName=name;}
set disabled(flag)
{this._disabled=flag;this._element.classList.toggle("disabled",this._disabled);this._toggleTabbingOfSelectableElements(this._disabled);}
get disabled()
{return this._disabled;}
update(style)
{if(style)
this._style=style;else if(this._ignoreNextUpdate){this._ignoreNextUpdate=false;return;}
if(!this._style)
return;this._updatedValues={};let propertyValuesConflict=false;let propertyMissing=false;for(let propertyInfo of this._propertyInfoList){let property=this._style.propertyForName(propertyInfo.name,true);propertyMissing=!property;if(propertyMissing&&this._style.nodeStyles)
property=this._style.nodeStyles.computedStyle.propertyForName(propertyInfo.name);let longhandPropertyValue=null;if(typeof this._generateTextFromLonghandProperties==="function")
longhandPropertyValue=this._generateTextFromLonghandProperties();if(longhandPropertyValue)
propertyMissing=false;let propertyText=(property&&property.value)||longhandPropertyValue;if(!propertyText||!propertyText.length)
continue;if(!propertyMissing&&property&&property.anonymous)
this._representedProperty=property;if(!propertyMissing&&property&&!property.valid){this._element.classList.add("invalid-value");this._warningElement.title=WebInspector.UIString("The value “%s” is not supported for this property.").format(propertyText);this.specialPropertyPlaceholderElementText=propertyText;return;}
let newValues=this.getValuesFromText(propertyText,propertyMissing);if(this._updatedValues.placeholder&&this._updatedValues.placeholder!==newValues.placeholder)
propertyValuesConflict=true;if(!this._updatedValues.placeholder)
this._updatedValues=newValues;if(propertyValuesConflict){this._updatedValues.conflictingValues=true;this.specialPropertyPlaceholderElementText=WebInspector.UIString("(multiple)");break;}}
if(this._hasMultipleProperties)
this._specialPropertyPlaceholderElement.hidden=!propertyValuesConflict;this.updateEditorValues(this._updatedValues);}
updateEditorValues(updatedValues)
{this.value=updatedValues.value;this.units=updatedValues.units;this.placeholder=updatedValues.placeholder;this._lastValue=this.synthesizedValue;this.disabled=false;this._element.classList.remove("invalid-value");this._checkDependencies();}
resetEditorValues(value)
{this._ignoreNextUpdate=false;if(!value||!value.length){this.value=null;this._specialPropertyPlaceholderElement.hidden=false;return;}
let updatedValues=this.getValuesFromText(value);this.updateEditorValues(updatedValues);}
modifyPropertyText(text,value)
{for(let property of this._propertyInfoList){if(property.textContainsNameRegExp.test(text))
text=text.replace(property.replacementRegExp,value!==null?"$1$2: "+value+";":"$1");else if(value!==null)
text+=WebInspector.VisualStylePropertyEditor.generateFormattedTextForNewProperty(text,property.name,value);}
return text;}
getValuesFromText(text,propertyMissing)
{let match=this.parseValue(text);let placeholder=match?match[1]:text;let units=match?match[2]:null;let value=placeholder;if(propertyMissing)
value=this.valueIsSupportedKeyword(text)?text:null;this._propertyMissing=propertyMissing||false;return{value,units,placeholder};}
get propertyMissing()
{return this._updatedValues&&this._propertyMissing;}
valueIsCompatible(value)
{if(!value||!value.length)
return false;return this.valueIsSupportedKeyword(value)||!!this.parseValue(value);}
valueIsSupportedKeyword(value){if(!this._possibleValues)
return false;if(Object.keys(this._possibleValues.basic).includes(value))
return true;return this._valueIsSupportedAdvancedKeyword(value);}
valueIsSupportedUnit(unit)
{if(!this._possibleUnits)
return false;if(this._possibleUnits.basic.includes(unit))
return true;return this._valueIsSupportedAdvancedUnit(unit);}
addDependency(propertyNames,propertyValues)
{if(!propertyNames||!propertyNames.length||!propertyValues||!propertyValues.length)
return;if(!Array.isArray(propertyNames))
propertyNames=[propertyNames];for(let property of propertyNames)
this._dependencies.set(property,propertyValues);}
get contentElement()
{return this._contentElement;}
get specialPropertyPlaceholderElement()
{return this._specialPropertyPlaceholderElement;}
set specialPropertyPlaceholderElementText(text)
{if(!text||!text.length)
return;this._specialPropertyPlaceholderElement.hidden=false;this._specialPropertyPlaceholderElement.textContent=text;}
parseValue(text)
{return/^([^;]+)\s*;?$/.exec(text);}
_valueIsSupportedAdvancedKeyword(value)
{return this._possibleValues.advanced&&Object.keys(this._possibleValues.advanced).includes(value);}
_valueIsSupportedAdvancedUnit(unit)
{return this._possibleUnits.advanced&&this._possibleUnits.advanced.includes(unit);}
_canonicalizedKeywordForKey(value)
{if(!value||!this._possibleValues)
return null;return this._possibleValues.basic[value]||(this._possibleValues.advanced&&this._possibleValues.advanced[value])||null;}
_keyForKeyword(keyword)
{if(!keyword||!keyword.length||!this._possibleValues)
return null;for(let basicKey in this._possibleValues.basic){if(this._possibleValues.basic[basicKey]===keyword)
return basicKey;}
if(!this._possibleValues.advanced)
return null;for(let advancedKey in this._possibleValues.advanced){if(this._possibleValues.advanced[advancedKey]===keyword)
return advancedKey;}
return null;}
_valueDidChange()
{let value=this.synthesizedValue;if(value===this._lastValue)
return false;if(this._style&&!this._suppressStyleTextUpdate){let newText=this._style.text;newText=this._replaceShorthandPropertyWithLonghandProperties(newText);newText=this.modifyPropertyText(newText,value);this._style.text=newText;if(!newText.length)
this._style.update(null,null,this._style.styleSheetTextRange);}
this._lastValue=value;this._propertyMissing=!value;this._ignoreNextUpdate=true;this._specialPropertyPlaceholderElement.hidden=true;this._checkDependencies();this._element.classList.remove("invalid-value");this.dispatchEventToListeners(WebInspector.VisualStylePropertyEditor.Event.ValueDidChange);return true;}
_replaceShorthandPropertyWithLonghandProperties(text)
{if(!this._representedProperty)
return text;let shorthand=this._representedProperty.relatedShorthandProperty;if(!shorthand)
return text;let longhandText="";for(let longhandProperty of shorthand.relatedLonghandProperties){if(longhandProperty.anonymous)
longhandText+=longhandProperty.synthesizedText;}
return longhandText?text.replace(shorthand.text,longhandText):text;}
_hasMultipleConflictingValues()
{return this._hasMultipleProperties&&!this._specialPropertyPlaceholderElement.hidden;}
_checkDependencies()
{if(!this._dependencies.size||!this._style||!this.synthesizedValue){this._element.classList.remove("missing-dependency");return;}
let title="";let dependencies=this._style.nodeStyles.computedStyle.properties.filter((property)=>{return this._dependencies.has(property.name)||this._dependencies.has(property.canonicalName);});for(let property of dependencies){let dependencyValues=this._dependencies.get(property.name);if(!dependencyValues.includes(property.value))
title+="\n "+property.name+": "+dependencyValues.join("/");}
this._element.classList.toggle("missing-dependency",!!title.length);this._warningElement.title=title.length?WebInspector.UIString("Missing Dependencies:%s").format(title):null;}
_titleElementPrepareForClick(event)
{this._titleElement.classList.toggle("property-reference-info",event.type==="keydown"&&event.altKey);}
_titleElementMouseOver(event)
{if(!this._hasPropertyReference)
return;this._titleElement.classList.toggle("property-reference-info",event.altKey);document.addEventListener("keydown",this._boundTitleElementPrepareForClick);document.addEventListener("keyup",this._boundTitleElementPrepareForClick);}
_titleElementMouseOut()
{if(!this._hasPropertyReference)
return;this._titleElement.classList.remove("property-reference-info");document.removeEventListener("keydown",this._boundTitleElementPrepareForClick);document.removeEventListener("keyup",this._boundTitleElementPrepareForClick);}
_titleElementClick(event)
{if(event.altKey)
this._showPropertyInfoPopover();}
_showPropertyInfoPopover()
{if(!this._hasPropertyReference)
return;let propertyInfoElement=document.createElement("p");propertyInfoElement.classList.add("visual-style-property-info-popover");let propertyInfoTitleElement=document.createElement("h3");propertyInfoTitleElement.appendChild(document.createTextNode(this._propertyReferenceName));propertyInfoElement.appendChild(propertyInfoTitleElement);propertyInfoElement.appendChild(document.createTextNode(this._propertyReferenceText));let bounds=WebInspector.Rect.rectFromClientRect(this._titleElement.getBoundingClientRect());let popover=new WebInspector.Popover(this);popover.content=propertyInfoElement;popover.present(bounds.pad(2),[WebInspector.RectEdge.MIN_Y]);popover.windowResizeHandler=()=>{let bounds=WebInspector.Rect.rectFromClientRect(this._titleElement.getBoundingClientRect());popover.present(bounds.pad(2),[WebInspector.RectEdge.MIN_Y]);};}
_toggleTabbingOfSelectableElements(disabled)
{}};WebInspector.VisualStylePropertyEditor.Event={ValueDidChange:"visual-style-property-editor-value-changed"};WebInspector.VisualStyleBackgroundPicker=class VisualStyleBackgroundPicker extends WebInspector.VisualStylePropertyEditor
{constructor(propertyNames,text,possibleValues,layoutReversed)
{super(propertyNames,text,possibleValues,null,"background-picker",layoutReversed);this._gradientSwatch=new WebInspector.InlineSwatch(WebInspector.InlineSwatch.Type.Gradient);this._gradientSwatch.addEventListener(WebInspector.InlineSwatch.Event.ValueChanged,this._gradientSwatchColorChanged,this);this.contentElement.appendChild(this._gradientSwatch.element);this._valueInputElement=document.createElement("input");this._valueInputElement.classList.add("value-input");this._valueInputElement.type="url";this._valueInputElement.placeholder=WebInspector.UIString("Enter a URL");this._valueInputElement.addEventListener("input",this.debounce(250)._valueInputValueChanged);this.contentElement.appendChild(this._valueInputElement);this._valueTypePickerElement=document.createElement("select");this._valueTypePickerElement.classList.add("value-type-picker-select");if(this._possibleValues.advanced)
this._valueTypePickerElement.title=WebInspector.UIString("Option-click to show all values");let imageOption=document.createElement("option");imageOption.value="url";imageOption.text=WebInspector.UIString("Image");this._valueTypePickerElement.appendChild(imageOption);let linearGradientOption=document.createElement("option");linearGradientOption.value="linear-gradient";linearGradientOption.text=WebInspector.UIString("Linear Gradient");this._valueTypePickerElement.appendChild(linearGradientOption);let radialGradientOption=document.createElement("option");radialGradientOption.value="radial-gradient";radialGradientOption.text=WebInspector.UIString("Radial Gradient");this._valueTypePickerElement.appendChild(radialGradientOption);let repeatingLinearGradientOption=document.createElement("option");repeatingLinearGradientOption.value="repeating-linear-gradient";repeatingLinearGradientOption.text=WebInspector.UIString("Repeating Linear Gradient");this._valueTypePickerElement.appendChild(repeatingLinearGradientOption);let repeatingRadialGradientOption=document.createElement("option");repeatingRadialGradientOption.value="repeating-radial-gradient";repeatingRadialGradientOption.text=WebInspector.UIString("Repeating Radial Gradient");this._valueTypePickerElement.appendChild(repeatingRadialGradientOption);this._valueTypePickerElement.appendChild(document.createElement("hr"));this._createValueOptions(this._possibleValues.basic);this._advancedValuesElements=null;this._valueTypePickerElement.addEventListener("mousedown",this._keywordSelectMouseDown.bind(this));this._valueTypePickerElement.addEventListener("change",this._handleKeywordChanged.bind(this));this.contentElement.appendChild(this._valueTypePickerElement);this._currentType="url";}
get value()
{return this._valueInputElement.value;}
set value(value)
{if(!value||!value.length||value===this.value)
return;const isKeyword=this.valueIsSupportedKeyword(value);this._currentType=isKeyword?value:value.substring(0,value.indexOf("("));this._updateValueInput();if(!isKeyword)
this._valueInputElement.value=value.substring(value.indexOf("(")+1,value.length-1);this._valueTypePickerElement.value=this._currentType;if(!this._currentType.includes("gradient"))
return;this._updateGradient();}
get synthesizedValue()
{if(this.valueIsSupportedKeyword(this._currentType))
return this._currentType;return this._currentType+"("+this.value+")";}
parseValue(text)
{const validPrefixes=["url","linear-gradient","radial-gradient","repeating-linear-gradient","repeating-radial-gradient"];return validPrefixes.some((item)=>text.startsWith(item))?[text,text]:null;}
_updateValueInput()
{const supportedKeyword=this.valueIsSupportedKeyword(this._currentType);const gradientValue=this._currentType.includes("gradient");this.contentElement.classList.toggle("gradient-value",!supportedKeyword&&gradientValue);this._valueInputElement.disabled=supportedKeyword;if(supportedKeyword){this._valueInputElement.value="";this._valueInputElement.placeholder=WebInspector.UIString("Using Keyword Value");}else{if(this._currentType==="image"){this._valueInputElement.type="url";this._valueInputElement.placeholder=WebInspector.UIString("Enter a URL");}else if(gradientValue){this._valueInputElement.type="text";this._valueInputElement.placeholder=WebInspector.UIString("Enter a Gradient");}}}
_updateGradient()
{const value=this.synthesizedValue;if(!value||value===this._currentType)
return;this._gradientSwatch.value=WebInspector.Gradient.fromString(value);}
_gradientSwatchColorChanged(event)
{this.value=event.data.value.toString();this._valueDidChange();}
_valueInputValueChanged(event)
{this._updateGradient();this._valueDidChange();}
_keywordSelectMouseDown(event)
{if(event.altKey)
this._addAdvancedValues();else if(!this._valueIsSupportedAdvancedKeyword(this.value))
this._removeAdvancedValues();}
_handleKeywordChanged(event)
{this._currentType=this._valueTypePickerElement.value;this._updateValueInput();this._updateGradient();this._valueDidChange();}
_createValueOptions(values)
{let addedElements=[];for(let key in values){let option=document.createElement("option");option.value=key;option.text=values[key];this._valueTypePickerElement.appendChild(option);addedElements.push(option);}
return addedElements;}
_addAdvancedValues()
{if(this._advancedValuesElements)
return;this._valueTypePickerElement.appendChild(document.createElement("hr"));this._advancedValuesElements=this._createValueOptions(this._possibleValues.advanced);}
_removeAdvancedValues()
{if(!this._advancedValuesElements)
return;this._valueTypePickerElement.removeChild(this._advancedValuesElements[0].previousSibling);for(let element of this._advancedValuesElements)
this._valueTypePickerElement.removeChild(element);this._advancedValuesElements=null;}
_toggleTabbingOfSelectableElements(disabled)
{let tabIndex=disabled?"-1":null;this._valueInputElement.tabIndex=tabIndex;this._valueTypePickerElement.tabIndex=tabIndex;}};WebInspector.VisualStyleBasicInput=class VisualStyleBasicInput extends WebInspector.VisualStylePropertyEditor
{constructor(propertyNames,text,placeholder,layoutReversed)
{super(propertyNames,text,null,null,"basic-input",layoutReversed);this._inputElement=this.contentElement.createChild("input");this._inputElement.spellcheck=false;this._inputElement.setAttribute("placeholder",placeholder||"");this._inputElement.addEventListener("input",this.debounce(250)._handleInputElementInput);}
get value()
{return this._inputElement.value||null;}
set value(value)
{if(value&&value===this.value)
return;this._inputElement.value=value||"";}
get synthesizedValue()
{return this.value;}
_handleInputElementInput(event)
{let value=this.value;if(value&&value.trim().length){let validItems=[];for(let item of value.split(/([^\"\'\s]+|\"[^\"]*\"|\'[^\']*\')/)){if(!item.length||(!item.hasMatchingEscapedQuotes()&&!/^[\w\s\-\.\(\)]+$/.test(item)))
continue;validItems.push(item);}
this.value=validItems.filter(item=>item.trim().length).join(" ");}
this._valueDidChange();}};WebInspector.VisualStyleColorPicker=class VisualStyleColorPicker extends WebInspector.VisualStylePropertyEditor
{constructor(propertyNames,text,layoutReversed)
{super(propertyNames,text,null,null,"input-color-picker",layoutReversed);this._colorSwatch=new WebInspector.InlineSwatch(WebInspector.InlineSwatch.Type.Color);this._colorSwatch.addEventListener(WebInspector.InlineSwatch.Event.ValueChanged,this._colorSwatchColorChanged,this);this.contentElement.appendChild(this._colorSwatch.element);this._textInputElement=document.createElement("input");this._textInputElement.spellcheck=false;this._textInputElement.addEventListener("keydown",this._textInputKeyDown.bind(this));this._textInputElement.addEventListener("keyup",this.debounce(250)._textInputKeyUp);this._textInputElement.addEventListener("blur",this._hideCompletions.bind(this));this.contentElement.appendChild(this._textInputElement);this._completionController=new WebInspector.VisualStyleCompletionsController(this);this._completionController.addEventListener(WebInspector.VisualStyleCompletionsController.Event.CompletionSelected,this._completionClicked,this);this._formatChanged=false;this._updateColorSwatch();this._colorProperty=true;}
get value()
{return this._textInputElement.value;}
set value(value)
{if(value&&value===this.value)
return;this._textInputElement.value=this._hasMultipleConflictingValues()?null:value;this._updateColorSwatch();}
get placeholder()
{return this._textInputElement.getAttribute("placeholder");}
set placeholder(text)
{if(text&&text===this.placeholder)
return;if(this._hasMultipleConflictingValues())
text=this.specialPropertyPlaceholderElement.textContent;this._textInputElement.setAttribute("placeholder",text||"transparent");}
get synthesizedValue()
{return this.value||null;}
get hasCompletions()
{return this._completionController.hasCompletions;}
set completions(completions)
{this._completionController.completions=completions;}
_colorSwatchColorChanged(event)
{let colorString=event&&event.data&&event.data.value&&event.data.value.toString();if(!colorString)
return;this.value=colorString;this._valueDidChange();}
_updateColorSwatch()
{let value=this._textInputElement.value;this._colorSwatch.value=WebInspector.Color.fromString(value);}
_completionClicked(event)
{this.value=event.data.text;this._valueDidChange();}
_textInputKeyDown(event)
{if(!this._completionController.visible)
return;let keyCode=event.keyCode;let enterKeyCode=WebInspector.KeyboardShortcut.Key.Enter.keyCode;let tabKeyCode=WebInspector.KeyboardShortcut.Key.Tab.keyCode;if(keyCode===enterKeyCode||keyCode===tabKeyCode){this.value=this._completionController.currentCompletion;this._hideCompletions();this._valueDidChange();return;}
let escapeKeyCode=WebInspector.KeyboardShortcut.Key.Escape.keyCode;if(keyCode===escapeKeyCode){this._hideCompletions();return;}
let key=event.keyIdentifier;if(key==="Up"){this._completionController.previous();return;}
if(key==="Down"){this._completionController.next();return;}}
_textInputKeyUp()
{this._showCompletionsIfAble();this._updateColorSwatch();this._valueDidChange();}
_showCompletionsIfAble()
{if(!this.hasCompletions)
return;let result=this._valueDidChange();if(!result)
return;if(this._completionController.update(this.value)){let bounds=WebInspector.Rect.rectFromClientRect(this._textInputElement.getBoundingClientRect());if(!bounds)
return;this._completionController.show(bounds,2);}}
_hideCompletions()
{this._completionController.hide();}
_toggleTabbingOfSelectableElements(disabled)
{this._textInputElement.tabIndex=disabled?"-1":null;}};WebInspector.VisualStyleCommaSeparatedKeywordEditor=class VisualStyleCommaSeparatedKeywordEditor extends WebInspector.VisualStylePropertyEditor
{constructor(propertyNames,text,longhandProperties,insertNewItemsBeforeSelected,layoutReversed)
{super(propertyNames,text,null,null,"comma-separated-keyword-editor",layoutReversed);this._insertNewItemsBeforeSelected=insertNewItemsBeforeSelected||false;this._longhandProperties=longhandProperties||{};let listElement=document.createElement("ol");listElement.classList.add("visual-style-comma-separated-keyword-list");listElement.addEventListener("keydown",this._listElementKeyDown.bind(this));this.contentElement.appendChild(listElement);this._commaSeparatedKeywords=new WebInspector.TreeOutline(listElement);this._commaSeparatedKeywords.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._treeSelectionDidChange,this);let controlContainer=document.createElement("div");controlContainer.classList.add("visual-style-comma-separated-keyword-controls");this.contentElement.appendChild(controlContainer);let addGlyphElement=useSVGSymbol("Images/Plus13.svg","visual-style-add-comma-separated-keyword");addGlyphElement.addEventListener("click",this._addEmptyCommaSeparatedKeyword.bind(this));controlContainer.appendChild(addGlyphElement);let removeGlyphElement=useSVGSymbol("Images/Minus.svg","visual-style-remove-comma-separated-keyword",WebInspector.UIString("Remove selected item"));removeGlyphElement.addEventListener("click",this._removeSelectedCommaSeparatedKeyword.bind(this));controlContainer.appendChild(removeGlyphElement);}
set selectedTreeElementValue(text)
{let selectedTreeElement=this._commaSeparatedKeywords.selectedTreeElement;if(!selectedTreeElement)
return;selectedTreeElement.element.classList.toggle("no-value",!text||!text.length);selectedTreeElement.mainTitle=text;this._valueDidChange();}
get value()
{if(!this._commaSeparatedKeywords.hasChildren)
return"";let value="";for(let treeItem of this._commaSeparatedKeywords.children){if(this._treeElementIsEmpty(treeItem))
continue;if(value.length)
value+=", ";let text=treeItem.mainTitle;if(typeof this._modifyCommaSeparatedKeyword==="function")
text=this._modifyCommaSeparatedKeyword(text);value+=text;}
return value;}
set value(commaSeparatedValue)
{if(commaSeparatedValue&&commaSeparatedValue===this.value)
return;this._commaSeparatedKeywords.removeChildren();if(!commaSeparatedValue||!commaSeparatedValue.length){this.dispatchEventToListeners(WebInspector.VisualStyleCommaSeparatedKeywordEditor.Event.NoRemainingTreeItems);return;}
let values=commaSeparatedValue.split(/\)\s*,\s*(?![^\(\)]*\))/);for(let i=0;i<values.length;++i){if(!values[i].includes(","))
continue;let openParentheses=values[i].getMatchingIndexes("(").length;let closedParenthesis=values[i].getMatchingIndexes(")").length;values[i]+=(openParentheses-closedParenthesis===1)?")":"";}
let hasParenthesis=values[0]&&(values[0].includes("(")||values[0].includes(")"));if(values.length===1&&(!hasParenthesis||!/\([^\)]*,[^\)]*\)/.test(values[0])))
values=values[0].split(/\s*,\s*/);for(let value of values)
this._addCommaSeparatedKeyword(value);this._commaSeparatedKeywords.children[0].select(true);}
get synthesizedValue()
{return this.value||null;}
recalculateWidth(value)
{if(this._titleElement){ value-=74;}else{ value-=22;}
this.contentElement.style.width=Math.max(value,0)+"px";}
_generateTextFromLonghandProperties()
{let text="";if(!this._style)
return text;function propertyValue(existingProperty,propertyName){if(existingProperty)
return existingProperty.value;if(propertyName)
return this._longhandProperties[propertyName];return"";}
let onePropertyExists=false;let valueLists=[];let valuesCount=0;for(let propertyName in this._longhandProperties){let existingProperty=this._style.propertyForName(propertyName,true);if(existingProperty)
onePropertyExists=true;let matches=propertyValue.call(this,existingProperty,propertyName).split(/\s*,\s*(?![^\(]*\))/);valuesCount=Math.max(valuesCount,matches.length);valueLists.push(matches);}
if(!onePropertyExists)
return text;let count=0;while(count<valuesCount){if(count>0)
text+=", ";for(let valueList of valueLists)
text+=valueList[count>valueList.length-1?valueList.length-1:count]+" ";++count;}
return text;}
modifyPropertyText(text,value)
{for(let property in this._longhandProperties){let replacementRegExp=new RegExp(property+"\s*:\s*[^;]*(;|$)");text=text.replace(replacementRegExp,"");}
return super.modifyPropertyText(text,value);}
_listElementKeyDown(event)
{let selectedTreeElement=this._commaSeparatedKeywords.selectedTreeElement;if(!selectedTreeElement)
return;if(selectedTreeElement.currentlyEditing)
return;let keyCode=event.keyCode;let backspaceKeyCode=WebInspector.KeyboardShortcut.Key.Backspace.keyCode;let deleteKeyCode=WebInspector.KeyboardShortcut.Key.Delete.keyCode;if(keyCode===backspaceKeyCode||keyCode===deleteKeyCode)
this._removeSelectedCommaSeparatedKeyword();}
_treeSelectionDidChange(event)
{let treeElement=event.data.selectedElement;if(!treeElement)
return;this._removeEmptyCommaSeparatedKeywords();this.dispatchEventToListeners(WebInspector.VisualStyleCommaSeparatedKeywordEditor.Event.TreeItemSelected,{text:treeElement.mainTitle});}
_treeElementIsEmpty(item)
{return!item._mainTitle||!item._mainTitle.length;}
_addEmptyCommaSeparatedKeyword()
{let newTreeElement=this._addCommaSeparatedKeyword(null,this._commaSeparatedKeywords.selectedTreeElementIndex);newTreeElement.subtitle=WebInspector.UIString("(modify the boxes below to add a value)");newTreeElement.element.classList.add("no-value");newTreeElement.select(true,true);return newTreeElement;}
_removeSelectedCommaSeparatedKeyword()
{let selectedTreeElement=this._commaSeparatedKeywords.selectedTreeElement;this._removeCommaSeparatedKeyword(selectedTreeElement);}
_removeEmptyCommaSeparatedKeywords()
{for(let treeElement of this._commaSeparatedKeywords.children){if(!this._treeElementIsEmpty(treeElement)||treeElement.selected)
continue;treeElement.deselect();this._removeCommaSeparatedKeyword(treeElement);}}
_addCommaSeparatedKeyword(value,index)
{let valueElement=this._createNewTreeElement(value);if(!isNaN(index))
this._commaSeparatedKeywords.insertChild(valueElement,index+!this._insertNewItemsBeforeSelected);else
this._commaSeparatedKeywords.appendChild(valueElement);return valueElement;}
_removeCommaSeparatedKeyword(treeElement)
{if(!treeElement)
return;this._commaSeparatedKeywords.removeChild(treeElement);if(!this._commaSeparatedKeywords.children.length)
this.dispatchEventToListeners(WebInspector.VisualStyleCommaSeparatedKeywordEditor.Event.NoRemainingTreeItems);this._valueDidChange();}
_createNewTreeElement(value)
{return new WebInspector.GeneralTreeElement(WebInspector.VisualStyleCommaSeparatedKeywordEditor.ListItemClassName,value);}};WebInspector.VisualStyleCommaSeparatedKeywordEditor.ListItemClassName="visual-style-comma-separated-keyword-item";WebInspector.VisualStyleCommaSeparatedKeywordEditor.Event={TreeItemSelected:"visual-style-comma-separated-keyword-editor-tree-item-selected",NoRemainingTreeItems:"visual-style-comma-separated-keyword-editor-no-remaining-tree-items"};WebInspector.VisualStyleFontFamilyListEditor=class VisualStyleFontFamilyListEditor extends WebInspector.VisualStyleCommaSeparatedKeywordEditor
{constructor(propertyNames,text,longhandProperties,layoutReversed)
{super(propertyNames,text,longhandProperties,true,layoutReversed);this._commaSeparatedKeywords.element.addEventListener("scroll",this._hideCompletions.bind(this));this._completionController=new WebInspector.VisualStyleCompletionsController(this);this._completionController.addEventListener(WebInspector.VisualStyleCompletionsController.Event.CompletionSelected,this._completionClicked,this);this._wrapWithQuotesRegExp=/^[a-zA-Z\-]+$/;this._removeWrappedQuotesRegExp=/[\"\']/g;}
visualStyleCompletionsControllerCustomizeCompletionElement(suggestionsView,element,item)
{element.style.fontFamily=item;}
get hasCompletions()
{return this._completionController.hasCompletions;}
set completions(completions)
{this._completionController.completions=completions;}
_modifyCommaSeparatedKeyword(text)
{if(!this._wrapWithQuotesRegExp.test(text))
text="\""+text+"\"";return text;}
_addCommaSeparatedKeyword(value,index)
{if(value)
value=value.replace(this._removeWrappedQuotesRegExp,"");let valueElement=super._addCommaSeparatedKeyword(value,index);valueElement.addEventListener(WebInspector.VisualStyleFontFamilyTreeElement.Event.EditorKeyDown,this._treeElementKeyDown,this);valueElement.addEventListener(WebInspector.VisualStyleFontFamilyTreeElement.Event.KeywordChanged,this._treeElementKeywordChanged,this);valueElement.addEventListener(WebInspector.VisualStyleFontFamilyTreeElement.Event.EditorBlurred,this._hideCompletions,this);return valueElement;}
_addEmptyCommaSeparatedKeyword()
{let newItem=super._addEmptyCommaSeparatedKeyword();newItem.showKeywordEditor();}
_completionClicked(event)
{this.value=event.data.text;this._valueDidChange();}
_treeElementKeyDown(event)
{if(!this._completionController.visible)
return;let key=event&&event.data&&event.data.key;if(!key)
return;if(key==="Enter"||key==="Tab"){let selectedTreeElement=this._commaSeparatedKeywords.selectedTreeElement;if(!selectedTreeElement)
return;selectedTreeElement.updateMainTitle(this._completionController.currentCompletion);this._completionController.hide();return;}
if(key==="Escape"){this._hideCompletions();return;}
if(key==="Up"){this._completionController.previous();return;}
if(key==="Down"){this._completionController.next();return;}}
_treeElementKeywordChanged()
{if(!this.hasCompletions)
return;let result=this._valueDidChange();if(!result)
return;let treeElement=this._commaSeparatedKeywords.selectedTreeElement;if(!treeElement)
return;if(this._completionController.update(treeElement.mainTitle)){let bounds=treeElement.editorBounds(2);if(!bounds)
return;this._completionController.show(bounds);}}
_hideCompletions()
{this._completionController.hide();}
_createNewTreeElement(value)
{return new WebInspector.VisualStyleFontFamilyTreeElement(value);}};WebInspector.VisualStyleFontFamilyTreeElement=class VisualStyleFontFamilyTreeElement extends WebInspector.GeneralTreeElement
{constructor(text)
{super([WebInspector.VisualStyleCommaSeparatedKeywordEditor.ListItemClassName,"visual-style-font-family-list-item"],text);this._keywordEditor=document.createElement("input");this._keywordEditor.classList.add("visual-style-comma-separated-keyword-item-editor");this._keywordEditor.placeholder=WebInspector.UIString("(modify the boxes below to add a value)");this._keywordEditor.spellcheck=false;this._keywordEditor.addEventListener("keydown",this._keywordEditorKeyDown.bind(this));this._keywordEditor.addEventListener("keyup",this._keywordEditorKeyUp.bind(this));this._keywordEditor.addEventListener("blur",this._keywordEditorBlurred.bind(this));}
editorBounds(padding)
{if(this.keywordEditorHidden)
return;let bounds=WebInspector.Rect.rectFromClientRect(this._keywordEditor.getBoundingClientRect());return bounds.pad(padding||0);}
updateMainTitle(text)
{this.mainTitle=this._keywordEditor.value=text;this._listItemNode.style.fontFamily=text+", "+WebInspector.VisualStyleFontFamilyTreeElement.FontFamilyFallback;let hasText=text&&text.length;this._listItemNode.classList.toggle("no-value",!hasText);if(!hasText)
this.subtitle=this._keywordEditor.placeholder;this.dispatchEventToListeners(WebInspector.VisualStyleFontFamilyTreeElement.Event.KeywordChanged);}
get currentlyEditing()
{return!this.keywordEditorHidden;}
showKeywordEditor()
{if(!this.keywordEditorHidden)
return;this.subtitle="";this._listItemNode.classList.remove("editor-hidden");this._listItemNode.scrollIntoViewIfNeeded();this._keywordEditor.value=this._mainTitle;this._keywordEditor.select();}
hideKeywordEditor()
{if(this.keywordEditorHidden)
return;this.updateMainTitle(this._keywordEditor.value);this._listItemNode.classList.add("editor-hidden");}
get keywordEditorHidden()
{return this._listItemNode.classList.contains("editor-hidden");}
onattach()
{super.onattach();this._listItemNode.style.fontFamily=this._mainTitle;this._listItemNode.classList.add("editor-hidden");this._listItemNode.appendChild(this._keywordEditor);this._listItemNode.addEventListener("click",this.showKeywordEditor.bind(this));}
ondeselect()
{this.hideKeywordEditor();}
_keywordEditorKeyDown(event)
{if(this.keywordEditorHidden)
return;let keyCode=event.keyCode;let enterKeyCode=WebInspector.KeyboardShortcut.Key.Enter.keyCode;if(keyCode===enterKeyCode){this._listItemNode.classList.add("editor-hidden");this.dispatchEventToListeners(WebInspector.VisualStyleFontFamilyTreeElement.Event.EditorKeyDown,{key:"Enter"});return;}
let escapeKeyCode=WebInspector.KeyboardShortcut.Key.Escape.keyCode;if(keyCode===escapeKeyCode){this.dispatchEventToListeners(WebInspector.VisualStyleFontFamilyTreeElement.Event.EditorKeyDown,{key:"Escape"});return;}
let tabKeyCode=WebInspector.KeyboardShortcut.Key.Tab.keyCode;if(keyCode===tabKeyCode){event.preventDefault();this._dontFireKeyUp=true;this.dispatchEventToListeners(WebInspector.VisualStyleFontFamilyTreeElement.Event.EditorKeyDown,{key:"Tab"});return;}
let key=event.keyIdentifier;if(key==="Up"||key==="Down"){event.preventDefault();this._dontFireKeyUp=true;this.dispatchEventToListeners(WebInspector.VisualStyleFontFamilyTreeElement.Event.EditorKeyDown,{key});return;}
this.dispatchEventToListeners(WebInspector.VisualStyleFontFamilyTreeElement.Event.EditorKeyDown);}
_keywordEditorKeyUp()
{if(this.keywordEditorHidden||this._dontFireKeyUp)
return;this.updateMainTitle(this._keywordEditor.value);}
_keywordEditorBlurred()
{this.hideKeywordEditor();this.dispatchEventToListeners(WebInspector.VisualStyleFontFamilyTreeElement.Event.EditorBlurred);}};WebInspector.VisualStyleFontFamilyTreeElement.FontFamilyFallback="-apple-system, sans-serif";WebInspector.VisualStyleFontFamilyTreeElement.Event={KeywordChanged:"visual-style-font-family-tree-element-keyword-changed",EditorKeyDown:"visual-style-font-family-tree-element-editor-key-down",EditorBlurred:"visual-style-font-family-tree-element-editor-blurred"};WebInspector.VisualStyleKeywordCheckbox=class VisualStyleKeywordCheckbox extends WebInspector.VisualStylePropertyEditor
{constructor(propertyNames,text,value,layoutReversed)
{super(propertyNames,text,null,null,"keyword-checkbox",layoutReversed);this._checkboxElement=document.createElement("input");this._checkboxElement.type="checkbox";this._checkboxElement.addEventListener("change",this._valueDidChange.bind(this));this.contentElement.appendChild(this._checkboxElement);this._value=value.toLowerCase().replace(/\s/g,"-")||null;}
get value()
{return this._checkboxElement.checked?this._value:null;}
set value(value)
{this._checkboxElement.checked=value===this._value;}
get synthesizedValue()
{return this.value;}
_toggleTabbingOfSelectableElements(disabled)
{this._checkboxElement.tabIndex=disabled?"-1":null;}};WebInspector.VisualStyleKeywordIconList=class VisualStyleKeywordIconList extends WebInspector.VisualStylePropertyEditor
{constructor(propertyNames,text,possibleValues,layoutReversed)
{super(propertyNames,text,possibleValues,null,"keyword-icon-list",layoutReversed);this._iconListContainer=document.createElement("div");this._iconListContainer.classList.add("keyword-icon-list-container");this._iconElements=[];this._computedIcon=null;this._selectedIcon=null;let prettyPropertyReferenceName=this._propertyReferenceName.capitalize().replace(/(-.)/g,(match)=>match[1].toUpperCase());function createListItem(value,title){let iconButtonElement=document.createElement("button");iconButtonElement.id=value;iconButtonElement.title=title;iconButtonElement.classList.add("keyword-icon");iconButtonElement.addEventListener("click",this._handleKeywordChanged.bind(this));let imageName=(value==="none"||value==="initial")?"VisualStyleNone":prettyPropertyReferenceName+title.replace(/\s/g,"");iconButtonElement.appendChild(useSVGSymbol("Images/"+imageName+".svg"));return iconButtonElement;}
for(let key in this._possibleValues.basic){let iconElement=createListItem.call(this,key,this._possibleValues.basic[key]);this._iconListContainer.appendChild(iconElement);this._iconElements.push(iconElement);}
this.contentElement.appendChild(this._iconListContainer);}
get value()
{if(!this._selectedIcon)
return null;return this._selectedIcon.id;}
set value(value)
{this._computedIcon=null;this._selectedIcon=null;for(let icon of this._iconElements){icon.classList.remove("selected","computed");if(icon.id===this._updatedValues.placeholder)
this._computedIcon=icon;if(icon.id===value&&!this._propertyMissing)
this._selectedIcon=icon;}
if(!this._computedIcon)
this._computedIcon=this._iconElements[0];if(this._selectedIcon)
this._selectedIcon.classList.add("selected");else
this._computedIcon.classList.add("computed");}
get synthesizedValue()
{return this.value;}
_handleKeywordChanged(event)
{let toggleOff=this.value===event.target.id;this._propertyMissing=toggleOff;this.value=toggleOff?null:event.target.id;this._valueDidChange();}};WebInspector.VisualStyleKeywordPicker=class VisualStyleKeywordPicker extends WebInspector.VisualStylePropertyEditor
{constructor(propertyNames,text,possibleValues,layoutReversed)
{super(propertyNames,text,possibleValues,null,"keyword-picker",layoutReversed);this._keywordSelectElement=document.createElement("select");this._keywordSelectElement.classList.add("keyword-picker-select");if(this._possibleValues.advanced)
this._keywordSelectElement.title=WebInspector.UIString("Option-click to show all values");this._unchangedOptionElement=document.createElement("option");this._unchangedOptionElement.value="";this._unchangedOptionElement.text=WebInspector.UIString("Unchanged");this._keywordSelectElement.appendChild(this._unchangedOptionElement);this._keywordSelectElement.appendChild(document.createElement("hr"));this._createValueOptions(this._possibleValues.basic);this._advancedValuesElements=null;this._keywordSelectElement.addEventListener("mousedown",this._keywordSelectMouseDown.bind(this));this._keywordSelectElement.addEventListener("change",this._handleKeywordChanged.bind(this));this.contentElement.appendChild(this._keywordSelectElement);}
get value()
{return this._keywordSelectElement.value;}
set value(value)
{if(!value||!value.length){this._unchangedOptionElement.selected=true;this.specialPropertyPlaceholderElement.hidden=false;return;}
if(this._propertyMissing||!this.valueIsSupportedKeyword(value))
return;if(value===this._keywordSelectElement.value)
return;if(this._valueIsSupportedAdvancedKeyword(value))
this._addAdvancedValues();this._keywordSelectElement.value=value;}
set placeholder(placeholder)
{if(this._updatedValues.conflictingValues)
return;this.specialPropertyPlaceholderElement.textContent=this._canonicalizedKeywordForKey(placeholder)||placeholder;}
get synthesizedValue()
{return this._unchangedOptionElement.selected?null:this._keywordSelectElement.value;}
updateEditorValues(updatedValues)
{if(!updatedValues.conflictingValues){let missing=this._propertyMissing||!updatedValues.value;this._unchangedOptionElement.selected=missing;this.specialPropertyPlaceholderElement.hidden=!missing;}
super.updateEditorValues(updatedValues);}
_handleKeywordChanged()
{this._valueDidChange();this.specialPropertyPlaceholderElement.hidden=!this._unchangedOptionElement.selected;}
_keywordSelectMouseDown(event)
{if(event.altKey)
this._addAdvancedValues();else if(!this._valueIsSupportedAdvancedKeyword(this.value))
this._removeAdvancedValues();}
_createValueOptions(values)
{let addedElements=[];for(let key in values){let option=document.createElement("option");option.value=key;option.text=values[key];this._keywordSelectElement.appendChild(option);addedElements.push(option);}
return addedElements;}
_addAdvancedValues()
{if(this._advancedValuesElements)
return;this._keywordSelectElement.appendChild(document.createElement("hr"));this._advancedValuesElements=this._createValueOptions(this._possibleValues.advanced);}
_removeAdvancedValues()
{if(!this._advancedValuesElements)
return;this._keywordSelectElement.removeChild(this._advancedValuesElements[0].previousSibling);for(let element of this._advancedValuesElements)
this._keywordSelectElement.removeChild(element);this._advancedValuesElements=null;}
_toggleTabbingOfSelectableElements(disabled)
{this._keywordSelectElement.tabIndex=disabled?"-1":null;}};WebInspector.VisualStyleNumberInputBox=class VisualStyleNumberInputBox extends WebInspector.VisualStylePropertyEditor
{constructor(propertyNames,text,possibleValues,possibleUnits,allowNegativeValues,layoutReversed)
{let unitlessNumberUnit=WebInspector.UIString("Number");super(propertyNames,text,possibleValues,possibleUnits||[unitlessNumberUnit],"number-input-box",layoutReversed);this._unitlessNumberUnit=unitlessNumberUnit;this._hasUnits=this._possibleUnits.basic.some((unit)=>unit!==unitlessNumberUnit);this._allowNegativeValues=!!allowNegativeValues||false;this.contentElement.classList.toggle("no-values",!possibleValues||!possibleValues.length);this.contentElement.classList.toggle("no-units",!this._hasUnits);let focusRingElement=document.createElement("div");focusRingElement.classList.add("focus-ring");this.contentElement.appendChild(focusRingElement);this._keywordSelectElement=document.createElement("select");this._keywordSelectElement.classList.add("number-input-keyword-select");if(this._possibleUnits.advanced)
this._keywordSelectElement.title=WebInspector.UIString("Option-click to show all units");this._unchangedOptionElement=document.createElement("option");this._unchangedOptionElement.value="";this._unchangedOptionElement.text=WebInspector.UIString("Unchanged");this._keywordSelectElement.appendChild(this._unchangedOptionElement);this._keywordSelectElement.appendChild(document.createElement("hr"));if(this._possibleValues){this._createValueOptions(this._possibleValues.basic);this._keywordSelectElement.appendChild(document.createElement("hr"));}
if(this._possibleUnits)
this._createUnitOptions(this._possibleUnits.basic);this._advancedUnitsElements=null;this._keywordSelectElement.addEventListener("focus",this._focusContentElement.bind(this));this._keywordSelectElement.addEventListener("mousedown",this._keywordSelectMouseDown.bind(this));this._keywordSelectElement.addEventListener("change",this._keywordChanged.bind(this));this._keywordSelectElement.addEventListener("blur",this._blurContentElement.bind(this));this.contentElement.appendChild(this._keywordSelectElement);this._numberUnitsContainer=document.createElement("div");this._numberUnitsContainer.classList.add("number-input-container");this._valueNumberInputElement=document.createElement("input");this._valueNumberInputElement.classList.add("number-input-value");this._valueNumberInputElement.spellcheck=false;this._valueNumberInputElement.addEventListener("focus",this._focusContentElement.bind(this));this._valueNumberInputElement.addEventListener("keydown",this._valueNumberInputKeyDown.bind(this));this._valueNumberInputElement.addEventListener("keyup",this.debounce(250)._valueNumberInputKeyUp);this._valueNumberInputElement.addEventListener("blur",this._blurContentElement.bind(this));this._valueNumberInputElement.addEventListener("change",this.debounce(250)._valueNumberInputChanged);this._numberUnitsContainer.appendChild(this._valueNumberInputElement);this._unitsElement=document.createElement("span");this._numberUnitsContainer.appendChild(this._unitsElement);this.contentElement.appendChild(this._numberUnitsContainer);this._setNumberInputIsEditable(true);this._valueNumberInputElement.value=null;this._valueNumberInputElement.setAttribute("placeholder",0);this._unitsElementTextContent=this._keywordSelectElement.value=this.valueIsSupportedUnit("px")?"px":this._possibleUnits.basic[0];}
get value()
{if(this._numberInputIsEditable)
return parseFloat(this._valueNumberInputElement.value);return this._keywordSelectElement.value||null;}
set value(value)
{if(value&&value===this.value)
return;if(this._propertyMissing){if(value||this._updatedValues.placeholder)
this.specialPropertyPlaceholderElement.textContent=(value||this._updatedValues.placeholder)+(this._updatedValues.units||"");if(isNaN(value)){this._unchangedOptionElement.selected=true;this._setNumberInputIsEditable();this.specialPropertyPlaceholderElement.hidden=false;return;}}
this.specialPropertyPlaceholderElement.hidden=true;if(!value){this._valueNumberInputElement.value=null;this._markUnitsContainerIfInputHasValue();return;}
if(!isNaN(value)){this._setNumberInputIsEditable(true);this._valueNumberInputElement.value=Math.round(value*100)/100;this._markUnitsContainerIfInputHasValue();return;}
if(this.valueIsSupportedKeyword(value)){this._setNumberInputIsEditable();this._keywordSelectElement.value=value;return;}}
get units()
{if(this._unchangedOptionElement.selected)
return null;let keyword=this._keywordSelectElement.value;if(!this.valueIsSupportedUnit(keyword))
return null;return keyword;}
set units(unit)
{if(this._unchangedOptionElement.selected||unit===this.units)
return;if(!unit&&!this._possibleUnits.basic.includes(this._unitlessNumberUnit)&&!this.valueIsSupportedUnit(unit))
return;if(this._valueIsSupportedAdvancedUnit(unit))
this._addAdvancedUnits();this._setNumberInputIsEditable(true);this._keywordSelectElement.value=unit||this._unitlessNumberUnit;this._unitsElementTextContent=unit;}
get placeholder()
{return this._valueNumberInputElement.getAttribute("placeholder");}
set placeholder(text)
{if(text===this.placeholder)
return;let onlyNumericalText=text&&!isNaN(text)&&(Math.round(text*100)/100);this._valueNumberInputElement.setAttribute("placeholder",onlyNumericalText||0);if(!onlyNumericalText)
this.specialPropertyPlaceholderElement.textContent=this._canonicalizedKeywordForKey(text)||text;}
get synthesizedValue()
{if(this._unchangedOptionElement.selected)
return null;let value=this._valueNumberInputElement.value;if(this._numberInputIsEditable&&!value)
return null;let keyword=this._keywordSelectElement.value;return this.valueIsSupportedUnit(keyword)?value+(keyword===this._unitlessNumberUnit?"":keyword):keyword;}
updateValueFromText(text,value)
{let match=this.parseValue(value);this.value=match?match[1]:value;this.units=match?match[2]:null;return this.modifyPropertyText(text,value);}
set specialPropertyPlaceholderElementText(text)
{this._unchangedOptionElement.selected=true;super.specialPropertyPlaceholderElementText=text;}
parseValue(text)
{return/^(-?[\d.]+)([^\s\d]{0,4})(?:\s*;?)$/.exec(text);}
set _unitsElementTextContent(text)
{if(!this._hasUnits)
return;this._unitsElement.textContent=text===this._unitlessNumberUnit?"":text;this._markUnitsContainerIfInputHasValue();}
_setNumberInputIsEditable(flag)
{this._numberInputIsEditable=flag||false;this.contentElement.classList.toggle("number-input-editable",this._numberInputIsEditable);}
_markUnitsContainerIfInputHasValue()
{let numberInputValue=this._valueNumberInputElement.value;this._numberUnitsContainer.classList.toggle("has-value",numberInputValue&&numberInputValue.length);}
_keywordChanged()
{let unchangedOptionSelected=this._unchangedOptionElement.selected;if(!unchangedOptionSelected){let selectedKeywordIsUnit=this.valueIsSupportedUnit(this._keywordSelectElement.value);if(!this._numberInputIsEditable&&selectedKeywordIsUnit)
this._valueNumberInputElement.value=null;this._unitsElementTextContent=this._keywordSelectElement.value;this._setNumberInputIsEditable(selectedKeywordIsUnit);}else
this._setNumberInputIsEditable(false);this._valueDidChange();this.specialPropertyPlaceholderElement.hidden=!unchangedOptionSelected;}
_valueNumberInputKeyDown(event)
{if(!this._numberInputIsEditable)
return;function adjustValue(delta)
{let newValue;let value=this.value;if(!value&&isNaN(value)){let placeholderValue=this.placeholder&&!isNaN(this.placeholder)?parseFloat(this.placeholder):0;newValue=placeholderValue+delta;}else
newValue=value+delta;if(!this._allowNegativeValues&&newValue<0)
newValue=0;this._propertyMissing=false;this.value=Math.round(newValue*100)/100;this._valueDidChange();}
let shift=1;if(event.ctrlKey)
shift/=10;else if(event.shiftKey)
shift*=10;let key=event.keyIdentifier;if(key.startsWith("Page"))
shift*=10;if(key==="Up"||key==="PageUp"){event.preventDefault();adjustValue.call(this,shift);return;}
if(key==="Down"||key==="PageDown"){event.preventDefault();adjustValue.call(this,-shift);return;}
this._markUnitsContainerIfInputHasValue();this.debounce(250)._valueDidChange();}
_valueNumberInputKeyUp(event)
{if(!this._numberInputIsEditable)
return;this._markUnitsContainerIfInputHasValue();this._valueDidChange();}
_keywordSelectMouseDown(event)
{if(event.altKey)
this._addAdvancedUnits();else if(!this._valueIsSupportedAdvancedUnit(this._keywordSelectElement.value))
this._removeAdvancedUnits();}
_createValueOptions(values)
{let addedElements=[];for(let key in values){let option=document.createElement("option");option.value=key;option.text=values[key];this._keywordSelectElement.appendChild(option);addedElements.push(option);}
return addedElements;}
_createUnitOptions(units)
{let addedElements=[];for(let unit of units){let option=document.createElement("option");option.text=unit;this._keywordSelectElement.appendChild(option);addedElements.push(option);}
return addedElements;}
_addAdvancedUnits()
{if(this._advancedUnitsElements)
return;this._keywordSelectElement.appendChild(document.createElement("hr"));this._advancedUnitsElements=this._createUnitOptions(this._possibleUnits.advanced);}
_removeAdvancedUnits()
{if(!this._advancedUnitsElements)
return;this._keywordSelectElement.removeChild(this._advancedUnitsElements[0].previousSibling);for(let element of this._advancedUnitsElements)
this._keywordSelectElement.removeChild(element);this._advancedUnitsElements=null;}
_focusContentElement(event)
{this.contentElement.classList.add("focused");}
_blurContentElement(event)
{this.contentElement.classList.remove("focused");}
_valueNumberInputChanged(event)
{let newValue=this.value;if(!newValue&&isNaN(newValue))
newValue=this.placeholder&&!isNaN(this.placeholder)?parseFloat(this.placeholder):0;if(!this._allowNegativeValues&&newValue<0)
newValue=0;this.value=Math.round(newValue*100)/100;this._valueDidChange();}
_toggleTabbingOfSelectableElements(disabled)
{this._keywordSelectElement.tabIndex=disabled?"-1":null;this._valueNumberInputElement.tabIndex=disabled?"-1":null;}};WebInspector.VisualStylePropertyCombiner=class VisualStylePropertyCombiner extends WebInspector.Object
{constructor(propertyName,propertyEditors,spreadNumberValues)
{super();this._style=null;this._propertyName=propertyName;this._propertyMissing=false;this._propertyEditors=propertyEditors||[];this._spreadNumberValues=!!spreadNumberValues&&this._propertyEditors.length>=4;for(let editor of this._propertyEditors){editor.addEventListener(WebInspector.VisualStylePropertyEditor.Event.ValueDidChange,this._handlePropertyEditorValueChanged,this);editor.suppressStyleTextUpdate=true;}
this._textContainsNameRegExp=new RegExp("(?:(?:^|;)\\s*"+this._propertyName+"\\s*:)");this._replacementRegExp=new RegExp("((?:^|;)\\s*)("+this._propertyName+")(.+?(?:;|$))");this._valueRegExp=/([^\s]+\(.+\)|[^\s]+)(?:;?)/g;}
get style()
{return this._style;}
get synthesizedValue()
{let value="";let oneEditorHasValue=false;for(let editor of this._propertyEditors){let editorValue=editor.synthesizedValue;if(editorValue&&editorValue.length)
oneEditorHasValue=true;else if(editor.optionalProperty)
continue;if(editor.masterProperty&&editor.valueIsSupportedKeyword(editor.value)){this._markEditors(editor,true);return editorValue;}
if(editor!==this._propertyEditors[0])
value+=" ";value+=editorValue||(editor.colorProperty?"transparent":0);}
this._markEditors();return value.length&&oneEditorHasValue?value:null;}
modifyPropertyText(text,value)
{if(this._textContainsNameRegExp.test(text))
text=text.replace(this._replacementRegExp,value!==null?"$1$2: "+value+";":"$1");else if(value!==null)
text+=WebInspector.VisualStylePropertyEditor.generateFormattedTextForNewProperty(text,this._propertyName,value);return text;}
update(style)
{if(style)
this._style=style;else if(this._ignoreNextUpdate){this._ignoreNextUpdate=false;return;}
if(!this._style||!this._valueRegExp)
return;let property=this._style.propertyForName(this._propertyName,true);let propertyMissing=!property;if(propertyMissing&&this._style.nodeStyles)
property=this._style.nodeStyles.computedStyle.propertyForName(this._propertyName);if(!property)
return;this.updateValuesFromText(property.value,propertyMissing);this._propertyMissing=propertyMissing;}
updateValuesFromText(styleText,propertyMissing)
{if(styleText===this.synthesizedValue)
return;for(let editor of this._propertyEditors)
editor[WebInspector.VisualStylePropertyCombiner.EditorUpdatedSymbol]=false;function updateEditor(editor,value){let updatedValues=editor.getValuesFromText(value||"",propertyMissing);if(!updatedValues)
return;editor.updateEditorValues(updatedValues);editor[WebInspector.VisualStylePropertyCombiner.EditorUpdatedSymbol]=true;}
if(this._spreadNumberValues){let numberValues=styleText.match(/\d+[\w%]*/g);let count=numberValues&&numberValues.length;if(count===1){for(let editor of this._propertyEditors)
updateEditor(editor,numberValues[0]);}else if(count===2){for(let i=0;i<count;++i){updateEditor(this._propertyEditors[i],numberValues[i]);updateEditor(this._propertyEditors[i+2],numberValues[i]);}}else if(count===3){updateEditor(this._propertyEditors[0],numberValues[0]);updateEditor(this._propertyEditors[1],numberValues[1]);updateEditor(this._propertyEditors[2],numberValues[2]);updateEditor(this._propertyEditors[3],numberValues[1]);}}
function updateCompatibleEditor(value){for(let editor of this._propertyEditors){if(value&&!editor.valueIsCompatible(value)||editor[WebInspector.VisualStylePropertyCombiner.EditorUpdatedSymbol])
continue;if(this._currentValueIsKeyword&&editor.disabled)
continue;updateEditor(editor,value);if(value)
return;}}
let matches=styleText.match(this._valueRegExp);for(let i=0;i<this._propertyEditors.length;++i)
updateCompatibleEditor.call(this,matches&&matches[i]);}
get propertyMissing()
{return this._propertyMissing;}
resetEditorValues(value)
{this._ignoreNextUpdate=false;this.updateValuesFromText(value||"");}
_markEditors(ignoredEditor,disabled)
{this._currentValueIsKeyword=disabled||false;for(let editor of this._propertyEditors){if(ignoredEditor&&editor===ignoredEditor)
continue;editor.disabled=this._currentValueIsKeyword;}}
_handlePropertyEditorValueChanged()
{this._ignoreNextUpdate=true;let value=this.synthesizedValue;if(this._style)
this._style.text=this.modifyPropertyText(this._style.text,value);this._propertyMissing=!value;this.dispatchEventToListeners(WebInspector.VisualStylePropertyEditor.Event.ValueDidChange);}};WebInspector.VisualStylePropertyCombiner.EditorUpdatedSymbol=Symbol("visual-style-property-combiner-editor-updated");WebInspector.VisualStylePropertyEditorLink=class VisualStylePropertyEditorLink extends WebInspector.Object
{constructor(linkedProperties,className,linksToHideWhenLinked)
{super();this._linkedProperties=linkedProperties||[];this._linksToHideWhenLinked=linksToHideWhenLinked||[];this._lastPropertyEdited=null;for(let property of this._linkedProperties)
property.addEventListener(WebInspector.VisualStylePropertyEditor.Event.ValueDidChange,this._linkedPropertyValueChanged,this);this._element=document.createElement("div");this._element.classList.add("visual-style-property-editor-link",className||"");let leftLineElement=document.createElement("div");leftLineElement.classList.add("visual-style-property-editor-link-border","left");this._element.appendChild(leftLineElement);this._iconElement=document.createElement("div");this._iconElement.classList.add("visual-style-property-editor-link-icon");this._iconElement.title=WebInspector.UIString("Click to link property values");this._iconElement.addEventListener("mouseover",this._iconMouseover.bind(this));this._iconElement.addEventListener("mouseout",this._iconMouseout.bind(this));this._iconElement.addEventListener("click",this._iconClicked.bind(this));this._unlinkedIcon=useSVGSymbol("Images/VisualStylePropertyUnlinked.svg","unlinked-icon");this._iconElement.appendChild(this._unlinkedIcon);this._linkedIcon=useSVGSymbol("Images/VisualStylePropertyLinked.svg","linked-icon");this._linkedIcon.hidden=true;this._iconElement.appendChild(this._linkedIcon);this._element.appendChild(this._iconElement);let rightLineElement=document.createElement("div");rightLineElement.classList.add("visual-style-property-editor-link-border","right");this._element.appendChild(rightLineElement);this._linked=false;this._disabled=false;}
get element()
{return this._element;}
set linked(flag)
{this._linked=flag;this._element.classList.toggle("linked",this._linked);if(this._linkedIcon)
this._linkedIcon.hidden=!this._linked;if(this._unlinkedIcon)
this._unlinkedIcon.hidden=this._linked;this._iconElement.title=this._linked?WebInspector.UIString("Remove link"):WebInspector.UIString("Link property values");for(let linkToHide of this._linksToHideWhenLinked)
linkToHide.disabled=this._linked;}
set disabled(flag)
{this._disabled=flag;this._element.classList.toggle("disabled",this._disabled);}
_linkedPropertyValueChanged(event)
{if(!event)
return;let property=event.target;if(!property)
return;this._lastPropertyEdited=property;if(!this._linked)
return;this._updateLinkedEditors(property);}
_updateLinkedEditors(property)
{let style=property.style;let text=style.text;let value=property.synthesizedValue||null;for(let linkedProperty of this._linkedProperties)
text=linkedProperty.updateValueFromText(text,value);style.text=text;}
_iconMouseover()
{this._linkedIcon.hidden=this._linked;this._unlinkedIcon.hidden=!this._linked;}
_iconMouseout()
{this._linkedIcon.hidden=!this._linked;this._unlinkedIcon.hidden=this._linked;}
_iconClicked()
{this.linked=!this._linked;this._updateLinkedEditors(this._lastPropertyEdited||this._linkedProperties[0]);}};WebInspector.VisualStylePropertyNameInput=class VisualStylePropertyNameInput extends WebInspector.VisualStylePropertyEditor
{constructor(propertyNames,text,layoutReversed)
{super(propertyNames,text,null,null,"property-name-input",layoutReversed);this._propertyNameInputElement=document.createElement("input");this._propertyNameInputElement.placeholder=WebInspector.UIString("Enter property name");this._propertyNameInputElement.addEventListener("keydown",this._inputKeyDown.bind(this));this._propertyNameInputElement.addEventListener("keyup",this.debounce(250)._inputKeyUp);this._propertyNameInputElement.addEventListener("blur",this._hideCompletions.bind(this));this.contentElement.appendChild(this._propertyNameInputElement);this._completionController=new WebInspector.VisualStyleCompletionsController(this);this._completionController.addEventListener(WebInspector.VisualStyleCompletionsController.Event.CompletionSelected,this._completionClicked,this);}
get value()
{return this._propertyNameInputElement.value;}
set value(value)
{if(value&&value===this.value)
return;this._propertyNameInputElement.value=value;}
get synthesizedValue()
{return this.value||null;}
get hasCompletions()
{return this._completionController.hasCompletions;}
set completions(completions)
{this._completionController.completions=completions;}
_completionClicked(event)
{this.value=event.data.text;this._valueDidChange();}
_inputKeyDown(event)
{if(!this._completionController.visible)
return;let keyCode=event.keyCode;let enterKeyCode=WebInspector.KeyboardShortcut.Key.Enter.keyCode;let tabKeyCode=WebInspector.KeyboardShortcut.Key.Tab.keyCode;if(keyCode===enterKeyCode||keyCode===tabKeyCode){this.value=this._completionController.currentCompletion;this._hideCompletions();this._valueDidChange();return;}
let escapeKeyCode=WebInspector.KeyboardShortcut.Key.Escape.keyCode;if(keyCode===escapeKeyCode){this._hideCompletions();return;}
let key=event.keyIdentifier;if(key==="Up"){this._completionController.previous();return;}
if(key==="Down"){this._completionController.next();return;}}
_inputKeyUp()
{if(!this.hasCompletions)
return;let result=this._valueDidChange();if(!result)
return;if(this._completionController.update(this.value)){let bounds=WebInspector.Rect.rectFromClientRect(this._propertyNameInputElement.getBoundingClientRect());if(!bounds)
return;this._completionController.show(bounds,2);}}
_hideCompletions()
{this._completionController.hide();}
_toggleTabbingOfSelectableElements(disabled)
{this._propertyNameInputElement.tabIndex=disabled?"-1":null;}};WebInspector.VisualStyleRelativeNumberSlider=class VisualStyleRelativeNumberSlider extends WebInspector.VisualStyleNumberInputBox
{constructor(propertyNames,text,possibleValues,possibleUnits,allowNegativeValues,layoutReversed)
{super(propertyNames,text,possibleValues,possibleUnits,allowNegativeValues,layoutReversed);this._element.classList.add("relative-number-slider");this._sliderElement=document.createElement("input");this._sliderElement.classList.add("relative-slider");this._sliderElement.type="range";this._sliderElement.addEventListener("input",this._sliderChanged.bind(this));this._element.appendChild(this._sliderElement);this._startingValue=0;this._scale=200;}
set scale(scale)
{this._scale=scale||1;}
updateEditorValues(updatedValues)
{super.updateEditorValues(updatedValues);this._resetSlider();}
_resetSlider()
{this._startingValue=parseFloat(this._valueNumberInputElement.value);if(isNaN(this._startingValue))
this._startingValue=parseFloat(this.placeholder)||0;let midpoint=this._scale/2;if(this._allowNegativeValues||this._startingValue>midpoint){this._sliderElement.min=-midpoint;this._sliderElement.max=midpoint;this._sliderElement.value=0;}else{this._sliderElement.min=0;this._sliderElement.max=this._scale;this._sliderElement.value=this._startingValue;this._startingValue=0;}}
_sliderChanged()
{this.value=this._startingValue+Math.round(parseFloat(this._sliderElement.value)*100)/100;this._valueDidChange();}
_numberInputChanged()
{super._numberInputChanged();this._resetSlider();}};WebInspector.VisualStyleSelectorSection=class VisualStyleSelectorSection extends WebInspector.DetailsSection
{constructor()
{let selectorSection={element:document.createElement("div")};selectorSection.element.classList.add("selectors");let controlElement=document.createElement("div");controlElement.classList.add("controls");super("visual-style-selector-section",WebInspector.UIString("Style Rules"),[selectorSection],controlElement);this._nodeStyles=null;this._currentSelectorElement=document.createElement("div");this._currentSelectorElement.classList.add("current-selector");let currentSelectorIconElement=document.createElement("img");currentSelectorIconElement.classList.add("icon");this._currentSelectorElement.appendChild(currentSelectorIconElement);this._currentSelectorText=document.createElement("span");this._currentSelectorElement.appendChild(this._currentSelectorText);this._headerElement.appendChild(this._currentSelectorElement);let selectorListElement=document.createElement("ol");selectorListElement.classList.add("selector-list");selectorSection.element.appendChild(selectorListElement);this._selectors=new WebInspector.TreeOutline(selectorListElement);this._selectors.disclosureButtons=false;this._selectors.addEventListener(WebInspector.TreeOutline.Event.SelectionDidChange,this._selectorChanged,this);this._newInspectorRuleSelector=null;let addGlyphElement=useSVGSymbol("Images/Plus13.svg","visual-style-selector-section-add-rule",WebInspector.UIString("Add new rule"));addGlyphElement.addEventListener("click",this._addNewRuleClick.bind(this));addGlyphElement.addEventListener("contextmenu",this._addNewRuleContextMenu.bind(this));controlElement.appendChild(addGlyphElement);this._headerElement.addEventListener("mouseover",this._handleMouseOver.bind(this));this._headerElement.addEventListener("mouseout",this._handleMouseOut.bind(this));}
update(nodeStyles)
{let style=this.currentStyle();if(style)
this._nodeStyles[WebInspector.VisualStyleSelectorSection.LastSelectedRuleSymbol]=style;if(nodeStyles)
this._nodeStyles=nodeStyles;if(!this._nodeStyles)
return;this._selectors.removeChildren();let previousRule=null; let pseudoRules=[];let pseudoElements=this._nodeStyles.pseudoElements;for(let pseudoIdentifier in pseudoElements)
pseudoRules=pseudoRules.concat(pseudoElements[pseudoIdentifier].matchedRules);let orderedPseudoRules=uniqueOrderedRules(pseudoRules);if(orderedPseudoRules.length)
orderedPseudoRules.reverse();function createSelectorItem(style,title,subtitle){let selector=new WebInspector.VisualStyleSelectorTreeItem(this,style,title,subtitle);selector.addEventListener(WebInspector.VisualStyleSelectorTreeItem.Event.CheckboxChanged,this._treeElementCheckboxToggled,this);this._selectors.appendChild(selector);if(style.isInspectorRule()&&this._newInspectorRuleSelector===style.selectorText&&!style.hasProperties()){selector.select(true);selector.element.scrollIntoView();this._nodeStyles[WebInspector.VisualStyleSelectorSection.LastSelectedRuleSymbol]=style;this._newInspectorRuleSelector=null;return;}
if(this._nodeStyles[WebInspector.VisualStyleSelectorSection.LastSelectedRuleSymbol]===style){selector.select(true);selector.element.scrollIntoView();}}
function uniqueOrderedRules(orderedRules)
{if(!orderedRules||!orderedRules.length)
return new Array;let uniqueRules=new Map;for(let rule of orderedRules){if(!uniqueRules.has(rule.id))
uniqueRules.set(rule.id,rule);}
return Array.from(uniqueRules.values());}
function insertAllMatchingPseudoRules(force)
{if(!orderedPseudoRules.length)
return;if(force){for(let i=orderedPseudoRules.length-1;i>=0;--i){let pseudoRule=orderedPseudoRules[i];createSelectorItem.call(this,pseudoRule.style,pseudoRule.selectorText,pseudoRule.mediaText);}
orderedPseudoRules=[];}
if(!previousRule)
return;for(let i=orderedPseudoRules.length-1;i>=0;--i){let pseudoRule=orderedPseudoRules[i];if(!pseudoRule.selectorIsGreater(previousRule.mostSpecificSelector))
continue;createSelectorItem.call(this,pseudoRule.style,pseudoRule.selectorText,pseudoRule.mediaText);previousRule=pseudoRule;orderedPseudoRules.splice(i,1);}}
if(this._nodeStyles.inlineStyle){if(!this._nodeStyles[WebInspector.VisualStyleSelectorSection.LastSelectedRuleSymbol])
this._nodeStyles[WebInspector.VisualStyleSelectorSection.LastSelectedRuleSymbol]=this._nodeStyles.inlineStyle; createSelectorItem.call(this,this._nodeStyles.inlineStyle,WebInspector.UIString("This Element"));}else if(!this._nodeStyles[WebInspector.VisualStyleSelectorSection.LastSelectedRuleSymbol])
this._nodeStyles[WebInspector.VisualStyleSelectorSection.LastSelectedRuleSymbol]=this._nodeStyles.matchedRules[0].style; for(let rule of uniqueOrderedRules(this._nodeStyles.matchedRules)){if(rule.type===WebInspector.CSSStyleSheet.Type.UserAgent){insertAllMatchingPseudoRules.call(this,true);continue;}
insertAllMatchingPseudoRules.call(this);createSelectorItem.call(this,rule.style,rule.selectorText,rule.mediaText);previousRule=rule;}
insertAllMatchingPseudoRules.call(this,true); for(let inherited of this._nodeStyles.inheritedRules){if(!inherited.matchedRules||!inherited.matchedRules.length)
continue;let divider=null;for(let rule of uniqueOrderedRules(inherited.matchedRules)){if(rule.type===WebInspector.CSSStyleSheet.Type.UserAgent)
continue;if(!divider){let dividerText=WebInspector.UIString("Inherited from %s").format(inherited.node.displayName);divider=new WebInspector.GeneralTreeElement("section-divider",dividerText);divider.selectable=false;this._selectors.appendChild(divider);}
createSelectorItem.call(this,rule.style,rule.selectorText,rule.mediaText);}}
this._newInspectorRuleSelector=null;}
currentStyle()
{if(!this._nodeStyles||!this._selectors.selectedTreeElement)
return null;return this._selectors.selectedTreeElement.representedObject;}
treeItemForStyle(style)
{for(let item of this._selectors.children){if(item.representedObject===style)
return item;}
return null;}
selectEmptyStyleTreeItem(style)
{if(style.hasProperties())
return false;let treeItem=this.treeItemForStyle(style);if(!treeItem)
return false;treeItem.select(true,true);return true;}
_selectorChanged(event)
{let selectedTreeElement=event.data.selectedElement;if(!selectedTreeElement)
return;
this._currentSelectorElement.className="current-selector "+selectedTreeElement.iconClassName;let selectorText=selectedTreeElement.mainTitle;let mediaText=selectedTreeElement.subtitle;if(mediaText&&mediaText.length)
selectorText+=" \u2014 "+mediaText; this._currentSelectorText.textContent=selectorText;this.dispatchEventToListeners(WebInspector.VisualStyleSelectorSection.Event.SelectorChanged);}
_addNewRuleClick(event)
{if(!this._nodeStyles||this._nodeStyles.node.isInUserAgentShadowTree())
return;let selector=this.currentStyle().selectorText;let existingRules=this._nodeStyles.rulesForSelector(selector);for(let rule of existingRules){if(this.selectEmptyStyleTreeItem(rule.style))
return;}
this._newInspectorRuleSelector=selector;this._nodeStyles.addRule(selector);}
_addNewRuleContextMenu(event)
{if(!this._nodeStyles||this._nodeStyles.node.isInUserAgentShadowTree())
return;let styleSheets=WebInspector.cssStyleManager.styleSheets.filter(styleSheet=>styleSheet.hasInfo()&&!styleSheet.isInlineStyleTag()&&!styleSheet.isInlineStyleAttributeStyleSheet());if(!styleSheets.length)
return;let contextMenu=WebInspector.ContextMenu.createFromEvent(event);const handler=null;const disabled=true;contextMenu.appendItem(WebInspector.UIString("Available Style Sheets"),handler,disabled);for(let styleSheet of styleSheets){contextMenu.appendItem(styleSheet.displayName,()=>{const text="";this._nodeStyles.addRule(this.currentStyle().selectorText,text,styleSheet.id);});}}
_treeElementCheckboxToggled(event)
{let style=this.currentStyle();if(!style)
return;let styleText=style.text;if(!styleText||!styleText.length)
return;let newStyleText="";let styleEnabled=event&&event.data&&event.data.enabled;if(styleEnabled)
newStyleText=styleText.replace(/\s*(\/\*|\*\/)\s*/g,"");else
newStyleText="/* "+styleText.replace(/(\s*;(?!$)\s*)/g,"$1 *//* ")+" */";style.text=newStyleText;style[WebInspector.VisualStyleDetailsPanel.StyleDisabledSymbol]=!styleEnabled;this.dispatchEventToListeners(WebInspector.VisualStyleSelectorSection.Event.SelectorChanged);}
_handleMouseOver()
{if(!this.collapsed)
return;let style=this.currentStyle();if(!style)
return;if(!style.ownerRule){WebInspector.domTreeManager.highlightDOMNode(style.node.id);return;}
WebInspector.domTreeManager.highlightSelector(style.ownerRule.selectorText,style.node.ownerDocument.frameIdentifier);}
_handleMouseOut()
{if(!this.collapsed)
return;WebInspector.domTreeManager.hideDOMNodeHighlight();}};WebInspector.VisualStyleSelectorSection.LastSelectedRuleSymbol=Symbol("visual-style-selector-section-last-selected-rule");WebInspector.VisualStyleSelectorSection.Event={SelectorChanged:"visual-style-selector-section-selector-changed"};WebInspector.VisualStyleSelectorTreeItem=class VisualStyleSelectorTreeItem extends WebInspector.GeneralTreeElement
{constructor(delegate,style,title,subtitle)
{let iconClassName;switch(style.type){case WebInspector.CSSStyleDeclaration.Type.Rule:if(style.inherited)
iconClassName=WebInspector.CSSStyleDeclarationSection.InheritedStyleRuleIconStyleClassName;else if(style.ownerRule.type===WebInspector.CSSStyleSheet.Type.Author)
iconClassName=WebInspector.CSSStyleDeclarationSection.AuthorStyleRuleIconStyleClassName;else if(style.ownerRule.type===WebInspector.CSSStyleSheet.Type.User)
iconClassName=WebInspector.CSSStyleDeclarationSection.UserStyleRuleIconStyleClassName;else if(style.ownerRule.type===WebInspector.CSSStyleSheet.Type.UserAgent)
iconClassName=WebInspector.CSSStyleDeclarationSection.UserAgentStyleRuleIconStyleClassName;else if(style.ownerRule.type===WebInspector.CSSStyleSheet.Type.Inspector)
iconClassName=WebInspector.CSSStyleDeclarationSection.InspectorStyleRuleIconStyleClassName;break;case WebInspector.CSSStyleDeclaration.Type.Inline:case WebInspector.CSSStyleDeclaration.Type.Attribute:if(style.inherited)
iconClassName=WebInspector.CSSStyleDeclarationSection.InheritedElementStyleRuleIconStyleClassName;else
iconClassName=WebInspector.DOMTreeElementPathComponent.DOMElementIconStyleClassName;break;}
let iconClasses=[iconClassName];if(style.ownerRule&&style.ownerRule.hasMatchedPseudoElementSelector())
iconClasses.push(WebInspector.CSSStyleDeclarationSection.PseudoElementSelectorStyleClassName);title=title.trim();super(["visual-style-selector-item",...iconClasses],title,subtitle,style);this._delegate=delegate;this._iconClasses=iconClasses;this._lastValue=title;this._enableEditing=true;this._hasInvalidSelector=false;}
get iconClassName()
{return this._iconClasses.join(" ");}
get selectorText()
{let titleText=this._mainTitleElement.textContent;if(!titleText||!titleText.length)
titleText=this._mainTitle;return titleText.trim();}
onattach()
{super.onattach();this._listItemNode.addEventListener("mouseover",this._highlightNodesWithSelector.bind(this));this._listItemNode.addEventListener("mouseout",this._hideDOMNodeHighlight.bind(this));this._checkboxElement=document.createElement("input");this._checkboxElement.type="checkbox";this._checkboxElement.checked=!this.representedObject[WebInspector.VisualStyleDetailsPanel.StyleDisabledSymbol];this._updateCheckboxTitle();this._checkboxElement.addEventListener("change",this._handleCheckboxChanged.bind(this));this._listItemNode.insertBefore(this._checkboxElement,this._iconElement);this._iconElement.addEventListener("click",this._handleIconElementClicked.bind(this));this._mainTitleElement.spellcheck=false;this._mainTitleElement.addEventListener("mousedown",this._handleMainTitleMouseDown.bind(this));this._mainTitleElement.addEventListener("keydown",this._handleMainTitleKeyDown.bind(this));this._mainTitleElement.addEventListener("keyup",this._highlightNodesWithSelector.bind(this));this._mainTitleElement.addEventListener("blur",this._commitSelector.bind(this));this.representedObject.addEventListener(WebInspector.CSSStyleDeclaration.Event.InitialTextModified,this._styleTextModified,this);if(this.representedObject.ownerRule)
this.representedObject.ownerRule.addEventListener(WebInspector.CSSRule.Event.SelectorChanged,this._updateSelectorIcon,this);this._styleTextModified();}
ondeselect()
{this._listItemNode.classList.remove("editable");this._mainTitleElement.contentEditable=false;}
populateContextMenu(contextMenu,event)
{contextMenu.appendItem(WebInspector.UIString("Copy Rule"),()=>{InspectorFrontendHost.copyText(this.representedObject.generateCSSRuleString());});if(this.representedObject.modified){contextMenu.appendItem(WebInspector.UIString("Reset"),()=>{this.representedObject.resetText();});}
if(!this.representedObject.ownerRule)
return;contextMenu.appendItem(WebInspector.UIString("Show Source"),()=>{const options={ignoreNetworkTab:true,ignoreSearchTab:true,};if(event.metaKey)
WebInspector.showOriginalUnformattedSourceCodeLocation(this.representedObject.ownerRule.sourceCodeLocation,options);else
WebInspector.showSourceCodeLocation(this.representedObject.ownerRule.sourceCodeLocation,options);});if(WebInspector.CSSStyleManager.PseudoElementNames.some((className)=>this.representedObject.selectorText.includes(":"+className)))
return;if(WebInspector.CSSStyleManager.ForceablePseudoClasses.every((className)=>!this.representedObject.selectorText.includes(":"+className))){contextMenu.appendSeparator();for(let pseudoClass of WebInspector.CSSStyleManager.ForceablePseudoClasses){if(pseudoClass==="visited"&&this.representedObject.node.nodeName()!=="A")
continue;let pseudoClassSelector=":"+pseudoClass;contextMenu.appendItem(WebInspector.UIString("Add %s Rule").format(pseudoClassSelector),()=>{this.representedObject.node.setPseudoClassEnabled(pseudoClass,true);let pseudoSelectors=this.representedObject.ownerRule.selectors.map((selector)=>selector.text+pseudoClassSelector);this.representedObject.nodeStyles.addRule(pseudoSelectors.join(", "));});}}
contextMenu.appendSeparator();for(let pseudoElement of WebInspector.CSSStyleManager.PseudoElementNames){let pseudoElementSelector="::"+pseudoElement;const styleText="content: \"\";";let existingTreeItem=null;if(this._delegate&&typeof this._delegate.treeItemForStyle==="function"){let selectorText=this.representedObject.ownerRule.selectorText;let existingRules=this.representedObject.nodeStyles.rulesForSelector(selectorText+pseudoElementSelector);if(existingRules.length){
existingTreeItem=this._delegate.treeItemForStyle(existingRules[0].style);}}
let title=existingTreeItem?WebInspector.UIString("Select %s Rule"):WebInspector.UIString("Create %s Rule");contextMenu.appendItem(title.format(pseudoElementSelector),()=>{if(existingTreeItem){existingTreeItem.select(true,true);return;}
let pseudoSelectors=this.representedObject.ownerRule.selectors.map((selector)=>selector.text+pseudoElementSelector);this.representedObject.nodeStyles.addRule(pseudoSelectors.join(", "),styleText);});}
super.populateContextMenu(contextMenu,event);}
_highlightNodesWithSelector()
{if(!this.representedObject.ownerRule){WebInspector.domTreeManager.highlightDOMNode(this.representedObject.node.id);return;}
WebInspector.domTreeManager.highlightSelector(this.selectorText,this.representedObject.node.ownerDocument.frameIdentifier);}
_hideDOMNodeHighlight()
{WebInspector.domTreeManager.hideDOMNodeHighlight();}
_handleCheckboxChanged(event)
{this._updateCheckboxTitle();this.dispatchEventToListeners(WebInspector.VisualStyleSelectorTreeItem.Event.CheckboxChanged,{enabled:this._checkboxElement.checked});}
_updateCheckboxTitle()
{if(this._checkboxElement.checked)
this._checkboxElement.title=WebInspector.UIString("Comment out rule");else
this._checkboxElement.title=WebInspector.UIString("Uncomment rule");}
_handleMainTitleMouseDown(event)
{if(event.button!==0||event.ctrlKey)
return;this._listItemNode.classList.toggle("editable",this.selected);this._mainTitleElement.contentEditable=this.selected?"plaintext-only":false;}
_handleMainTitleKeyDown(event)
{this._highlightNodesWithSelector();let enterKeyCode=WebInspector.KeyboardShortcut.Key.Enter.keyCode;if(event.keyCode===enterKeyCode)
this._mainTitleElement.blur();}
_commitSelector()
{this._hideDOMNodeHighlight();this._listItemNode.classList.remove("editable");this._mainTitleElement.contentEditable=false;this._updateTitleTooltip();let value=this.selectorText;if(value===this._lastValue&&!this._hasInvalidSelector)
return;this.representedObject.ownerRule.selectorText=value;}
_styleTextModified()
{this._listItemNode.classList.toggle("modified",this.representedObject.modified);}
_updateSelectorIcon(event)
{this._hasInvalidSelector=event&&event.data&&!event.data.valid;this._listItemNode.classList.toggle("selector-invalid",!!this._hasInvalidSelector);if(this._hasInvalidSelector){this._iconElement.title=WebInspector.UIString("The selector “%s” is invalid.\nClick to revert to the previous selector.").format(this.selectorText);this.mainTitleElement.title=WebInspector.UIString("Using previous selector “%s”").format(this.representedObject.ownerRule.selectorText);return;}
this._iconElement.title=null;this.mainTitleElement.title=null;let hasMatchedPseudoElementSelector=this.representedObject.ownerRule&&this.representedObject.ownerRule.hasMatchedPseudoElementSelector();this._iconClasses.toggleIncludes(WebInspector.CSSStyleDeclarationSection.PseudoElementSelectorStyleClassName,hasMatchedPseudoElementSelector);}
_handleIconElementClicked(event)
{if(this._hasInvalidSelector&&this.representedObject.ownerRule){this.mainTitleElement.textContent=this._lastValue=this.representedObject.ownerRule.selectorText;this._updateSelectorIcon();return;}}};WebInspector.VisualStyleSelectorTreeItem.Event={CheckboxChanged:"visual-style-selector-item-checkbox-changed"};WebInspector.VisualStyleTabbedPropertiesRow=class VisualStyleTabbedPropertiesRow extends WebInspector.DetailsSectionRow
{constructor(tabMap)
{super();this._element.classList.add("visual-style-tabbed-properties-row");let containerElement=document.createElement("div");containerElement.classList.add("visual-style-tabbed-properties-row-container");this._tabButtons=[];this._tabMap=tabMap;for(let key in this._tabMap){let button=document.createElement("button");button.id=key;button.textContent=this._tabMap[key].title;button.addEventListener("click",this._handleButtonClicked.bind(this));containerElement.appendChild(button);this._tabButtons.push(button);}
let firstButton=this._tabButtons[0];firstButton.classList.add("selected");this._tabMap[firstButton.id].element.classList.add("visible");this._element.appendChild(containerElement);}
_handleButtonClicked(event)
{for(let item of this._tabButtons){let tab=this._tabMap[item.id];let selected=item===event.target;item.classList.toggle("selected",selected);tab.element.classList.toggle("visible",selected);for(let propertyEditor of tab.properties)
propertyEditor.update();}}};WebInspector.VisualStyleTimingEditor=class VisualStyleTimingEditor extends WebInspector.VisualStyleKeywordPicker
{constructor(propertyNames,text,possibleValues,layoutReversed)
{super(propertyNames,text,possibleValues,layoutReversed);this.element.classList.add("timing-editor");this._keywordSelectElement.createChild("hr");this._customBezierOptionElement=this._keywordSelectElement.createChild("option");this._customBezierOptionElement.value="bezier";this._customBezierOptionElement.text=WebInspector.UIString("Bezier");this._customSpringOptionElement=this._keywordSelectElement.createChild("option");this._customSpringOptionElement.value="spring";this._customSpringOptionElement.text=WebInspector.UIString("Spring");this._bezierSwatch=new WebInspector.InlineSwatch(WebInspector.InlineSwatch.Type.Bezier);this._bezierSwatch.addEventListener(WebInspector.InlineSwatch.Event.ValueChanged,this._bezierSwatchValueChanged,this);this.contentElement.appendChild(this._bezierSwatch.element);this._springSwatch=new WebInspector.InlineSwatch(WebInspector.InlineSwatch.Type.Spring);this._springSwatch.addEventListener(WebInspector.InlineSwatch.Event.ValueChanged,this._springSwatchValueChanged,this);this.contentElement.appendChild(this._springSwatch.element);}
get value()
{if(this._customBezierOptionElement.selected)
return this._bezierValue;if(this._customSpringOptionElement.selected)
return this._springValue;return super.value;}
set value(value)
{this._bezierValue=value;this._springValue=value;if(this.valueIsSupportedKeyword(value)){super.value=value;this.contentElement.classList.remove("bezier-value","spring-value");return;}
let bezier=this._bezierValue;this._customBezierOptionElement.selected=!!bezier;this.contentElement.classList.toggle("bezier-value",!!bezier);let spring=this._springValue;this._customSpringOptionElement.selected=!!spring;this.contentElement.classList.toggle("spring-value",!!spring);this.specialPropertyPlaceholderElement.hidden=!!bezier||!!spring;if(!bezier&&!spring)
super.value=value;}
get synthesizedValue()
{if(this._customBezierOptionElement.selected)
return this._bezierValue;if(this._customSpringOptionElement.selected)
return this._springValue;return super.synthesizedValue;}
parseValue(text)
{return/((?:cubic-bezier|spring)\(.+\))/.exec(text);}
get _bezierValue()
{let bezier=this._bezierSwatch.value;if(!bezier)
return null;return bezier.toString();}
set _bezierValue(text)
{this._bezierSwatch.value=WebInspector.CubicBezier.fromString(text);}
get _springValue()
{let spring=this._springSwatch.value;if(!spring)
return null;return spring.toString();}
set _springValue(text)
{this._springSwatch.value=WebInspector.Spring.fromString(text);}
_handleKeywordChanged()
{super._handleKeywordChanged();let customBezierOptionSelected=this._customBezierOptionElement.selected;this.contentElement.classList.toggle("bezier-value",!!customBezierOptionSelected);if(customBezierOptionSelected)
this._bezierValue="linear";let customSpringOptionSelected=this._customSpringOptionElement.selected;this.contentElement.classList.toggle("spring-value",!!customSpringOptionSelected);if(customSpringOptionSelected)
this._springValue="1 100 10 0";this.specialPropertyPlaceholderElement.hidden=!!customBezierOptionSelected||!!customSpringOptionSelected;}
_bezierSwatchValueChanged(event)
{this._valueDidChange();}
_springSwatchValueChanged(event)
{this._valueDidChange();}};WebInspector.VisualStyleURLInput=class VisualStyleURLInput extends WebInspector.VisualStylePropertyEditor
{constructor(propertyNames,text,possibleValues,layoutReversed)
{super(propertyNames,text,possibleValues,null,"url-input",layoutReversed);this._urlInputElement=document.createElement("input");this._urlInputElement.type="url";this._urlInputElement.placeholder=WebInspector.UIString("Enter a URL");this._urlInputElement.addEventListener("keyup",this.debounce(250)._valueDidChange);this.contentElement.appendChild(this._urlInputElement);}
get value()
{return this._urlInputElement.value;}
set value(value)
{if((value&&value===this.value)||this._propertyMissing)
return;this._urlInputElement.value=value;}
get synthesizedValue()
{let value=this.value;if(!value||!value.length)
return null;if(this.valueIsSupportedKeyword(value))
return value;return"url("+value+")";}
parseValue(text)
{if(this.valueIsSupportedKeyword(text))
return[text,text];return/^(?:url\(\s*)([^\)]*)(?:\s*\)\s*;?)$/.exec(text);}};WebInspector.VisualStyleUnitSlider=class VisualStyleUnitSlider extends WebInspector.VisualStylePropertyEditor
{constructor(propertyNames,label,layoutReversed)
{super(propertyNames,label,null,null,"unit-slider",layoutReversed);this._slider=new WebInspector.Slider;this._slider.delegate=this;this.contentElement.appendChild(this._slider.element);}
set value(value)
{let knobX=parseFloat(value);if(isNaN(knobX))
knobX=parseFloat(this._updatedValues.placeholder)||0;this._slider.knobX=knobX;}
get value()
{return Math.round(this._slider.value*100)/100;}
get synthesizedValue()
{return this.value;}
recalculateWidth(value)
{this._slider.recalculateKnobX();}
sliderValueDidChange(slider,value)
{this._valueDidChange();}};WebInspector.Annotator=class Annotator extends WebInspector.Object
{constructor(sourceCodeTextEditor)
{super();this._sourceCodeTextEditor=sourceCodeTextEditor;this._timeoutIdentifier=null;this._isActive=false;}
get sourceCodeTextEditor()
{return this._sourceCodeTextEditor;}
isActive()
{return this._isActive;}
pause()
{this._clearTimeoutIfNeeded();this._isActive=false;}
resume()
{this._clearTimeoutIfNeeded();this._isActive=true;this.insertAnnotations();}
refresh()
{if(!this._isActive)
return;this._clearTimeoutIfNeeded();this.insertAnnotations();}
reset()
{this._clearTimeoutIfNeeded();this._isActive=true;this.clearAnnotations();this.insertAnnotations();}
clear()
{this.pause();this.clearAnnotations();}
insertAnnotations()
{}
clearAnnotations()
{}
_clearTimeoutIfNeeded()
{if(this._timeoutIdentifier){clearTimeout(this._timeoutIdentifier);this._timeoutIdentifier=null;}}};WebInspector.CodeMirrorEditingController=class CodeMirrorEditingController extends WebInspector.Object
{constructor(codeMirror,marker)
{super();this._codeMirror=codeMirror;this._marker=marker;this._delegate=null;this._range=marker.range;this._value=this.initialValue;this._keyboardShortcutEsc=new WebInspector.KeyboardShortcut(null,WebInspector.KeyboardShortcut.Key.Escape);}
get marker()
{return this._marker;}
get range()
{return this._range;}
get value()
{return this._value;}
set value(value)
{this.text=value.toString();this._value=value;}
get delegate()
{return this._delegate;}
set delegate(delegate)
{this._delegate=delegate;}
get text()
{var from={line:this._range.startLine,ch:this._range.startColumn};var to={line:this._range.endLine,ch:this._range.endColumn};return this._codeMirror.getRange(from,to);}
set text(text)
{var from={line:this._range.startLine,ch:this._range.startColumn};var to={line:this._range.endLine,ch:this._range.endColumn};this._codeMirror.replaceRange(text,from,to);var lines=text.split("\n");var endLine=this._range.startLine+lines.length-1;var endColumn=lines.length>1?lines.lastValue.length:this._range.startColumn+text.length;this._range=new WebInspector.TextRange(this._range.startLine,this._range.startColumn,endLine,endColumn);}
get initialValue()
{return this.text;}
get cssClassName()
{return"";}
get popover()
{return this._popover;}
get popoverPreferredEdges()
{
return[WebInspector.RectEdge.MIN_X,WebInspector.RectEdge.MIN_Y,WebInspector.RectEdge.MAX_Y,WebInspector.RectEdge.MAX_X];}
popoverTargetFrameWithRects(rects)
{return WebInspector.Rect.unionOfRects(rects);}
presentHoverMenu()
{if(!this.cssClassName)
return;this._hoverMenu=new WebInspector.HoverMenu(this);this._hoverMenu.element.classList.add(this.cssClassName);this._rects=this._marker.rects;this._hoverMenu.present(this._rects);}
dismissHoverMenu(discrete)
{if(!this._hoverMenu)
return;this._hoverMenu.dismiss(discrete);}
popoverWillPresent(popover)
{}
popoverDidPresent(popover)
{}
popoverDidDismiss(popover)
{}
handleKeydownEvent(event)
{if(!this._keyboardShortcutEsc.matchesEvent(event)||!this._popover.visible)
return false;this.value=this._originalValue;this._popover.dismiss();return true;}
hoverMenuButtonWasPressed(hoverMenu)
{this._popover=new WebInspector.Popover(this);this.popoverWillPresent(this._popover);this._popover.present(this.popoverTargetFrameWithRects(this._rects).pad(2),this.popoverPreferredEdges);this.popoverDidPresent(this._popover);WebInspector.addWindowKeydownListener(this);hoverMenu.dismiss();if(this._delegate&&typeof this._delegate.editingControllerDidStartEditing==="function")
this._delegate.editingControllerDidStartEditing(this);this._originalValue=this._value.copy();}
didDismissPopover(popover)
{delete this._popover;delete this._originalValue;WebInspector.removeWindowKeydownListener(this);this.popoverDidDismiss();if(this._delegate&&typeof this._delegate.editingControllerDidFinishEditing==="function")
this._delegate.editingControllerDidFinishEditing(this);}};WebInspector.AnalyzerManager=class AnalyzerManager extends WebInspector.Object
{constructor()
{super();this._eslintConfig={env:{"browser":true,"node":false},globals:{"document":true},rules:{"consistent-return":2,"curly":0,"eqeqeq":0,"new-parens":0,"no-comma-dangle":0,"no-console":0,"no-constant-condition":0,"no-extra-bind":2,"no-extra-semi":2,"no-proto":0,"no-return-assign":2,"no-trailing-spaces":2,"no-underscore-dangle":0,"no-unused-expressions":2,"no-wrap-func":2,"semi":2,"space-infix-ops":2,"space-return-throw-case":2,"strict":0,"valid-typeof":2}};this._sourceCodeMessagesMap=new WeakMap;WebInspector.SourceCode.addEventListener(WebInspector.SourceCode.Event.ContentDidChange,this._handleSourceCodeContentDidChange,this);}
getAnalyzerMessagesForSourceCode(sourceCode)
{return new Promise(function(resolve,reject){var analyzer=WebInspector.AnalyzerManager._typeAnalyzerMap.get(sourceCode.type);if(!analyzer){reject(new Error("This resource type cannot be analyzed."));return;}
if(this._sourceCodeMessagesMap.has(sourceCode)){resolve(this._sourceCodeMessagesMap.get(sourceCode));return;}
function retrieveAnalyzerMessages(properties)
{var analyzerMessages=[];var rawAnalyzerMessages=analyzer.verify(sourceCode.content,this._eslintConfig);for(var rawAnalyzerMessage of rawAnalyzerMessages)
analyzerMessages.push(new WebInspector.AnalyzerMessage(new WebInspector.SourceCodeLocation(sourceCode,rawAnalyzerMessage.line-1,rawAnalyzerMessage.column-1),rawAnalyzerMessage.message,rawAnalyzerMessage.ruleId));this._sourceCodeMessagesMap.set(sourceCode,analyzerMessages);resolve(analyzerMessages);}
sourceCode.requestContent().then(retrieveAnalyzerMessages.bind(this)).catch(handlePromiseException);}.bind(this));}
sourceCodeCanBeAnalyzed(sourceCode)
{return sourceCode.type===WebInspector.Resource.Type.Script;}
_handleSourceCodeContentDidChange(event)
{var sourceCode=event.target;this._sourceCodeMessagesMap.delete(sourceCode);}};WebInspector.AnalyzerManager._typeAnalyzerMap=new Map;
WebInspector.ApplicationCacheManager=class ApplicationCacheManager extends WebInspector.Object
{constructor()
{super();if(window.ApplicationCacheAgent)
ApplicationCacheAgent.enable();WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ChildFrameWasRemoved,this._childFrameWasRemoved,this);this._online=true;this.initialize();}
initialize()
{this._applicationCacheObjects={};if(window.ApplicationCacheAgent)
ApplicationCacheAgent.getFramesWithManifests(this._framesWithManifestsLoaded.bind(this));}
get applicationCacheObjects()
{var applicationCacheObjects=[];for(var id in this._applicationCacheObjects)
applicationCacheObjects.push(this._applicationCacheObjects[id]);return applicationCacheObjects;}
networkStateUpdated(isNowOnline)
{this._online=isNowOnline;this.dispatchEventToListeners(WebInspector.ApplicationCacheManager.Event.NetworkStateUpdated,{online:this._online});}
get online()
{return this._online;}
applicationCacheStatusUpdated(frameId,manifestURL,status)
{var frame=WebInspector.frameResourceManager.frameForIdentifier(frameId);if(!frame)
return;this._frameManifestUpdated(frame,manifestURL,status);}
requestApplicationCache(frame,callback)
{function callbackWrapper(error,applicationCache)
{if(error){callback(null);return;}
callback(applicationCache);}
ApplicationCacheAgent.getApplicationCacheForFrame(frame.id,callbackWrapper);}
_mainResourceDidChange(event)
{if(event.target.isMainFrame()){this.initialize();this.dispatchEventToListeners(WebInspector.ApplicationCacheManager.Event.Cleared);return;}
if(window.ApplicationCacheAgent)
ApplicationCacheAgent.getManifestForFrame(event.target.id,this._manifestForFrameLoaded.bind(this,event.target.id));}
_childFrameWasRemoved(event)
{this._frameManifestRemoved(event.data.childFrame);}
_manifestForFrameLoaded(frameId,error,manifestURL)
{if(error)
return;var frame=WebInspector.frameResourceManager.frameForIdentifier(frameId);if(!frame)
return;if(!manifestURL)
this._frameManifestRemoved(frame);}
_framesWithManifestsLoaded(error,framesWithManifests)
{if(error)
return;for(var i=0;i<framesWithManifests.length;++i){var frame=WebInspector.frameResourceManager.frameForIdentifier(framesWithManifests[i].frameId);if(!frame)
continue;this._frameManifestUpdated(frame,framesWithManifests[i].manifestURL,framesWithManifests[i].status);}}
_frameManifestUpdated(frame,manifestURL,status)
{if(status===WebInspector.ApplicationCacheManager.Status.Uncached){this._frameManifestRemoved(frame);return;}
if(!manifestURL)
return;var manifestFrame=this._applicationCacheObjects[frame.id];if(manifestFrame&&manifestURL!==manifestFrame.manifest.manifestURL)
this._frameManifestRemoved(frame);var oldStatus=manifestFrame?manifestFrame.status:-1;var statusChanged=manifestFrame&&status!==oldStatus;if(manifestFrame)
manifestFrame.status=status;if(!this._applicationCacheObjects[frame.id]){var cacheManifest=new WebInspector.ApplicationCacheManifest(manifestURL);this._applicationCacheObjects[frame.id]=new WebInspector.ApplicationCacheFrame(frame,cacheManifest,status);this.dispatchEventToListeners(WebInspector.ApplicationCacheManager.Event.FrameManifestAdded,{frameManifest:this._applicationCacheObjects[frame.id]});}
if(statusChanged)
this.dispatchEventToListeners(WebInspector.ApplicationCacheManager.Event.FrameManifestStatusChanged,{frameManifest:this._applicationCacheObjects[frame.id]});}
_frameManifestRemoved(frame)
{if(!this._applicationCacheObjects[frame.id])
return;delete this._applicationCacheObjects[frame.id];this.dispatchEventToListeners(WebInspector.ApplicationCacheManager.Event.FrameManifestRemoved,{frame});}};WebInspector.ApplicationCacheManager.Event={Cleared:"application-cache-manager-cleared",FrameManifestAdded:"application-cache-manager-frame-manifest-added",FrameManifestRemoved:"application-cache-manager-frame-manifest-removed",FrameManifestStatusChanged:"application-cache-manager-frame-manifest-status-changed",NetworkStateUpdated:"application-cache-manager-network-state-updated"};WebInspector.ApplicationCacheManager.Status={Uncached:0,Idle:1,Checking:2,Downloading:3,UpdateReady:4,Obsolete:5};WebInspector.BasicBlockAnnotator=class BasicBlockAnnotator extends WebInspector.Annotator
{constructor(sourceCodeTextEditor,script)
{super(sourceCodeTextEditor);this._script=script;this._basicBlockMarkers=new Map;}
clearAnnotations()
{for(var key of this._basicBlockMarkers.keys())
this._clearRangeForBasicBlockMarker(key);}
insertAnnotations()
{if(!this.isActive())
return;this._annotateBasicBlockExecutionRanges();}
_annotateBasicBlockExecutionRanges()
{var sourceID=this._script.id;var startTime=Date.now();this._script.target.RuntimeAgent.getBasicBlocks(sourceID,function(error,basicBlocks){if(error){console.error("Error in getting basic block locations: "+error);return;}
if(!this.isActive())
return;var{startOffset,endOffset}=this.sourceCodeTextEditor.visibleRangeOffsets();basicBlocks=basicBlocks.filter(function(block){
if(block.startOffset>endOffset)
return false;
if(block.endOffset<startOffset)
return false;return true;});for(var block of basicBlocks){var key=block.startOffset+":"+block.endOffset;var hasKey=this._basicBlockMarkers.has(key);var hasExecuted=block.hasExecuted;if(hasKey&&hasExecuted)
this._clearRangeForBasicBlockMarker(key);else if(!hasKey&&!hasExecuted){var marker=this._highlightTextForBasicBlock(block);this._basicBlockMarkers.set(key,marker);}}
var totalTime=Date.now()-startTime;var timeoutTime=Number.constrain(30*totalTime,500,5000);this._timeoutIdentifier=setTimeout(this.insertAnnotations.bind(this),timeoutTime);}.bind(this));}
_highlightTextForBasicBlock(basicBlock)
{var startPosition=this.sourceCodeTextEditor.originalOffsetToCurrentPosition(basicBlock.startOffset);var endPosition=this.sourceCodeTextEditor.originalOffsetToCurrentPosition(basicBlock.endOffset);if(this._isTextRangeOnlyClosingBrace(startPosition,endPosition))
return null;var marker=this.sourceCodeTextEditor.addStyleToTextRange(startPosition,endPosition,WebInspector.BasicBlockAnnotator.HasNotExecutedClassName);return marker;}
_isTextRangeOnlyClosingBrace(startPosition,endPosition)
{var isOnlyClosingBrace=/^\s*\}$/;return isOnlyClosingBrace.test(this.sourceCodeTextEditor.getTextInRange(startPosition,endPosition));}
_clearRangeForBasicBlockMarker(key)
{var marker=this._basicBlockMarkers.get(key);if(marker)
marker.clear();this._basicBlockMarkers.delete(key);}};WebInspector.BasicBlockAnnotator.HasNotExecutedClassName="basic-block-has-not-executed";WebInspector.BranchManager=class BranchManager extends WebInspector.Object
{constructor()
{super();WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);this.initialize();}
initialize()
{this._originalBranch=new WebInspector.Branch(WebInspector.UIString("Original"),null,true);this._currentBranch=this._originalBranch.fork(WebInspector.UIString("Working Copy"));this._branches=[this._originalBranch,this._currentBranch];}
get branches()
{return this._branches;}
get currentBranch()
{return this._currentBranch;}
set currentBranch(branch)
{if(!(branch instanceof WebInspector.Branch))
return;this._currentBranch.revert();this._currentBranch=branch;this._currentBranch.apply();}
createBranch(displayName,fromBranch)
{if(!fromBranch)
fromBranch=this._originalBranch;if(!(fromBranch instanceof WebInspector.Branch))
return null;var newBranch=fromBranch.fork(displayName);this._branches.push(newBranch);return newBranch;}
deleteBranch(branch)
{if(!(branch instanceof WebInspector.Branch))
return;if(branch===this._originalBranch)
return;this._branches.remove(branch);if(branch===this._currentBranch)
this._currentBranch=this._originalBranch;}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;this.initialize();}};WebInspector.BreakpointLogMessageLexer=class BreakpointLogMessageLexer extends WebInspector.Object
{constructor()
{super();this._stateFunctions={[WebInspector.BreakpointLogMessageLexer.State.Expression]:this._expression,[WebInspector.BreakpointLogMessageLexer.State.PlainText]:this._plainText,[WebInspector.BreakpointLogMessageLexer.State.PossiblePlaceholder]:this._possiblePlaceholder,[WebInspector.BreakpointLogMessageLexer.State.RegExpOrStringLiteral]:this._regExpOrStringLiteral,};this.reset();}
tokenize(input)
{this.reset();this._input=input;while(this._index<this._input.length){let stateFunction=this._stateFunctions[this._states.lastValue];if(!stateFunction){this.reset();return null;}
stateFunction.call(this);}
this._finishPlainText();return this._tokens;}
reset()
{this._input="";this._buffer="";this._index=0;this._states=[WebInspector.BreakpointLogMessageLexer.State.PlainText];this._literalStartCharacter="";this._curlyBraceDepth=0;this._tokens=[];}
_finishPlainText()
{this._appendToken(WebInspector.BreakpointLogMessageLexer.TokenType.PlainText);}
_finishExpression()
{this._appendToken(WebInspector.BreakpointLogMessageLexer.TokenType.Expression);}
_appendToken(type)
{if(!this._buffer)
return;this._tokens.push({type,data:this._buffer});this._buffer="";}
_consume()
{let character=this._peek();this._index++;return character;}
_peek()
{return this._input[this._index]||null;}
_expression()
{let character=this._consume();if(character==="}"){if(this._curlyBraceDepth===0){this._finishExpression();this._states.pop();return;}
this._curlyBraceDepth--;}
this._buffer+=character;if(character==="/"||character==="\""||character==="'"){this._literalStartCharacter=character;this._states.push(WebInspector.BreakpointLogMessageLexer.State.RegExpOrStringLiteral);}else if(character==="{")
this._curlyBraceDepth++;}
_plainText()
{let character=this._peek();if(character==="$")
this._states.push(WebInspector.BreakpointLogMessageLexer.State.PossiblePlaceholder);else{this._buffer+=character;this._consume();}}
_possiblePlaceholder()
{let character=this._consume();let nextCharacter=this._peek();this._states.pop();if(nextCharacter==="{"){this._finishPlainText();this._consume();this._states.push(WebInspector.BreakpointLogMessageLexer.State.Expression);}else
this._buffer+=character;}
_regExpOrStringLiteral()
{let character=this._consume();this._buffer+=character;if(character==="\\"){if(this._peek()!==null)
this._buffer+=this._consume();return;}
if(character===this._literalStartCharacter){this._states.pop();}}};WebInspector.BreakpointLogMessageLexer.State={Expression:Symbol("expression"),PlainText:Symbol("plain-text"),PossiblePlaceholder:Symbol("possible-placeholder"),RegExpOrStringLiteral:Symbol("regexp-or-string-literal"),};WebInspector.BreakpointLogMessageLexer.TokenType={PlainText:"token-type-plain-text",Expression:"token-type-expression",};WebInspector.BreakpointPopoverController=class BreakpointPopoverController extends WebInspector.Object
{constructor()
{super();this._breakpoint=null;this._popover=null;this._popoverContentElement=null;}
appendContextMenuItems(contextMenu,breakpoint,breakpointDisplayElement)
{const editBreakpoint=()=>{if(this._popover)
return;this._createPopoverContent(breakpoint);this._popover=new WebInspector.Popover(this);this._popover.content=this._popoverContentElement;let bounds=WebInspector.Rect.rectFromClientRect(breakpointDisplayElement.getBoundingClientRect());bounds.origin.x-=1;this._popover.present(bounds.pad(2),[WebInspector.RectEdge.MAX_Y]);};const removeBreakpoint=()=>{WebInspector.debuggerManager.removeBreakpoint(breakpoint);};const toggleBreakpoint=()=>{breakpoint.disabled=!breakpoint.disabled;};const toggleAutoContinue=()=>{breakpoint.autoContinue=!breakpoint.autoContinue;};const revealOriginalSourceCodeLocation=()=>{const options={ignoreNetworkTab:true,ignoreSearchTab:true,};WebInspector.showOriginalOrFormattedSourceCodeLocation(breakpoint.sourceCodeLocation,options);};if(WebInspector.debuggerManager.isBreakpointEditable(breakpoint))
contextMenu.appendItem(WebInspector.UIString("Edit Breakpoint…"),editBreakpoint);if(breakpoint.autoContinue&&!breakpoint.disabled){contextMenu.appendItem(WebInspector.UIString("Disable Breakpoint"),toggleBreakpoint);contextMenu.appendItem(WebInspector.UIString("Cancel Automatic Continue"),toggleAutoContinue);}else if(!breakpoint.disabled)
contextMenu.appendItem(WebInspector.UIString("Disable Breakpoint"),toggleBreakpoint);else
contextMenu.appendItem(WebInspector.UIString("Enable Breakpoint"),toggleBreakpoint);if(!breakpoint.autoContinue&&!breakpoint.disabled&&breakpoint.actions.length)
contextMenu.appendItem(WebInspector.UIString("Set to Automatically Continue"),toggleAutoContinue);if(WebInspector.debuggerManager.isBreakpointRemovable(breakpoint)){contextMenu.appendSeparator();contextMenu.appendItem(WebInspector.UIString("Delete Breakpoint"),removeBreakpoint);}
if(breakpoint._sourceCodeLocation.hasMappedLocation()){contextMenu.appendSeparator();contextMenu.appendItem(WebInspector.UIString("Reveal in Original Resource"),revealOriginalSourceCodeLocation);}}
completionControllerShouldAllowEscapeCompletion()
{return false;}
_createPopoverContent(breakpoint)
{if(this._popoverContentElement)
return;this._breakpoint=breakpoint;this._popoverContentElement=document.createElement("div");this._popoverContentElement.className="edit-breakpoint-popover-content";let checkboxElement=document.createElement("input");checkboxElement.type="checkbox";checkboxElement.checked=!this._breakpoint.disabled;checkboxElement.addEventListener("change",this._popoverToggleEnabledCheckboxChanged.bind(this));let checkboxLabel=document.createElement("label");checkboxLabel.className="toggle";checkboxLabel.appendChild(checkboxElement);checkboxLabel.append(this._breakpoint.sourceCodeLocation.displayLocationString());let table=document.createElement("table");let conditionRow=table.appendChild(document.createElement("tr"));let conditionHeader=conditionRow.appendChild(document.createElement("th"));let conditionData=conditionRow.appendChild(document.createElement("td"));let conditionLabel=conditionHeader.appendChild(document.createElement("label"));conditionLabel.textContent=WebInspector.UIString("Condition");let conditionEditorElement=conditionData.appendChild(document.createElement("div"));conditionEditorElement.classList.add("edit-breakpoint-popover-condition",WebInspector.SyntaxHighlightedStyleClassName);this._conditionCodeMirror=WebInspector.CodeMirrorEditor.create(conditionEditorElement,{extraKeys:{Tab:false},lineWrapping:false,mode:"text/javascript",matchBrackets:true,placeholder:WebInspector.UIString("Conditional expression"),scrollbarStyle:null,value:this._breakpoint.condition||"",});let conditionCodeMirrorInputField=this._conditionCodeMirror.getInputField();conditionCodeMirrorInputField.id="codemirror-condition-input-field";conditionLabel.setAttribute("for",conditionCodeMirrorInputField.id);this._conditionCodeMirrorEscapeOrEnterKeyHandler=this._conditionCodeMirrorEscapeOrEnterKey.bind(this);this._conditionCodeMirror.addKeyMap({"Esc":this._conditionCodeMirrorEscapeOrEnterKeyHandler,"Enter":this._conditionCodeMirrorEscapeOrEnterKeyHandler,});this._conditionCodeMirror.on("change",this._conditionCodeMirrorChanged.bind(this));this._conditionCodeMirror.on("beforeChange",this._conditionCodeMirrorBeforeChange.bind(this));let completionController=new WebInspector.CodeMirrorCompletionController(this._conditionCodeMirror,this);completionController.addExtendedCompletionProvider("javascript",WebInspector.javaScriptRuntimeCompletionProvider);setTimeout(()=>{this._conditionCodeMirror.refresh();this._conditionCodeMirror.focus();},0);if(DebuggerAgent.setBreakpoint.supports("options")){
if(CSSAgent.getSupportedSystemFontFamilyNames){let ignoreCountRow=table.appendChild(document.createElement("tr"));let ignoreCountHeader=ignoreCountRow.appendChild(document.createElement("th"));let ignoreCountLabel=ignoreCountHeader.appendChild(document.createElement("label"));let ignoreCountData=ignoreCountRow.appendChild(document.createElement("td"));this._ignoreCountInput=ignoreCountData.appendChild(document.createElement("input"));this._ignoreCountInput.id="edit-breakpoint-popover-ignore";this._ignoreCountInput.type="number";this._ignoreCountInput.min=0;this._ignoreCountInput.value=0;this._ignoreCountInput.addEventListener("change",this._popoverIgnoreInputChanged.bind(this));ignoreCountLabel.setAttribute("for",this._ignoreCountInput.id);ignoreCountLabel.textContent=WebInspector.UIString("Ignore");this._ignoreCountText=ignoreCountData.appendChild(document.createElement("span"));this._updateIgnoreCountText();}
let actionRow=table.appendChild(document.createElement("tr"));let actionHeader=actionRow.appendChild(document.createElement("th"));let actionData=this._actionsContainer=actionRow.appendChild(document.createElement("td"));let actionLabel=actionHeader.appendChild(document.createElement("label"));actionLabel.textContent=WebInspector.UIString("Action");if(!this._breakpoint.actions.length)
this._popoverActionsCreateAddActionButton();else{this._popoverContentElement.classList.add(WebInspector.BreakpointPopoverController.WidePopoverClassName);for(let i=0;i<this._breakpoint.actions.length;++i){let breakpointActionView=new WebInspector.BreakpointActionView(this._breakpoint.actions[i],this,true);this._popoverActionsInsertBreakpointActionView(breakpointActionView,i);}}
let optionsRow=this._popoverOptionsRowElement=table.appendChild(document.createElement("tr"));if(!this._breakpoint.actions.length)
optionsRow.classList.add(WebInspector.BreakpointPopoverController.HiddenStyleClassName);let optionsHeader=optionsRow.appendChild(document.createElement("th"));let optionsData=optionsRow.appendChild(document.createElement("td"));let optionsLabel=optionsHeader.appendChild(document.createElement("label"));let optionsCheckbox=this._popoverOptionsCheckboxElement=optionsData.appendChild(document.createElement("input"));let optionsCheckboxLabel=optionsData.appendChild(document.createElement("label"));optionsCheckbox.id="edit-breakpoint-popover-auto-continue";optionsCheckbox.type="checkbox";optionsCheckbox.checked=this._breakpoint.autoContinue;optionsCheckbox.addEventListener("change",this._popoverToggleAutoContinueCheckboxChanged.bind(this));optionsLabel.textContent=WebInspector.UIString("Options");optionsCheckboxLabel.setAttribute("for",optionsCheckbox.id);optionsCheckboxLabel.textContent=WebInspector.UIString("Automatically continue after evaluating");}
this._popoverContentElement.appendChild(checkboxLabel);this._popoverContentElement.appendChild(table);}
_popoverToggleEnabledCheckboxChanged(event)
{this._breakpoint.disabled=!event.target.checked;}
_conditionCodeMirrorChanged(codeMirror,change)
{this._breakpoint.condition=(codeMirror.getValue()||"").trim();}
_conditionCodeMirrorBeforeChange(codeMirror,change)
{if(change.update){let newText=change.text.join("").replace(/\n/g,"");change.update(change.from,change.to,[newText]);}
return true;}
_conditionCodeMirrorEscapeOrEnterKey()
{if(!this._popover)
return;this._popover.dismiss();}
_popoverIgnoreInputChanged(event)
{let ignoreCount=0;if(event.target.value){ignoreCount=parseInt(event.target.value,10);if(isNaN(ignoreCount)||ignoreCount<0)
ignoreCount=0;}
this._ignoreCountInput.value=ignoreCount;this._breakpoint.ignoreCount=ignoreCount;this._updateIgnoreCountText();}
_popoverToggleAutoContinueCheckboxChanged(event)
{this._breakpoint.autoContinue=event.target.checked;}
_popoverActionsCreateAddActionButton()
{this._popoverContentElement.classList.remove(WebInspector.BreakpointPopoverController.WidePopoverClassName);this._actionsContainer.removeChildren();let addActionButton=this._actionsContainer.appendChild(document.createElement("button"));addActionButton.textContent=WebInspector.UIString("Add Action");addActionButton.addEventListener("click",this._popoverActionsAddActionButtonClicked.bind(this));}
_popoverActionsAddActionButtonClicked(event)
{this._popoverContentElement.classList.add(WebInspector.BreakpointPopoverController.WidePopoverClassName);this._actionsContainer.removeChildren();let newAction=this._breakpoint.createAction(WebInspector.Breakpoint.DefaultBreakpointActionType);let newBreakpointActionView=new WebInspector.BreakpointActionView(newAction,this);this._popoverActionsInsertBreakpointActionView(newBreakpointActionView,-1);this._popoverOptionsRowElement.classList.remove(WebInspector.BreakpointPopoverController.HiddenStyleClassName);this._popover.update();}
_popoverActionsInsertBreakpointActionView(breakpointActionView,index)
{if(index===-1)
this._actionsContainer.appendChild(breakpointActionView.element);else{let nextElement=this._actionsContainer.children[index+1]||null;this._actionsContainer.insertBefore(breakpointActionView.element,nextElement);}}
_updateIgnoreCountText()
{if(this._breakpoint.ignoreCount===1)
this._ignoreCountText.textContent=WebInspector.UIString("time before stopping");else
this._ignoreCountText.textContent=WebInspector.UIString("times before stopping");}
breakpointActionViewAppendActionView(breakpointActionView,newAction)
{let newBreakpointActionView=new WebInspector.BreakpointActionView(newAction,this);let index=0;let children=this._actionsContainer.children;for(let i=0;children.length;++i){if(children[i]===breakpointActionView.element){index=i;break;}}
this._popoverActionsInsertBreakpointActionView(newBreakpointActionView,index);this._popoverOptionsRowElement.classList.remove(WebInspector.BreakpointPopoverController.HiddenStyleClassName);this._popover.update();}
breakpointActionViewRemoveActionView(breakpointActionView)
{breakpointActionView.element.remove();if(!this._actionsContainer.children.length){this._popoverActionsCreateAddActionButton();this._popoverOptionsRowElement.classList.add(WebInspector.BreakpointPopoverController.HiddenStyleClassName);this._popoverOptionsCheckboxElement.checked=false;}
this._popover.update();}
breakpointActionViewResized(breakpointActionView)
{this._popover.update();}
willDismissPopover(popover)
{this._popoverContentElement=null;this._popoverOptionsRowElement=null;this._popoverOptionsCheckboxElement=null;this._actionsContainer=null;this._popover=null;}
didDismissPopover(popover)
{let emptyActions=this._breakpoint.actions.filter(function(action){if(action.type!==WebInspector.BreakpointAction.Type.Evaluate&&action.type!==WebInspector.BreakpointAction.Type.Probe)
return false;return!(action.data&&action.data.trim());});for(let action of emptyActions)
this._breakpoint.removeAction(action);this._breakpoint=null;}};WebInspector.BreakpointPopoverController.WidePopoverClassName="wide";WebInspector.BreakpointPopoverController.HiddenStyleClassName="hidden";WebInspector.CSSStyleManager=class CSSStyleManager extends WebInspector.Object
{constructor()
{super();if(window.CSSAgent)
CSSAgent.enable();WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ResourceWasAdded,this._resourceAdded,this);WebInspector.Resource.addEventListener(WebInspector.SourceCode.Event.ContentDidChange,this._resourceContentDidChange,this);WebInspector.Resource.addEventListener(WebInspector.Resource.Event.TypeDidChange,this._resourceTypeDidChange,this);WebInspector.DOMNode.addEventListener(WebInspector.DOMNode.Event.AttributeModified,this._nodeAttributesDidChange,this);WebInspector.DOMNode.addEventListener(WebInspector.DOMNode.Event.AttributeRemoved,this._nodeAttributesDidChange,this);WebInspector.DOMNode.addEventListener(WebInspector.DOMNode.Event.EnabledPseudoClassesChanged,this._nodePseudoClassesDidChange,this);this._colorFormatSetting=new WebInspector.Setting("default-color-format",WebInspector.Color.Format.Original);this._styleSheetIdentifierMap=new Map;this._styleSheetFrameURLMap=new Map;this._nodeStylesMap={};
this._fetchedInitialStyleSheets=window.CSSAgent&&window.CSSAgent.hasEvent("styleSheetAdded");}
static protocolStyleSheetOriginToEnum(origin)
{switch(origin){case CSSAgent.StyleSheetOrigin.Regular:return WebInspector.CSSStyleSheet.Type.Author;case CSSAgent.StyleSheetOrigin.User:return WebInspector.CSSStyleSheet.Type.User;case CSSAgent.StyleSheetOrigin.UserAgent:return WebInspector.CSSStyleSheet.Type.UserAgent;case CSSAgent.StyleSheetOrigin.Inspector:return WebInspector.CSSStyleSheet.Type.Inspector;default:return CSSAgent.StyleSheetOrigin.Regular;}}
static protocolMediaSourceToEnum(source)
{switch(source){case CSSAgent.CSSMediaSource.MediaRule:return WebInspector.CSSMedia.Type.MediaRule;case CSSAgent.CSSMediaSource.ImportRule:return WebInspector.CSSMedia.Type.ImportRule;case CSSAgent.CSSMediaSource.LinkedSheet:return WebInspector.CSSMedia.Type.LinkedStyleSheet;case CSSAgent.CSSMediaSource.InlineSheet:return WebInspector.CSSMedia.Type.InlineStyleSheet;default:return WebInspector.CSSMedia.Type.MediaRule;}}
get preferredColorFormat()
{return this._colorFormatSetting.value;}
get styleSheets()
{return[...this._styleSheetIdentifierMap.values()];}
canForcePseudoClasses()
{return window.CSSAgent&&!!CSSAgent.forcePseudoState;}
propertyNameHasOtherVendorPrefix(name)
{if(!name||name.length<4||name.charAt(0)!=="-")
return false;var match=name.match(/^(?:-moz-|-ms-|-o-|-epub-)/);if(!match)
return false;return true;}
propertyValueHasOtherVendorKeyword(value)
{var match=value.match(/(?:-moz-|-ms-|-o-|-epub-)[-\w]+/);if(!match)
return false;return true;}
canonicalNameForPropertyName(name)
{if(!name||name.length<8||name.charAt(0)!=="-")
return name;var match=name.match(/^(?:-webkit-|-khtml-|-apple-)(.+)/);if(!match)
return name;return match[1];}
fetchStyleSheetsIfNeeded()
{if(this._fetchedInitialStyleSheets)
return;this._fetchInfoForAllStyleSheets(function(){});}
styleSheetForIdentifier(id)
{let styleSheet=this._styleSheetIdentifierMap.get(id);if(styleSheet)
return styleSheet;styleSheet=new WebInspector.CSSStyleSheet(id);this._styleSheetIdentifierMap.set(id,styleSheet);return styleSheet;}
stylesForNode(node)
{if(node.id in this._nodeStylesMap)
return this._nodeStylesMap[node.id];var styles=new WebInspector.DOMNodeStyles(node);this._nodeStylesMap[node.id]=styles;return styles;}
preferredInspectorStyleSheetForFrame(frame,callback,doNotCreateIfMissing)
{var inspectorStyleSheets=this._inspectorStyleSheetsForFrame(frame);for(let styleSheet of inspectorStyleSheets){if(styleSheet[WebInspector.CSSStyleManager.PreferredInspectorStyleSheetSymbol]){callback(styleSheet);return;}}
if(doNotCreateIfMissing)
return;if(CSSAgent.createStyleSheet){CSSAgent.createStyleSheet(frame.id,function(error,styleSheetId){let styleSheet=WebInspector.cssStyleManager.styleSheetForIdentifier(styleSheetId);styleSheet[WebInspector.CSSStyleManager.PreferredInspectorStyleSheetSymbol]=true;callback(styleSheet);});return;}
let expression=appendWebInspectorSourceURL("document");let contextId=frame.pageExecutionContext.id;RuntimeAgent.evaluate.invoke({expression,objectGroup:"",includeCommandLineAPI:false,doNotPauseOnExceptionsAndMuteConsole:true,contextId,returnByValue:false,generatePreview:false},documentAvailable);function documentAvailable(error,documentRemoteObjectPayload)
{if(error){callback(null);return;}
let remoteObject=WebInspector.RemoteObject.fromPayload(documentRemoteObjectPayload);remoteObject.pushNodeToFrontend(documentNodeAvailable.bind(null,remoteObject));}
function documentNodeAvailable(remoteObject,documentNodeId)
{remoteObject.release();if(!documentNodeId){callback(null);return;}
DOMAgent.querySelector(documentNodeId,"body",bodyNodeAvailable);}
function bodyNodeAvailable(error,bodyNodeId)
{if(error){console.error(error);callback(null);return;}
let selector="";CSSAgent.addRule(bodyNodeId,selector,cssRuleAvailable);}
function cssRuleAvailable(error,payload)
{if(error||!payload.ruleId){callback(null);return;}
let styleSheetId=payload.ruleId.styleSheetId;let styleSheet=WebInspector.cssStyleManager.styleSheetForIdentifier(styleSheetId);if(!styleSheet){callback(null);return;}
styleSheet[WebInspector.CSSStyleManager.PreferredInspectorStyleSheetSymbol]=true;callback(styleSheet);}}
mediaTypeChanged()
{this.mediaQueryResultChanged();}
mediaQueryResultChanged()
{for(var key in this._nodeStylesMap)
this._nodeStylesMap[key].mediaQueryResultDidChange();}
styleSheetChanged(styleSheetIdentifier)
{var styleSheet=this.styleSheetForIdentifier(styleSheetIdentifier); if(styleSheet.isInlineStyleAttributeStyleSheet())
return;styleSheet.noteContentDidChange();this._updateResourceContent(styleSheet);}
styleSheetAdded(styleSheetInfo)
{let styleSheet=this.styleSheetForIdentifier(styleSheetInfo.styleSheetId);let parentFrame=WebInspector.frameResourceManager.frameForIdentifier(styleSheetInfo.frameId);let origin=WebInspector.CSSStyleManager.protocolStyleSheetOriginToEnum(styleSheetInfo.origin);styleSheet.updateInfo(styleSheetInfo.sourceURL,parentFrame,origin,styleSheetInfo.isInline,styleSheetInfo.startLine,styleSheetInfo.startColumn);this.dispatchEventToListeners(WebInspector.CSSStyleManager.Event.StyleSheetAdded,{styleSheet});}
styleSheetRemoved(styleSheetIdentifier)
{let styleSheet=this._styleSheetIdentifierMap.get(styleSheetIdentifier);if(!styleSheet)
return;this._styleSheetIdentifierMap.delete(styleSheetIdentifier);this.dispatchEventToListeners(WebInspector.CSSStyleManager.Event.StyleSheetRemoved,{styleSheet});}
_inspectorStyleSheetsForFrame(frame)
{let styleSheets=[];for(let styleSheet of this.styleSheets){if(styleSheet.isInspectorStyleSheet()&&styleSheet.parentFrame===frame)
styleSheets.push(styleSheet);}
return styleSheets;}
_nodePseudoClassesDidChange(event)
{var node=event.target;for(var key in this._nodeStylesMap){var nodeStyles=this._nodeStylesMap[key];if(nodeStyles.node!==node&&!nodeStyles.node.isDescendant(node))
continue;nodeStyles.pseudoClassesDidChange(node);}}
_nodeAttributesDidChange(event)
{var node=event.target;for(var key in this._nodeStylesMap){var nodeStyles=this._nodeStylesMap[key];if(nodeStyles.node!==node&&!nodeStyles.node.isDescendant(node))
continue;nodeStyles.attributeDidChange(node,event.data.name);}}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;this._fetchedInitialStyleSheets=window.CSSAgent&&window.CSSAgent.hasEvent("styleSheetAdded");this._styleSheetIdentifierMap.clear();this._styleSheetFrameURLMap.clear();this._nodeStylesMap={};}
_resourceAdded(event)
{var resource=event.data.resource;if(resource.type!==WebInspector.Resource.Type.Stylesheet)
return;this._clearStyleSheetsForResource(resource);}
_resourceTypeDidChange(event)
{var resource=event.target;if(resource.type!==WebInspector.Resource.Type.Stylesheet)
return;this._clearStyleSheetsForResource(resource);}
_clearStyleSheetsForResource(resource)
{
this._styleSheetIdentifierMap.delete(this._frameURLMapKey(resource.parentFrame,resource.url));}
_frameURLMapKey(frame,url)
{return frame.id+":"+url;}
_lookupStyleSheetForResource(resource,callback)
{this._lookupStyleSheet(resource.parentFrame,resource.url,callback);}
_lookupStyleSheet(frame,url,callback)
{let key=this._frameURLMapKey(frame,url);function styleSheetsFetched()
{callback(this._styleSheetFrameURLMap.get(key)||null);}
let styleSheet=this._styleSheetFrameURLMap.get(key)||null;if(styleSheet)
callback(styleSheet);else
this._fetchInfoForAllStyleSheets(styleSheetsFetched.bind(this));}
_fetchInfoForAllStyleSheets(callback)
{function processStyleSheets(error,styleSheets)
{this._styleSheetFrameURLMap.clear();if(error){callback();return;}
for(let styleSheetInfo of styleSheets){let parentFrame=WebInspector.frameResourceManager.frameForIdentifier(styleSheetInfo.frameId);let origin=WebInspector.CSSStyleManager.protocolStyleSheetOriginToEnum(styleSheetInfo.origin);let isInline=styleSheetInfo.isInline||false;let startLine=styleSheetInfo.startLine||0;let startColumn=styleSheetInfo.startColumn||0;let styleSheet=this.styleSheetForIdentifier(styleSheetInfo.styleSheetId);styleSheet.updateInfo(styleSheetInfo.sourceURL,parentFrame,origin,isInline,startLine,startColumn);let key=this._frameURLMapKey(parentFrame,styleSheetInfo.sourceURL);this._styleSheetFrameURLMap.set(key,styleSheet);}
callback();}
CSSAgent.getAllStyleSheets(processStyleSheets.bind(this));}
_resourceContentDidChange(event)
{var resource=event.target;if(resource===this._ignoreResourceContentDidChangeEventForResource)
return;if(resource.type!==WebInspector.Resource.Type.Stylesheet||resource.syntheticMIMEType!=="text/css")
return;function applyStyleSheetChanges()
{function styleSheetFound(styleSheet)
{resource.__pendingChangeTimeout=undefined;if(!styleSheet)
return;
resource.__ignoreNextUpdateResourceContent=true;WebInspector.branchManager.currentBranch.revisionForRepresentedObject(styleSheet).content=resource.content;}
this._lookupStyleSheetForResource(resource,styleSheetFound.bind(this));}
if(resource.__pendingChangeTimeout)
clearTimeout(resource.__pendingChangeTimeout);resource.__pendingChangeTimeout=setTimeout(applyStyleSheetChanges.bind(this),500);}
_updateResourceContent(styleSheet)
{function fetchedStyleSheetContent(parameters)
{let representedObject=parameters.sourceCode;representedObject.__pendingChangeTimeout=undefined;if(!representedObject.url)
return;if(!styleSheet.isInspectorStyleSheet()){representedObject=representedObject.parentFrame.resourceForURL(representedObject.url);if(!representedObject)
return;
if(representedObject.type!==WebInspector.Resource.Type.Stylesheet)
return;}
if(representedObject.__ignoreNextUpdateResourceContent){representedObject.__ignoreNextUpdateResourceContent=false;return;}
this._ignoreResourceContentDidChangeEventForResource=representedObject;let revision=WebInspector.branchManager.currentBranch.revisionForRepresentedObject(representedObject);if(styleSheet.isInspectorStyleSheet()){revision.content=representedObject.content;styleSheet.dispatchEventToListeners(WebInspector.SourceCode.Event.ContentDidChange);}else
revision.content=parameters.content;this._ignoreResourceContentDidChangeEventForResource=null;}
function styleSheetReady()
{styleSheet.requestContent().then(fetchedStyleSheetContent.bind(this));}
function applyStyleSheetChanges()
{if(styleSheet.url)
styleSheetReady.call(this);else
this._fetchInfoForAllStyleSheets(styleSheetReady.bind(this));}
if(styleSheet.__pendingChangeTimeout)
clearTimeout(styleSheet.__pendingChangeTimeout);styleSheet.__pendingChangeTimeout=setTimeout(applyStyleSheetChanges.bind(this),500);}};WebInspector.CSSStyleManager.Event={StyleSheetAdded:"css-style-manager-style-sheet-added",StyleSheetRemoved:"css-style-manager-style-sheet-removed",};WebInspector.CSSStyleManager.PseudoElementNames=["before","after"];WebInspector.CSSStyleManager.ForceablePseudoClasses=["active","focus","hover","visited"];WebInspector.CSSStyleManager.PreferredInspectorStyleSheetSymbol=Symbol("css-style-manager-preferred-inspector-stylesheet");WebInspector.CanvasManager=class CanvasManager extends WebInspector.Object
{constructor()
{super();WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);this._canvasIdentifierMap=new Map;if(window.CanvasAgent)
CanvasAgent.enable();}
get canvases()
{return[...this._canvasIdentifierMap.values()];}
canvasAdded(canvasPayload)
{let canvas=WebInspector.Canvas.fromPayload(canvasPayload);this._canvasIdentifierMap.set(canvas.identifier,canvas);canvas.frame.canvasCollection.add(canvas);this.dispatchEventToListeners(WebInspector.CanvasManager.Event.CanvasWasAdded,{canvas});}
canvasRemoved(canvasIdentifier)
{let canvas=this._canvasIdentifierMap.take(canvasIdentifier);if(!canvas)
return;canvas.frame.canvasCollection.remove(canvas);this.dispatchEventToListeners(WebInspector.CanvasManager.Event.CanvasWasRemoved,{canvas});}
canvasMemoryChanged(canvasIdentifier,memoryCost)
{let canvas=this._canvasIdentifierMap.get(canvasIdentifier);if(!canvas)
return;canvas.memoryCost=memoryCost;}
cssCanvasClientNodesChanged(canvasIdentifier)
{let canvas=this._canvasIdentifierMap.get(canvasIdentifier);if(!canvas)
return;canvas.cssCanvasClientNodesChanged();}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;WebInspector.Canvas.resetUniqueDisplayNameNumbers();if(this._canvasIdentifierMap.size){this._canvasIdentifierMap.clear();this.dispatchEventToListeners(WebInspector.CanvasManager.Event.Cleared);}}};WebInspector.CanvasManager.Event={Cleared:"canvas-manager-cleared",CanvasWasAdded:"canvas-manager-canvas-was-added",CanvasWasRemoved:"canvas-manager-canvas-was-removed",};WebInspector.CodeMirrorColorEditingController=class CodeMirrorColorEditingController extends WebInspector.CodeMirrorEditingController
{ get initialValue()
{return WebInspector.Color.fromString(this.text);}
get cssClassName()
{return"color";}
popoverWillPresent(popover)
{this._colorPicker=new WebInspector.ColorPicker;this._colorPicker.addEventListener(WebInspector.ColorPicker.Event.ColorChanged,this._colorPickerColorChanged,this);this._colorPicker.addEventListener(WebInspector.ColorPicker.Event.FormatChanged,(event)=>popover.update());popover.content=this._colorPicker.element;}
popoverDidPresent(popover)
{this._colorPicker.color=this._value;}
_colorPickerColorChanged(event)
{this.value=event.target.color;}};WebInspector.CodeMirrorCompletionController=class CodeMirrorCompletionController extends WebInspector.Object
{constructor(codeMirror,delegate,stopCharactersRegex)
{super();this._codeMirror=codeMirror;this._stopCharactersRegex=stopCharactersRegex||null;this._delegate=delegate||null;this._startOffset=NaN;this._endOffset=NaN;this._lineNumber=NaN;this._prefix="";this._noEndingSemicolon=false;this._completions=[];this._extendedCompletionProviders={};this._suggestionsView=new WebInspector.CompletionSuggestionsView(this);this._keyMap={"Up":this._handleUpKey.bind(this),"Down":this._handleDownKey.bind(this),"Right":this._handleRightOrEnterKey.bind(this),"Esc":this._handleEscapeKey.bind(this),"Enter":this._handleRightOrEnterKey.bind(this),"Tab":this._handleTabKey.bind(this),"Cmd-A":this._handleHideKey.bind(this),"Cmd-Z":this._handleHideKey.bind(this),"Shift-Cmd-Z":this._handleHideKey.bind(this),"Cmd-Y":this._handleHideKey.bind(this)};this._handleChangeListener=this._handleChange.bind(this);this._handleCursorActivityListener=this._handleCursorActivity.bind(this);this._handleHideActionListener=this._handleHideAction.bind(this);this._codeMirror.addKeyMap(this._keyMap);this._codeMirror.on("change",this._handleChangeListener);this._codeMirror.on("cursorActivity",this._handleCursorActivityListener);this._codeMirror.on("blur",this._handleHideActionListener);this._codeMirror.on("scroll",this._handleHideActionListener);this._updatePromise=null;}
get delegate()
{return this._delegate;}
addExtendedCompletionProvider(modeName,provider)
{this._extendedCompletionProviders[modeName]=provider;}
updateCompletions(completions,implicitSuffix)
{if(isNaN(this._startOffset)||isNaN(this._endOffset)||isNaN(this._lineNumber))
return;if(!completions||!completions.length){this.hideCompletions();return;}
this._completions=completions;if(typeof implicitSuffix==="string")
this._implicitSuffix=implicitSuffix;var from={line:this._lineNumber,ch:this._startOffset};var to={line:this._lineNumber,ch:this._endOffset};var firstCharCoords=this._codeMirror.cursorCoords(from);var lastCharCoords=this._codeMirror.cursorCoords(to);var bounds=new WebInspector.Rect(firstCharCoords.left,firstCharCoords.top,lastCharCoords.right-firstCharCoords.left,firstCharCoords.bottom-firstCharCoords.top);var index=this._currentCompletion?completions.indexOf(this._currentCompletion):0;if(index===-1)
index=0;if(this._forced||completions.length>1||completions[index]!==this._prefix){this._suggestionsView.update(completions,index);this._suggestionsView.show(bounds);}else if(this._implicitSuffix){this._suggestionsView.hide();}else{
this.hideCompletions();return;}
this._applyCompletionHint(completions[index]);this._resolveUpdatePromise(WebInspector.CodeMirrorCompletionController.UpdatePromise.CompletionsFound);}
isCompletionChange(change)
{return this._ignoreChange||change.origin===WebInspector.CodeMirrorCompletionController.CompletionOrigin||change.origin===WebInspector.CodeMirrorCompletionController.DeleteCompletionOrigin;}
isShowingCompletions()
{return this._suggestionsView.visible||(this._completionHintMarker&&this._completionHintMarker.find());}
isHandlingClickEvent()
{return this._suggestionsView.isHandlingClickEvent();}
hideCompletions()
{this._suggestionsView.hide();this._removeCompletionHint();this._startOffset=NaN;this._endOffset=NaN;this._lineNumber=NaN;this._prefix="";this._completions=[];this._implicitSuffix="";this._forced=false;delete this._currentCompletion;delete this._ignoreNextCursorActivity;this._resolveUpdatePromise(WebInspector.CodeMirrorCompletionController.UpdatePromise.NoCompletionsFound);}
close()
{this._codeMirror.removeKeyMap(this._keyMap);this._codeMirror.off("change",this._handleChangeListener);this._codeMirror.off("cursorActivity",this._handleCursorActivityListener);this._codeMirror.off("blur",this._handleHideActionListener);this._codeMirror.off("scroll",this._handleHideActionListener);}
completeAtCurrentPositionIfNeeded(force)
{this._resolveUpdatePromise(WebInspector.CodeMirrorCompletionController.UpdatePromise.Canceled);var update=this._updatePromise=new WebInspector.WrappedPromise;this._completeAtCurrentPosition(force);return update.promise;}
completionSuggestionsSelectedCompletion(suggestionsView,completionText)
{this._applyCompletionHint(completionText);}
completionSuggestionsClickedCompletion(suggestionsView,completionText)
{this._codeMirror.focus();this._applyCompletionHint(completionText);this._commitCompletionHint();}
set noEndingSemicolon(noEndingSemicolon)
{this._noEndingSemicolon=noEndingSemicolon;}
_resolveUpdatePromise(message)
{if(!this._updatePromise)
return;this._updatePromise.resolve(message);this._updatePromise=null;}
get _currentReplacementText()
{return this._currentCompletion+this._implicitSuffix;}
_hasPendingCompletion()
{return!isNaN(this._startOffset)&&!isNaN(this._endOffset)&&!isNaN(this._lineNumber);}
_notifyCompletionsHiddenSoon()
{function notify()
{if(this._completionHintMarker)
return;if(this._delegate&&typeof this._delegate.completionControllerCompletionsHidden==="function")
this._delegate.completionControllerCompletionsHidden(this);}
if(this._notifyCompletionsHiddenIfNeededTimeout)
clearTimeout(this._notifyCompletionsHiddenIfNeededTimeout);this._notifyCompletionsHiddenIfNeededTimeout=setTimeout(notify.bind(this),WebInspector.CodeMirrorCompletionController.CompletionsHiddenDelay);}
_createCompletionHintMarker(position,text)
{var container=document.createElement("span");container.classList.add(WebInspector.CodeMirrorCompletionController.CompletionHintStyleClassName);container.textContent=text;this._completionHintMarker=this._codeMirror.setUniqueBookmark(position,{widget:container,insertLeft:true});}
_applyCompletionHint(completionText)
{if(!completionText)
return;function update()
{this._currentCompletion=completionText;this._removeCompletionHint(true,true);var replacementText=this._currentReplacementText;var from={line:this._lineNumber,ch:this._startOffset};var cursor={line:this._lineNumber,ch:this._endOffset};var currentText=this._codeMirror.getRange(from,cursor);this._createCompletionHintMarker(cursor,replacementText.replace(currentText,""));}
this._ignoreChange=true;this._ignoreNextCursorActivity=true;this._codeMirror.operation(update.bind(this));delete this._ignoreChange;}
_commitCompletionHint()
{function update()
{this._removeCompletionHint(true,true);var replacementText=this._currentReplacementText;var from={line:this._lineNumber,ch:this._startOffset};var cursor={line:this._lineNumber,ch:this._endOffset};var to={line:this._lineNumber,ch:this._startOffset+replacementText.length};var lastChar=this._currentCompletion.charAt(this._currentCompletion.length-1);var isClosing=")]}".indexOf(lastChar);if(isClosing!==-1)
to.ch-=1+this._implicitSuffix.length;this._codeMirror.replaceRange(replacementText,from,cursor,WebInspector.CodeMirrorCompletionController.CompletionOrigin);this._codeMirror.setCursor(to);this.hideCompletions();}
this._ignoreChange=true;this._ignoreNextCursorActivity=true;this._codeMirror.operation(update.bind(this));delete this._ignoreChange;}
_removeLastChangeFromHistory()
{var history=this._codeMirror.getHistory();history.undone=[];history.done.pop();this._codeMirror.setHistory(history);}
_removeCompletionHint(nonatomic,dontRestorePrefix)
{if(!this._completionHintMarker)
return;this._notifyCompletionsHiddenSoon();function clearMarker(marker)
{if(!marker)
return;var range=marker.find();if(range)
marker.clear();return null;}
function update()
{this._completionHintMarker=clearMarker(this._completionHintMarker);if(dontRestorePrefix)
return;var from={line:this._lineNumber,ch:this._startOffset};var to={line:this._lineNumber,ch:this._endOffset};this._codeMirror.replaceRange(this._prefix,from,to,WebInspector.CodeMirrorCompletionController.DeleteCompletionOrigin);this._removeLastChangeFromHistory();}
if(nonatomic){update.call(this);return;}
this._ignoreChange=true;this._codeMirror.operation(update.bind(this));delete this._ignoreChange;}
_scanStringForExpression(modeName,string,startOffset,direction,allowMiddleAndEmpty,includeStopCharacter,ignoreInitialUnmatchedOpenBracket,stopCharactersRegex)
{var stopCharactersRegex=stopCharactersRegex||this._stopCharactersRegex||WebInspector.CodeMirrorCompletionController.DefaultStopCharactersRegexModeMap[modeName]||WebInspector.CodeMirrorCompletionController.GenericStopCharactersRegex;function isStopCharacter(character)
{return stopCharactersRegex.test(character);}
function isOpenBracketCharacter(character)
{return WebInspector.CodeMirrorCompletionController.OpenBracketCharactersRegex.test(character);}
function isCloseBracketCharacter(character)
{return WebInspector.CodeMirrorCompletionController.CloseBracketCharactersRegex.test(character);}
function matchingBracketCharacter(character)
{return WebInspector.CodeMirrorCompletionController.MatchingBrackets[character];}
var endOffset=Math.min(startOffset,string.length);var endOfLineOrWord=endOffset===string.length||isStopCharacter(string.charAt(endOffset));if(!endOfLineOrWord&&!allowMiddleAndEmpty)
return null;var bracketStack=[];var bracketOffsetStack=[];var startOffset=endOffset;var firstOffset=endOffset+direction;for(var i=firstOffset;direction>0?i<string.length:i>=0;i+=direction){var character=string.charAt(i);if(isStopCharacter(character)&&!bracketStack.length)
break;if(isCloseBracketCharacter(character)){bracketStack.push(character);bracketOffsetStack.push(i);}else if(isOpenBracketCharacter(character)){if((!ignoreInitialUnmatchedOpenBracket||i!==firstOffset)&&(!bracketStack.length||matchingBracketCharacter(character)!==bracketStack.lastValue))
break;bracketOffsetStack.pop();bracketStack.pop();}
startOffset=i+(direction>0?1:0);}
if(bracketOffsetStack.length)
startOffset=bracketOffsetStack.pop()+1;if(includeStopCharacter&&startOffset>0&&startOffset<string.length)
startOffset+=direction;if(direction>0){var tempEndOffset=endOffset;endOffset=startOffset;startOffset=tempEndOffset;}
return{string:string.substring(startOffset,endOffset),startOffset,endOffset};}
_completeAtCurrentPosition(force)
{if(this._codeMirror.somethingSelected()){this.hideCompletions();return;}
this._removeCompletionHint(true,true);var cursor=this._codeMirror.getCursor();var token=this._codeMirror.getTokenAt(cursor);if(token.type&&/\bcomment\b/.test(token.type)){this.hideCompletions();return;}
var mode=this._codeMirror.getMode();var innerMode=CodeMirror.innerMode(mode,token.state).mode;var modeName=innerMode.alternateName||innerMode.name;var lineNumber=cursor.line;var lineString=this._codeMirror.getLine(lineNumber);var backwardScanResult=this._scanStringForExpression(modeName,lineString,cursor.ch,-1,force);if(!backwardScanResult){this.hideCompletions();return;}
var forwardScanResult=this._scanStringForExpression(modeName,lineString,cursor.ch,1,true,true);var suffix=forwardScanResult.string;this._ignoreNextCursorActivity=true;this._startOffset=backwardScanResult.startOffset;this._endOffset=backwardScanResult.endOffset;this._lineNumber=lineNumber;this._prefix=backwardScanResult.string;this._completions=[];this._implicitSuffix="";this._forced=force;var baseExpressionStopCharactersRegex=WebInspector.CodeMirrorCompletionController.BaseExpressionStopCharactersRegexModeMap[modeName];if(baseExpressionStopCharactersRegex)
var baseScanResult=this._scanStringForExpression(modeName,lineString,this._startOffset,-1,true,false,true,baseExpressionStopCharactersRegex);if(!force&&!backwardScanResult.string&&(!baseScanResult||!baseScanResult.string)){this.hideCompletions();return;}
var defaultCompletions=[];switch(modeName){case"css":defaultCompletions=this._generateCSSCompletions(token,baseScanResult?baseScanResult.string:null,suffix);break;case"javascript":defaultCompletions=this._generateJavaScriptCompletions(token,baseScanResult?baseScanResult.string:null,suffix);break;}
var extendedCompletionsProvider=this._extendedCompletionProviders[modeName];if(extendedCompletionsProvider){extendedCompletionsProvider.completionControllerCompletionsNeeded(this,defaultCompletions,baseScanResult?baseScanResult.string:null,this._prefix,suffix,force);return;}
if(this._delegate&&typeof this._delegate.completionControllerCompletionsNeeded==="function")
this._delegate.completionControllerCompletionsNeeded(this,this._prefix,defaultCompletions,baseScanResult?baseScanResult.string:null,suffix,force);else
this.updateCompletions(defaultCompletions);}
_generateCSSCompletions(mainToken,base,suffix)
{if(mainToken.state.state==="media"||mainToken.state.state==="top"||mainToken.state.state==="parens")
return[];if(/^[a-z]/i.test(suffix))
return[];var token=mainToken;var lineNumber=this._lineNumber;while(token.state.state==="prop"){if(!token.start){--lineNumber;if(lineNumber<0)
break;}
token=this._codeMirror.getTokenAt({line:lineNumber,ch:token.start?token.start:Number.MAX_VALUE});}
if(mainToken!==token&&token.type&&/\bproperty\b/.test(token.type)){var propertyName=token.string;
this._implicitSuffix=" ";if(suffix===";")
this._implicitSuffix=this._noEndingSemicolon?"":";";else if(suffix.startsWith("("))
this._implicitSuffix="";if(this._implicitSuffix===suffix)
this._implicitSuffix="";let completions=WebInspector.CSSKeywordCompletions.forProperty(propertyName).startsWith(this._prefix);if(suffix.startsWith("("))
completions=completions.map((x)=>x.replace(/\(\)$/,""));return completions;}
this._implicitSuffix=suffix!==":"?": ":"";return WebInspector.CSSCompletions.cssNameCompletions.startsWith(this._prefix);}
_generateJavaScriptCompletions(mainToken,base,suffix)
{
if(base&&!/[({[]$/.test(base))
return[];var matchingWords=[];var prefix=this._prefix;var localState=mainToken.state.localState?mainToken.state.localState:mainToken.state;var declaringVariable=localState.lexical.type==="vardef";var insideSwitch=localState.lexical.prev?localState.lexical.prev.info==="switch":false;var insideBlock=localState.lexical.prev?localState.lexical.prev.type==="}":false;var insideParenthesis=localState.lexical.type===")";var insideBrackets=localState.lexical.type==="]";var allKeywords=["break","case","catch","class","const","continue","debugger","default","delete","do","else","extends","false","finally","for","function","if","in","Infinity","instanceof","let","NaN","new","null","of","return","static","super","switch","this","throw","true","try","typeof","undefined","var","void","while","with","yield"];var valueKeywords=["false","Infinity","NaN","null","this","true","undefined"];var allowedKeywordsInsideBlocks=allKeywords.keySet();var allowedKeywordsWhenDeclaringVariable=valueKeywords.keySet();var allowedKeywordsInsideParenthesis=valueKeywords.concat(["class","function"]).keySet();var allowedKeywordsInsideBrackets=allowedKeywordsInsideParenthesis;var allowedKeywordsOnlyInsideSwitch=["case","default"].keySet();function matchKeywords(keywords)
{matchingWords=matchingWords.concat(keywords.filter(function(word){if(!insideSwitch&&word in allowedKeywordsOnlyInsideSwitch)
return false;if(insideBlock&&!(word in allowedKeywordsInsideBlocks))
return false;if(insideBrackets&&!(word in allowedKeywordsInsideBrackets))
return false;if(insideParenthesis&&!(word in allowedKeywordsInsideParenthesis))
return false;if(declaringVariable&&!(word in allowedKeywordsWhenDeclaringVariable))
return false;return word.startsWith(prefix);}));}
function matchVariables()
{function filterVariables(variables)
{for(var variable=variables;variable;variable=variable.next){if(declaringVariable&&variable.name===prefix)
continue;if(variable.name.startsWith(prefix)&&!matchingWords.includes(variable.name))
matchingWords.push(variable.name);}}
var context=localState.context;while(context){if(context.vars)
filterVariables(context.vars);context=context.prev;}
if(localState.localVars)
filterVariables(localState.localVars);if(localState.globalVars)
filterVariables(localState.globalVars);}
switch(suffix.substring(0,1)){case"":case" ":matchVariables();matchKeywords(allKeywords);break;case".":case"[":matchVariables();matchKeywords(["false","Infinity","NaN","this","true"]);break;case"(":matchVariables();matchKeywords(["catch","else","for","function","if","return","switch","throw","while","with","yield"]);break;case"{":matchKeywords(["do","else","finally","return","try","yield"]);break;case":":if(insideSwitch)
matchKeywords(["case","default"]);break;case";":matchVariables();matchKeywords(valueKeywords);matchKeywords(["break","continue","debugger","return","void"]);break;}
return matchingWords;}
_handleUpKey(codeMirror)
{if(!this._hasPendingCompletion())
return CodeMirror.Pass;if(!this.isShowingCompletions())
return;this._suggestionsView.selectPrevious();}
_handleDownKey(codeMirror)
{if(!this._hasPendingCompletion())
return CodeMirror.Pass;if(!this.isShowingCompletions())
return;this._suggestionsView.selectNext();}
_handleRightOrEnterKey(codeMirror)
{if(!this._hasPendingCompletion())
return CodeMirror.Pass;if(!this.isShowingCompletions())
return;this._commitCompletionHint();}
_handleEscapeKey(codeMirror)
{var delegateImplementsShouldAllowEscapeCompletion=this._delegate&&typeof this._delegate.completionControllerShouldAllowEscapeCompletion==="function";if(this._hasPendingCompletion())
this.hideCompletions();else if(this._codeMirror.getOption("readOnly"))
return CodeMirror.Pass;else if(!delegateImplementsShouldAllowEscapeCompletion||this._delegate.completionControllerShouldAllowEscapeCompletion(this))
this._completeAtCurrentPosition(true);else
return CodeMirror.Pass;}
_handleTabKey(codeMirror)
{if(!this._hasPendingCompletion())
return CodeMirror.Pass;if(!this.isShowingCompletions())
return;if(!this._completions.length)
return;if(!this._currentCompletion)
return;if(this._completions.length===1){this._commitCompletionHint();return;}
var prefixLength=this._prefix.length;var commonPrefix=this._completions[0];for(var i=1;i<this._completions.length;++i){var completion=this._completions[i];var lastIndex=Math.min(commonPrefix.length,completion.length);for(var j=prefixLength;j<lastIndex;++j){if(commonPrefix[j]!==completion[j]){commonPrefix=commonPrefix.substr(0,j);break;}}}
if(commonPrefix===this._prefix){this._commitCompletionHint();return;}
this._prefix=commonPrefix;this._endOffset=this._startOffset+commonPrefix.length;this._applyCompletionHint(this._currentCompletion);}
_handleChange(codeMirror,change)
{if(this.isCompletionChange(change))
return;this._ignoreNextCursorActivity=true;if(!change.origin||change.origin.charAt(0)!=="+"){this.hideCompletions();return;}
if(change.origin==="+delete"&&!this._hasPendingCompletion())
return;this._completeAtCurrentPosition(false);}
_handleCursorActivity(codeMirror)
{if(this._ignoreChange)
return;if(this._ignoreNextCursorActivity){delete this._ignoreNextCursorActivity;return;}
this.hideCompletions();}
_handleHideKey(codeMirror)
{this.hideCompletions();return CodeMirror.Pass;}
_handleHideAction(codeMirror)
{if(this.isHandlingClickEvent())
return;this.hideCompletions();}};WebInspector.CodeMirrorCompletionController.UpdatePromise={Canceled:"code-mirror-completion-controller-canceled",CompletionsFound:"code-mirror-completion-controller-completions-found",NoCompletionsFound:"code-mirror-completion-controller-no-completions-found"};WebInspector.CodeMirrorCompletionController.GenericStopCharactersRegex=/[\s=:;,]/;WebInspector.CodeMirrorCompletionController.DefaultStopCharactersRegexModeMap={"css":/[\s:;,{}()]/,"javascript":/[\s=:;,!+\-*/%&|^~?<>.{}()[\]]/};WebInspector.CodeMirrorCompletionController.BaseExpressionStopCharactersRegexModeMap={"javascript":/[\s=:;,!+\-*/%&|^~?<>]/};WebInspector.CodeMirrorCompletionController.OpenBracketCharactersRegex=/[({[]/;WebInspector.CodeMirrorCompletionController.CloseBracketCharactersRegex=/[)}\]]/;WebInspector.CodeMirrorCompletionController.MatchingBrackets={"{":"}","(":")","[":"]","}":"{",")":"(","]":"["};WebInspector.CodeMirrorCompletionController.CompletionHintStyleClassName="completion-hint";WebInspector.CodeMirrorCompletionController.CompletionsHiddenDelay=250;WebInspector.CodeMirrorCompletionController.CompletionTypingDelay=250;WebInspector.CodeMirrorCompletionController.CompletionOrigin="+completion";WebInspector.CodeMirrorCompletionController.DeleteCompletionOrigin="+delete-completion";WebInspector.CodeMirrorBezierEditingController=class CodeMirrorBezierEditingController extends WebInspector.CodeMirrorEditingController
{ get initialValue()
{return WebInspector.CubicBezier.fromString(this.text);}
get cssClassName()
{return"cubic-bezier";}
popoverWillPresent(popover)
{this._bezierEditor=new WebInspector.BezierEditor;this._bezierEditor.addEventListener(WebInspector.BezierEditor.Event.BezierChanged,this._bezierEditorBezierChanged,this);popover.content=this._bezierEditor.element;}
popoverDidPresent(popover)
{this._bezierEditor.bezier=this.value;}
popoverDidDismiss(popover)
{this._bezierEditor.removeListeners();}
_bezierEditorBezierChanged(event)
{this.value=event.data.bezier;}};WebInspector.CodeMirrorDragToAdjustNumberController=class CodeMirrorDragToAdjustNumberController extends WebInspector.Object
{constructor(codeMirror)
{super();this._codeMirror=codeMirror;this._dragToAdjustController=new WebInspector.DragToAdjustController(this);}
get enabled()
{return this._dragToAdjustController.enabled;}
set enabled(enabled)
{if(this.enabled===enabled)
return;this._dragToAdjustController.element=this._codeMirror.getWrapperElement();this._dragToAdjustController.enabled=enabled;}
dragToAdjustControllerActiveStateChanged(dragToAdjustController)
{if(!dragToAdjustController.active)
this._hoveredTokenInfo=null;}
dragToAdjustControllerCanBeActivated(dragToAdjustController)
{return!this._codeMirror.getOption("readOnly");}
dragToAdjustControllerCanBeAdjusted(dragToAdjustController)
{return this._hoveredTokenInfo&&this._hoveredTokenInfo.containsNumber;}
dragToAdjustControllerWasAdjustedByAmount(dragToAdjustController,amount)
{this._codeMirror.alterNumberInRange(amount,this._hoveredTokenInfo.startPosition,this._hoveredTokenInfo.endPosition,false);}
dragToAdjustControllerDidReset(dragToAdjustController)
{this._hoveredTokenInfo=null;}
dragToAdjustControllerCanAdjustObjectAtPoint(dragToAdjustController,point)
{var position=this._codeMirror.coordsChar({left:point.x,top:point.y});var token=this._codeMirror.getTokenAt(position);if(!token||!token.type||!token.string){if(this._hoveredTokenInfo)
dragToAdjustController.reset();return false;}
if(this._hoveredTokenInfo&&this._hoveredTokenInfo.line===position.line&&this._hoveredTokenInfo.token.start===token.start&&this._hoveredTokenInfo.token.end===token.end)
return this._hoveredTokenInfo.token.type.indexOf("number")!==-1;var containsNumber=token.type.indexOf("number")!==-1;this._hoveredTokenInfo={token,line:position.line,containsNumber,startPosition:{ch:token.start,line:position.line},endPosition:{ch:token.end,line:position.line}};return containsNumber;}};CodeMirror.defineOption("dragToAdjustNumbers",true,function(codeMirror,value,oldValue){if(!codeMirror.dragToAdjustNumberController)
codeMirror.dragToAdjustNumberController=new WebInspector.CodeMirrorDragToAdjustNumberController(codeMirror);codeMirror.dragToAdjustNumberController.enabled=value;});WebInspector.CodeMirrorGradientEditingController=class CodeMirrorGradientEditingController extends WebInspector.CodeMirrorEditingController
{ get initialValue()
{return WebInspector.Gradient.fromString(this.text);}
get cssClassName()
{return"gradient";}
get popoverPreferredEdges()
{
return[WebInspector.RectEdge.MIN_X,WebInspector.RectEdge.MAX_Y,WebInspector.RectEdge.MAX_X];}
popoverTargetFrameWithRects(rects)
{
return rects[0];}
popoverWillPresent(popover)
{function handleColorPickerToggled(event)
{popover.update();}
this._gradientEditor=new WebInspector.GradientEditor;this._gradientEditor.addEventListener(WebInspector.GradientEditor.Event.GradientChanged,this._gradientEditorGradientChanged,this);this._gradientEditor.addEventListener(WebInspector.GradientEditor.Event.ColorPickerToggled,handleColorPickerToggled,this);popover.content=this._gradientEditor.element;}
popoverDidPresent(popover)
{this._gradientEditor.gradient=this.value;}
_gradientEditorGradientChanged(event)
{this.value=event.data.gradient;}};WebInspector.CodeMirrorSpringEditingController=class CodeMirrorSpringEditingController extends WebInspector.CodeMirrorEditingController
{ get initialValue()
{return WebInspector.Spring.fromString(this.text);}
get cssClassName()
{return"spring";}
popoverWillPresent(popover)
{this._springEditor=new WebInspector.SpringEditor;this._springEditor.addEventListener(WebInspector.SpringEditor.Event.SpringChanged,this._springEditorSpringChanged,this);popover.content=this._springEditor.element;}
popoverDidPresent(popover)
{this._springEditor.spring=this.value;}
popoverDidDismiss(popover)
{this._springEditor.removeListeners();}
_springEditorSpringChanged(event)
{this.value=event.data.spring;}};WebInspector.CodeMirrorTokenTrackingController=class CodeMirrorTokenTrackingController extends WebInspector.Object
{constructor(codeMirror,delegate)
{super();this._codeMirror=codeMirror;this._delegate=delegate||null;this._mode=WebInspector.CodeMirrorTokenTrackingController.Mode.None;this._mouseOverDelayDuration=0;this._mouseOutReleaseDelayDuration=0;this._classNameForHighlightedRange=null;this._enabled=false;this._tracking=false;this._previousTokenInfo=null;this._hoveredMarker=null;const hidePopover=this._hidePopover.bind(this);this._codeMirror.addKeyMap({"Cmd-Enter":this._handleCommandEnterKey.bind(this),"Esc":hidePopover});this._codeMirror.on("cursorActivity",hidePopover);}
get delegate()
{return this._delegate;}
set delegate(x)
{this._delegate=x;}
get enabled()
{return this._enabled;}
set enabled(enabled)
{if(this._enabled===enabled)
return;this._enabled=enabled;var wrapper=this._codeMirror.getWrapperElement();if(enabled){wrapper.addEventListener("mouseenter",this);wrapper.addEventListener("mouseleave",this);this._updateHoveredTokenInfo({left:WebInspector.mouseCoords.x,top:WebInspector.mouseCoords.y});this._startTracking();}else{wrapper.removeEventListener("mouseenter",this);wrapper.removeEventListener("mouseleave",this);this._stopTracking();}}
get mode()
{return this._mode;}
set mode(mode)
{var oldMode=this._mode;this._mode=mode||WebInspector.CodeMirrorTokenTrackingController.Mode.None;if(oldMode!==this._mode&&this._tracking&&this._previousTokenInfo)
this._processNewHoveredToken(this._previousTokenInfo);}
get mouseOverDelayDuration()
{return this._mouseOverDelayDuration;}
set mouseOverDelayDuration(x)
{this._mouseOverDelayDuration=Math.max(x,0);}
get mouseOutReleaseDelayDuration()
{return this._mouseOutReleaseDelayDuration;}
set mouseOutReleaseDelayDuration(x)
{this._mouseOutReleaseDelayDuration=Math.max(x,0);}
get classNameForHighlightedRange()
{return this._classNameForHighlightedRange;}
set classNameForHighlightedRange(x)
{this._classNameForHighlightedRange=x||null;}
get candidate()
{return this._candidate;}
get hoveredMarker()
{return this._hoveredMarker;}
set hoveredMarker(hoveredMarker)
{this._hoveredMarker=hoveredMarker;}
highlightLastHoveredRange()
{if(this._candidate)
this.highlightRange(this._candidate.hoveredTokenRange);}
highlightRange(range)
{if(this._codeMirrorMarkedText&&this._codeMirrorMarkedText.className===this._classNameForHighlightedRange){var highlightedRange=this._codeMirrorMarkedText.find();if(!highlightedRange)
return;if(WebInspector.compareCodeMirrorPositions(highlightedRange.from,range.start)===0&&WebInspector.compareCodeMirrorPositions(highlightedRange.to,range.end)===0)
return;}
this.removeHighlightedRange();var className=this._classNameForHighlightedRange||"";this._codeMirrorMarkedText=this._codeMirror.markText(range.start,range.end,{className});window.addEventListener("mousemove",this,true);}
removeHighlightedRange()
{if(!this._codeMirrorMarkedText)
return;this._codeMirrorMarkedText.clear();this._codeMirrorMarkedText=null;window.removeEventListener("mousemove",this,true);}
_startTracking()
{if(this._tracking)
return;this._tracking=true;var wrapper=this._codeMirror.getWrapperElement();wrapper.addEventListener("mousemove",this,true);wrapper.addEventListener("mouseout",this,false);wrapper.addEventListener("mousedown",this,false);wrapper.addEventListener("mouseup",this,false);window.addEventListener("blur",this,true);}
_stopTracking()
{if(!this._tracking)
return;this._tracking=false;this._candidate=null;var wrapper=this._codeMirror.getWrapperElement();wrapper.removeEventListener("mousemove",this,true);wrapper.removeEventListener("mouseout",this,false);wrapper.removeEventListener("mousedown",this,false);wrapper.removeEventListener("mouseup",this,false);window.removeEventListener("blur",this,true);window.removeEventListener("mousemove",this,true);this._resetTrackingStates();}
handleEvent(event)
{switch(event.type){case"mouseenter":this._mouseEntered(event);break;case"mouseleave":this._mouseLeft(event);break;case"mousemove":if(event.currentTarget===window)
this._mouseMovedWithMarkedText(event);else
this._mouseMovedOverEditor(event);break;case"mouseout":if(!event.currentTarget.contains(event.relatedTarget))
this._mouseMovedOutOfEditor(event);break;case"mousedown":this._mouseButtonWasPressedOverEditor(event);break;case"mouseup":this._mouseButtonWasReleasedOverEditor(event);break;case"blur":this._windowLostFocus(event);break;}}
_handleCommandEnterKey(codeMirror)
{const tokenInfo=this._getTokenInfoForPosition(codeMirror.getCursor("head"));tokenInfo.triggeredBy=WebInspector.CodeMirrorTokenTrackingController.TriggeredBy.Keyboard;this._processNewHoveredToken(tokenInfo);}
_hidePopover()
{if(!this._candidate)
return CodeMirror.Pass;if(this._delegate&&typeof this._delegate.tokenTrackingControllerHighlightedRangeReleased==="function"){const forceHidePopover=true;this._delegate.tokenTrackingControllerHighlightedRangeReleased(this,forceHidePopover);}}
_mouseEntered(event)
{if(!this._tracking)
this._startTracking();}
_mouseLeft(event)
{this._stopTracking();}
_mouseMovedWithMarkedText(event)
{if(this._candidate&&this._candidate.triggeredBy===WebInspector.CodeMirrorTokenTrackingController.TriggeredBy.Keyboard)
return;var shouldRelease=!event.target.classList.contains(this._classNameForHighlightedRange);if(shouldRelease&&this._delegate&&typeof this._delegate.tokenTrackingControllerCanReleaseHighlightedRange==="function")
shouldRelease=this._delegate.tokenTrackingControllerCanReleaseHighlightedRange(this,event.target);if(shouldRelease){if(!this._markedTextMouseoutTimer)
this._markedTextMouseoutTimer=setTimeout(this._markedTextIsNoLongerHovered.bind(this),this._mouseOutReleaseDelayDuration);return;}
if(this._markedTextMouseoutTimer)
clearTimeout(this._markedTextMouseoutTimer);this._markedTextMouseoutTimer=0;}
_markedTextIsNoLongerHovered()
{if(this._delegate&&typeof this._delegate.tokenTrackingControllerHighlightedRangeReleased==="function")
this._delegate.tokenTrackingControllerHighlightedRangeReleased(this);this._markedTextMouseoutTimer=0;}
_mouseMovedOverEditor(event)
{this._updateHoveredTokenInfo({left:event.pageX,top:event.pageY});}
_updateHoveredTokenInfo(mouseCoords)
{var position=this._codeMirror.coordsChar(mouseCoords);var token=this._codeMirror.getTokenAt(position);if(!token||!token.type||!token.string){if(this._hoveredMarker&&this._delegate&&typeof this._delegate.tokenTrackingControllerMouseOutOfHoveredMarker==="function"){if(!this._codeMirror.findMarksAt(position).includes(this._hoveredMarker.codeMirrorTextMarker))
this._delegate.tokenTrackingControllerMouseOutOfHoveredMarker(this,this._hoveredMarker);}
this._resetTrackingStates();return;}
if(this._previousTokenInfo&&this._previousTokenInfo.position.line===position.line&&this._previousTokenInfo.token.start===token.start&&this._previousTokenInfo.token.end===token.end)
return;var tokenInfo=this._previousTokenInfo=this._getTokenInfoForPosition(position);if(/\bmeta\b/.test(token.type)){let nextTokenPosition=Object.shallowCopy(position);nextTokenPosition.ch=tokenInfo.token.end+1;let nextToken=this._codeMirror.getTokenAt(nextTokenPosition);if(nextToken&&nextToken.type&&!/\bmeta\b/.test(nextToken.type)){tokenInfo.token.type=nextToken.type;tokenInfo.token.string=tokenInfo.token.string+nextToken.string;tokenInfo.token.end=nextToken.end;}}else{let previousTokenPosition=Object.shallowCopy(position);previousTokenPosition.ch=tokenInfo.token.start-1;let previousToken=this._codeMirror.getTokenAt(previousTokenPosition);if(previousToken&&previousToken.type&&/\bmeta\b/.test(previousToken.type)){tokenInfo.token.string=previousToken.string+tokenInfo.token.string;tokenInfo.token.start=previousToken.start;}}
if(this._tokenHoverTimer)
clearTimeout(this._tokenHoverTimer);this._tokenHoverTimer=0;if(this._codeMirrorMarkedText||!this._mouseOverDelayDuration)
this._processNewHoveredToken(tokenInfo);else
this._tokenHoverTimer=setTimeout(this._processNewHoveredToken.bind(this,tokenInfo),this._mouseOverDelayDuration);}
_getTokenInfoForPosition(position)
{var token=this._codeMirror.getTokenAt(position);var innerMode=CodeMirror.innerMode(this._codeMirror.getMode(),token.state);var codeMirrorModeName=innerMode.mode.alternateName||innerMode.mode.name;return{token,position,innerMode,modeName:codeMirrorModeName};}
_mouseMovedOutOfEditor(event)
{if(this._tokenHoverTimer)
clearTimeout(this._tokenHoverTimer);this._tokenHoverTimer=0;this._previousTokenInfo=null;this._selectionMayBeInProgress=false;}
_mouseButtonWasPressedOverEditor(event)
{this._selectionMayBeInProgress=true;}
_mouseButtonWasReleasedOverEditor(event)
{this._selectionMayBeInProgress=false;this._mouseMovedOverEditor(event);if(this._codeMirrorMarkedText&&this._previousTokenInfo){var position=this._codeMirror.coordsChar({left:event.pageX,top:event.pageY});var marks=this._codeMirror.findMarksAt(position);for(var i=0;i<marks.length;++i){if(marks[i]===this._codeMirrorMarkedText){if(this._delegate&&typeof this._delegate.tokenTrackingControllerHighlightedRangeWasClicked==="function")
this._delegate.tokenTrackingControllerHighlightedRangeWasClicked(this);break;}}}}
_windowLostFocus(event)
{this._resetTrackingStates();}
_processNewHoveredToken(tokenInfo)
{if(this._selectionMayBeInProgress)
return;this._candidate=null;switch(this._mode){case WebInspector.CodeMirrorTokenTrackingController.Mode.NonSymbolTokens:this._candidate=this._processNonSymbolToken(tokenInfo);break;case WebInspector.CodeMirrorTokenTrackingController.Mode.JavaScriptExpression:case WebInspector.CodeMirrorTokenTrackingController.Mode.JavaScriptTypeInformation:this._candidate=this._processJavaScriptExpression(tokenInfo);break;case WebInspector.CodeMirrorTokenTrackingController.Mode.MarkedTokens:this._candidate=this._processMarkedToken(tokenInfo);break;}
if(!this._candidate)
return;this._candidate.triggeredBy=tokenInfo.triggeredBy;if(this._markedTextMouseoutTimer)
clearTimeout(this._markedTextMouseoutTimer);this._markedTextMouseoutTimer=0;if(this._delegate&&typeof this._delegate.tokenTrackingControllerNewHighlightCandidate==="function")
this._delegate.tokenTrackingControllerNewHighlightCandidate(this,this._candidate);}
_processNonSymbolToken(tokenInfo)
{var type=tokenInfo.token.type;if(!type)
return null;var startPosition={line:tokenInfo.position.line,ch:tokenInfo.token.start};var endPosition={line:tokenInfo.position.line,ch:tokenInfo.token.end};return{hoveredToken:tokenInfo.token,hoveredTokenRange:{start:startPosition,end:endPosition},};}
_processJavaScriptExpression(tokenInfo)
{if(tokenInfo.modeName!=="javascript")
return null;var startPosition={line:tokenInfo.position.line,ch:tokenInfo.token.start};var endPosition={line:tokenInfo.position.line,ch:tokenInfo.token.end};function tokenIsInRange(token,range)
{return token.line>=range.start.line&&token.ch>=range.start.ch&&token.line<=range.end.line&&token.ch<=range.end.ch;}
if(this._codeMirror.somethingSelected()){var selectionRange={start:this._codeMirror.getCursor("start"),end:this._codeMirror.getCursor("end")};if(tokenIsInRange(startPosition,selectionRange)||tokenIsInRange(endPosition,selectionRange)){return{hoveredToken:tokenInfo.token,hoveredTokenRange:selectionRange,expression:this._codeMirror.getSelection(),expressionRange:selectionRange,};}}
var type=tokenInfo.token.type;var isProperty=type.indexOf("property")!==-1;var isKeyword=type.indexOf("keyword")!==-1;if(!isProperty&&!isKeyword&&type.indexOf("variable")===-1&&type.indexOf("def")===-1)
return null;let state=tokenInfo.innerMode.state;if(isProperty&&state.lexical&&state.lexical.type==="}"){let shorthand=false;let mode=tokenInfo.innerMode.mode;let position={line:tokenInfo.position.line,ch:tokenInfo.token.end};WebInspector.walkTokens(this._codeMirror,mode,position,function(tokenType,string){if(tokenType)
return false;if(string==="(")
return false;if(string===","||string==="}"){shorthand=true;return false;}
return true;});if(!shorthand)
return null;}
if(isKeyword&&tokenInfo.token.string!=="this")
return null;var expression=tokenInfo.token.string;var expressionStartPosition={line:tokenInfo.position.line,ch:tokenInfo.token.start};while(true){var token=this._codeMirror.getTokenAt(expressionStartPosition);if(!token)
break;var isDot=!token.type&&token.string===".";var isExpression=token.type&&token.type.includes("m-javascript");if(!isDot&&!isExpression)
break;if(isExpression&&token.type.includes("operator"))
break;expression=token.string+expression;expressionStartPosition.ch=token.start;}
return{hoveredToken:tokenInfo.token,hoveredTokenRange:{start:startPosition,end:endPosition},expression,expressionRange:{start:expressionStartPosition,end:endPosition},};}
_processMarkedToken(tokenInfo)
{return this._processNonSymbolToken(tokenInfo);}
_resetTrackingStates()
{if(this._tokenHoverTimer)
clearTimeout(this._tokenHoverTimer);this._tokenHoverTimer=0;this._selectionMayBeInProgress=false;this._previousTokenInfo=null;this.removeHighlightedRange();}};WebInspector.CodeMirrorTokenTrackingController.JumpToSymbolHighlightStyleClassName="jump-to-symbol-highlight";WebInspector.CodeMirrorTokenTrackingController.Mode={None:"none",NonSymbolTokens:"non-symbol-tokens",JavaScriptExpression:"javascript-expression",JavaScriptTypeInformation:"javascript-type-information",MarkedTokens:"marked-tokens"};WebInspector.CodeMirrorTokenTrackingController.TriggeredBy={Keyboard:"keyboard",Hover:"hover"};WebInspector.CodeMirrorTextKillController=class CodeMirrorTextKillController extends WebInspector.Object
{constructor(codeMirror)
{super();this._codeMirror=codeMirror;this._expectingChangeEventForKill=false;this._nextKillStartsNewSequence=true;this._shouldPrependToKillRing=false;this._handleTextChangeListener=this._handleTextChange.bind(this);this._handleEditorBlurListener=this._handleEditorBlur.bind(this);this._handleSelectionOrCaretChangeListener=this._handleSelectionOrCaretChange.bind(this);this._codeMirror.addKeyMap({"Ctrl-K":this._handleTextKillCommand.bind(this,"killLine",false),"Alt-D":this._handleTextKillCommand.bind(this,"delWordAfter",false),"Alt-Delete":this._handleTextKillCommand.bind(this,"delGroupAfter",false),"Cmd-Backspace":this._handleTextKillCommand.bind(this,"delWrappedLineLeft",true),"Cmd-Delete":this._handleTextKillCommand.bind(this,"delWrappedLineRight",false),"Alt-Backspace":this._handleTextKillCommand.bind(this,"delGroupBefore",true),"Ctrl-Alt-Backspace":this._handleTextKillCommand.bind(this,"delGroupAfter",false),});}
_handleTextKillCommand(command,prependsToKillRing,codeMirror)
{
if(this._codeMirror.getOption("readOnly"))
return;this._shouldPrependToKillRing=prependsToKillRing;
if(!this._expectingChangeEventForKill)
this._codeMirror.on("changes",this._handleTextChangeListener);this._expectingChangeEventForKill=true;this._codeMirror.execCommand(command);}
_handleTextChange(codeMirror,changes)
{this._codeMirror.off("changes",this._handleTextChangeListener);
if(!this._expectingChangeEventForKill)
return;this._expectingChangeEventForKill=false;let change=changes[0];
if(change.origin!=="+delete")
return;
let killedText;if(change.to.line===change.from.line+1&&change.removed.length===2){if(change.removed[0].length&&!change.removed[1].length)
killedText=change.removed[0]+"\n";else
killedText="\n";}else{killedText=change.removed[0];}
InspectorFrontendHost.killText(killedText,this._shouldPrependToKillRing,this._nextKillStartsNewSequence);
this._nextKillStartsNewSequence=false;this._codeMirror.on("blur",this._handleEditorBlurListener);this._codeMirror.on("cursorActivity",this._handleSelectionOrCaretChangeListener);}
_handleEditorBlur(codeMirror)
{this._nextKillStartsNewSequence=true;this._codeMirror.off("blur",this._handleEditorBlurListener);this._codeMirror.off("cursorActivity",this._handleSelectionOrCaretChangeListener);}
_handleSelectionOrCaretChange(codeMirror)
{if(this._expectingChangeEventForKill)
return;this._nextKillStartsNewSequence=true;this._codeMirror.off("blur",this._handleEditorBlurListener);this._codeMirror.off("cursorActivity",this._handleSelectionOrCaretChangeListener);}};WebInspector.DOMDebuggerManager=class DOMDebuggerManager extends WebInspector.Object
{constructor()
{super();this._domBreakpointsSetting=new WebInspector.Setting("dom-breakpoints",[]);this._domBreakpointURLMap=new Map;this._domBreakpointFrameIdentifierMap=new Map;this._xhrBreakpointsSetting=new WebInspector.Setting("xhr-breakpoints",[]);this._xhrBreakpoints=[];this._allRequestsBreakpointEnabledSetting=new WebInspector.Setting("break-on-all-requests",false);this._allRequestsBreakpoint=new WebInspector.XHRBreakpoint(null,null,!this._allRequestsBreakpointEnabledSetting.value);WebInspector.DOMBreakpoint.addEventListener(WebInspector.DOMBreakpoint.Event.DisabledStateDidChange,this._domBreakpointDisabledStateDidChange,this);WebInspector.XHRBreakpoint.addEventListener(WebInspector.XHRBreakpoint.Event.DisabledStateDidChange,this._xhrBreakpointDisabledStateDidChange,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.NodeRemoved,this._nodeRemoved,this);WebInspector.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.NodeInserted,this._nodeInserted,this);WebInspector.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.MainFrameDidChange,this._mainFrameDidChange,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ChildFrameWasRemoved,this._childFrameWasRemoved,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);if(this.supported){this._restoringBreakpoints=true;for(let cookie of this._domBreakpointsSetting.value){let breakpoint=new WebInspector.DOMBreakpoint(cookie,cookie.type,cookie.disabled);this.addDOMBreakpoint(breakpoint);}
for(let cookie of this._xhrBreakpointsSetting.value){let breakpoint=new WebInspector.XHRBreakpoint(cookie.type,cookie.url,cookie.disabled);this.addXHRBreakpoint(breakpoint);}
this._restoringBreakpoints=false;this._speculativelyResolveBreakpoints();if(!this._allRequestsBreakpoint.disabled)
this._updateXHRBreakpoint(this._allRequestsBreakpoint);}}
get supported()
{return!!window.DOMDebuggerAgent;}
get allRequestsBreakpoint(){return this._allRequestsBreakpoint;}
get domBreakpoints()
{let mainFrame=WebInspector.frameResourceManager.mainFrame;if(!mainFrame)
return[];let resolvedBreakpoints=[];let frames=[mainFrame];while(frames.length){let frame=frames.shift();let domBreakpointNodeIdentifierMap=this._domBreakpointFrameIdentifierMap.get(frame.id);if(domBreakpointNodeIdentifierMap){for(let breakpoints of domBreakpointNodeIdentifierMap.values())
resolvedBreakpoints=resolvedBreakpoints.concat(breakpoints);}
frames=frames.concat(frame.childFrameCollection.toArray());}
return resolvedBreakpoints;}
get xhrBreakpoints(){return this._xhrBreakpoints;}
isBreakpointRemovable(breakpoint)
{return breakpoint!==this._allRequestsBreakpoint;}
domBreakpointsForNode(node)
{if(!node)
return[];let domBreakpointNodeIdentifierMap=this._domBreakpointFrameIdentifierMap.get(node.frameIdentifier);if(!domBreakpointNodeIdentifierMap)
return[];let breakpoints=domBreakpointNodeIdentifierMap.get(node.id);return breakpoints?breakpoints.slice():[];}
addDOMBreakpoint(breakpoint)
{if(!breakpoint||!breakpoint.url)
return;let breakpoints=this._domBreakpointURLMap.get(breakpoint.url);if(!breakpoints){breakpoints=[breakpoint];this._domBreakpointURLMap.set(breakpoint.url,breakpoints);}else
breakpoints.push(breakpoint);if(breakpoint.domNodeIdentifier)
this._resolveDOMBreakpoint(breakpoint,breakpoint.domNodeIdentifier);this.dispatchEventToListeners(WebInspector.DOMDebuggerManager.Event.DOMBreakpointAdded,{breakpoint});this._saveDOMBreakpoints();}
removeDOMBreakpoint(breakpoint)
{if(!breakpoint)
return;let nodeIdentifier=breakpoint.domNodeIdentifier;if(!nodeIdentifier)
return;this._detachDOMBreakpoint(breakpoint);let urlBreakpoints=this._domBreakpointURLMap.get(breakpoint.url);urlBreakpoints.remove(breakpoint,true);if(!breakpoint.disabled)
DOMDebuggerAgent.removeDOMBreakpoint(nodeIdentifier,breakpoint.type);if(!urlBreakpoints.length)
this._domBreakpointURLMap.delete(breakpoint.url);this.dispatchEventToListeners(WebInspector.DOMDebuggerManager.Event.DOMBreakpointRemoved,{breakpoint});breakpoint.domNodeIdentifier=null;this._saveDOMBreakpoints();}
removeDOMBreakpointsForNode(node)
{this._restoringBreakpoints=true;this.domBreakpointsForNode(node).forEach(this.removeDOMBreakpoint,this);this._restoringBreakpoints=false;this._saveDOMBreakpoints();}
xhrBreakpointForURL(url)
{return this._xhrBreakpoints.find((breakpoint)=>breakpoint.url===url)||null;}
addXHRBreakpoint(breakpoint)
{if(!breakpoint)
return;if(this._xhrBreakpoints.includes(breakpoint))
return;if(this._xhrBreakpoints.some((entry)=>entry.type===breakpoint.type&&entry.url===breakpoint.url))
return;this._xhrBreakpoints.push(breakpoint);this.dispatchEventToListeners(WebInspector.DOMDebuggerManager.Event.XHRBreakpointAdded,{breakpoint});this._resolveXHRBreakpoint(breakpoint);this._saveXHRBreakpoints();}
removeXHRBreakpoint(breakpoint)
{if(!breakpoint)
return;if(!this._xhrBreakpoints.includes(breakpoint))
return;this._xhrBreakpoints.remove(breakpoint,true);this._saveXHRBreakpoints();this.dispatchEventToListeners(WebInspector.DOMDebuggerManager.Event.XHRBreakpointRemoved,{breakpoint});if(breakpoint.disabled)
return;DOMDebuggerAgent.removeXHRBreakpoint(breakpoint.url,(error)=>{if(error)
console.error(error);});}
_detachDOMBreakpoint(breakpoint)
{let nodeIdentifier=breakpoint.domNodeIdentifier;let node=WebInspector.domTreeManager.nodeForId(nodeIdentifier);if(!node)
return;let frameIdentifier=node.frameIdentifier;let domBreakpointNodeIdentifierMap=this._domBreakpointFrameIdentifierMap.get(frameIdentifier);if(!domBreakpointNodeIdentifierMap)
return;let breakpoints=domBreakpointNodeIdentifierMap.get(nodeIdentifier);if(!breakpoints)
return;breakpoints.remove(breakpoint,true);if(breakpoints.length)
return;domBreakpointNodeIdentifierMap.delete(nodeIdentifier);if(!domBreakpointNodeIdentifierMap.size)
this._domBreakpointFrameIdentifierMap.delete(frameIdentifier)}
_detachBreakpointsForFrame(frame)
{let domBreakpointNodeIdentifierMap=this._domBreakpointFrameIdentifierMap.get(frame.id);if(!domBreakpointNodeIdentifierMap)
return;this._domBreakpointFrameIdentifierMap.delete(frame.id);for(let breakpoints of domBreakpointNodeIdentifierMap.values()){for(let breakpoint of breakpoints)
breakpoint.domNodeIdentifier=null;}}
_speculativelyResolveBreakpoints()
{let mainFrame=WebInspector.frameResourceManager.mainFrame;if(!mainFrame)
return;let domBreakpoints=this._domBreakpointURLMap.get(mainFrame.url);if(domBreakpoints){for(let breakpoint of domBreakpoints){if(breakpoint.domNodeIdentifier)
continue;WebInspector.domTreeManager.pushNodeByPathToFrontend(breakpoint.path,(nodeIdentifier)=>{if(!nodeIdentifier)
return;this._resolveDOMBreakpoint(breakpoint,nodeIdentifier);});}}
for(let breakpoint of this._xhrBreakpoints)
this._resolveXHRBreakpoint(breakpoint);}
_resolveDOMBreakpoint(breakpoint,nodeIdentifier)
{let node=WebInspector.domTreeManager.nodeForId(nodeIdentifier);if(!node)
return;let frameIdentifier=node.frameIdentifier;let domBreakpointNodeIdentifierMap=this._domBreakpointFrameIdentifierMap.get(frameIdentifier);if(!domBreakpointNodeIdentifierMap){domBreakpointNodeIdentifierMap=new Map;this._domBreakpointFrameIdentifierMap.set(frameIdentifier,domBreakpointNodeIdentifierMap);}
let breakpoints=domBreakpointNodeIdentifierMap.get(nodeIdentifier);if(breakpoints)
breakpoints.push(breakpoint);else
domBreakpointNodeIdentifierMap.set(nodeIdentifier,[breakpoint]);breakpoint.domNodeIdentifier=nodeIdentifier;this._updateDOMBreakpoint(breakpoint);}
_updateDOMBreakpoint(breakpoint)
{let nodeIdentifier=breakpoint.domNodeIdentifier;if(!nodeIdentifier)
return;function breakpointUpdated(error)
{if(error)
console.error(error);}
if(breakpoint.disabled)
DOMDebuggerAgent.removeDOMBreakpoint(nodeIdentifier,breakpoint.type,breakpointUpdated);else
DOMDebuggerAgent.setDOMBreakpoint(nodeIdentifier,breakpoint.type,breakpointUpdated);}
_updateXHRBreakpoint(breakpoint,callback)
{function breakpointUpdated(error)
{if(error)
console.error(error);if(callback&&typeof callback==="function")
callback(error);}
if(breakpoint.disabled)
DOMDebuggerAgent.removeXHRBreakpoint(breakpoint.url,breakpointUpdated);else{let isRegex=breakpoint.type===WebInspector.XHRBreakpoint.Type.RegularExpression;DOMDebuggerAgent.setXHRBreakpoint(breakpoint.url,isRegex,breakpointUpdated);}}
_resolveXHRBreakpoint(breakpoint)
{if(breakpoint.disabled)
return;this._updateXHRBreakpoint(breakpoint,()=>{breakpoint.dispatchEventToListeners(WebInspector.XHRBreakpoint.Event.ResolvedStateDidChange);});}
_saveDOMBreakpoints()
{if(this._restoringBreakpoints)
return;let breakpointsToSave=[];for(let breakpoints of this._domBreakpointURLMap.values())
breakpointsToSave=breakpointsToSave.concat(breakpoints);this._domBreakpointsSetting.value=breakpointsToSave.map((breakpoint)=>breakpoint.serializableInfo);}
_saveXHRBreakpoints()
{if(this._restoringBreakpoints)
return;this._xhrBreakpointsSetting.value=this._xhrBreakpoints.map((breakpoint)=>breakpoint.serializableInfo);}
_domBreakpointDisabledStateDidChange(event)
{let breakpoint=event.target;this._updateDOMBreakpoint(breakpoint);this._saveDOMBreakpoints();}
_xhrBreakpointDisabledStateDidChange(event)
{let breakpoint=event.target;if(breakpoint===this._allRequestsBreakpoint)
this._allRequestsBreakpointEnabledSetting.value=!breakpoint.disabled;this._updateXHRBreakpoint(breakpoint);this._saveXHRBreakpoints();}
_childFrameWasRemoved(event)
{let frame=event.data.childFrame;this._detachBreakpointsForFrame(frame);}
_mainFrameDidChange()
{this._speculativelyResolveBreakpoints();}
_mainResourceDidChange(event)
{let frame=event.target;if(frame.isMainFrame()){for(let breakpoints of this._domBreakpointURLMap.values())
breakpoints.forEach((breakpoint)=>{breakpoint.domNodeIdentifier=null;});this._domBreakpointFrameIdentifierMap.clear();}else
this._detachBreakpointsForFrame(frame);this._speculativelyResolveBreakpoints();}
_nodeInserted(event)
{let node=event.data.node;if(node.nodeType()!==Node.ELEMENT_NODE||!node.ownerDocument)
return;let url=node.ownerDocument.documentURL;let breakpoints=this._domBreakpointURLMap.get(url);if(!breakpoints)
return;for(let breakpoint of breakpoints){if(breakpoint.domNodeIdentifier)
continue;if(breakpoint.path!==node.path())
continue;this._resolveDOMBreakpoint(breakpoint,node.id);}}
_nodeRemoved(event)
{let node=event.data.node;if(node.nodeType()!==Node.ELEMENT_NODE||!node.ownerDocument)
return;let domBreakpointNodeIdentifierMap=this._domBreakpointFrameIdentifierMap.get(node.frameIdentifier);if(!domBreakpointNodeIdentifierMap)
return;let breakpoints=domBreakpointNodeIdentifierMap.get(node.id);if(!breakpoints)
return;domBreakpointNodeIdentifierMap.delete(node.id);if(!domBreakpointNodeIdentifierMap.size)
this._domBreakpointFrameIdentifierMap.delete(node.frameIdentifier);for(let breakpoint of breakpoints)
breakpoint.domNodeIdentifier=null;}};WebInspector.DOMDebuggerManager.Event={DOMBreakpointAdded:"dom-debugger-manager-dom-breakpoint-added",DOMBreakpointRemoved:"dom-debugger-manager-dom-breakpoint-removed",XHRBreakpointAdded:"dom-debugger-manager-xhr-breakpoint-added",XHRBreakpointRemoved:"dom-debugger-manager-xhr-breakpoint-removed",};WebInspector.DOMTreeManager=class DOMTreeManager extends WebInspector.Object
{constructor()
{super();this._idToDOMNode={};this._document=null;this._attributeLoadNodeIds={};this._flows=new Map;this._contentNodesToFlowsMap=new Map;this._restoreSelectedNodeIsAllowed=true;this._loadNodeAttributesTimeout=0;WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);}
static _flowPayloadHashKey(flowPayload)
{return flowPayload.documentNodeId+":"+flowPayload.name;}
requestDocument(callback)
{if(this._document){callback(this._document);return;}
if(this._pendingDocumentRequestCallbacks){this._pendingDocumentRequestCallbacks.push(callback);return;}
this._pendingDocumentRequestCallbacks=[callback];function onDocumentAvailable(error,root)
{if(!error)
this._setDocument(root);for(let callback of this._pendingDocumentRequestCallbacks)
callback(this._document);this._pendingDocumentRequestCallbacks=null;}
DOMAgent.getDocument(onDocumentAvailable.bind(this));}
ensureDocument()
{this.requestDocument(function(){});}
pushNodeToFrontend(objectId,callback)
{this._dispatchWhenDocumentAvailable(DOMAgent.requestNode.bind(DOMAgent,objectId),callback);}
pushNodeByPathToFrontend(path,callback)
{this._dispatchWhenDocumentAvailable(DOMAgent.pushNodeByPathToFrontend.bind(DOMAgent,path),callback);}
_wrapClientCallback(callback)
{if(!callback)
return null;return function(error,result){if(error)
console.error("Error during DOMAgent operation: "+error);callback(error?null:result);};}
_dispatchWhenDocumentAvailable(func,callback)
{var callbackWrapper=this._wrapClientCallback(callback);function onDocumentAvailable()
{if(this._document)
func(callbackWrapper);else{if(callbackWrapper)
callbackWrapper("No document");}}
this.requestDocument(onDocumentAvailable.bind(this));}
_attributeModified(nodeId,name,value)
{var node=this._idToDOMNode[nodeId];if(!node)
return;node._setAttribute(name,value);this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.AttributeModified,{node,name});node.dispatchEventToListeners(WebInspector.DOMNode.Event.AttributeModified,{name});}
_attributeRemoved(nodeId,name)
{var node=this._idToDOMNode[nodeId];if(!node)
return;node._removeAttribute(name);this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.AttributeRemoved,{node,name});node.dispatchEventToListeners(WebInspector.DOMNode.Event.AttributeRemoved,{name});}
_inlineStyleInvalidated(nodeIds)
{for(var nodeId of nodeIds)
this._attributeLoadNodeIds[nodeId]=true;if(this._loadNodeAttributesTimeout)
return;this._loadNodeAttributesTimeout=setTimeout(this._loadNodeAttributes.bind(this),0);}
_loadNodeAttributes()
{function callback(nodeId,error,attributes)
{if(error){console.error("Error during DOMAgent operation: "+error);return;}
var node=this._idToDOMNode[nodeId];if(node){node._setAttributesPayload(attributes);this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.AttributeModified,{node,name:"style"});node.dispatchEventToListeners(WebInspector.DOMNode.Event.AttributeModified,{name:"style"});}}
this._loadNodeAttributesTimeout=0;for(var nodeId in this._attributeLoadNodeIds){var nodeIdAsNumber=parseInt(nodeId);DOMAgent.getAttributes(nodeIdAsNumber,callback.bind(this,nodeIdAsNumber));}
this._attributeLoadNodeIds={};}
_characterDataModified(nodeId,newValue)
{var node=this._idToDOMNode[nodeId];node._nodeValue=newValue;this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.CharacterDataModified,{node});}
nodeForId(nodeId)
{return this._idToDOMNode[nodeId];}
_documentUpdated()
{this._setDocument(null);}
_setDocument(payload)
{this._idToDOMNode={};let newDocument=null;if(payload&&"nodeId"in payload)
newDocument=new WebInspector.DOMNode(this,null,false,payload);if(this._document===newDocument)
return;this._document=newDocument;this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.DocumentUpdated,{document:this._document});}
_setDetachedRoot(payload)
{new WebInspector.DOMNode(this,null,false,payload);}
_setChildNodes(parentId,payloads)
{if(!parentId&&payloads.length){this._setDetachedRoot(payloads[0]);return;}
var parent=this._idToDOMNode[parentId];parent._setChildrenPayload(payloads);}
_childNodeCountUpdated(nodeId,newValue)
{var node=this._idToDOMNode[nodeId];node.childNodeCount=newValue;this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.ChildNodeCountUpdated,node);}
_childNodeInserted(parentId,prevId,payload)
{var parent=this._idToDOMNode[parentId];var prev=this._idToDOMNode[prevId];var node=parent._insertChild(prev,payload);this._idToDOMNode[node.id]=node;this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.NodeInserted,{node,parent});}
_childNodeRemoved(parentId,nodeId)
{var parent=this._idToDOMNode[parentId];var node=this._idToDOMNode[nodeId];parent._removeChild(node);this._unbind(node);this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.NodeRemoved,{node,parent});}
_customElementStateChanged(elementId,newState)
{const node=this._idToDOMNode[elementId];node._customElementState=newState;this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.CustomElementStateChanged,{node});}
_pseudoElementAdded(parentId,pseudoElement)
{var parent=this._idToDOMNode[parentId];if(!parent)
return;var node=new WebInspector.DOMNode(this,parent.ownerDocument,false,pseudoElement);node.parentNode=parent;this._idToDOMNode[node.id]=node;parent.pseudoElements().set(node.pseudoType(),node);this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.NodeInserted,{node,parent});}
_pseudoElementRemoved(parentId,pseudoElementId)
{var pseudoElement=this._idToDOMNode[pseudoElementId];if(!pseudoElement)
return;var parent=pseudoElement.parentNode;if(!parent)
return;parent._removeChild(pseudoElement);this._unbind(pseudoElement);this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.NodeRemoved,{node:pseudoElement,parent});}
_unbind(node)
{this._removeContentNodeFromFlowIfNeeded(node);delete this._idToDOMNode[node.id];for(let i=0;node.children&&i<node.children.length;++i)
this._unbind(node.children[i]);let templateContent=node.templateContent();if(templateContent)
this._unbind(templateContent);for(let pseudoElement of node.pseudoElements().values())
this._unbind(pseudoElement);}
get restoreSelectedNodeIsAllowed()
{return this._restoreSelectedNodeIsAllowed;}
inspectElement(nodeId)
{var node=this._idToDOMNode[nodeId];if(!node||!node.ownerDocument)
return;this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.DOMNodeWasInspected,{node});this._inspectModeEnabled=false;this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.InspectModeStateChanged);}
inspectNodeObject(remoteObject)
{this._restoreSelectedNodeIsAllowed=false;function nodeAvailable(nodeId)
{remoteObject.release();if(!nodeId)
return;this.inspectElement(nodeId);let domNode=this.nodeForId(nodeId);WebInspector.RemoteObject.resolveNode(domNode,WebInspector.RuntimeManager.ConsoleObjectGroup,function(remoteObject){if(!remoteObject)
return;let specialLogStyles=true;let shouldRevealConsole=false;WebInspector.consoleLogViewController.appendImmediateExecutionWithResult(WebInspector.UIString("Selected Element"),remoteObject,specialLogStyles,shouldRevealConsole);});}
remoteObject.pushNodeToFrontend(nodeAvailable.bind(this));}
performSearch(query,searchCallback)
{this.cancelSearch();function callback(error,searchId,resultsCount)
{this._searchId=searchId;searchCallback(resultsCount);}
DOMAgent.performSearch(query,callback.bind(this));}
searchResult(index,callback)
{function mycallback(error,nodeIds)
{if(error){console.error(error);callback(null);return;}
if(nodeIds.length!==1)
return;callback(this._idToDOMNode[nodeIds[0]]);}
if(this._searchId)
DOMAgent.getSearchResults(this._searchId,index,index+1,mycallback.bind(this));else
callback(null);}
cancelSearch()
{if(this._searchId){DOMAgent.discardSearchResults(this._searchId);this._searchId=undefined;}}
querySelector(nodeId,selectors,callback)
{DOMAgent.querySelector(nodeId,selectors,this._wrapClientCallback(callback));}
querySelectorAll(nodeId,selectors,callback)
{DOMAgent.querySelectorAll(nodeId,selectors,this._wrapClientCallback(callback));}
highlightDOMNode(nodeId,mode)
{if(this._hideDOMNodeHighlightTimeout){clearTimeout(this._hideDOMNodeHighlightTimeout);this._hideDOMNodeHighlightTimeout=undefined;}
this._highlightedDOMNodeId=nodeId;if(nodeId)
DOMAgent.highlightNode.invoke({nodeId,highlightConfig:this._buildHighlightConfig(mode)});else
DOMAgent.hideHighlight();}
highlightDOMNodeList(nodeIds,mode)
{if(!DOMAgent.highlightNodeList)
return;if(this._hideDOMNodeHighlightTimeout){clearTimeout(this._hideDOMNodeHighlightTimeout);this._hideDOMNodeHighlightTimeout=undefined;}
DOMAgent.highlightNodeList(nodeIds,this._buildHighlightConfig(mode));}
highlightSelector(selectorText,frameId,mode)
{if(!DOMAgent.highlightSelector)
return;if(this._hideDOMNodeHighlightTimeout){clearTimeout(this._hideDOMNodeHighlightTimeout);this._hideDOMNodeHighlightTimeout=undefined;}
DOMAgent.highlightSelector(this._buildHighlightConfig(mode),selectorText,frameId);}
highlightRect(rect,usePageCoordinates)
{DOMAgent.highlightRect.invoke({x:rect.x,y:rect.y,width:rect.width,height:rect.height,color:{r:111,g:168,b:220,a:0.66},outlineColor:{r:255,g:229,b:153,a:0.66},usePageCoordinates});}
hideDOMNodeHighlight()
{this.highlightDOMNode(0);}
highlightDOMNodeForTwoSeconds(nodeId)
{this.highlightDOMNode(nodeId);this._hideDOMNodeHighlightTimeout=setTimeout(this.hideDOMNodeHighlight.bind(this),2000);}
get inspectModeEnabled()
{return this._inspectModeEnabled;}
set inspectModeEnabled(enabled)
{if(enabled===this._inspectModeEnabled)
return;DOMAgent.setInspectModeEnabled(enabled,this._buildHighlightConfig(),(error)=>{this._inspectModeEnabled=error?false:enabled;this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.InspectModeStateChanged);});}
_buildHighlightConfig(mode="all")
{let highlightConfig={showInfo:mode==="all"};if(mode==="all"||mode==="content")
highlightConfig.contentColor={r:111,g:168,b:220,a:0.66};if(mode==="all"||mode==="padding")
highlightConfig.paddingColor={r:147,g:196,b:125,a:0.66};if(mode==="all"||mode==="border")
highlightConfig.borderColor={r:255,g:229,b:153,a:0.66};if(mode==="all"||mode==="margin")
highlightConfig.marginColor={r:246,g:178,b:107,a:0.66};return highlightConfig;}
_createContentFlowFromPayload(flowPayload)
{var flow=new WebInspector.ContentFlow(flowPayload.documentNodeId,flowPayload.name,flowPayload.overset,flowPayload.content.map(this.nodeForId.bind(this)));for(var contentNode of flow.contentNodes){this._contentNodesToFlowsMap.set(contentNode.id,flow);}
return flow;}
_updateContentFlowFromPayload(contentFlow,flowPayload)
{contentFlow.overset=flowPayload.overset;}
getNamedFlowCollection(documentNodeIdentifier)
{function onNamedFlowCollectionAvailable(error,flows)
{if(error)
return;this._contentNodesToFlowsMap.clear();var contentFlows=[];for(var i=0;i<flows.length;++i){var flowPayload=flows[i];var flowKey=WebInspector.DOMTreeManager._flowPayloadHashKey(flowPayload);var contentFlow=this._flows.get(flowKey);if(contentFlow)
this._updateContentFlowFromPayload(contentFlow,flowPayload);else{contentFlow=this._createContentFlowFromPayload(flowPayload);this._flows.set(flowKey,contentFlow);}
contentFlows.push(contentFlow);}
this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.ContentFlowListWasUpdated,{documentNodeIdentifier,flows:contentFlows});}
if(window.CSSAgent)
CSSAgent.getNamedFlowCollection(documentNodeIdentifier,onNamedFlowCollectionAvailable.bind(this));}
namedFlowCreated(flowPayload)
{var flowKey=WebInspector.DOMTreeManager._flowPayloadHashKey(flowPayload);var contentFlow=this._createContentFlowFromPayload(flowPayload);this._flows.set(flowKey,contentFlow);this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.ContentFlowWasAdded,{flow:contentFlow});}
namedFlowRemoved(documentNodeIdentifier,flowName)
{var flowKey=WebInspector.DOMTreeManager._flowPayloadHashKey({documentNodeId:documentNodeIdentifier,name:flowName});var contentFlow=this._flows.get(flowKey);this._flows.delete(flowKey);for(var contentNode of contentFlow.contentNodes)
this._contentNodesToFlowsMap.delete(contentNode.id);this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.ContentFlowWasRemoved,{flow:contentFlow});}
_sendNamedFlowUpdateEvents(flowPayload)
{var flowKey=WebInspector.DOMTreeManager._flowPayloadHashKey(flowPayload);this._updateContentFlowFromPayload(this._flows.get(flowKey),flowPayload);}
regionOversetChanged(flowPayload)
{this._sendNamedFlowUpdateEvents(flowPayload);}
registeredNamedFlowContentElement(documentNodeIdentifier,flowName,contentNodeId,nextContentElementNodeId)
{var flowKey=WebInspector.DOMTreeManager._flowPayloadHashKey({documentNodeId:documentNodeIdentifier,name:flowName});var flow=this._flows.get(flowKey);var contentNode=this.nodeForId(contentNodeId);this._contentNodesToFlowsMap.set(contentNode.id,flow);if(nextContentElementNodeId)
flow.insertContentNodeBefore(contentNode,this.nodeForId(nextContentElementNodeId));else
flow.appendContentNode(contentNode);}
_removeContentNodeFromFlowIfNeeded(node)
{if(!this._contentNodesToFlowsMap.has(node.id))
return;var flow=this._contentNodesToFlowsMap.get(node.id);this._contentNodesToFlowsMap.delete(node.id);flow.removeContentNode(node);}
unregisteredNamedFlowContentElement(documentNodeIdentifier,flowName,contentNodeId)
{var flow=this._contentNodesToFlowsMap.get(contentNodeId);this._contentNodesToFlowsMap.delete(contentNodeId);flow.removeContentNode(this.nodeForId(contentNodeId));}
_coerceRemoteArrayOfDOMNodes(remoteObject,callback)
{let length=remoteObject.size;if(!length){callback(null,[]);return;}
let nodes;let received=0;let lastError=null;let domTreeManager=this;function nodeRequested(index,error,nodeId)
{if(error)
lastError=error;else
nodes[index]=domTreeManager._idToDOMNode[nodeId];if(++received===length)
callback(lastError,nodes);}
WebInspector.runtimeManager.getPropertiesForRemoteObject(remoteObject.objectId,function(error,properties){if(error){callback(error);return;}
nodes=new Array(length);for(let i=0;i<length;++i){let nodeProperty=properties.get(String(i));DOMAgent.requestNode(nodeProperty.value.objectId,nodeRequested.bind(null,i));}});}
getNodeContentFlowInfo(domNode,resultReadyCallback)
{DOMAgent.resolveNode(domNode.id,domNodeResolved.bind(this));function domNodeResolved(error,remoteObject)
{if(error){resultReadyCallback(error);return;}
var evalParameters={objectId:remoteObject.objectId,functionDeclaration:appendWebInspectorSourceURL(inspectedPage_node_getFlowInfo.toString()),doNotPauseOnExceptionsAndMuteConsole:true,returnByValue:false,generatePreview:false};RuntimeAgent.callFunctionOn.invoke(evalParameters,regionNodesAvailable.bind(this));}
function regionNodesAvailable(error,remoteObject,wasThrown)
{if(error){resultReadyCallback(error);return;}
if(wasThrown){console.error("Error while executing backend function:",JSON.stringify(remoteObject));resultReadyCallback(null);return;}
WebInspector.runtimeManager.getPropertiesForRemoteObject(remoteObject.objectId,remoteObjectPropertiesAvailable.bind(this));}
function remoteObjectPropertiesAvailable(error,properties){if(error){resultReadyCallback(error);return;}
var result={regionFlow:null,contentFlow:null,regions:null};var regionFlowNameProperty=properties.get("regionFlowName");if(regionFlowNameProperty&&regionFlowNameProperty.value&&regionFlowNameProperty.value.value){var regionFlowKey=WebInspector.DOMTreeManager._flowPayloadHashKey({documentNodeId:domNode.ownerDocument.id,name:regionFlowNameProperty.value.value});result.regionFlow=this._flows.get(regionFlowKey);}
var contentFlowNameProperty=properties.get("contentFlowName");if(contentFlowNameProperty&&contentFlowNameProperty.value&&contentFlowNameProperty.value.value){var contentFlowKey=WebInspector.DOMTreeManager._flowPayloadHashKey({documentNodeId:domNode.ownerDocument.id,name:contentFlowNameProperty.value.value});result.contentFlow=this._flows.get(contentFlowKey);}
var regionsProperty=properties.get("regions");if(!regionsProperty||!regionsProperty.value.objectId){resultReadyCallback(null,result);return;}
this._coerceRemoteArrayOfDOMNodes(regionsProperty.value,function(error,nodes){result.regions=nodes;resultReadyCallback(error,result);});}
function inspectedPage_node_getFlowInfo()
{function getComputedProperty(node,propertyName)
{if(!node.ownerDocument||!node.ownerDocument.defaultView)
return null;var computedStyle=node.ownerDocument.defaultView.getComputedStyle(node);return computedStyle?computedStyle[propertyName]:null;}
function getContentFlowName(node)
{for(;node;node=node.parentNode){var flowName=getComputedProperty(node,"webkitFlowInto");if(flowName&&flowName!=="none")
return flowName;}
return null;}
var node=this;var result={regionFlowName:getComputedProperty(node,"webkitFlowFrom"),contentFlowName:getContentFlowName(node),regions:null};if(result.contentFlowName){var flowThread=node.ownerDocument.webkitGetNamedFlows().namedItem(result.contentFlowName);if(flowThread)
result.regions=Array.from(flowThread.getRegionsByContent(node));}
return result;}}
_mainResourceDidChange(event)
{if(event.target.isMainFrame())
this._restoreSelectedNodeIsAllowed=true;}};WebInspector.DOMTreeManager.Event={AttributeModified:"dom-tree-manager-attribute-modified",AttributeRemoved:"dom-tree-manager-attribute-removed",CharacterDataModified:"dom-tree-manager-character-data-modified",NodeInserted:"dom-tree-manager-node-inserted",NodeRemoved:"dom-tree-manager-node-removed",CustomElementStateChanged:"dom-tree-manager-custom-element-state-changed",DocumentUpdated:"dom-tree-manager-document-updated",ChildNodeCountUpdated:"dom-tree-manager-child-node-count-updated",DOMNodeWasInspected:"dom-tree-manager-dom-node-was-inspected",InspectModeStateChanged:"dom-tree-manager-inspect-mode-state-changed",ContentFlowListWasUpdated:"dom-tree-manager-content-flow-list-was-updated",ContentFlowWasAdded:"dom-tree-manager-content-flow-was-added",ContentFlowWasRemoved:"dom-tree-manager-content-flow-was-removed",RegionOversetChanged:"dom-tree-manager-region-overset-changed"};WebInspector.DashboardManager=class DashboardManager extends WebInspector.Object
{constructor()
{super();this._dashboards={};this._dashboards.default=new WebInspector.DefaultDashboard;this._dashboards.debugger=new WebInspector.DebuggerDashboard;}
get dashboards()
{return this._dashboards;}};WebInspector.DebuggerManager=class DebuggerManager extends WebInspector.Object
{constructor()
{super();DebuggerAgent.enable();WebInspector.notifications.addEventListener(WebInspector.Notification.DebugUIEnabledDidChange,this._debugUIEnabledDidChange,this);WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.DisplayLocationDidChange,this._breakpointDisplayLocationDidChange,this);WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.DisabledStateDidChange,this._breakpointDisabledStateDidChange,this);WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.ConditionDidChange,this._breakpointEditablePropertyDidChange,this);WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.IgnoreCountDidChange,this._breakpointEditablePropertyDidChange,this);WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.AutoContinueDidChange,this._breakpointEditablePropertyDidChange,this);WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.ActionsDidChange,this._breakpointEditablePropertyDidChange,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.CapturingWillStart,this._timelineCapturingWillStart,this);WebInspector.timelineManager.addEventListener(WebInspector.TimelineManager.Event.CapturingStopped,this._timelineCapturingStopped,this);WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event.TargetRemoved,this._targetRemoved,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);this._breakpointsSetting=new WebInspector.Setting("breakpoints",[]);this._breakpointsEnabledSetting=new WebInspector.Setting("breakpoints-enabled",true);this._allExceptionsBreakpointEnabledSetting=new WebInspector.Setting("break-on-all-exceptions",false);this._allUncaughtExceptionsBreakpointEnabledSetting=new WebInspector.Setting("break-on-all-uncaught-exceptions",false);this._assertionsBreakpointEnabledSetting=new WebInspector.Setting("break-on-assertions",false);this._asyncStackTraceDepthSetting=new WebInspector.Setting("async-stack-trace-depth",200);let specialBreakpointLocation=new WebInspector.SourceCodeLocation(null,Infinity,Infinity);this._allExceptionsBreakpoint=new WebInspector.Breakpoint(specialBreakpointLocation,!this._allExceptionsBreakpointEnabledSetting.value);this._allExceptionsBreakpoint.resolved=true;this._allUncaughtExceptionsBreakpoint=new WebInspector.Breakpoint(specialBreakpointLocation,!this._allUncaughtExceptionsBreakpointEnabledSetting.value);this._assertionsBreakpoint=new WebInspector.Breakpoint(specialBreakpointLocation,!this._assertionsBreakpointEnabledSetting.value);this._assertionsBreakpoint.resolved=true;this._breakpoints=[];this._breakpointContentIdentifierMap=new Map;this._breakpointScriptIdentifierMap=new Map;this._breakpointIdMap=new Map;this._breakOnExceptionsState="none";this._updateBreakOnExceptionsState();this._nextBreakpointActionIdentifier=1;this._activeCallFrame=null;this._internalWebKitScripts=[];this._targetDebuggerDataMap=new Map;this._targetDebuggerDataMap.set(WebInspector.mainTarget,new WebInspector.DebuggerData(WebInspector.mainTarget));
this._temporarilyDisabledBreakpointsRestoreSetting=new WebInspector.Setting("temporarily-disabled-breakpoints-restore",null);if(this._temporarilyDisabledBreakpointsRestoreSetting.value!==null){this._breakpointsEnabledSetting.value=this._temporarilyDisabledBreakpointsRestoreSetting.value;this._temporarilyDisabledBreakpointsRestoreSetting.value=null;}
DebuggerAgent.setBreakpointsActive(this._breakpointsEnabledSetting.value);DebuggerAgent.setPauseOnExceptions(this._breakOnExceptionsState);if(DebuggerAgent.setPauseOnAssertions)
DebuggerAgent.setPauseOnAssertions(this._assertionsBreakpointEnabledSetting.value);if(DebuggerAgent.setAsyncStackTraceDepth)
DebuggerAgent.setAsyncStackTraceDepth(this._asyncStackTraceDepthSetting.value);this._ignoreBreakpointDisplayLocationDidChangeEvent=false;function restoreBreakpointsSoon(){this._restoringBreakpoints=true;for(let cookie of this._breakpointsSetting.value)
this.addBreakpoint(new WebInspector.Breakpoint(cookie));this._restoringBreakpoints=false;}
setTimeout(restoreBreakpointsSoon.bind(this),0);}
get paused()
{for(let[target,targetData]of this._targetDebuggerDataMap){if(targetData.paused)
return true;}
return false;}
get activeCallFrame()
{return this._activeCallFrame;}
set activeCallFrame(callFrame)
{if(callFrame===this._activeCallFrame)
return;this._activeCallFrame=callFrame||null;this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange);}
dataForTarget(target)
{let targetData=this._targetDebuggerDataMap.get(target);if(targetData)
return targetData;targetData=new WebInspector.DebuggerData(target);this._targetDebuggerDataMap.set(target,targetData);return targetData;}
get allExceptionsBreakpoint()
{return this._allExceptionsBreakpoint;}
get allUncaughtExceptionsBreakpoint()
{return this._allUncaughtExceptionsBreakpoint;}
get assertionsBreakpoint()
{return this._assertionsBreakpoint;}
get breakpoints()
{return this._breakpoints;}
breakpointForIdentifier(id)
{return this._breakpointIdMap.get(id)||null;}
breakpointsForSourceCode(sourceCode)
{if(sourceCode instanceof WebInspector.SourceMapResource){let originalSourceCodeBreakpoints=this.breakpointsForSourceCode(sourceCode.sourceMap.originalSourceCode);return originalSourceCodeBreakpoints.filter(function(breakpoint){return breakpoint.sourceCodeLocation.displaySourceCode===sourceCode;});}
let contentIdentifierBreakpoints=this._breakpointContentIdentifierMap.get(sourceCode.contentIdentifier);if(contentIdentifierBreakpoints){this._associateBreakpointsWithSourceCode(contentIdentifierBreakpoints,sourceCode);return contentIdentifierBreakpoints;}
if(sourceCode instanceof WebInspector.Script){let scriptIdentifierBreakpoints=this._breakpointScriptIdentifierMap.get(sourceCode.id);if(scriptIdentifierBreakpoints){this._associateBreakpointsWithSourceCode(scriptIdentifierBreakpoints,sourceCode);return scriptIdentifierBreakpoints;}}
return[];}
breakpointForSourceCodeLocation(sourceCodeLocation)
{for(let breakpoint of this.breakpointsForSourceCode(sourceCodeLocation.sourceCode)){if(breakpoint.sourceCodeLocation.isEqual(sourceCodeLocation))
return breakpoint;}
return null;}
isBreakpointRemovable(breakpoint)
{return breakpoint!==this._allExceptionsBreakpoint&&breakpoint!==this._allUncaughtExceptionsBreakpoint&&breakpoint!==this._assertionsBreakpoint;}
isBreakpointEditable(breakpoint)
{return this.isBreakpointRemovable(breakpoint);}
get breakpointsEnabled()
{return this._breakpointsEnabledSetting.value;}
set breakpointsEnabled(enabled)
{if(this._breakpointsEnabledSetting.value===enabled)
return;if(enabled&&this.breakpointsDisabledTemporarily)
return;this._breakpointsEnabledSetting.value=enabled;this._updateBreakOnExceptionsState();for(let target of WebInspector.targets){target.DebuggerAgent.setBreakpointsActive(enabled);target.DebuggerAgent.setPauseOnExceptions(this._breakOnExceptionsState);}
this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.BreakpointsEnabledDidChange);}
get breakpointsDisabledTemporarily()
{return this._temporarilyDisabledBreakpointsRestoreSetting.value!==null;}
scriptForIdentifier(id,target)
{return this.dataForTarget(target).scriptForIdentifier(id);}
scriptsForURL(url,target)
{return this.dataForTarget(target).scriptsForURL(url);}
get searchableScripts()
{return this.knownNonResourceScripts.filter((script)=>!!script.contentIdentifier);}
get knownNonResourceScripts()
{let knownScripts=[];for(let[target,targetData]of this._targetDebuggerDataMap){for(let script of targetData.scripts){if(script.resource)
continue;if(!WebInspector.isDebugUIEnabled()&&isWebKitInternalScript(script.sourceURL))
continue;knownScripts.push(script);}}
return knownScripts;}
get asyncStackTraceDepth()
{return this._asyncStackTraceDepthSetting.value;}
set asyncStackTraceDepth(x)
{if(this._asyncStackTraceDepthSetting.value===x)
return;this._asyncStackTraceDepthSetting.value=x;for(let target of WebInspector.targets)
target.DebuggerAgent.setAsyncStackTraceDepth(this._asyncStackTraceDepthSetting.value);}
pause()
{if(this.paused)
return Promise.resolve();this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.WaitingToPause);let listener=new WebInspector.EventListener(this,true);let managerResult=new Promise(function(resolve,reject){listener.connect(WebInspector.debuggerManager,WebInspector.DebuggerManager.Event.Paused,resolve);});let promises=[];for(let[target,targetData]of this._targetDebuggerDataMap)
promises.push(targetData.pauseIfNeeded());return Promise.all([managerResult,...promises]);}
resume()
{if(!this.paused)
return Promise.resolve();let listener=new WebInspector.EventListener(this,true);let managerResult=new Promise(function(resolve,reject){listener.connect(WebInspector.debuggerManager,WebInspector.DebuggerManager.Event.Resumed,resolve);});let promises=[];for(let[target,targetData]of this._targetDebuggerDataMap)
promises.push(targetData.resumeIfNeeded());return Promise.all([managerResult,...promises]);}
stepOver()
{if(!this.paused)
return Promise.reject(new Error("Cannot step over because debugger is not paused."));let listener=new WebInspector.EventListener(this,true);let managerResult=new Promise(function(resolve,reject){listener.connect(WebInspector.debuggerManager,WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange,resolve);});let protocolResult=this._activeCallFrame.target.DebuggerAgent.stepOver().catch(function(error){listener.disconnect();console.error("DebuggerManager.stepOver failed: ",error);throw error;});return Promise.all([managerResult,protocolResult]);}
stepInto()
{if(!this.paused)
return Promise.reject(new Error("Cannot step into because debugger is not paused."));let listener=new WebInspector.EventListener(this,true);let managerResult=new Promise(function(resolve,reject){listener.connect(WebInspector.debuggerManager,WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange,resolve);});let protocolResult=this._activeCallFrame.target.DebuggerAgent.stepInto().catch(function(error){listener.disconnect();console.error("DebuggerManager.stepInto failed: ",error);throw error;});return Promise.all([managerResult,protocolResult]);}
stepOut()
{if(!this.paused)
return Promise.reject(new Error("Cannot step out because debugger is not paused."));let listener=new WebInspector.EventListener(this,true);let managerResult=new Promise(function(resolve,reject){listener.connect(WebInspector.debuggerManager,WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange,resolve);});let protocolResult=this._activeCallFrame.target.DebuggerAgent.stepOut().catch(function(error){listener.disconnect();console.error("DebuggerManager.stepOut failed: ",error);throw error;});return Promise.all([managerResult,protocolResult]);}
continueUntilNextRunLoop(target)
{return this.dataForTarget(target).continueUntilNextRunLoop();}
continueToLocation(script,lineNumber,columnNumber)
{return script.target.DebuggerAgent.continueToLocation({scriptId:script.id,lineNumber,columnNumber});}
addBreakpoint(breakpoint,shouldSpeculativelyResolve)
{if(!breakpoint)
return;if(breakpoint.contentIdentifier){let contentIdentifierBreakpoints=this._breakpointContentIdentifierMap.get(breakpoint.contentIdentifier);if(!contentIdentifierBreakpoints){contentIdentifierBreakpoints=[];this._breakpointContentIdentifierMap.set(breakpoint.contentIdentifier,contentIdentifierBreakpoints);}
contentIdentifierBreakpoints.push(breakpoint);}
if(breakpoint.scriptIdentifier){let scriptIdentifierBreakpoints=this._breakpointScriptIdentifierMap.get(breakpoint.scriptIdentifier);if(!scriptIdentifierBreakpoints){scriptIdentifierBreakpoints=[];this._breakpointScriptIdentifierMap.set(breakpoint.scriptIdentifier,scriptIdentifierBreakpoints);}
scriptIdentifierBreakpoints.push(breakpoint);}
this._breakpoints.push(breakpoint);if(!breakpoint.disabled){const specificTarget=undefined;this._setBreakpoint(breakpoint,specificTarget,()=>{if(shouldSpeculativelyResolve)
breakpoint.resolved=true;});}
this._saveBreakpoints();this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.BreakpointAdded,{breakpoint});}
removeBreakpoint(breakpoint)
{if(!breakpoint)
return;if(!this.isBreakpointRemovable(breakpoint))
return;this._breakpoints.remove(breakpoint);if(breakpoint.identifier)
this._removeBreakpoint(breakpoint);if(breakpoint.contentIdentifier){let contentIdentifierBreakpoints=this._breakpointContentIdentifierMap.get(breakpoint.contentIdentifier);if(contentIdentifierBreakpoints){contentIdentifierBreakpoints.remove(breakpoint);if(!contentIdentifierBreakpoints.length)
this._breakpointContentIdentifierMap.delete(breakpoint.contentIdentifier);}}
if(breakpoint.scriptIdentifier){let scriptIdentifierBreakpoints=this._breakpointScriptIdentifierMap.get(breakpoint.scriptIdentifier);if(scriptIdentifierBreakpoints){scriptIdentifierBreakpoints.remove(breakpoint);if(!scriptIdentifierBreakpoints.length)
this._breakpointScriptIdentifierMap.delete(breakpoint.scriptIdentifier);}}
breakpoint.disabled=true;breakpoint.clearActions();this._saveBreakpoints();this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.BreakpointRemoved,{breakpoint});}
nextBreakpointActionIdentifier()
{return this._nextBreakpointActionIdentifier++;}
initializeTarget(target)
{let DebuggerAgent=target.DebuggerAgent;let targetData=this.dataForTarget(target);DebuggerAgent.enable();DebuggerAgent.setBreakpointsActive(this._breakpointsEnabledSetting.value);DebuggerAgent.setPauseOnAssertions(this._assertionsBreakpointEnabledSetting.value);DebuggerAgent.setPauseOnExceptions(this._breakOnExceptionsState);DebuggerAgent.setAsyncStackTraceDepth(this._asyncStackTraceDepthSetting.value);if(this.paused)
targetData.pauseIfNeeded();this._restoringBreakpoints=true;for(let breakpoint of this._breakpoints){if(breakpoint.disabled)
continue;if(!breakpoint.contentIdentifier)
continue;this._setBreakpoint(breakpoint,target);}
this._restoringBreakpoints=false;}
breakpointResolved(target,breakpointIdentifier,location)
{let breakpoint=this._breakpointIdMap.get(breakpointIdentifier);if(!breakpoint)
return;if(!breakpoint.sourceCodeLocation.sourceCode){let sourceCodeLocation=this._sourceCodeLocationFromPayload(target,location);breakpoint.sourceCodeLocation.sourceCode=sourceCodeLocation.sourceCode;}
breakpoint.resolved=true;}
reset()
{let wasPaused=this.paused;WebInspector.Script.resetUniqueDisplayNameNumbers();this._internalWebKitScripts=[];this._targetDebuggerDataMap.clear();this._ignoreBreakpointDisplayLocationDidChangeEvent=true;
for(let breakpoint of this._breakpoints){breakpoint.resolved=false;if(breakpoint.sourceCodeLocation.sourceCode)
breakpoint.sourceCodeLocation.sourceCode=null;}
this._ignoreBreakpointDisplayLocationDidChangeEvent=false;this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.ScriptsCleared);if(wasPaused)
this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.Resumed);}
debuggerDidPause(target,callFramesPayload,reason,data,asyncStackTracePayload)
{if(this._delayedResumeTimeout){clearTimeout(this._delayedResumeTimeout);this._delayedResumeTimeout=undefined;}
let wasPaused=this.paused;let targetData=this._targetDebuggerDataMap.get(target);let callFrames=[];let pauseReason=this._pauseReasonFromPayload(reason);let pauseData=data||null;for(var i=0;i<callFramesPayload.length;++i){var callFramePayload=callFramesPayload[i];var sourceCodeLocation=this._sourceCodeLocationFromPayload(target,callFramePayload.location);if(!sourceCodeLocation)
continue;if(!sourceCodeLocation.sourceCode)
continue;if(!WebInspector.isDebugUIEnabled()&&isWebKitInternalScript(sourceCodeLocation.sourceCode.sourceURL))
continue;let scopeChain=this._scopeChainFromPayload(target,callFramePayload.scopeChain);let callFrame=WebInspector.CallFrame.fromDebuggerPayload(target,callFramePayload,scopeChain,sourceCodeLocation);callFrames.push(callFrame);}
let activeCallFrame=callFrames[0];if(!activeCallFrame){
if(wasPaused)
target.DebuggerAgent.continueUntilNextRunLoop();else
target.DebuggerAgent.resume();this._didResumeInternal(target);return;}
let asyncStackTrace=WebInspector.StackTrace.fromPayload(target,asyncStackTracePayload);targetData.updateForPause(callFrames,pauseReason,pauseData,asyncStackTrace);for(let[otherTarget,otherTargetData]of this._targetDebuggerDataMap)
otherTargetData.pauseIfNeeded();let activeCallFrameDidChange=this._activeCallFrame&&this._activeCallFrame.target===target;if(activeCallFrameDidChange)
this._activeCallFrame=activeCallFrame;else if(!wasPaused){this._activeCallFrame=activeCallFrame;activeCallFrameDidChange=true;}
if(!wasPaused)
this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.Paused);this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.CallFramesDidChange,{target});if(activeCallFrameDidChange)
this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange);}
debuggerDidResume(target)
{
if(!DebuggerAgent.setPauseOnAssertions){this._delayedResumeTimeout=setTimeout(this._didResumeInternal.bind(this,target),50);return;}
this._didResumeInternal(target);}
playBreakpointActionSound(breakpointActionIdentifier)
{InspectorFrontendHost.beep();}
scriptDidParse(target,scriptIdentifier,url,startLine,startColumn,endLine,endColumn,isModule,isContentScript,sourceURL,sourceMapURL)
{let targetData=this.dataForTarget(target);let existingScript=targetData.scriptForIdentifier(scriptIdentifier);if(existingScript){return;}
if(!WebInspector.isDebugUIEnabled()&&isWebKitInternalScript(sourceURL))
return;let range=new WebInspector.TextRange(startLine,startColumn,endLine,endColumn);let sourceType=isModule?WebInspector.Script.SourceType.Module:WebInspector.Script.SourceType.Program;let script=new WebInspector.Script(target,scriptIdentifier,range,url,sourceType,isContentScript,sourceURL,sourceMapURL);targetData.addScript(script);if(target!==WebInspector.mainTarget&&!target.mainResource){
if(script.url===target.name){target.mainResource=script;if(script.resource)
target.resourceCollection.remove(script.resource);}}
if(isWebKitInternalScript(script.sourceURL)){this._internalWebKitScripts.push(script);if(!WebInspector.isDebugUIEnabled())
return;}
if(isWebInspectorConsoleEvaluationScript(script.sourceURL))
return;this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.ScriptAdded,{script});if(target!==WebInspector.mainTarget&&!script.isMainResource()&&!script.resource)
target.addScript(script);}
_sourceCodeLocationFromPayload(target,payload)
{let targetData=this.dataForTarget(target);let script=targetData.scriptForIdentifier(payload.scriptId);if(!script)
return null;return script.createSourceCodeLocation(payload.lineNumber,payload.columnNumber);}
_scopeChainFromPayload(target,payload)
{let scopeChain=[];for(let i=0;i<payload.length;++i)
scopeChain.push(this._scopeChainNodeFromPayload(target,payload[i]));return scopeChain;}
_scopeChainNodeFromPayload(target,payload)
{var type=null;switch(payload.type){case DebuggerAgent.ScopeType.Global:type=WebInspector.ScopeChainNode.Type.Global;break;case DebuggerAgent.ScopeType.With:type=WebInspector.ScopeChainNode.Type.With;break;case DebuggerAgent.ScopeType.Closure:type=WebInspector.ScopeChainNode.Type.Closure;break;case DebuggerAgent.ScopeType.Catch:type=WebInspector.ScopeChainNode.Type.Catch;break;case DebuggerAgent.ScopeType.FunctionName:type=WebInspector.ScopeChainNode.Type.FunctionName;break;case DebuggerAgent.ScopeType.NestedLexical:type=WebInspector.ScopeChainNode.Type.Block;break;case DebuggerAgent.ScopeType.GlobalLexicalEnvironment:type=WebInspector.ScopeChainNode.Type.GlobalLexicalEnvironment;break;case DebuggerAgent.ScopeType.Local:type=WebInspector.ScopeChainNode.Type.Closure;break;default:console.error("Unknown type: "+payload.type);}
let object=WebInspector.RemoteObject.fromPayload(payload.object,target);return new WebInspector.ScopeChainNode(type,[object],payload.name,payload.location,payload.empty);}
_pauseReasonFromPayload(payload)
{switch(payload){case DebuggerAgent.PausedReason.Assert:return WebInspector.DebuggerManager.PauseReason.Assertion;case DebuggerAgent.PausedReason.Breakpoint:return WebInspector.DebuggerManager.PauseReason.Breakpoint;case DebuggerAgent.PausedReason.CSPViolation:return WebInspector.DebuggerManager.PauseReason.CSPViolation;case DebuggerAgent.PausedReason.DOM:return WebInspector.DebuggerManager.PauseReason.DOM;case DebuggerAgent.PausedReason.DebuggerStatement:return WebInspector.DebuggerManager.PauseReason.DebuggerStatement;case DebuggerAgent.PausedReason.Exception:return WebInspector.DebuggerManager.PauseReason.Exception;case DebuggerAgent.PausedReason.PauseOnNextStatement:return WebInspector.DebuggerManager.PauseReason.PauseOnNextStatement;case DebuggerAgent.PausedReason.XHR:return WebInspector.DebuggerManager.PauseReason.XHR;default:return WebInspector.DebuggerManager.PauseReason.Other;}}
_debuggerBreakpointActionType(type)
{switch(type){case WebInspector.BreakpointAction.Type.Log:return DebuggerAgent.BreakpointActionType.Log;case WebInspector.BreakpointAction.Type.Evaluate:return DebuggerAgent.BreakpointActionType.Evaluate;case WebInspector.BreakpointAction.Type.Sound:return DebuggerAgent.BreakpointActionType.Sound;case WebInspector.BreakpointAction.Type.Probe:return DebuggerAgent.BreakpointActionType.Probe;default:return DebuggerAgent.BreakpointActionType.Log;}}
_debuggerBreakpointOptions(breakpoint)
{const templatePlaceholderRegex=/\$\{.*?\}/;let options=breakpoint.options;let invalidActions=[];for(let action of options.actions){if(action.type!==WebInspector.BreakpointAction.Type.Log)
continue;if(!templatePlaceholderRegex.test(action.data))
continue;let lexer=new WebInspector.BreakpointLogMessageLexer;let tokens=lexer.tokenize(action.data);if(!tokens){invalidActions.push(action);continue;}
let templateLiteral=tokens.reduce((text,token)=>{if(token.type===WebInspector.BreakpointLogMessageLexer.TokenType.PlainText)
return text+token.data.escapeCharacters("`\\");if(token.type===WebInspector.BreakpointLogMessageLexer.TokenType.Expression)
return text+"${"+token.data+"}";return text;},"");action.data="console.log(`"+templateLiteral+"`)";action.type=WebInspector.BreakpointAction.Type.Evaluate;}
const onlyFirst=true;for(let invalidAction of invalidActions)
options.actions.remove(invalidAction,onlyFirst);return options;}
_setBreakpoint(breakpoint,specificTarget,callback)
{if(breakpoint.disabled)
return;if(!this._restoringBreakpoints&&!this.breakpointsDisabledTemporarily){
this.breakpointsEnabled=true;}
function didSetBreakpoint(target,error,breakpointIdentifier,locations)
{if(error)
return;this._breakpointIdMap.set(breakpointIdentifier,breakpoint);breakpoint.identifier=breakpointIdentifier;if(!(locations instanceof Array))
locations=[locations];for(let location of locations)
this.breakpointResolved(target,breakpointIdentifier,location);if(typeof callback==="function")
callback();}
if(!specificTarget)
breakpoint.resolved=false;let options;if(DebuggerAgent.BreakpointActionType){options=this._debuggerBreakpointOptions(breakpoint);if(options.actions.length){for(let action of options.actions)
action.type=this._debuggerBreakpointActionType(action.type);}}
if(breakpoint.contentIdentifier){let targets=specificTarget?[specificTarget]:WebInspector.targets;for(let target of targets){target.DebuggerAgent.setBreakpointByUrl.invoke({lineNumber:breakpoint.sourceCodeLocation.lineNumber,url:breakpoint.contentIdentifier,urlRegex:undefined,columnNumber:breakpoint.sourceCodeLocation.columnNumber,condition:breakpoint.condition,options},didSetBreakpoint.bind(this,target),target.DebuggerAgent);}}else if(breakpoint.scriptIdentifier){let target=breakpoint.target;target.DebuggerAgent.setBreakpoint.invoke({location:{scriptId:breakpoint.scriptIdentifier,lineNumber:breakpoint.sourceCodeLocation.lineNumber,columnNumber:breakpoint.sourceCodeLocation.columnNumber},condition:breakpoint.condition,options},didSetBreakpoint.bind(this,target),target.DebuggerAgent);}}
_removeBreakpoint(breakpoint,callback)
{if(!breakpoint.identifier)
return;function didRemoveBreakpoint(error)
{if(error)
console.error(error);this._breakpointIdMap.delete(breakpoint.identifier);breakpoint.identifier=null;
if(typeof callback==="function")
callback();}
if(breakpoint.contentIdentifier){for(let target of WebInspector.targets)
target.DebuggerAgent.removeBreakpoint(breakpoint.identifier,didRemoveBreakpoint.bind(this));}else if(breakpoint.scriptIdentifier){let target=breakpoint.target;target.DebuggerAgent.removeBreakpoint(breakpoint.identifier,didRemoveBreakpoint.bind(this));}}
_breakpointDisplayLocationDidChange(event)
{if(this._ignoreBreakpointDisplayLocationDidChangeEvent)
return;let breakpoint=event.target;if(!breakpoint.identifier||breakpoint.disabled)
return;this._removeBreakpoint(breakpoint,breakpointRemoved.bind(this));function breakpointRemoved()
{this._setBreakpoint(breakpoint);this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.BreakpointMoved,{breakpoint});}}
_breakpointDisabledStateDidChange(event)
{this._saveBreakpoints();let breakpoint=event.target;if(breakpoint===this._allExceptionsBreakpoint){if(!breakpoint.disabled&&!this.breakpointsDisabledTemporarily)
this.breakpointsEnabled=true;this._allExceptionsBreakpointEnabledSetting.value=!breakpoint.disabled;this._updateBreakOnExceptionsState();for(let target of WebInspector.targets)
target.DebuggerAgent.setPauseOnExceptions(this._breakOnExceptionsState);return;}
if(breakpoint===this._allUncaughtExceptionsBreakpoint){if(!breakpoint.disabled&&!this.breakpointsDisabledTemporarily)
this.breakpointsEnabled=true;this._allUncaughtExceptionsBreakpointEnabledSetting.value=!breakpoint.disabled;this._updateBreakOnExceptionsState();for(let target of WebInspector.targets)
target.DebuggerAgent.setPauseOnExceptions(this._breakOnExceptionsState);return;}
if(breakpoint===this._assertionsBreakpoint){if(!breakpoint.disabled&&!this.breakpointsDisabledTemporarily)
this.breakpointsEnabled=true;this._assertionsBreakpointEnabledSetting.value=!breakpoint.disabled;for(let target of WebInspector.targets)
target.DebuggerAgent.setPauseOnAssertions(this._assertionsBreakpointEnabledSetting.value);return;}
if(breakpoint.disabled)
this._removeBreakpoint(breakpoint);else
this._setBreakpoint(breakpoint);}
_breakpointEditablePropertyDidChange(event)
{this._saveBreakpoints();let breakpoint=event.target;if(breakpoint.disabled)
return;if(!this.isBreakpointEditable(breakpoint))
return;this._removeBreakpoint(breakpoint,breakpointRemoved.bind(this));function breakpointRemoved()
{this._setBreakpoint(breakpoint);}}
_startDisablingBreakpointsTemporarily()
{if(this.breakpointsDisabledTemporarily)
return;this._temporarilyDisabledBreakpointsRestoreSetting.value=this._breakpointsEnabledSetting.value;this.breakpointsEnabled=false;}
_stopDisablingBreakpointsTemporarily()
{if(!this.breakpointsDisabledTemporarily)
return;let restoreState=this._temporarilyDisabledBreakpointsRestoreSetting.value;this._temporarilyDisabledBreakpointsRestoreSetting.value=null;this.breakpointsEnabled=restoreState;}
_timelineCapturingWillStart(event)
{this._startDisablingBreakpointsTemporarily();if(this.paused)
this.resume();}
_timelineCapturingStopped(event)
{this._stopDisablingBreakpointsTemporarily();}
_targetRemoved(event)
{let wasPaused=this.paused;this._targetDebuggerDataMap.delete(event.data.target);if(!this.paused&&wasPaused)
this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.Resumed);}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;this._didResumeInternal(WebInspector.mainTarget);}
_didResumeInternal(target)
{if(!this.paused)
return;if(this._delayedResumeTimeout){clearTimeout(this._delayedResumeTimeout);this._delayedResumeTimeout=undefined;}
let activeCallFrameDidChange=false;if(this._activeCallFrame&&this._activeCallFrame.target===target){this._activeCallFrame=null;activeCallFrameDidChange=true;}
this.dataForTarget(target).updateForResume();if(!this.paused)
this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.Resumed);this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.CallFramesDidChange,{target});if(activeCallFrameDidChange)
this.dispatchEventToListeners(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange);}
_updateBreakOnExceptionsState()
{let state="none";if(this._breakpointsEnabledSetting.value){if(!this._allExceptionsBreakpoint.disabled)
state="all";else if(!this._allUncaughtExceptionsBreakpoint.disabled)
state="uncaught";}
this._breakOnExceptionsState=state;switch(state){case"all":this._allUncaughtExceptionsBreakpoint.resolved=false;break;case"uncaught":case"none":this._allUncaughtExceptionsBreakpoint.resolved=true;break;}}
_saveBreakpoints()
{if(this._restoringBreakpoints)
return;let breakpointsToSave=this._breakpoints.filter((breakpoint)=>!!breakpoint.contentIdentifier);let serializedBreakpoints=breakpointsToSave.map((breakpoint)=>breakpoint.info);this._breakpointsSetting.value=serializedBreakpoints;}
_associateBreakpointsWithSourceCode(breakpoints,sourceCode)
{this._ignoreBreakpointDisplayLocationDidChangeEvent=true;for(let breakpoint of breakpoints){if(!breakpoint.sourceCodeLocation.sourceCode)
breakpoint.sourceCodeLocation.sourceCode=sourceCode;}
this._ignoreBreakpointDisplayLocationDidChangeEvent=false;}
_debugUIEnabledDidChange()
{let eventType=WebInspector.isDebugUIEnabled()?WebInspector.DebuggerManager.Event.ScriptAdded:WebInspector.DebuggerManager.Event.ScriptRemoved;for(let script of this._internalWebKitScripts)
this.dispatchEventToListeners(eventType,{script});}};WebInspector.DebuggerManager.Event={BreakpointAdded:"debugger-manager-breakpoint-added",BreakpointRemoved:"debugger-manager-breakpoint-removed",BreakpointMoved:"debugger-manager-breakpoint-moved",WaitingToPause:"debugger-manager-waiting-to-pause",Paused:"debugger-manager-paused",Resumed:"debugger-manager-resumed",CallFramesDidChange:"debugger-manager-call-frames-did-change",ActiveCallFrameDidChange:"debugger-manager-active-call-frame-did-change",ScriptAdded:"debugger-manager-script-added",ScriptRemoved:"debugger-manager-script-removed",ScriptsCleared:"debugger-manager-scripts-cleared",BreakpointsEnabledDidChange:"debugger-manager-breakpoints-enabled-did-change"};WebInspector.DebuggerManager.PauseReason={Assertion:"assertion",Breakpoint:"breakpoint",CSPViolation:"CSP-violation",DebuggerStatement:"debugger-statement",DOM:"DOM",Exception:"exception",PauseOnNextStatement:"pause-on-next-statement",XHR:"xhr",Other:"other",};WebInspector.DOMBreakpointTreeController=class DOMBreakpointsTreeController extends WebInspector.Object
{constructor(treeOutline)
{super();this._treeOutline=treeOutline;this._breakpointTreeElements=new Map;this._domNodeTreeElements=new Map;WebInspector.DOMBreakpoint.addEventListener(WebInspector.DOMBreakpoint.Event.ResolvedStateDidChange,this._domBreakpointResolvedStateDidChange,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);WebInspector.domDebuggerManager.addEventListener(WebInspector.DOMDebuggerManager.Event.DOMBreakpointAdded,this._domBreakpointAdded,this);WebInspector.domDebuggerManager.addEventListener(WebInspector.DOMDebuggerManager.Event.DOMBreakpointRemoved,this._domBreakpointRemoved,this);}
static appendBreakpointContextMenuItems(contextMenu,domNode,allowEditing)
{let subMenu=contextMenu.appendSubMenuItem(WebInspector.UIString("Break on…"));let breakpoints=WebInspector.domDebuggerManager.domBreakpointsForNode(domNode);let keyValuePairs=breakpoints.map((breakpoint)=>[breakpoint.type,breakpoint]);let breakpointsByType=new Map(keyValuePairs);for(let type of Object.values(WebInspector.DOMBreakpoint.Type)){let label=WebInspector.DOMBreakpointTreeElement.displayNameForType(type);let breakpoint=breakpointsByType.get(type);subMenu.appendCheckboxItem(label,function(){if(breakpoint)
WebInspector.domDebuggerManager.removeDOMBreakpoint(breakpoint);else
WebInspector.domDebuggerManager.addDOMBreakpoint(new WebInspector.DOMBreakpoint(domNode,type));},!!breakpoint,false);}
if(allowEditing){contextMenu.appendSeparator();let shouldEnable=breakpoints.some((breakpoint)=>breakpoint.disabled);let label=shouldEnable?WebInspector.UIString("Enable Breakpoints"):WebInspector.UIString("Disable Breakpoints");contextMenu.appendItem(label,()=>{breakpoints.forEach((breakpoint)=>breakpoint.disabled=!shouldEnable);});contextMenu.appendItem(WebInspector.UIString("Delete Breakpoints"),function(){WebInspector.domDebuggerManager.removeDOMBreakpointsForNode(domNode);});}}
disconnect()
{WebInspector.DOMBreakpoint.removeEventListener(null,null,this);WebInspector.Frame.removeEventListener(null,null,this);WebInspector.domDebuggerManager.removeEventListener(null,null,this);}
_addBreakpointTreeElement(breakpoint)
{let nodeIdentifier=breakpoint.domNodeIdentifier;let parentTreeElement=this._domNodeTreeElements.get(nodeIdentifier);let shouldExpandParent=false;if(!parentTreeElement){let domNode=WebInspector.domTreeManager.nodeForId(nodeIdentifier);parentTreeElement=new WebInspector.DOMNodeTreeElement(domNode);this._treeOutline.appendChild(parentTreeElement);this._domNodeTreeElements.set(nodeIdentifier,parentTreeElement);shouldExpandParent=true;}
let treeElement=new WebInspector.DOMBreakpointTreeElement(breakpoint);parentTreeElement.appendChild(treeElement);if(shouldExpandParent)
parentTreeElement.expand();this._breakpointTreeElements.set(breakpoint,treeElement);}
_removeBreakpointTreeElement(breakpoint)
{let breakpointTreeElement=this._breakpointTreeElements.get(breakpoint);if(!breakpointTreeElement)
return;let domNodeTreeElement=breakpointTreeElement.parent;domNodeTreeElement.removeChild(breakpointTreeElement);this._breakpointTreeElements.delete(breakpoint);if(domNodeTreeElement.hasChildren)
return;this._treeOutline.removeChild(domNodeTreeElement);this._domNodeTreeElements.delete(breakpoint.domNodeIdentifier);}
_domBreakpointAdded(event)
{let breakpoint=event.data.breakpoint;if(!breakpoint.domNodeIdentifier)
return;this._addBreakpointTreeElement(breakpoint);}
_domBreakpointRemoved(event)
{this._removeBreakpointTreeElement(event.data.breakpoint);}
_domBreakpointResolvedStateDidChange(event)
{let breakpoint=event.target;if(breakpoint.domNodeIdentifier)
this._addBreakpointTreeElement(breakpoint);else
this._removeBreakpointTreeElement(breakpoint);}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;this._treeOutline.removeChildren();this._breakpointTreeElements.clear();this._domNodeTreeElements.clear();}};WebInspector.DragToAdjustController=class DragToAdjustController
{constructor(delegate)
{this._delegate=delegate;this._element=null;this._active=false;this._enabled=false;this._dragging=false;this._tracksMouseClickAndDrag=false;}
get element()
{return this._element;}
set element(element)
{this._element=element;}
get enabled()
{return this._enabled;}
set enabled(enabled)
{if(this._enabled===enabled)
return;if(enabled){this._element.addEventListener("mouseenter",this);this._element.addEventListener("mouseleave",this);}else{this._element.removeEventListener("mouseenter",this);this._element.removeEventListener("mouseleave",this);}}
get active()
{return this._active;}
set active(active)
{if(!this._element)
return;if(this._active===active)
return;if(active){WebInspector.notifications.addEventListener(WebInspector.Notification.GlobalModifierKeysDidChange,this._modifiersDidChange,this);this._element.addEventListener("mousemove",this);}else{WebInspector.notifications.removeEventListener(WebInspector.Notification.GlobalModifierKeysDidChange,this._modifiersDidChange,this);this._element.removeEventListener("mousemove",this);this._setTracksMouseClickAndDrag(false);}
this._active=active;if(this._delegate&&typeof this._delegate.dragToAdjustControllerActiveStateChanged==="function")
this._delegate.dragToAdjustControllerActiveStateChanged(this);}
reset()
{this._setTracksMouseClickAndDrag(false);this._element.classList.remove(WebInspector.DragToAdjustController.StyleClassName);if(this._delegate&&typeof this._delegate.dragToAdjustControllerDidReset==="function")
this._delegate.dragToAdjustControllerDidReset(this);}
handleEvent(event)
{switch(event.type){case"mouseenter":if(!this._dragging){if(this._delegate&&typeof this._delegate.dragToAdjustControllerCanBeActivated==="function")
this.active=this._delegate.dragToAdjustControllerCanBeActivated(this);else
this.active=true;}
break;case"mouseleave":if(!this._dragging)
this.active=false;break;case"mousemove":if(this._dragging)
this._mouseWasDragged(event);else
this._mouseMoved(event);break;case"mousedown":this._mouseWasPressed(event);break;case"mouseup":this._mouseWasReleased(event);break;case"contextmenu":event.preventDefault();break;}}
_setDragging(dragging)
{if(this._dragging===dragging)
return;if(dragging)
WebInspector.elementDragStart(this._element,this,this,window.event,"col-resize",window);else
WebInspector.elementDragEnd(window.event);this._dragging=dragging;}
_setTracksMouseClickAndDrag(tracksMouseClickAndDrag)
{if(this._tracksMouseClickAndDrag===tracksMouseClickAndDrag)
return;if(tracksMouseClickAndDrag){this._element.classList.add(WebInspector.DragToAdjustController.StyleClassName);window.addEventListener("mousedown",this,true);window.addEventListener("contextmenu",this,true);}else{this._element.classList.remove(WebInspector.DragToAdjustController.StyleClassName);window.removeEventListener("mousedown",this,true);window.removeEventListener("contextmenu",this,true);this._setDragging(false);}
this._tracksMouseClickAndDrag=tracksMouseClickAndDrag;}
_modifiersDidChange(event)
{var canBeAdjusted=WebInspector.modifierKeys.altKey;if(canBeAdjusted&&this._delegate&&typeof this._delegate.dragToAdjustControllerCanBeAdjusted==="function")
canBeAdjusted=this._delegate.dragToAdjustControllerCanBeAdjusted(this);this._setTracksMouseClickAndDrag(canBeAdjusted);}
_mouseMoved(event)
{var canBeAdjusted=event.altKey;if(canBeAdjusted&&this._delegate&&typeof this._delegate.dragToAdjustControllerCanAdjustObjectAtPoint==="function")
canBeAdjusted=this._delegate.dragToAdjustControllerCanAdjustObjectAtPoint(this,WebInspector.Point.fromEvent(event));this._setTracksMouseClickAndDrag(canBeAdjusted);}
_mouseWasPressed(event)
{this._lastX=event.screenX;this._setDragging(true);event.preventDefault();event.stopPropagation();}
_mouseWasDragged(event)
{var x=event.screenX;var amount=x-this._lastX;if(Math.abs(amount)<1)
return;this._lastX=x;if(event.ctrlKey)
amount/=10;else if(event.shiftKey)
amount*=10;if(this._delegate&&typeof this._delegate.dragToAdjustControllerWasAdjustedByAmount==="function")
this._delegate.dragToAdjustControllerWasAdjustedByAmount(this,amount);event.preventDefault();event.stopPropagation();}
_mouseWasReleased(event)
{this._setDragging(false);event.preventDefault();event.stopPropagation();this.reset();}};WebInspector.DragToAdjustController.StyleClassName="drag-to-adjust";WebInspector.Formatter=class Formatter
{constructor(codeMirror,builder)
{this._codeMirror=codeMirror;this._builder=builder;this._lastToken=null;this._lastContent="";}
format(from,to)
{if(this._builder.originalContent!==null)
return;var outerMode=this._codeMirror.getMode();var content=this._codeMirror.getRange(from,to);var state=CodeMirror.copyState(outerMode,this._codeMirror.getTokenAt(from).state);this._builder.setOriginalContent(content);var lineOffset=0;var lines=content.split("\n");for(var i=0;i<lines.length;++i){var line=lines[i];var startOfNewLine=true;var firstTokenOnLine=true;var stream=new CodeMirror.StringStream(line);while(!stream.eol()){var innerMode=CodeMirror.innerMode(outerMode,state);var token=outerMode.token(stream,state);var isWhiteSpace=token===null&&/^\s*$/.test(stream.current());this._handleToken(innerMode.mode,token,state,stream,lineOffset+stream.start,isWhiteSpace,startOfNewLine,firstTokenOnLine);stream.start=stream.pos;startOfNewLine=false;if(firstTokenOnLine&&!isWhiteSpace)
firstTokenOnLine=false;}
if(firstTokenOnLine)
this._handleEmptyLine();lineOffset+=line.length+1;this._handleLineEnding(lineOffset-1);}
this._builder.finish();}
_handleToken(mode,token,state,stream,originalPosition,isWhiteSpace,startOfNewLine,firstTokenOnLine)
{var content=stream.current();if(startOfNewLine)
this._builder.appendNewline();if(isWhiteSpace){this._builder.appendSpace();return;}
var isComment=token&&/\bcomment\b/.test(token);if(mode.modifyStateForTokenPre)
mode.modifyStateForTokenPre(this._lastToken,this._lastContent,token,state,content,isComment);if(this._builder.lastTokenWasWhitespace&&mode.removeLastWhitespace(this._lastToken,this._lastContent,token,state,content,isComment))
this._builder.removeLastWhitespace();if(this._builder.lastTokenWasNewline&&mode.removeLastNewline(this._lastToken,this._lastContent,token,state,content,isComment,firstTokenOnLine))
this._builder.removeLastNewline();if(!this._builder.lastTokenWasWhitespace&&mode.shouldHaveSpaceAfterLastToken(this._lastToken,this._lastContent,token,state,content,isComment))
this._builder.appendSpace();if(!this._builder.lastTokenWasWhitespace&&mode.shouldHaveSpaceBeforeToken(this._lastToken,this._lastContent,token,state,content,isComment))
this._builder.appendSpace();var dedents=mode.dedentsBeforeToken(this._lastToken,this._lastContent,token,state,content,isComment);while(dedents-->0)
this._builder.dedent();if(mode.newlineBeforeToken(this._lastToken,this._lastContent,token,state,content,isComment))
this._builder.appendNewline();if(mode.indentBeforeToken(this._lastToken,this._lastContent,token,state,content,isComment))
this._builder.indent();this._builder.appendToken(content,originalPosition);if(mode.modifyStateForTokenPost)
mode.modifyStateForTokenPost(this._lastToken,this._lastContent,token,state,content,isComment);if(!isComment&&mode.indentAfterToken(this._lastToken,this._lastContent,token,state,content,isComment))
this._builder.indent();var newlines=mode.newlinesAfterToken(this._lastToken,this._lastContent,token,state,content,isComment);if(newlines)
this._builder.appendMultipleNewlines(newlines);this._lastToken=token;this._lastContent=content;}
_handleEmptyLine()
{if(!(this._builder.lastTokenWasNewline&&this._builder.lastNewlineAppendWasMultiple))
this._builder.appendNewline(true);}
_handleLineEnding(originalNewLinePosition)
{this._builder.addOriginalLineEnding(originalNewLinePosition);}};WebInspector.FormatterSourceMap=class FormatterSourceMap extends WebInspector.Object
{constructor(originalLineEndings,formattedLineEndings,mapping)
{super();this._originalLineEndings=originalLineEndings;this._formattedLineEndings=formattedLineEndings;this._mapping=mapping;}
static fromSourceMapData({originalLineEndings,formattedLineEndings,mapping})
{return new WebInspector.FormatterSourceMap(originalLineEndings,formattedLineEndings,mapping);}
originalToFormatted(lineNumber,columnNumber)
{var originalPosition=this._locationToPosition(this._originalLineEndings,lineNumber||0,columnNumber||0);return this.originalPositionToFormatted(originalPosition);}
originalPositionToFormatted(originalPosition)
{var formattedPosition=this._convertPosition(this._mapping.original,this._mapping.formatted,originalPosition);return this._positionToLocation(this._formattedLineEndings,formattedPosition);}
formattedToOriginal(lineNumber,columnNumber)
{var originalPosition=this.formattedToOriginalOffset(lineNumber,columnNumber);return this._positionToLocation(this._originalLineEndings,originalPosition);}
formattedToOriginalOffset(lineNumber,columnNumber)
{var formattedPosition=this._locationToPosition(this._formattedLineEndings,lineNumber||0,columnNumber||0);var originalPosition=this._convertPosition(this._mapping.formatted,this._mapping.original,formattedPosition);return originalPosition;}
_locationToPosition(lineEndings,lineNumber,columnNumber)
{var lineOffset=lineNumber?lineEndings[lineNumber-1]+1:0;return lineOffset+columnNumber;}
_positionToLocation(lineEndings,position)
{var lineNumber=lineEndings.upperBound(position-1);if(!lineNumber)
var columnNumber=position;else
var columnNumber=position-lineEndings[lineNumber-1]-1;return{lineNumber,columnNumber};}
_convertPosition(positions1,positions2,positionInPosition1)
{var index=positions1.upperBound(positionInPosition1)-1;var convertedPosition=positions2[index]+positionInPosition1-positions1[index];if(index<positions2.length-1&&convertedPosition>positions2[index+1])
convertedPosition=positions2[index+1];return convertedPosition;}};WebInspector.FrameResourceManager=class FrameResourceManager extends WebInspector.Object
{constructor()
{super();this._frameIdentifierMap=new Map;this._mainFrame=null;this._resourceRequestIdentifierMap=new Map;this._orphanedResources=new Map;this._webSocketIdentifierToURL=new Map;this._waitingForMainFrameResourceTreePayload=true;if(window.PageAgent){PageAgent.enable();PageAgent.getResourceTree(this._processMainFrameResourceTreePayload.bind(this));}
if(window.NetworkAgent)
NetworkAgent.enable();WebInspector.notifications.addEventListener(WebInspector.Notification.ExtraDomainsActivated,this._extraDomainsActivated,this);}
get mainFrame()
{return this._mainFrame;}
get frames()
{return[...this._frameIdentifierMap.values()];}
frameForIdentifier(frameId)
{return this._frameIdentifierMap.get(frameId)||null;}
frameDidNavigate(framePayload)
{if(this._waitingForMainFrameResourceTreePayload)
return;var frameWasLoadedInstantly=false;var frame=this.frameForIdentifier(framePayload.id);if(!frame){
var frameResource=this._addNewResourceToFrameOrTarget(null,framePayload.id,framePayload.loaderId,framePayload.url,null,null,null,null,null,framePayload.name,framePayload.securityOrigin);frame=frameResource.parentFrame;frameWasLoadedInstantly=true;if(!frame)
return;}
if(framePayload.loaderId===frame.provisionalLoaderIdentifier){frame.commitProvisionalLoad(framePayload.securityOrigin);}else{if(frame.mainResource.url!==framePayload.url||frame.loaderIdentifier!==framePayload.loaderId){var mainResource=new WebInspector.Resource(framePayload.url,framePayload.mimeType,null,framePayload.loaderId);}else{var mainResource=frame.mainResource;}
frame.initialize(framePayload.name,framePayload.securityOrigin,framePayload.loaderId,mainResource);}
var oldMainFrame=this._mainFrame;if(framePayload.parentId){var parentFrame=this.frameForIdentifier(framePayload.parentId);if(frame===this._mainFrame)
this._mainFrame=null;if(frame.parentFrame!==parentFrame)
parentFrame.addChildFrame(frame);}else{if(frame.parentFrame)
frame.parentFrame.removeChildFrame(frame);this._mainFrame=frame;}
if(this._mainFrame!==oldMainFrame)
this._mainFrameDidChange(oldMainFrame);if(frameWasLoadedInstantly)
frame.mainResource.markAsFinished();}
frameDidDetach(frameId)
{if(this._waitingForMainFrameResourceTreePayload)
return;var frame=this.frameForIdentifier(frameId);if(!frame)
return;if(frame.parentFrame)
frame.parentFrame.removeChildFrame(frame);this._frameIdentifierMap.delete(frame.id);var oldMainFrame=this._mainFrame;if(frame===this._mainFrame)
this._mainFrame=null;frame.clearExecutionContexts();this.dispatchEventToListeners(WebInspector.FrameResourceManager.Event.FrameWasRemoved,{frame});if(this._mainFrame!==oldMainFrame)
this._mainFrameDidChange(oldMainFrame);}
resourceRequestWillBeSent(requestIdentifier,frameIdentifier,loaderIdentifier,request,type,redirectResponse,timestamp,initiator,targetId)
{if(this._waitingForMainFrameResourceTreePayload)
return;
var originalRequestWillBeSentTimestamp=timestamp;var elapsedTime=WebInspector.timelineManager.computeElapsedTime(timestamp);let resource=this._resourceRequestIdentifierMap.get(requestIdentifier);if(resource){resource.updateForRedirectResponse(request.url,request.headers,elapsedTime);return;}
var initiatorSourceCodeLocation=this._initiatorSourceCodeLocationFromPayload(initiator);resource=this._addNewResourceToFrameOrTarget(requestIdentifier,frameIdentifier,loaderIdentifier,request.url,type,request.method,request.headers,request.postData,elapsedTime,null,null,initiatorSourceCodeLocation,originalRequestWillBeSentTimestamp,targetId);this._resourceRequestIdentifierMap.set(requestIdentifier,resource);}
webSocketCreated(requestId,url)
{this._webSocketIdentifierToURL.set(requestId,url);}
webSocketWillSendHandshakeRequest(requestId,timestamp,walltime,request)
{let url=this._webSocketIdentifierToURL.get(requestId);if(!url)
return;if(!NetworkAgent.hasEventParameter("webSocketWillSendHandshakeRequest","walltime")){request=arguments[2];walltime=NaN;}
let frameIdentifier=WebInspector.frameResourceManager.mainFrame.id;let loaderIdentifier=WebInspector.frameResourceManager.mainFrame.id;let targetId;let frame=this.frameForIdentifier(frameIdentifier);let requestData=null;let elapsedTime=WebInspector.timelineManager.computeElapsedTime(timestamp);let initiatorSourceCodeLocation=null;let resource=new WebInspector.WebSocketResource(url,loaderIdentifier,targetId,requestId,request.headers,requestData,timestamp,walltime,elapsedTime,initiatorSourceCodeLocation);frame.addResource(resource);this._resourceRequestIdentifierMap.set(requestId,resource);}
webSocketHandshakeResponseReceived(requestId,timestamp,response)
{let resource=this._resourceRequestIdentifierMap.get(requestId);if(!resource)
return;resource.readyState=WebInspector.WebSocketResource.ReadyState.Open;let elapsedTime=WebInspector.timelineManager.computeElapsedTime(timestamp); let responseTiming=response.timing||null;resource.updateForResponse(resource.url,resource.mimeType,resource.type,response.headers,response.status,response.statusText,elapsedTime,responseTiming);resource.markAsFinished(elapsedTime);}
webSocketFrameReceived(requestId,timestamp,response)
{this._webSocketFrameReceivedOrSent(requestId,timestamp,response);}
webSocketFrameSent(requestId,timestamp,response)
{this._webSocketFrameReceivedOrSent(requestId,timestamp,response);}
webSocketClosed(requestId,timestamp)
{let resource=this._resourceRequestIdentifierMap.get(requestId);if(!resource)
return;resource.readyState=WebInspector.WebSocketResource.ReadyState.Closed;let elapsedTime=WebInspector.timelineManager.computeElapsedTime(timestamp);resource.markAsFinished(elapsedTime);this._webSocketIdentifierToURL.delete(requestId);this._resourceRequestIdentifierMap.delete(requestId);}
_webSocketFrameReceivedOrSent(requestId,timestamp,response)
{let resource=this._resourceRequestIdentifierMap.get(requestId);if(!resource)
return;let isOutgoing=!!response.mask;let{payloadData,payloadLength,opcode}=response;let elapsedTime=WebInspector.timelineManager.computeElapsedTime(timestamp);resource.addFrame(payloadData,payloadLength,isOutgoing,opcode,timestamp,elapsedTime);}
markResourceRequestAsServedFromMemoryCache(requestIdentifier)
{if(this._waitingForMainFrameResourceTreePayload)
return;let resource=this._resourceRequestIdentifierMap.get(requestIdentifier);
if(!resource)
return;resource.legacyMarkServedFromMemoryCache();}
resourceRequestWasServedFromMemoryCache(requestIdentifier,frameIdentifier,loaderIdentifier,cachedResourcePayload,timestamp,initiator)
{if(this._waitingForMainFrameResourceTreePayload)
return;let elapsedTime=WebInspector.timelineManager.computeElapsedTime(timestamp);let initiatorSourceCodeLocation=this._initiatorSourceCodeLocationFromPayload(initiator);let response=cachedResourcePayload.response;const responseSource=NetworkAgent.ResponseSource.MemoryCache;let resource=this._addNewResourceToFrameOrTarget(requestIdentifier,frameIdentifier,loaderIdentifier,cachedResourcePayload.url,cachedResourcePayload.type,"GET",null,null,elapsedTime,null,null,initiatorSourceCodeLocation);resource.updateForResponse(cachedResourcePayload.url,response.mimeType,cachedResourcePayload.type,response.headers,response.status,response.statusText,elapsedTime,response.timing,responseSource);resource.increaseSize(cachedResourcePayload.bodySize,elapsedTime);resource.increaseTransferSize(cachedResourcePayload.bodySize);resource.setCachedResponseBodySize(cachedResourcePayload.bodySize);resource.markAsFinished(elapsedTime);if(cachedResourcePayload.sourceMapURL)
WebInspector.sourceMapManager.downloadSourceMap(cachedResourcePayload.sourceMapURL,resource.url,resource);
}
resourceRequestDidReceiveResponse(requestIdentifier,frameIdentifier,loaderIdentifier,type,response,timestamp)
{if(this._waitingForMainFrameResourceTreePayload)
return;var elapsedTime=WebInspector.timelineManager.computeElapsedTime(timestamp);let resource=this._resourceRequestIdentifierMap.get(requestIdentifier);
if(!resource){var frame=this.frameForIdentifier(frameIdentifier);if(frame)
resource=frame.resourceForURL(response.url);if(resource){this._resourceRequestIdentifierMap.set(requestIdentifier,resource);resource.revertMarkAsFinished();}}
if(!resource){resource=this._addNewResourceToFrameOrTarget(requestIdentifier,frameIdentifier,loaderIdentifier,response.url,type,null,response.requestHeaders,null,elapsedTime,null,null,null);this._resourceRequestIdentifierMap.set(requestIdentifier,resource);}
if(response.fromDiskCache)
resource.legacyMarkServedFromDiskCache();resource.updateForResponse(response.url,response.mimeType,type,response.headers,response.status,response.statusText,elapsedTime,response.timing,response.source);}
resourceRequestDidReceiveData(requestIdentifier,dataLength,encodedDataLength,timestamp)
{if(this._waitingForMainFrameResourceTreePayload)
return;let resource=this._resourceRequestIdentifierMap.get(requestIdentifier);var elapsedTime=WebInspector.timelineManager.computeElapsedTime(timestamp);
if(!resource)
return;resource.increaseSize(dataLength,elapsedTime);if(encodedDataLength!==-1)
resource.increaseTransferSize(encodedDataLength);}
resourceRequestDidFinishLoading(requestIdentifier,timestamp,sourceMapURL,metrics)
{if(this._waitingForMainFrameResourceTreePayload)
return;
let resource=this._resourceRequestIdentifierMap.get(requestIdentifier);if(!resource)
return;if(metrics)
resource.updateWithMetrics(metrics);let elapsedTime=WebInspector.timelineManager.computeElapsedTime(timestamp);resource.markAsFinished(elapsedTime);if(sourceMapURL)
WebInspector.sourceMapManager.downloadSourceMap(sourceMapURL,resource.url,resource);this._resourceRequestIdentifierMap.delete(requestIdentifier);}
resourceRequestDidFailLoading(requestIdentifier,canceled,timestamp,errorText)
{if(this._waitingForMainFrameResourceTreePayload)
return;
let resource=this._resourceRequestIdentifierMap.get(requestIdentifier);if(!resource)
return;let elapsedTime=WebInspector.timelineManager.computeElapsedTime(timestamp);resource.markAsFailed(canceled,elapsedTime,errorText);if(resource===resource.parentFrame.provisionalMainResource)
resource.parentFrame.clearProvisionalLoad();this._resourceRequestIdentifierMap.delete(requestIdentifier);}
executionContextCreated(contextPayload)
{var frame=this.frameForIdentifier(contextPayload.frameId);if(!frame)
return;var displayName=contextPayload.name||frame.mainResource.displayName;var executionContext=new WebInspector.ExecutionContext(WebInspector.mainTarget,contextPayload.id,displayName,contextPayload.isPageContext,frame);frame.addExecutionContext(executionContext);}
resourceForURL(url)
{if(!this._mainFrame)
return null;if(this._mainFrame.mainResource.url===url)
return this._mainFrame.mainResource;return this._mainFrame.resourceForURL(url,true);}
adoptOrphanedResourcesForTarget(target)
{let resources=this._orphanedResources.take(target.identifier);if(!resources)
return;for(let resource of resources)
target.adoptResource(resource);}
_addNewResourceToFrameOrTarget(requestIdentifier,frameIdentifier,loaderIdentifier,url,type,requestMethod,requestHeaders,requestData,elapsedTime,frameName,frameSecurityOrigin,initiatorSourceCodeLocation,originalRequestWillBeSentTimestamp,targetId)
{let resource=null;let frame=this.frameForIdentifier(frameIdentifier);if(frame){if(frame.mainResource.url===url&&frame.loaderIdentifier===loaderIdentifier)
resource=frame.mainResource;else if(frame.provisionalMainResource&&frame.provisionalMainResource.url===url&&frame.provisionalLoaderIdentifier===loaderIdentifier)
resource=frame.provisionalMainResource;else{resource=new WebInspector.Resource(url,null,type,loaderIdentifier,targetId,requestIdentifier,requestMethod,requestHeaders,requestData,elapsedTime,initiatorSourceCodeLocation,originalRequestWillBeSentTimestamp);if(resource.target===WebInspector.mainTarget)
this._addResourceToFrame(frame,resource);else if(resource.target)
resource.target.addResource(resource);else
this._addOrphanedResource(resource,targetId);}}else{resource=new WebInspector.Resource(url,null,type,loaderIdentifier,targetId,requestIdentifier,requestMethod,requestHeaders,requestData,elapsedTime,initiatorSourceCodeLocation,originalRequestWillBeSentTimestamp);frame=new WebInspector.Frame(frameIdentifier,frameName,frameSecurityOrigin,loaderIdentifier,resource);this._frameIdentifierMap.set(frame.id,frame);
if(!this._mainFrame){this._mainFrame=frame;this._mainFrameDidChange(null);}
this._dispatchFrameWasAddedEvent(frame);}
return resource;}
_addResourceToFrame(frame,resource)
{if(this._waitingForMainFrameResourceTreePayload)
return;if(resource.loaderIdentifier!==frame.loaderIdentifier&&!frame.provisionalLoaderIdentifier){frame.startProvisionalLoad(resource);return;}
frame.addResource(resource);}
_addResourceToTarget(target,resource)
{target.addResource(resource);}
_initiatorSourceCodeLocationFromPayload(initiatorPayload)
{if(!initiatorPayload)
return null;var url=null;var lineNumber=NaN;var columnNumber=0;if(initiatorPayload.stackTrace&&initiatorPayload.stackTrace.length){var stackTracePayload=initiatorPayload.stackTrace;for(var i=0;i<stackTracePayload.length;++i){var callFramePayload=stackTracePayload[i];if(!callFramePayload.url||callFramePayload.url==="[native code]")
continue;url=callFramePayload.url;lineNumber=callFramePayload.lineNumber-1;columnNumber=callFramePayload.columnNumber;break;}}else if(initiatorPayload.url){url=initiatorPayload.url;lineNumber=initiatorPayload.lineNumber-1;}
if(!url||isNaN(lineNumber)||lineNumber<0)
return null;var sourceCode=WebInspector.frameResourceManager.resourceForURL(url);if(!sourceCode)
sourceCode=WebInspector.debuggerManager.scriptsForURL(url,WebInspector.mainTarget)[0];if(!sourceCode)
return null;return sourceCode.createSourceCodeLocation(lineNumber,columnNumber);}
_processMainFrameResourceTreePayload(error,mainFramePayload)
{delete this._waitingForMainFrameResourceTreePayload;if(error){console.error(JSON.stringify(error));return;}
this._resourceRequestIdentifierMap=new Map;this._frameIdentifierMap=new Map;var oldMainFrame=this._mainFrame;this._mainFrame=this._addFrameTreeFromFrameResourceTreePayload(mainFramePayload,true);if(this._mainFrame!==oldMainFrame)
this._mainFrameDidChange(oldMainFrame);}
_createFrame(payload)
{
var mainResource=new WebInspector.Resource(payload.url||"about:blank",payload.mimeType,null,payload.loaderId);var frame=new WebInspector.Frame(payload.id,payload.name,payload.securityOrigin,payload.loaderId,mainResource);this._frameIdentifierMap.set(frame.id,frame);mainResource.markAsFinished();return frame;}
_createResource(payload,framePayload)
{var resource=new WebInspector.Resource(payload.url,payload.mimeType,payload.type,framePayload.loaderId,payload.targetId);if(payload.sourceMapURL)
WebInspector.sourceMapManager.downloadSourceMap(payload.sourceMapURL,resource.url,resource);return resource;}
_addFrameTreeFromFrameResourceTreePayload(payload,isMainFrame)
{var frame=this._createFrame(payload.frame);if(isMainFrame)
frame.markAsMainFrame();for(var i=0;payload.childFrames&&i<payload.childFrames.length;++i)
frame.addChildFrame(this._addFrameTreeFromFrameResourceTreePayload(payload.childFrames[i],false));for(var i=0;payload.resources&&i<payload.resources.length;++i){var resourcePayload=payload.resources[i];
if(resourcePayload.type==="Document"&&resourcePayload.url===payload.frame.url)
continue;var resource=this._createResource(resourcePayload,payload);if(resource.target===WebInspector.mainTarget)
frame.addResource(resource);else if(resource.target)
resource.target.addResource(resource);else
this._addOrphanedResource(resource,resourcePayload.targetId);if(resourcePayload.failed||resourcePayload.canceled)
resource.markAsFailed(resourcePayload.canceled);else
resource.markAsFinished();}
this._dispatchFrameWasAddedEvent(frame);return frame;}
_addOrphanedResource(resource,targetId)
{let resources=this._orphanedResources.get(targetId);if(!resources){resources=[];this._orphanedResources.set(targetId,resources);}
resources.push(resource);}
_dispatchFrameWasAddedEvent(frame)
{this.dispatchEventToListeners(WebInspector.FrameResourceManager.Event.FrameWasAdded,{frame});}
_mainFrameDidChange(oldMainFrame)
{if(oldMainFrame)
oldMainFrame.unmarkAsMainFrame();if(this._mainFrame)
this._mainFrame.markAsMainFrame();this.dispatchEventToListeners(WebInspector.FrameResourceManager.Event.MainFrameDidChange,{oldMainFrame});}
_extraDomainsActivated(event)
{if(event.data.domains.includes("Page")&&window.PageAgent)
PageAgent.getResourceTree(this._processMainFrameResourceTreePayload.bind(this));}};WebInspector.FrameResourceManager.Event={FrameWasAdded:"frame-resource-manager-frame-was-added",FrameWasRemoved:"frame-resource-manager-frame-was-removed",MainFrameDidChange:"frame-resource-manager-main-frame-did-change",};WebInspector.HeapManager=class HeapManager extends WebInspector.Object
{constructor()
{super();if(window.HeapAgent)
HeapAgent.enable();}
garbageCollected(target,payload)
{ if(target!==WebInspector.mainTarget)
return;let collection=WebInspector.GarbageCollection.fromPayload(payload);this.dispatchEventToListeners(WebInspector.HeapManager.Event.GarbageCollected,{collection});}};WebInspector.HeapManager.Event={GarbageCollected:"heap-manager-garbage-collected"};WebInspector.IssueManager=class IssueManager extends WebInspector.Object
{constructor()
{super();WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);WebInspector.logManager.addEventListener(WebInspector.LogManager.Event.Cleared,this._logCleared,this);this.initialize();}
static issueMatchSourceCode(issue,sourceCode)
{if(sourceCode instanceof WebInspector.SourceMapResource)
return issue.sourceCodeLocation&&issue.sourceCodeLocation.displaySourceCode===sourceCode;if(sourceCode instanceof WebInspector.Resource)
return issue.url===sourceCode.url&&(!issue.sourceCodeLocation||issue.sourceCodeLocation.sourceCode===sourceCode);if(sourceCode instanceof WebInspector.Script)
return issue.sourceCodeLocation&&issue.sourceCodeLocation.sourceCode===sourceCode;return false;}
initialize()
{this._issues=[];this.dispatchEventToListeners(WebInspector.IssueManager.Event.Cleared);}
issueWasAdded(consoleMessage)
{let issue=new WebInspector.IssueMessage(consoleMessage);this._issues.push(issue);this.dispatchEventToListeners(WebInspector.IssueManager.Event.IssueWasAdded,{issue});}
issuesForSourceCode(sourceCode)
{var issues=[];for(var i=0;i<this._issues.length;++i){var issue=this._issues[i];if(WebInspector.IssueManager.issueMatchSourceCode(issue,sourceCode))
issues.push(issue);}
return issues;}
_logCleared(event)
{this.initialize();}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;this.initialize();}};WebInspector.IssueManager.Event={IssueWasAdded:"issue-manager-issue-was-added",Cleared:"issue-manager-cleared"};WebInspector.JavaScriptLogViewController=class JavaScriptLogViewController extends WebInspector.Object
{constructor(element,scrollElement,textPrompt,delegate,historySettingIdentifier)
{super();this._element=element;this._scrollElement=scrollElement;this._promptHistorySetting=new WebInspector.Setting(historySettingIdentifier,null);this._prompt=textPrompt;this._prompt.delegate=this;this._prompt.history=this._promptHistorySetting.value;this.delegate=delegate;this._cleared=true;this._previousMessageView=null;this._lastCommitted="";this._repeatCountWasInterrupted=false;this._sessions=[];this.messagesAlternateClearKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.Control,"L",this.requestClearMessages.bind(this),this._element);this._messagesFindNextKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"G",this._handleFindNextShortcut.bind(this),this._element);this._messagesFindPreviousKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,"G",this._handleFindPreviousShortcut.bind(this),this._element);this._promptAlternateClearKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.Control,"L",this.requestClearMessages.bind(this),this._prompt.element);this._promptFindNextKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"G",this._handleFindNextShortcut.bind(this),this._prompt.element);this._promptFindPreviousKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,"G",this._handleFindPreviousShortcut.bind(this),this._prompt.element);this._pendingMessages=[];this._scheduledRenderIdentifier=0;this.startNewSession();}
get prompt()
{return this._prompt;}
get currentConsoleGroup()
{return this._currentConsoleGroup;}
clear()
{this._cleared=true;const clearPreviousSessions=true;this.startNewSession(clearPreviousSessions,{newSessionReason:WebInspector.ConsoleSession.NewSessionReason.ConsoleCleared});}
startNewSession(clearPreviousSessions=false,data={})
{if(this._sessions.length&&clearPreviousSessions){for(var i=0;i<this._sessions.length;++i)
this._element.removeChild(this._sessions[i].element);this._sessions=[];this._currentConsoleGroup=null;}
if(!this._sessions.length)
data.timestamp=Date.now();let lastSession=this._sessions.lastValue;if(lastSession&&!lastSession.hasMessages()){this._sessions.pop();lastSession.element.remove();}
let consoleSession=new WebInspector.ConsoleSession(data);this._previousMessageView=null;this._lastCommitted="";this._repeatCountWasInterrupted=false;this._sessions.push(consoleSession);this._currentConsoleGroup=consoleSession;this._element.appendChild(consoleSession.element);consoleSession.element.scrollIntoView();}
appendImmediateExecutionWithResult(text,result,addSpecialUserLogClass,shouldRevealConsole)
{var commandMessageView=new WebInspector.ConsoleCommandView(text,addSpecialUserLogClass?"special-user-log":null);this._appendConsoleMessageView(commandMessageView,true);function saveResultCallback(savedResultIndex)
{let commandResultMessage=new WebInspector.ConsoleCommandResultMessage(result.target,result,false,savedResultIndex,shouldRevealConsole);let commandResultMessageView=new WebInspector.ConsoleMessageView(commandResultMessage);this._appendConsoleMessageView(commandResultMessageView,true);}
WebInspector.runtimeManager.saveResult(result,saveResultCallback.bind(this));}
appendConsoleMessage(consoleMessage)
{var consoleMessageView=new WebInspector.ConsoleMessageView(consoleMessage);this._appendConsoleMessageView(consoleMessageView);return consoleMessageView;}
updatePreviousMessageRepeatCount(count)
{if(!this._previousMessageView)
return false;var previousIgnoredCount=this._previousMessageView[WebInspector.JavaScriptLogViewController.IgnoredRepeatCount]||0;var previousVisibleCount=this._previousMessageView.repeatCount;if(!this._repeatCountWasInterrupted){this._previousMessageView.repeatCount=count-previousIgnoredCount;return true;}
var consoleMessage=this._previousMessageView.message;var duplicatedConsoleMessageView=new WebInspector.ConsoleMessageView(consoleMessage);duplicatedConsoleMessageView[WebInspector.JavaScriptLogViewController.IgnoredRepeatCount]=previousIgnoredCount+previousVisibleCount;duplicatedConsoleMessageView.repeatCount=1;this._appendConsoleMessageView(duplicatedConsoleMessageView);return true;}
isScrolledToBottom()
{return this._scrollToBottomTimeout||this._scrollElement.isScrolledToBottom();}
scrollToBottom()
{if(this._scrollToBottomTimeout)
return;function delayedWork()
{this._scrollToBottomTimeout=null;this._scrollElement.scrollTop=this._scrollElement.scrollHeight;}
this._scrollToBottomTimeout=setTimeout(delayedWork.bind(this),0);}
requestClearMessages()
{WebInspector.logManager.requestClearMessages();}
consolePromptHistoryDidChange(prompt)
{this._promptHistorySetting.value=this.prompt.history;}
consolePromptShouldCommitText(prompt,text,cursorIsAtLastPosition,handler)
{if(!cursorIsAtLastPosition){handler(true);return;}
function parseFinished(error,result,message,range)
{handler(result!==RuntimeAgent.SyntaxErrorType.Recoverable);}
WebInspector.runtimeManager.activeExecutionContext.target.RuntimeAgent.parse(text,parseFinished.bind(this));}
consolePromptTextCommitted(prompt,text)
{if(this._lastCommitted!==text){let commandMessageView=new WebInspector.ConsoleCommandView(text);this._appendConsoleMessageView(commandMessageView,true);this._lastCommitted=text;}
function printResult(result,wasThrown,savedResultIndex)
{if(!result||this._cleared)
return;let shouldRevealConsole=true;let commandResultMessage=new WebInspector.ConsoleCommandResultMessage(result.target,result,wasThrown,savedResultIndex,shouldRevealConsole);let commandResultMessageView=new WebInspector.ConsoleMessageView(commandResultMessage);this._appendConsoleMessageView(commandResultMessageView,true);}
let options={objectGroup:WebInspector.RuntimeManager.ConsoleObjectGroup,includeCommandLineAPI:true,doNotPauseOnExceptionsAndMuteConsole:false,returnByValue:false,generatePreview:true,saveResult:true,sourceURLAppender:appendWebInspectorConsoleEvaluationSourceURL,};WebInspector.runtimeManager.evaluateInInspectedWindow(text,options,printResult.bind(this));}
_handleFindNextShortcut()
{this.delegate.highlightNextSearchMatch();}
_handleFindPreviousShortcut()
{this.delegate.highlightPreviousSearchMatch();}
_appendConsoleMessageView(messageView,repeatCountWasInterrupted)
{this._pendingMessages.push(messageView);this._cleared=false;this._repeatCountWasInterrupted=repeatCountWasInterrupted||false;if(!repeatCountWasInterrupted)
this._previousMessageView=messageView;if(messageView.message&&messageView.message.source!==WebInspector.ConsoleMessage.MessageSource.JS)
this._lastCommitted="";if(WebInspector.consoleContentView.visible)
this.renderPendingMessagesSoon();if(!WebInspector.isShowingConsoleTab()&&messageView.message&&messageView.message.shouldRevealConsole)
WebInspector.showSplitConsole();}
renderPendingMessages()
{if(this._scheduledRenderIdentifier){cancelAnimationFrame(this._scheduledRenderIdentifier);this._scheduledRenderIdentifier=0;}
if(this._pendingMessages.length===0)
return;const maxMessagesPerFrame=100;let messages=this._pendingMessages.splice(0,maxMessagesPerFrame);let lastMessageView=messages.lastValue;let isCommandView=lastMessageView instanceof WebInspector.ConsoleCommandView;let shouldScrollToBottom=isCommandView||lastMessageView.message.type===WebInspector.ConsoleMessage.MessageType.Result||this.isScrolledToBottom();for(let messageView of messages){messageView.render();this._didRenderConsoleMessageView(messageView);}
if(shouldScrollToBottom)
this.scrollToBottom();WebInspector.quickConsole.needsLayout();if(this._pendingMessages.length>0)
this.renderPendingMessagesSoon();}
renderPendingMessagesSoon()
{if(this._scheduledRenderIdentifier)
return;this._scheduledRenderIdentifier=requestAnimationFrame(()=>this.renderPendingMessages());}
_didRenderConsoleMessageView(messageView)
{var type=messageView instanceof WebInspector.ConsoleCommandView?null:messageView.message.type;if(type===WebInspector.ConsoleMessage.MessageType.EndGroup){var parentGroup=this._currentConsoleGroup.parentGroup;if(parentGroup)
this._currentConsoleGroup=parentGroup;}else{if(type===WebInspector.ConsoleMessage.MessageType.StartGroup||type===WebInspector.ConsoleMessage.MessageType.StartGroupCollapsed){var group=new WebInspector.ConsoleGroup(this._currentConsoleGroup);var groupElement=group.render(messageView);this._currentConsoleGroup.append(groupElement);this._currentConsoleGroup=group;}else
this._currentConsoleGroup.addMessageView(messageView);}
if(this.delegate&&typeof this.delegate.didAppendConsoleMessageView==="function")
this.delegate.didAppendConsoleMessageView(messageView);}};WebInspector.JavaScriptLogViewController.CachedPropertiesDuration=30000;WebInspector.JavaScriptLogViewController.IgnoredRepeatCount=Symbol("ignored-repeat-count");Object.defineProperty(WebInspector,"javaScriptRuntimeCompletionProvider",{get:function()
{if(!WebInspector.JavaScriptRuntimeCompletionProvider._instance)
WebInspector.JavaScriptRuntimeCompletionProvider._instance=new WebInspector.JavaScriptRuntimeCompletionProvider;return WebInspector.JavaScriptRuntimeCompletionProvider._instance;}});WebInspector.JavaScriptRuntimeCompletionProvider=class JavaScriptRuntimeCompletionProvider extends WebInspector.Object
{constructor()
{super();WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange,this._clearLastProperties,this);}
completionControllerCompletionsNeeded(completionController,defaultCompletions,base,prefix,suffix,forced)
{if(!forced&&!prefix&&!/[.[]$/.test(base)){completionController.updateCompletions(null);return;}
if(/[({]$/.test(base))
base="";var lastBaseIndex=base.length-1;var dotNotation=base[lastBaseIndex]===".";var bracketNotation=base[lastBaseIndex]==="[";if(dotNotation||bracketNotation){base=base.substring(0,lastBaseIndex);if(!base&&dotNotation){completionController.updateCompletions(defaultCompletions);return;}
if(!forced&&!prefix&&dotNotation&&base.indexOf(".")===-1&&parseInt(base,10)==base){completionController.updateCompletions(null);return;}
if(!base&&bracketNotation)
bracketNotation=false;}
if(this._lastBase===base&&this._lastPropertyNames){receivedPropertyNames.call(this,this._lastPropertyNames);return;}
this._lastBase=base;this._lastPropertyNames=null;var activeCallFrame=WebInspector.debuggerManager.activeCallFrame;if(!base&&activeCallFrame&&!this._alwaysEvaluateInWindowContext)
activeCallFrame.collectScopeChainVariableNames(receivedPropertyNames.bind(this));else{let options={objectGroup:"completion",includeCommandLineAPI:true,doNotPauseOnExceptionsAndMuteConsole:true,returnByValue:false,generatePreview:false,saveResult:false};WebInspector.runtimeManager.evaluateInInspectedWindow(base,options,evaluated.bind(this));}
function updateLastPropertyNames(propertyNames)
{if(this._clearLastPropertiesTimeout)
clearTimeout(this._clearLastPropertiesTimeout);this._clearLastPropertiesTimeout=setTimeout(this._clearLastProperties.bind(this),WebInspector.JavaScriptLogViewController.CachedPropertiesDuration);this._lastPropertyNames=propertyNames||{};}
function evaluated(result,wasThrown)
{if(wasThrown||!result||result.type==="undefined"||(result.type==="object"&&result.subtype==="null")){WebInspector.runtimeManager.activeExecutionContext.target.RuntimeAgent.releaseObjectGroup("completion");updateLastPropertyNames.call(this,{});completionController.updateCompletions(defaultCompletions);return;}
function inspectedPage_evalResult_getArrayCompletions(primitiveType)
{var array=this;var arrayLength;var resultSet={};for(var o=array;o;o=o.__proto__){try{if(o===array&&o.length){arrayLength=o.length;}else{var names=Object.getOwnPropertyNames(o);for(var i=0;i<names.length;++i)
resultSet[names[i]]=true;}}catch(e){}}
if(arrayLength)
resultSet["length"]=arrayLength;return resultSet;}
function inspectedPage_evalResult_getCompletions(primitiveType)
{var object;if(primitiveType==="string")
object=new String("");else if(primitiveType==="number")
object=new Number(0);else if(primitiveType==="boolean")
object=new Boolean(false);else if(primitiveType==="symbol")
object=Symbol();else
object=this;var resultSet={};for(var o=object;o;o=o.__proto__){try{var names=Object.getOwnPropertyNames(o);for(var i=0;i<names.length;++i)
resultSet[names[i]]=true;}catch(e){}}
return resultSet;}
if(result.subtype==="array")
result.callFunctionJSON(inspectedPage_evalResult_getArrayCompletions,undefined,receivedArrayPropertyNames.bind(this));else if(result.type==="object"||result.type==="function")
result.callFunctionJSON(inspectedPage_evalResult_getCompletions,undefined,receivedPropertyNames.bind(this));else if(result.type==="string"||result.type==="number"||result.type==="boolean"||result.type==="symbol"){let options={objectGroup:"completion",includeCommandLineAPI:false,doNotPauseOnExceptionsAndMuteConsole:true,returnByValue:false,generatePreview:false,saveResult:false};WebInspector.runtimeManager.evaluateInInspectedWindow("("+inspectedPage_evalResult_getCompletions+")(\""+result.type+"\")",options,receivedPropertyNamesFromEvaluate.bind(this));}else
console.error("Unknown result type: "+result.type);}
function receivedPropertyNamesFromEvaluate(object,wasThrown,result)
{receivedPropertyNames.call(this,result&&!wasThrown?result.value:null);}
function receivedArrayPropertyNames(propertyNames)
{
if(propertyNames&&typeof propertyNames.length==="number"){var max=Math.min(propertyNames.length,1000);for(var i=0;i<max;++i)
propertyNames[i]=true;}
receivedPropertyNames.call(this,propertyNames);}
function receivedPropertyNames(propertyNames)
{propertyNames=propertyNames||{};updateLastPropertyNames.call(this,propertyNames);WebInspector.runtimeManager.activeExecutionContext.target.RuntimeAgent.releaseObjectGroup("completion");if(!base){var commandLineAPI=["$","$$","$x","dir","dirxml","keys","values","profile","profileEnd","monitorEvents","unmonitorEvents","inspect","copy","clear","getEventListeners","$0","$_"];if(WebInspector.debuggerManager.paused){let targetData=WebInspector.debuggerManager.dataForTarget(WebInspector.runtimeManager.activeExecutionContext.target);if(targetData.pauseReason===WebInspector.DebuggerManager.PauseReason.Exception)
commandLineAPI.push("$exception");}
for(var i=0;i<commandLineAPI.length;++i)
propertyNames[commandLineAPI[i]]=true;for(var i=1;i<=WebInspector.ConsoleCommandResultMessage.maximumSavedResultIndex;++i)
propertyNames["$"+i]=true;}
propertyNames=Object.keys(propertyNames);var implicitSuffix="";if(bracketNotation){var quoteUsed=prefix[0]==="'"?"'":"\"";if(suffix!=="]"&&suffix!==quoteUsed)
implicitSuffix="]";}
var completions=defaultCompletions;var knownCompletions=completions.keySet();for(var i=0;i<propertyNames.length;++i){var property=propertyNames[i];if(dotNotation&&!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(property))
continue;if(bracketNotation){if(parseInt(property)!=property)
property=quoteUsed+property.escapeCharacters(quoteUsed+"\\")+(suffix!==quoteUsed?quoteUsed:"");}
if(!property.startsWith(prefix)||property in knownCompletions)
continue;completions.push(property);knownCompletions[property]=true;}
function compare(a,b)
{let numericCompareResult=a-b;if(!isNaN(numericCompareResult))
return numericCompareResult;let aRareProperty=a.startsWith("__")&&a.endsWith("__");let bRareProperty=b.startsWith("__")&&b.endsWith("__");if(aRareProperty&&!bRareProperty)
return 1;if(!aRareProperty&&bRareProperty)
return-1;return a.extendedLocaleCompare(b);}
completions.sort(compare);completionController.updateCompletions(completions,implicitSuffix);}}
_clearLastProperties()
{if(this._clearLastPropertiesTimeout){clearTimeout(this._clearLastPropertiesTimeout);delete this._clearLastPropertiesTimeout;}
this._lastPropertyNames=null;}};WebInspector.LayerTreeManager=class LayerTreeManager extends WebInspector.Object
{constructor()
{super();this._supported=!!window.LayerTreeAgent;if(this._supported)
LayerTreeAgent.enable();}
get supported()
{return this._supported;}
layerTreeMutations(previousLayers,newLayers)
{if(isEmptyObject(previousLayers)){return{preserved:[],additions:newLayers,removals:[]};}
function nodeIdForLayer(layer)
{return layer.isGeneratedContent?layer.pseudoElementId:layer.nodeId;}
var layerIdsInPreviousLayers=[];var nodeIdsInPreviousLayers=[];var nodeIdsForReflectionsInPreviousLayers=[];previousLayers.forEach(function(layer){layerIdsInPreviousLayers.push(layer.layerId);var nodeId=nodeIdForLayer(layer);if(!nodeId)
return;if(layer.isReflection)
nodeIdsForReflectionsInPreviousLayers.push(nodeId);else
nodeIdsInPreviousLayers.push(nodeId);});var preserved=[];var additions=[];var layerIdsInNewLayers=[];var nodeIdsInNewLayers=[];var nodeIdsForReflectionsInNewLayers=[];newLayers.forEach(function(layer){layerIdsInNewLayers.push(layer.layerId);var existed=layerIdsInPreviousLayers.includes(layer.layerId);var nodeId=nodeIdForLayer(layer);if(!nodeId)
return;if(layer.isReflection){nodeIdsForReflectionsInNewLayers.push(nodeId);existed=existed||nodeIdsForReflectionsInPreviousLayers.includes(nodeId);}else{nodeIdsInNewLayers.push(nodeId);existed=existed||nodeIdsInPreviousLayers.includes(nodeId);}
if(existed)
preserved.push(layer);else
additions.push(layer);});var removals=previousLayers.filter(function(layer){var nodeId=nodeIdForLayer(layer);if(layer.isReflection)
return!nodeIdsForReflectionsInNewLayers.includes(nodeId);else
return!nodeIdsInNewLayers.includes(nodeId)&&!layerIdsInNewLayers.includes(layer.layerId);});return{preserved,additions,removals};}
layersForNode(node,callback)
{LayerTreeAgent.layersForNode(node.id,function(error,layers){if(error||isEmptyObject(layers)){callback(null,[]);return;}
var firstLayer=layers[0];var layerForNode=firstLayer.nodeId===node.id&&!firstLayer.isGeneratedContent?layers.shift():null;callback(layerForNode,layers);});}
reasonsForCompositingLayer(layer,callback)
{LayerTreeAgent.reasonsForCompositingLayer(layer.layerId,function(error,reasons){callback(error?0:reasons);});}
layerTreeDidChange()
{this.dispatchEventToListeners(WebInspector.LayerTreeManager.Event.LayerTreeDidChange);}};WebInspector.LayerTreeManager.Event={LayerTreeDidChange:"layer-tree-did-change"};WebInspector.LogManager=class LogManager extends WebInspector.Object
{constructor()
{super();this._clearMessagesRequested=false;this._isNewPageOrReload=false;WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);}
messageWasAdded(target,source,level,text,type,url,line,column,repeatCount,parameters,stackTrace,requestId)
{if(parameters)
parameters=parameters.map((x)=>WebInspector.RemoteObject.fromPayload(x,target));let message=new WebInspector.ConsoleMessage(target,source,level,text,type,url,line,column,repeatCount,parameters,stackTrace,null);this.dispatchEventToListeners(WebInspector.LogManager.Event.MessageAdded,{message});if(message.level==="warning"||message.level==="error")
WebInspector.issueManager.issueWasAdded(message);}
messagesCleared()
{WebInspector.ConsoleCommandResultMessage.clearMaximumSavedResultIndex();if(this._clearMessagesRequested){this._clearMessagesRequested=false;this.dispatchEventToListeners(WebInspector.LogManager.Event.Cleared);}else{setTimeout(this._delayedMessagesCleared.bind(this),0);}}
_delayedMessagesCleared()
{if(this._isNewPageOrReload){this._isNewPageOrReload=false;if(!WebInspector.settings.clearLogOnNavigate.value)
return;}
this.dispatchEventToListeners(WebInspector.LogManager.Event.Cleared);}
messageRepeatCountUpdated(count)
{this.dispatchEventToListeners(WebInspector.LogManager.Event.PreviousMessageRepeatCountUpdated,{count});}
requestClearMessages()
{this._clearMessagesRequested=true;for(let target of WebInspector.targets)
target.ConsoleAgent.clearMessages();}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;this._isNewPageOrReload=true;let timestamp=Date.now();let wasReloaded=event.data.oldMainResource&&event.data.oldMainResource.url===event.target.mainResource.url;this.dispatchEventToListeners(WebInspector.LogManager.Event.SessionStarted,{timestamp,wasReloaded});WebInspector.ConsoleCommandResultMessage.clearMaximumSavedResultIndex();}};WebInspector.LogManager.Event={SessionStarted:"log-manager-session-was-started",Cleared:"log-manager-cleared",MessageAdded:"log-manager-message-added",PreviousMessageRepeatCountUpdated:"log-manager-previous-message-repeat-count-updated"};WebInspector.MemoryManager=class MemoryManager extends WebInspector.Object
{constructor()
{super();if(window.MemoryAgent)
MemoryAgent.enable();}
memoryPressure(timestamp,protocolSeverity)
{let memoryPressureEvent=WebInspector.MemoryPressureEvent.fromPayload(timestamp,protocolSeverity);this.dispatchEventToListeners(WebInspector.MemoryManager.Event.MemoryPressure,{memoryPressureEvent});}};WebInspector.MemoryManager.Event={MemoryPressure:"memory-manager-memory-pressure",};WebInspector.ProbeManager=class ProbeManager extends WebInspector.Object
{constructor()
{super();this._knownProbeIdentifiersForBreakpoint=new Map;this._probesByIdentifier=new Map;this._probeSetsByBreakpoint=new Map;WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.BreakpointAdded,this._breakpointAdded,this);WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.BreakpointRemoved,this._breakpointRemoved,this);WebInspector.Breakpoint.addEventListener(WebInspector.Breakpoint.Event.ActionsDidChange,this._breakpointActionsChanged,this);
}
get probeSets()
{return[...this._probeSetsByBreakpoint.values()];}
probeForIdentifier(identifier)
{return this._probesByIdentifier.get(identifier);}
didSampleProbe(target,sample)
{let probe=this._probesByIdentifier.get(sample.probeId);let elapsedTime=WebInspector.timelineManager.computeElapsedTime(sample.timestamp);let object=WebInspector.RemoteObject.fromPayload(sample.payload,target);probe.addSample(new WebInspector.ProbeSample(sample.sampleId,sample.batchId,elapsedTime,object));}
_breakpointAdded(breakpointOrEvent)
{var breakpoint;if(breakpointOrEvent instanceof WebInspector.Breakpoint)
breakpoint=breakpointOrEvent;else
breakpoint=breakpointOrEvent.data.breakpoint;if(this._knownProbeIdentifiersForBreakpoint.has(breakpoint))
return;this._knownProbeIdentifiersForBreakpoint.set(breakpoint,new Set);this._breakpointActionsChanged(breakpoint);}
_breakpointRemoved(event)
{var breakpoint=event.data.breakpoint;this._breakpointActionsChanged(breakpoint);this._knownProbeIdentifiersForBreakpoint.delete(breakpoint);}
_breakpointActionsChanged(breakpointOrEvent)
{var breakpoint;if(breakpointOrEvent instanceof WebInspector.Breakpoint)
breakpoint=breakpointOrEvent;else
breakpoint=breakpointOrEvent.target;if(!this._knownProbeIdentifiersForBreakpoint.has(breakpoint)){this._breakpointAdded(breakpoint);return;}
var knownProbeIdentifiers=this._knownProbeIdentifiersForBreakpoint.get(breakpoint);var seenProbeIdentifiers=new Set;breakpoint.probeActions.forEach(function(probeAction){var probeIdentifier=probeAction.id;seenProbeIdentifiers.add(probeIdentifier);if(!knownProbeIdentifiers.has(probeIdentifier)){knownProbeIdentifiers.add(probeIdentifier);var probeSet=this._probeSetForBreakpoint(breakpoint);var newProbe=new WebInspector.Probe(probeIdentifier,breakpoint,probeAction.data);this._probesByIdentifier.set(probeIdentifier,newProbe);probeSet.addProbe(newProbe);return;}
var probe=this._probesByIdentifier.get(probeIdentifier);probe.expression=probeAction.data;},this);knownProbeIdentifiers.forEach(function(probeIdentifier){if(seenProbeIdentifiers.has(probeIdentifier))
return;var probeSet=this._probeSetForBreakpoint(breakpoint);var probe=this._probesByIdentifier.get(probeIdentifier);this._probesByIdentifier.delete(probeIdentifier);knownProbeIdentifiers.delete(probeIdentifier);probeSet.removeProbe(probe);if(!probeSet.probes.length){this._probeSetsByBreakpoint.delete(probeSet.breakpoint);probeSet.willRemove();this.dispatchEventToListeners(WebInspector.ProbeManager.Event.ProbeSetRemoved,{probeSet});}},this);}
_probeSetForBreakpoint(breakpoint)
{if(this._probeSetsByBreakpoint.has(breakpoint))
return this._probeSetsByBreakpoint.get(breakpoint);var newProbeSet=new WebInspector.ProbeSet(breakpoint);this._probeSetsByBreakpoint.set(breakpoint,newProbeSet);this.dispatchEventToListeners(WebInspector.ProbeManager.Event.ProbeSetAdded,{probeSet:newProbeSet});return newProbeSet;}};WebInspector.ProbeManager.Event={ProbeSetAdded:"probe-manager-probe-set-added",ProbeSetRemoved:"probe-manager-probe-set-removed",};WebInspector.ResourceQueryController=class ResourceQueryController extends WebInspector.Object
{constructor()
{super();this._resourceDataMap=new Map;}
addResource(resource)
{this._resourceDataMap.set(resource,{});}
removeResource(resource)
{this._resourceDataMap.delete(resource);}
reset()
{this._resourceDataMap.clear();}
executeQuery(query)
{if(!query||!this._resourceDataMap.size)
return[];query=query.removeWhitespace().toLowerCase();let cookie=null;if(query.includes(":")){let[newQuery,lineNumber,columnNumber]=query.split(":");query=newQuery;lineNumber=lineNumber?parseInt(lineNumber,10)-1:0;columnNumber=columnNumber?parseInt(columnNumber,10)-1:0;cookie={lineNumber,columnNumber};}
let results=[];for(let[resource,cachedData]of this._resourceDataMap){if(!cachedData.searchString){let displayName=resource.displayName;cachedData.searchString=displayName.toLowerCase();cachedData.specialCharacterIndices=this._findSpecialCharacterIndices(displayName);}
let matches=this._findQueryMatches(query,cachedData.searchString,cachedData.specialCharacterIndices);if(matches.length)
results.push(new WebInspector.ResourceQueryResult(resource,matches,cookie));}
return results.sort((a,b)=>{if(a.rank===b.rank)
return a.resource.displayName.extendedLocaleCompare(b.resource.displayName);return b.rank-a.rank;});}
_findQueryMatches(query,searchString,specialCharacterIndices)
{let matches=[];let queryIndex=0;let searchIndex=0;let specialIndex=0;let deadBranches=new Array(query.length).fill(Infinity);let type=WebInspector.ResourceQueryMatch.Type.Special;function pushMatch(index)
{matches.push(new WebInspector.ResourceQueryMatch(type,index,queryIndex));searchIndex=index+1;queryIndex++;}
function matchNextSpecialCharacter()
{if(specialIndex>=specialCharacterIndices.length)
return false;let originalSpecialIndex=specialIndex;while(specialIndex<specialCharacterIndices.length){
let index=specialCharacterIndices[specialIndex++];if(index<searchIndex)
continue;if(query[queryIndex]===searchString[index]){pushMatch(index);return true;}}
specialIndex=originalSpecialIndex;return false;}
function backtrack()
{while(matches.length){queryIndex--;let lastMatch=matches.pop();if(lastMatch.type!==WebInspector.ResourceQueryMatch.Type.Special)
continue;deadBranches[lastMatch.queryIndex]=lastMatch.index;searchIndex=matches.lastValue?matches.lastValue.index+1:0;return true;}
return false;}
while(queryIndex<query.length&&searchIndex<searchString.length){if(type===WebInspector.ResourceQueryMatch.Type.Special&&!matchNextSpecialCharacter())
type=WebInspector.ResourceQueryMatch.Type.Normal;if(type===WebInspector.ResourceQueryMatch.Type.Normal){let index=searchString.indexOf(query[queryIndex],searchIndex);if(index>=0&&index<deadBranches[queryIndex]){pushMatch(index);type=WebInspector.ResourceQueryMatch.Type.Special;}else if(!backtrack())
return[];}}
if(queryIndex<query.length)
return[];return matches;}
_findSpecialCharacterIndices(string)
{if(!string.length)
return[];const filenameSeparators="_.-";let indices=[0];for(let i=1;i<string.length;++i){let character=string[i];let isSpecial=false;if(filenameSeparators.includes(character))
isSpecial=true;else{let previousCharacter=string[i-1];let previousCharacterIsSeparator=filenameSeparators.includes(previousCharacter);if(previousCharacterIsSeparator)
isSpecial=true;else if(character.isUpperCase()&&previousCharacter.isLowerCase())
isSpecial=true;}
if(isSpecial)
indices.push(i);}
return indices;}};WebInspector.RuntimeManager=class RuntimeManager extends WebInspector.Object
{constructor()
{super();RuntimeAgent.enable();this._activeExecutionContext=WebInspector.mainTarget.executionContext;WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ExecutionContextsCleared,this._frameExecutionContextsCleared,this);}
get activeExecutionContext()
{return this._activeExecutionContext;}
set activeExecutionContext(executionContext)
{if(this._activeExecutionContext===executionContext)
return;this._activeExecutionContext=executionContext;this.dispatchEventToListeners(WebInspector.RuntimeManager.Event.ActiveExecutionContextChanged);}
evaluateInInspectedWindow(expression,options,callback)
{let{objectGroup,includeCommandLineAPI,doNotPauseOnExceptionsAndMuteConsole,returnByValue,generatePreview,saveResult,sourceURLAppender}=options;includeCommandLineAPI=includeCommandLineAPI||false;doNotPauseOnExceptionsAndMuteConsole=doNotPauseOnExceptionsAndMuteConsole||false;returnByValue=returnByValue||false;generatePreview=generatePreview||false;saveResult=saveResult||false;sourceURLAppender=sourceURLAppender||appendWebInspectorSourceURL;if(!expression){expression="this";}else if(/^\s*\{/.test(expression)&&/\}\s*$/.test(expression)){expression="("+expression+")";}else if(/\bawait\b/.test(expression)){expression=this._tryApplyAwaitConvenience(expression);}
expression=sourceURLAppender(expression);let target=this._activeExecutionContext.target;let executionContextId=this._activeExecutionContext.id;if(WebInspector.debuggerManager.activeCallFrame){target=WebInspector.debuggerManager.activeCallFrame.target;executionContextId=target.executionContext.id;}
function evalCallback(error,result,wasThrown,savedResultIndex)
{this.dispatchEventToListeners(WebInspector.RuntimeManager.Event.DidEvaluate,{objectGroup});if(error){console.error(error);callback(null,false);return;}
if(returnByValue)
callback(null,wasThrown,wasThrown?null:result,savedResultIndex);else
callback(WebInspector.RemoteObject.fromPayload(result,target),wasThrown,savedResultIndex);}
if(WebInspector.debuggerManager.activeCallFrame){target.DebuggerAgent.evaluateOnCallFrame.invoke({callFrameId:WebInspector.debuggerManager.activeCallFrame.id,expression,objectGroup,includeCommandLineAPI,doNotPauseOnExceptionsAndMuteConsole,returnByValue,generatePreview,saveResult},evalCallback.bind(this),target.DebuggerAgent);return;}
target.RuntimeAgent.evaluate.invoke({expression,objectGroup,includeCommandLineAPI,doNotPauseOnExceptionsAndMuteConsole,contextId:executionContextId,returnByValue,generatePreview,saveResult},evalCallback.bind(this),target.RuntimeAgent);}
saveResult(remoteObject,callback)
{if(!RuntimeAgent.saveResult){callback(undefined);return;}
function mycallback(error,savedResultIndex)
{callback(savedResultIndex);}
let target=this._activeExecutionContext.target;let executionContextId=this._activeExecutionContext.id;if(remoteObject.objectId)
target.RuntimeAgent.saveResult(remoteObject.asCallArgument(),mycallback);else
target.RuntimeAgent.saveResult(remoteObject.asCallArgument(),executionContextId,mycallback);}
getPropertiesForRemoteObject(objectId,callback)
{this._activeExecutionContext.target.RuntimeAgent.getProperties(objectId,function(error,result){if(error){callback(error);return;}
let properties=new Map;for(let property of result)
properties.set(property.name,property);callback(null,properties);});}
_frameExecutionContextsCleared(event)
{let contexts=event.data.contexts||[];let currentContextWasDestroyed=contexts.some((context)=>context.id===this._activeExecutionContext.id);if(currentContextWasDestroyed)
this.activeExecutionContext=WebInspector.mainTarget.executionContext;}
_tryApplyAwaitConvenience(originalExpression)
{let esprimaSyntaxTree;try{esprima.parse(originalExpression);return originalExpression;}catch(error){}
try{esprimaSyntaxTree=esprima.parse("(async function(){"+originalExpression+"})");}catch(error){return originalExpression;}
let asyncFunctionBlock=esprimaSyntaxTree.body[0].expression.body;if(asyncFunctionBlock.body.length!==1)
return originalExpression;let variableName;let anonymous=false;let declarationKind="var";let awaitPortion;let statement=asyncFunctionBlock.body[0];if(statement.type==="ExpressionStatement"&&statement.expression.type==="AwaitExpression"){anonymous=true;}else if(statement.type==="ExpressionStatement"&&statement.expression.type==="AssignmentExpression"&&statement.expression.right.type==="AwaitExpression"&&statement.expression.left.type==="Identifier"){variableName=statement.expression.left.name;awaitPortion=originalExpression.substring(originalExpression.indexOf("await"));}else if(statement.type==="VariableDeclaration"&&statement.declarations.length===1&&statement.declarations[0].init.type==="AwaitExpression"&&statement.declarations[0].id.type==="Identifier"){variableName=statement.declarations[0].id.name;declarationKind=statement.kind;awaitPortion=originalExpression.substring(originalExpression.indexOf("await"));}else{return originalExpression;}
if(anonymous){return`
(async function() {
try {
let result = ${originalExpression};
console.info("%o", result);
} catch (e) {
console.error(e);
}
})();
undefined`;}
return`${declarationKind} ${variableName};
(async function() {
try {
${variableName} = ${awaitPortion};
console.info("%o", ${variableName});
} catch (e) {
console.error(e);
}
})();
undefined;`;}};WebInspector.RuntimeManager.ConsoleObjectGroup="console";WebInspector.RuntimeManager.TopLevelExecutionContextIdentifier=undefined;WebInspector.RuntimeManager.Event={DidEvaluate:Symbol("runtime-manager-did-evaluate"),DefaultExecutionContextChanged:Symbol("runtime-manager-default-execution-context-changed"),ActiveExecutionContextChanged:Symbol("runtime-manager-active-execution-context-changed"),};WebInspector.SourceMapManager=class SourceMapManager extends WebInspector.Object
{constructor()
{super();this._sourceMapURLMap={};this._downloadingSourceMaps={};WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);}
sourceMapForURL(sourceMapURL)
{return this._sourceMapURLMap[sourceMapURL];}
downloadSourceMap(sourceMapURL,baseURL,originalSourceCode)
{
if(WebInspector.frameResourceManager.mainFrame)
baseURL=absoluteURL(baseURL,WebInspector.frameResourceManager.mainFrame.url);if(sourceMapURL.startsWith("data:")){this._loadAndParseSourceMap(sourceMapURL,baseURL,originalSourceCode);return;}
sourceMapURL=absoluteURL(sourceMapURL,baseURL);if(!sourceMapURL)
return;if(!originalSourceCode.url)
return; if(sourceMapURL in this._sourceMapURLMap)
return;if(sourceMapURL in this._downloadingSourceMaps)
return;function loadAndParseSourceMap()
{this._loadAndParseSourceMap(sourceMapURL,baseURL,originalSourceCode);}
if(!WebInspector.frameResourceManager.mainFrame){setTimeout(loadAndParseSourceMap.bind(this),0);return;}
loadAndParseSourceMap.call(this);}
_loadAndParseSourceMap(sourceMapURL,baseURL,originalSourceCode)
{this._downloadingSourceMaps[sourceMapURL]=true;function sourceMapLoaded(error,content,mimeType,statusCode)
{if(error||statusCode>=400){this._loadAndParseFailed(sourceMapURL);return;}
if(content.slice(0,3)===")]}"){var firstNewlineIndex=content.indexOf("\n");if(firstNewlineIndex===-1){this._loadAndParseFailed(sourceMapURL);return;}
content=content.substring(firstNewlineIndex);}
try{var payload=JSON.parse(content);var baseURL=sourceMapURL.startsWith("data:")?originalSourceCode.url:sourceMapURL;var sourceMap=new WebInspector.SourceMap(baseURL,payload,originalSourceCode);this._loadAndParseSucceeded(sourceMapURL,sourceMap);}catch(e){this._loadAndParseFailed(sourceMapURL);}}
if(sourceMapURL.startsWith("data:")){let{mimeType,base64,data}=parseDataURL(sourceMapURL);let content=base64?atob(data):data;sourceMapLoaded.call(this,null,content,mimeType,0);return;}
if(!window.NetworkAgent||!NetworkAgent.loadResource){this._loadAndParseFailed(sourceMapURL);return;}
var frameIdentifier=null;if(originalSourceCode instanceof WebInspector.Resource&&originalSourceCode.parentFrame)
frameIdentifier=originalSourceCode.parentFrame.id;if(!frameIdentifier)
frameIdentifier=WebInspector.frameResourceManager.mainFrame.id;NetworkAgent.loadResource(frameIdentifier,sourceMapURL,sourceMapLoaded.bind(this));}
_loadAndParseFailed(sourceMapURL)
{delete this._downloadingSourceMaps[sourceMapURL];}
_loadAndParseSucceeded(sourceMapURL,sourceMap)
{if(!(sourceMapURL in this._downloadingSourceMaps))
return;delete this._downloadingSourceMaps[sourceMapURL];this._sourceMapURLMap[sourceMapURL]=sourceMap;var sources=sourceMap.sources();for(var i=0;i<sources.length;++i){var sourceMapResource=new WebInspector.SourceMapResource(sources[i],sourceMap);sourceMap.addResource(sourceMapResource);}
sourceMap.originalSourceCode.addSourceMap(sourceMap);if(!(sourceMap.originalSourceCode instanceof WebInspector.Resource)){var resource=sourceMap.originalSourceCode.resource;if(resource)
resource.addSourceMap(sourceMap);}}
_mainResourceDidChange(event)
{if(!event.target.isMainFrame())
return;this._sourceMapURLMap={};this._downloadingSourceMaps={};}};WebInspector.StorageManager=class StorageManager extends WebInspector.Object
{constructor()
{super();if(window.DOMStorageAgent)
DOMStorageAgent.enable();if(window.DatabaseAgent)
DatabaseAgent.enable();if(window.IndexedDBAgent)
IndexedDBAgent.enable();WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.SecurityOriginDidChange,this._securityOriginDidChange,this);this.initialize();}
initialize()
{this._domStorageObjects=[];this._databaseObjects=[];this._indexedDatabases=[];this._cookieStorageObjects={};}
get domStorageObjects()
{return this._domStorageObjects;}
get databases()
{return this._databaseObjects;}
get indexedDatabases()
{return this._indexedDatabases;}
get cookieStorageObjects()
{var cookieStorageObjects=[];for(var host in this._cookieStorageObjects)
cookieStorageObjects.push(this._cookieStorageObjects[host]);return cookieStorageObjects;}
domStorageWasAdded(id,host,isLocalStorage)
{var domStorage=new WebInspector.DOMStorageObject(id,host,isLocalStorage);this._domStorageObjects.push(domStorage);this.dispatchEventToListeners(WebInspector.StorageManager.Event.DOMStorageObjectWasAdded,{domStorage});}
databaseWasAdded(id,host,name,version)
{var database=new WebInspector.DatabaseObject(id,host,name,version);this._databaseObjects.push(database);this.dispatchEventToListeners(WebInspector.StorageManager.Event.DatabaseWasAdded,{database});}
itemsCleared(storageId)
{let domStorage=this._domStorageForIdentifier(storageId);if(domStorage)
domStorage.itemsCleared(storageId);}
itemRemoved(storageId,key)
{let domStorage=this._domStorageForIdentifier(storageId);if(domStorage)
domStorage.itemRemoved(key);}
itemAdded(storageId,key,value)
{let domStorage=this._domStorageForIdentifier(storageId);if(domStorage)
domStorage.itemAdded(key,value);}
itemUpdated(storageId,key,oldValue,value)
{let domStorage=this._domStorageForIdentifier(storageId);if(domStorage)
domStorage.itemUpdated(key,oldValue,value);}
inspectDatabase(id)
{var database=this._databaseForIdentifier(id);if(!database)
return;this.dispatchEventToListeners(WebInspector.StorageManager.Event.DatabaseWasInspected,{database});}
inspectDOMStorage(id)
{var domStorage=this._domStorageForIdentifier(id);if(!domStorage)
return;this.dispatchEventToListeners(WebInspector.StorageManager.Event.DOMStorageObjectWasInspected,{domStorage});}
requestIndexedDatabaseData(objectStore,objectStoreIndex,startEntryIndex,maximumEntryCount,callback)
{function processData(error,entryPayloads,moreAvailable)
{if(error){callback(null,false);return;}
var entries=[];for(var entryPayload of entryPayloads){var entry={};entry.primaryKey=WebInspector.RemoteObject.fromPayload(entryPayload.primaryKey);entry.key=WebInspector.RemoteObject.fromPayload(entryPayload.key);entry.value=WebInspector.RemoteObject.fromPayload(entryPayload.value);entries.push(entry);}
callback(entries,moreAvailable);}
var requestArguments={securityOrigin:objectStore.parentDatabase.securityOrigin,databaseName:objectStore.parentDatabase.name,objectStoreName:objectStore.name,indexName:objectStoreIndex&&objectStoreIndex.name||"",skipCount:startEntryIndex||0,pageSize:maximumEntryCount||100};IndexedDBAgent.requestData.invoke(requestArguments,processData);}
clearObjectStore(objectStore)
{let securityOrigin=objectStore.parentDatabase.securityOrigin;let databaseName=objectStore.parentDatabase.name;let objectStoreName=objectStore.name;IndexedDBAgent.clearObjectStore(securityOrigin,databaseName,objectStoreName);}
_domStorageForIdentifier(id)
{for(var storageObject of this._domStorageObjects){if(Object.shallowEqual(storageObject.id,id))
return storageObject;}
return null;}
_mainResourceDidChange(event)
{if(event.target.isMainFrame()){this.initialize();this.dispatchEventToListeners(WebInspector.StorageManager.Event.Cleared);this._addDOMStorageIfNeeded(event.target);this._addIndexedDBDatabasesIfNeeded(event.target);}
var host=parseURL(event.target.url).host;if(!host)
return;if(this._cookieStorageObjects[host])
return;this._cookieStorageObjects[host]=new WebInspector.CookieStorageObject(host);this.dispatchEventToListeners(WebInspector.StorageManager.Event.CookieStorageObjectWasAdded,{cookieStorage:this._cookieStorageObjects[host]});}
_addDOMStorageIfNeeded(frame)
{if(!window.DOMStorageAgent)
return;if(!frame.securityOrigin||frame.securityOrigin==="://")
return;var localStorageIdentifier={securityOrigin:frame.securityOrigin,isLocalStorage:true};if(!this._domStorageForIdentifier(localStorageIdentifier))
this.domStorageWasAdded(localStorageIdentifier,frame.mainResource.urlComponents.host,true);var sessionStorageIdentifier={securityOrigin:frame.securityOrigin,isLocalStorage:false};if(!this._domStorageForIdentifier(sessionStorageIdentifier))
this.domStorageWasAdded(sessionStorageIdentifier,frame.mainResource.urlComponents.host,false);}
_addIndexedDBDatabasesIfNeeded(frame)
{if(!window.IndexedDBAgent)
return;var securityOrigin=frame.securityOrigin;if(!securityOrigin||securityOrigin==="://")
return;function processDatabaseNames(error,names)
{if(error||!names)
return;for(var name of names)
IndexedDBAgent.requestDatabase(securityOrigin,name,processDatabase.bind(this));}
function processDatabase(error,databasePayload)
{if(error||!databasePayload)
return;var objectStores=databasePayload.objectStores.map(processObjectStore);var indexedDatabase=new WebInspector.IndexedDatabase(databasePayload.name,securityOrigin,databasePayload.version,objectStores);this._indexedDatabases.push(indexedDatabase);this.dispatchEventToListeners(WebInspector.StorageManager.Event.IndexedDatabaseWasAdded,{indexedDatabase});}
function processKeyPath(keyPathPayload)
{switch(keyPathPayload.type){case IndexedDBAgent.KeyPathType.Null:return null;case IndexedDBAgent.KeyPathType.String:return keyPathPayload.string;case IndexedDBAgent.KeyPathType.Array:return keyPathPayload.array;default:console.error("Unknown KeyPath type:",keyPathPayload.type);return null;}}
function processObjectStore(objectStorePayload)
{var keyPath=processKeyPath(objectStorePayload.keyPath);var indexes=objectStorePayload.indexes.map(processObjectStoreIndex);return new WebInspector.IndexedDatabaseObjectStore(objectStorePayload.name,keyPath,objectStorePayload.autoIncrement,indexes);}
function processObjectStoreIndex(objectStoreIndexPayload)
{var keyPath=processKeyPath(objectStoreIndexPayload.keyPath);return new WebInspector.IndexedDatabaseObjectStoreIndex(objectStoreIndexPayload.name,keyPath,objectStoreIndexPayload.unique,objectStoreIndexPayload.multiEntry);}
IndexedDBAgent.requestDatabaseNames(securityOrigin,processDatabaseNames.bind(this));}
_securityOriginDidChange(event)
{this._addDOMStorageIfNeeded(event.target);this._addIndexedDBDatabasesIfNeeded(event.target);}
_databaseForIdentifier(id)
{for(var i=0;i<this._databaseObjects.length;++i){if(this._databaseObjects[i].id===id)
return this._databaseObjects[i];}
return null;}};WebInspector.StorageManager.Event={CookieStorageObjectWasAdded:"storage-manager-cookie-storage-object-was-added",DOMStorageObjectWasAdded:"storage-manager-dom-storage-object-was-added",DOMStorageObjectWasInspected:"storage-dom-object-was-inspected",DatabaseWasAdded:"storage-manager-database-was-added",DatabaseWasInspected:"storage-object-was-inspected",IndexedDatabaseWasAdded:"storage-manager-indexed-database-was-added",Cleared:"storage-manager-cleared"};WebInspector.TargetManager=class TargetManager extends WebInspector.Object
{constructor()
{super();this._targets=new Set([WebInspector.mainTarget]);}
get targets()
{return this._targets;}
targetForIdentifier(targetId)
{if(!targetId)
return null;for(let target of this._targets){if(target.identifier===targetId)
return target;}
return null;}
addTarget(target)
{this._targets.add(target);this.dispatchEventToListeners(WebInspector.TargetManager.Event.TargetAdded,{target});}
removeTarget(target)
{this._targets.delete(target);this.dispatchEventToListeners(WebInspector.TargetManager.Event.TargetRemoved,{target});}};WebInspector.TargetManager.Event={TargetAdded:Symbol("target-manager-target-added"),TargetRemoved:Symbol("target-manager-target-removed"),};WebInspector.TimelineManager=class TimelineManager extends WebInspector.Object
{constructor()
{super();WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ProvisionalLoadStarted,this._provisionalLoadStarted,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ResourceWasAdded,this._resourceWasAdded,this);WebInspector.Target.addEventListener(WebInspector.Target.Event.ResourceAdded,this._resourceWasAdded,this);WebInspector.heapManager.addEventListener(WebInspector.HeapManager.Event.GarbageCollected,this._garbageCollected,this);WebInspector.memoryManager.addEventListener(WebInspector.MemoryManager.Event.MemoryPressure,this._memoryPressure,this);this._enabledTimelineTypesSetting=new WebInspector.Setting("enabled-instrument-types",WebInspector.TimelineManager.defaultTimelineTypes());this._updateAutoCaptureInstruments();this._persistentNetworkTimeline=new WebInspector.NetworkTimeline;this._isCapturing=false;this._initiatedByBackendStart=false;this._initiatedByBackendStop=false;this._waitingForCapturingStartedEvent=false;this._isCapturingPageReload=false;this._autoCaptureOnPageLoad=false;this._mainResourceForAutoCapturing=null;this._shouldSetAutoCapturingMainResource=false;this._boundStopCapturing=this.stopCapturing.bind(this);this._webTimelineScriptRecordsExpectingScriptProfilerEvents=null;this._scriptProfilerRecords=null;this._stopCapturingTimeout=undefined;this._deadTimeTimeout=undefined;this._lastDeadTimeTickle=0;this.reset();}
static defaultTimelineTypes()
{if(WebInspector.debuggableType===WebInspector.DebuggableType.JavaScript){let defaultTypes=[WebInspector.TimelineRecord.Type.Script];if(WebInspector.HeapAllocationsInstrument.supported())
defaultTypes.push(WebInspector.TimelineRecord.Type.HeapAllocations);return defaultTypes;}
let defaultTypes=[WebInspector.TimelineRecord.Type.Network,WebInspector.TimelineRecord.Type.Layout,WebInspector.TimelineRecord.Type.Script,];if(WebInspector.FPSInstrument.supported())
defaultTypes.push(WebInspector.TimelineRecord.Type.RenderingFrame);return defaultTypes;}
static availableTimelineTypes()
{let types=WebInspector.TimelineManager.defaultTimelineTypes();if(WebInspector.debuggableType===WebInspector.DebuggableType.JavaScript)
return types;if(WebInspector.MemoryInstrument.supported())
types.push(WebInspector.TimelineRecord.Type.Memory);if(WebInspector.HeapAllocationsInstrument.supported())
types.push(WebInspector.TimelineRecord.Type.HeapAllocations);return types;}
reset()
{if(this._isCapturing)
this.stopCapturing();this._recordings=[];this._activeRecording=null;this._nextRecordingIdentifier=1;this._loadNewRecording();}
get activeRecording()
{return this._activeRecording;}
get persistentNetworkTimeline()
{return this._persistentNetworkTimeline;}
get recordings()
{return this._recordings.slice();}
get autoCaptureOnPageLoad()
{return this._autoCaptureOnPageLoad;}
set autoCaptureOnPageLoad(autoCapture)
{autoCapture=!!autoCapture;if(this._autoCaptureOnPageLoad===autoCapture)
return;this._autoCaptureOnPageLoad=autoCapture;if(window.TimelineAgent&&TimelineAgent.setAutoCaptureEnabled)
TimelineAgent.setAutoCaptureEnabled(this._autoCaptureOnPageLoad);}
get enabledTimelineTypes()
{let availableTimelineTypes=WebInspector.TimelineManager.availableTimelineTypes();return this._enabledTimelineTypesSetting.value.filter((type)=>availableTimelineTypes.includes(type));}
set enabledTimelineTypes(x)
{this._enabledTimelineTypesSetting.value=x||[];this._updateAutoCaptureInstruments();}
isCapturing()
{return this._isCapturing;}
isCapturingPageReload()
{return this._isCapturingPageReload;}
startCapturing(shouldCreateRecording)
{if(!this._activeRecording||shouldCreateRecording)
this._loadNewRecording();this._waitingForCapturingStartedEvent=true;this.dispatchEventToListeners(WebInspector.TimelineManager.Event.CapturingWillStart);this._activeRecording.start(this._initiatedByBackendStart);}
stopCapturing()
{this._activeRecording.stop(this._initiatedByBackendStop); this.capturingStopped();}
unloadRecording()
{if(!this._activeRecording)
return;if(this._isCapturing)
this.stopCapturing();this._activeRecording.unloaded();this._activeRecording=null;}
computeElapsedTime(timestamp)
{if(!this._activeRecording)
return 0;return this._activeRecording.computeElapsedTime(timestamp);}
scriptProfilerIsTracking()
{return this._scriptProfilerRecords!==null;}
capturingStarted(startTime)
{if(this._isCapturing)
return;this._waitingForCapturingStartedEvent=false;this._isCapturing=true;this._lastDeadTimeTickle=0;if(startTime)
this.activeRecording.initializeTimeBoundsIfNecessary(startTime);this._webTimelineScriptRecordsExpectingScriptProfilerEvents=[];this.dispatchEventToListeners(WebInspector.TimelineManager.Event.CapturingStarted,{startTime});}
capturingStopped(endTime)
{if(!this._isCapturing)
return;if(this._stopCapturingTimeout){clearTimeout(this._stopCapturingTimeout);this._stopCapturingTimeout=undefined;}
if(this._deadTimeTimeout){clearTimeout(this._deadTimeTimeout);this._deadTimeTimeout=undefined;}
this._isCapturing=false;this._isCapturingPageReload=false;this._shouldSetAutoCapturingMainResource=false;this._mainResourceForAutoCapturing=null;this._initiatedByBackendStart=false;this._initiatedByBackendStop=false;this.dispatchEventToListeners(WebInspector.TimelineManager.Event.CapturingStopped,{endTime});}
autoCaptureStarted()
{if(this._isCapturing)
this.stopCapturing();this._initiatedByBackendStart=true;
if(!this._waitingForCapturingStartedEvent){const createNewRecording=true;this.startCapturing(createNewRecording);}
this._shouldSetAutoCapturingMainResource=true;}
programmaticCaptureStarted()
{this._initiatedByBackendStart=true;this._activeRecording.addScriptInstrumentForProgrammaticCapture();const createNewRecording=false;this.startCapturing(createNewRecording);}
programmaticCaptureStopped()
{this._initiatedByBackendStop=true;
this._isCapturing=true;this.stopCapturing();}
eventRecorded(recordPayload)
{if(!this._isCapturing)
return;var records=[];
var stack=[{array:[recordPayload],parent:null,parentRecord:null,index:0}];while(stack.length){var entry=stack.lastValue;var recordPayloads=entry.array;if(entry.index<recordPayloads.length){var recordPayload=recordPayloads[entry.index];var record=this._processEvent(recordPayload,entry.parent);if(record){record.parent=entry.parentRecord;records.push(record);if(entry.parentRecord)
entry.parentRecord.children.push(record);}
if(recordPayload.children&&recordPayload.children.length)
stack.push({array:recordPayload.children,parent:recordPayload,parentRecord:record||entry.parentRecord,index:0});++entry.index;}else
stack.pop();}
for(var record of records){if(record.type===WebInspector.TimelineRecord.Type.RenderingFrame){if(!record.children.length)
continue;record.setupFrameIndex();}
this._addRecord(record);}}
pageDOMContentLoadedEventFired(timestamp)
{let computedTimestamp=this.activeRecording.computeElapsedTime(timestamp);WebInspector.frameResourceManager.mainFrame.markDOMContentReadyEvent(computedTimestamp);let eventMarker=new WebInspector.TimelineMarker(computedTimestamp,WebInspector.TimelineMarker.Type.DOMContentEvent);this._activeRecording.addEventMarker(eventMarker);}
pageLoadEventFired(timestamp)
{let computedTimestamp=this.activeRecording.computeElapsedTime(timestamp);WebInspector.frameResourceManager.mainFrame.markLoadEvent(computedTimestamp);let eventMarker=new WebInspector.TimelineMarker(computedTimestamp,WebInspector.TimelineMarker.Type.LoadEvent);this._activeRecording.addEventMarker(eventMarker);this._stopAutoRecordingSoon();}
memoryTrackingStart(timestamp)
{this.capturingStarted(timestamp);}
memoryTrackingUpdate(event)
{if(!this._isCapturing)
return;this._addRecord(new WebInspector.MemoryTimelineRecord(event.timestamp,event.categories));}
memoryTrackingComplete()
{}
heapTrackingStarted(timestamp,snapshot)
{this._addRecord(new WebInspector.HeapAllocationsTimelineRecord(timestamp,snapshot));this.capturingStarted(timestamp);}
heapTrackingCompleted(timestamp,snapshot)
{this._addRecord(new WebInspector.HeapAllocationsTimelineRecord(timestamp,snapshot));}
heapSnapshotAdded(timestamp,snapshot)
{this._addRecord(new WebInspector.HeapAllocationsTimelineRecord(timestamp,snapshot));}
_processRecord(recordPayload,parentRecordPayload)
{var startTime=this.activeRecording.computeElapsedTime(recordPayload.startTime);var endTime=this.activeRecording.computeElapsedTime(recordPayload.endTime);var callFrames=this._callFramesFromPayload(recordPayload.stackTrace);var significantCallFrame=null;if(callFrames){for(var i=0;i<callFrames.length;++i){if(callFrames[i].nativeCode)
continue;significantCallFrame=callFrames[i];break;}}
var sourceCodeLocation=significantCallFrame&&significantCallFrame.sourceCodeLocation;switch(recordPayload.type){case TimelineAgent.EventType.ScheduleStyleRecalculation:return new WebInspector.LayoutTimelineRecord(WebInspector.LayoutTimelineRecord.EventType.InvalidateStyles,startTime,startTime,callFrames,sourceCodeLocation);case TimelineAgent.EventType.RecalculateStyles:return new WebInspector.LayoutTimelineRecord(WebInspector.LayoutTimelineRecord.EventType.RecalculateStyles,startTime,endTime,callFrames,sourceCodeLocation);case TimelineAgent.EventType.InvalidateLayout:return new WebInspector.LayoutTimelineRecord(WebInspector.LayoutTimelineRecord.EventType.InvalidateLayout,startTime,startTime,callFrames,sourceCodeLocation);case TimelineAgent.EventType.Layout:var layoutRecordType=sourceCodeLocation?WebInspector.LayoutTimelineRecord.EventType.ForcedLayout:WebInspector.LayoutTimelineRecord.EventType.Layout;var quad=new WebInspector.Quad(recordPayload.data.root);return new WebInspector.LayoutTimelineRecord(layoutRecordType,startTime,endTime,callFrames,sourceCodeLocation,quad);case TimelineAgent.EventType.Paint:var quad=new WebInspector.Quad(recordPayload.data.clip);return new WebInspector.LayoutTimelineRecord(WebInspector.LayoutTimelineRecord.EventType.Paint,startTime,endTime,callFrames,sourceCodeLocation,quad);case TimelineAgent.EventType.Composite:return new WebInspector.LayoutTimelineRecord(WebInspector.LayoutTimelineRecord.EventType.Composite,startTime,endTime,callFrames,sourceCodeLocation);case TimelineAgent.EventType.RenderingFrame:if(!recordPayload.children||!recordPayload.children.length)
return null;return new WebInspector.RenderingFrameTimelineRecord(startTime,endTime);case TimelineAgent.EventType.EvaluateScript:if(!sourceCodeLocation){var mainFrame=WebInspector.frameResourceManager.mainFrame;var scriptResource=mainFrame.url===recordPayload.data.url?mainFrame.mainResource:mainFrame.resourceForURL(recordPayload.data.url,true);if(scriptResource){var lineNumber=recordPayload.data.lineNumber-1;sourceCodeLocation=scriptResource.createSourceCodeLocation(lineNumber,0);}}
var profileData=recordPayload.data.profile;var record;switch(parentRecordPayload&&parentRecordPayload.type){case TimelineAgent.EventType.TimerFire:record=new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.TimerFired,startTime,endTime,callFrames,sourceCodeLocation,parentRecordPayload.data.timerId,profileData);break;default:record=new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.ScriptEvaluated,startTime,endTime,callFrames,sourceCodeLocation,null,profileData);break;}
this._webTimelineScriptRecordsExpectingScriptProfilerEvents.push(record);return record;case TimelineAgent.EventType.ConsoleProfile:var profileData=recordPayload.data.profile;return new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.ConsoleProfileRecorded,startTime,endTime,callFrames,sourceCodeLocation,recordPayload.data.title,profileData);case TimelineAgent.EventType.TimerFire:case TimelineAgent.EventType.EventDispatch:case TimelineAgent.EventType.FireAnimationFrame:break;case TimelineAgent.EventType.FunctionCall:
if(!parentRecordPayload){console.warn("Unexpectedly received a FunctionCall timeline record without a parent record");break;}
if(!sourceCodeLocation){var mainFrame=WebInspector.frameResourceManager.mainFrame;var scriptResource=mainFrame.url===recordPayload.data.scriptName?mainFrame.mainResource:mainFrame.resourceForURL(recordPayload.data.scriptName,true);if(scriptResource){var lineNumber=recordPayload.data.scriptLine-1;sourceCodeLocation=scriptResource.createSourceCodeLocation(lineNumber,0);}}
var profileData=recordPayload.data.profile;var record;switch(parentRecordPayload.type){case TimelineAgent.EventType.TimerFire:record=new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.TimerFired,startTime,endTime,callFrames,sourceCodeLocation,parentRecordPayload.data.timerId,profileData);break;case TimelineAgent.EventType.EventDispatch:record=new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.EventDispatched,startTime,endTime,callFrames,sourceCodeLocation,parentRecordPayload.data.type,profileData);break;case TimelineAgent.EventType.FireAnimationFrame:record=new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.AnimationFrameFired,startTime,endTime,callFrames,sourceCodeLocation,parentRecordPayload.data.id,profileData);break;case TimelineAgent.EventType.FunctionCall:record=new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.ScriptEvaluated,startTime,endTime,callFrames,sourceCodeLocation,parentRecordPayload.data.id,profileData);break;case TimelineAgent.EventType.RenderingFrame:record=new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.ScriptEvaluated,startTime,endTime,callFrames,sourceCodeLocation,parentRecordPayload.data.id,profileData);break;default:break;}
if(record){this._webTimelineScriptRecordsExpectingScriptProfilerEvents.push(record);return record;}
break;case TimelineAgent.EventType.ProbeSample:sourceCodeLocation=WebInspector.probeManager.probeForIdentifier(recordPayload.data.probeId).breakpoint.sourceCodeLocation;return new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.ProbeSampleRecorded,startTime,startTime,callFrames,sourceCodeLocation,recordPayload.data.probeId);case TimelineAgent.EventType.TimerInstall:var timerDetails={timerId:recordPayload.data.timerId,timeout:recordPayload.data.timeout,repeating:!recordPayload.data.singleShot};return new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.TimerInstalled,startTime,startTime,callFrames,sourceCodeLocation,timerDetails);case TimelineAgent.EventType.TimerRemove:return new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.TimerRemoved,startTime,startTime,callFrames,sourceCodeLocation,recordPayload.data.timerId);case TimelineAgent.EventType.RequestAnimationFrame:return new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.AnimationFrameRequested,startTime,startTime,callFrames,sourceCodeLocation,recordPayload.data.id);case TimelineAgent.EventType.CancelAnimationFrame:return new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.AnimationFrameCanceled,startTime,startTime,callFrames,sourceCodeLocation,recordPayload.data.id);default:console.error("Missing handling of Timeline Event Type: "+recordPayload.type);}
return null;}
_processEvent(recordPayload,parentRecordPayload)
{switch(recordPayload.type){case TimelineAgent.EventType.TimeStamp:var timestamp=this.activeRecording.computeElapsedTime(recordPayload.startTime);var eventMarker=new WebInspector.TimelineMarker(timestamp,WebInspector.TimelineMarker.Type.TimeStamp,recordPayload.data.message);this._activeRecording.addEventMarker(eventMarker);break;case TimelineAgent.EventType.Time:case TimelineAgent.EventType.TimeEnd:
break;default:return this._processRecord(recordPayload,parentRecordPayload);}
return null;}
_loadNewRecording()
{if(this._activeRecording&&this._activeRecording.isEmpty())
return;let instruments=this.enabledTimelineTypes.map((type)=>WebInspector.Instrument.createForTimelineType(type));let identifier=this._nextRecordingIdentifier++;let newRecording=new WebInspector.TimelineRecording(identifier,WebInspector.UIString("Timeline Recording %d").format(identifier),instruments);this._recordings.push(newRecording);this.dispatchEventToListeners(WebInspector.TimelineManager.Event.RecordingCreated,{recording:newRecording});if(this._isCapturing)
this.stopCapturing();var oldRecording=this._activeRecording;if(oldRecording)
oldRecording.unloaded();this._activeRecording=newRecording;
if(this._mainResourceForAutoCapturing&&WebInspector.TimelineRecording.isLegacy){this._activeRecording.setLegacyBaseTimestamp(this._mainResourceForAutoCapturing.originalRequestWillBeSentTimestamp);this._mainResourceForAutoCapturing._requestSentTimestamp=0;}
this.dispatchEventToListeners(WebInspector.TimelineManager.Event.RecordingLoaded,{oldRecording});}
_callFramesFromPayload(payload)
{if(!payload)
return null;return payload.map((x)=>WebInspector.CallFrame.fromPayload(WebInspector.assumingMainTarget(),x));}
_addRecord(record)
{this._activeRecording.addRecord(record);if(WebInspector.frameResourceManager.mainFrame&&isNaN(WebInspector.frameResourceManager.mainFrame.loadEventTimestamp))
this._resetAutoRecordingDeadTimeTimeout();}
_attemptAutoCapturingForFrame(frame)
{if(!this._autoCaptureOnPageLoad)
return false;if(!frame.isMainFrame())
return false;if(!TimelineAgent.setAutoCaptureEnabled)
return this._legacyAttemptStartAutoCapturingForFrame(frame);if(!this._shouldSetAutoCapturingMainResource)
return false;let mainResource=frame.provisionalMainResource||frame.mainResource;if(mainResource===this._mainResourceForAutoCapturing)
return false;let oldMainResource=frame.mainResource||null;this._isCapturingPageReload=oldMainResource!==null&&oldMainResource.url===mainResource.url;this._mainResourceForAutoCapturing=mainResource;this._addRecord(new WebInspector.ResourceTimelineRecord(mainResource));this._resetAutoRecordingMaxTimeTimeout();this._shouldSetAutoCapturingMainResource=false;return true;}
_legacyAttemptStartAutoCapturingForFrame(frame)
{if(this._isCapturing&&!this._mainResourceForAutoCapturing)
return false;let mainResource=frame.provisionalMainResource||frame.mainResource;if(mainResource===this._mainResourceForAutoCapturing)
return false;let oldMainResource=frame.mainResource||null;this._isCapturingPageReload=oldMainResource!==null&&oldMainResource.url===mainResource.url;if(this._isCapturing)
this.stopCapturing();this._mainResourceForAutoCapturing=mainResource;this._loadNewRecording();this.startCapturing();this._addRecord(new WebInspector.ResourceTimelineRecord(mainResource));this._resetAutoRecordingMaxTimeTimeout();return true;}
_stopAutoRecordingSoon()
{if(!this._isCapturing||!this._mainResourceForAutoCapturing)
return;if(this._stopCapturingTimeout)
clearTimeout(this._stopCapturingTimeout);this._stopCapturingTimeout=setTimeout(this._boundStopCapturing,WebInspector.TimelineManager.MaximumAutoRecordDurationAfterLoadEvent);}
_resetAutoRecordingMaxTimeTimeout()
{if(this._stopCapturingTimeout)
clearTimeout(this._stopCapturingTimeout);this._stopCapturingTimeout=setTimeout(this._boundStopCapturing,WebInspector.TimelineManager.MaximumAutoRecordDuration);}
_resetAutoRecordingDeadTimeTimeout()
{if(!this._isCapturing||!this._mainResourceForAutoCapturing)
return;let now=Date.now();if(now<=this._lastDeadTimeTickle)
return;this._lastDeadTimeTickle=now+10;if(this._deadTimeTimeout)
clearTimeout(this._deadTimeTimeout);this._deadTimeTimeout=setTimeout(this._boundStopCapturing,WebInspector.TimelineManager.DeadTimeRequiredToStopAutoRecordingEarly);}
_provisionalLoadStarted(event)
{this._attemptAutoCapturingForFrame(event.target);}
_mainResourceDidChange(event)
{let frame=event.target;if(frame.isMainFrame()&&WebInspector.settings.clearNetworkOnNavigate.value)
this._persistentNetworkTimeline.reset();let mainResource=frame.mainResource;let record=new WebInspector.ResourceTimelineRecord(mainResource);if(!isNaN(record.startTime))
this._persistentNetworkTimeline.addRecord(record);
if(!WebInspector.frameResourceManager.mainFrame)
return;if(this._attemptAutoCapturingForFrame(frame))
return;if(!this._isCapturing)
return;if(mainResource===this._mainResourceForAutoCapturing)
return;this._addRecord(record);}
_resourceWasAdded(event)
{var record=new WebInspector.ResourceTimelineRecord(event.data.resource);if(!isNaN(record.startTime))
this._persistentNetworkTimeline.addRecord(record);
if(!WebInspector.frameResourceManager.mainFrame)
return;if(!this._isCapturing)
return;this._addRecord(record);}
_garbageCollected(event)
{if(!this._isCapturing)
return;let collection=event.data.collection;this._addRecord(new WebInspector.ScriptTimelineRecord(WebInspector.ScriptTimelineRecord.EventType.GarbageCollected,collection.startTime,collection.endTime,null,null,collection));}
_memoryPressure(event)
{if(!this._isCapturing)
return;this.activeRecording.addMemoryPressureEvent(event.data.memoryPressureEvent);}
_scriptProfilerTypeToScriptTimelineRecordType(type)
{switch(type){case ScriptProfilerAgent.EventType.API:return WebInspector.ScriptTimelineRecord.EventType.APIScriptEvaluated;case ScriptProfilerAgent.EventType.Microtask:return WebInspector.ScriptTimelineRecord.EventType.MicrotaskDispatched;case ScriptProfilerAgent.EventType.Other:return WebInspector.ScriptTimelineRecord.EventType.ScriptEvaluated;}}
scriptProfilerProgrammaticCaptureStarted()
{ this.programmaticCaptureStarted();}
scriptProfilerProgrammaticCaptureStopped()
{ this.programmaticCaptureStopped();}
scriptProfilerTrackingStarted(timestamp)
{this._scriptProfilerRecords=[];this.capturingStarted(timestamp);}
scriptProfilerTrackingUpdated(event)
{let{startTime,endTime,type}=event;let scriptRecordType=this._scriptProfilerTypeToScriptTimelineRecordType(type);let record=new WebInspector.ScriptTimelineRecord(scriptRecordType,startTime,endTime,null,null,null,null);record.__scriptProfilerType=type;this._scriptProfilerRecords.push(record);
if(type!==ScriptProfilerAgent.EventType.Other)
this._addRecord(record);}
scriptProfilerTrackingCompleted(samples)
{if(samples){let{stackTraces}=samples;let topDownCallingContextTree=this.activeRecording.topDownCallingContextTree;let bottomUpCallingContextTree=this.activeRecording.bottomUpCallingContextTree;let topFunctionsTopDownCallingContextTree=this.activeRecording.topFunctionsTopDownCallingContextTree;let topFunctionsBottomUpCallingContextTree=this.activeRecording.topFunctionsBottomUpCallingContextTree;let timestampIndex=0;let timestampCount=stackTraces.length;let sampleDurations=new Array(timestampCount);let sampleDurationIndex=0;const defaultDuration=1/1000;for(let i=0;i<this._scriptProfilerRecords.length;++i){let record=this._scriptProfilerRecords[i];while(timestampIndex<timestampCount&&stackTraces[timestampIndex].timestamp<record.startTime){sampleDurations[sampleDurationIndex++]=defaultDuration;timestampIndex++;}
let samplesInRecord=0;while(timestampIndex<timestampCount&&stackTraces[timestampIndex].timestamp<record.endTime){timestampIndex++;samplesInRecord++;}
if(samplesInRecord){let averageDuration=(record.endTime-record.startTime)/samplesInRecord;sampleDurations.fill(averageDuration,sampleDurationIndex,sampleDurationIndex+samplesInRecord);sampleDurationIndex+=samplesInRecord;}}
if(timestampIndex<timestampCount)
sampleDurations.fill(defaultDuration,sampleDurationIndex);for(let i=0;i<stackTraces.length;i++){topDownCallingContextTree.updateTreeWithStackTrace(stackTraces[i],sampleDurations[i]);bottomUpCallingContextTree.updateTreeWithStackTrace(stackTraces[i],sampleDurations[i]);topFunctionsTopDownCallingContextTree.updateTreeWithStackTrace(stackTraces[i],sampleDurations[i]);topFunctionsBottomUpCallingContextTree.updateTreeWithStackTrace(stackTraces[i],sampleDurations[i]);}
for(let i=0;i<this._scriptProfilerRecords.length;++i){let record=this._scriptProfilerRecords[i];record.profilePayload=topDownCallingContextTree.toCPUProfilePayload(record.startTime,record.endTime);}}
if(WebInspector.debuggableType!==WebInspector.DebuggableType.JavaScript){this._scriptProfilerRecords=this._scriptProfilerRecords.filter((x)=>x.__scriptProfilerType===ScriptProfilerAgent.EventType.Other);this._mergeScriptProfileRecords();}
this._scriptProfilerRecords=null;let timeline=this.activeRecording.timelineForRecordType(WebInspector.TimelineRecord.Type.Script);timeline.refresh();}
_mergeScriptProfileRecords()
{let nextRecord=function(list){return list.shift()||null;};let nextWebTimelineRecord=nextRecord.bind(null,this._webTimelineScriptRecordsExpectingScriptProfilerEvents);let nextScriptProfilerRecord=nextRecord.bind(null,this._scriptProfilerRecords);let recordEnclosesRecord=function(record1,record2){return record1.startTime<=record2.startTime&&record1.endTime>=record2.endTime;};let webRecord=nextWebTimelineRecord();let profilerRecord=nextScriptProfilerRecord();while(webRecord&&profilerRecord){if(webRecord.parent instanceof WebInspector.ScriptTimelineRecord){webRecord=nextWebTimelineRecord();continue;}
if(recordEnclosesRecord(webRecord,profilerRecord)){webRecord.profilePayload=profilerRecord.profilePayload;profilerRecord=nextScriptProfilerRecord();
while(profilerRecord&&recordEnclosesRecord(webRecord,profilerRecord)){this._addRecord(profilerRecord);profilerRecord=nextScriptProfilerRecord();}
webRecord=nextWebTimelineRecord();continue;}
if(profilerRecord.startTime>webRecord.endTime){console.warn("Unexpected case of a Timeline record not containing a ScriptProfiler event and profile data");webRecord=nextWebTimelineRecord();continue;}
console.warn("Unexpected case of a ScriptProfiler event not being contained by a Timeline record");this._addRecord(profilerRecord);profilerRecord=nextScriptProfilerRecord();}
}
_updateAutoCaptureInstruments()
{if(!window.TimelineAgent)
return;if(!TimelineAgent.setInstruments)
return;let instrumentSet=new Set;let enabledTimelineTypes=this._enabledTimelineTypesSetting.value;for(let timelineType of enabledTimelineTypes){switch(timelineType){case WebInspector.TimelineRecord.Type.Script:instrumentSet.add(TimelineAgent.Instrument.ScriptProfiler);break;case WebInspector.TimelineRecord.Type.HeapAllocations:instrumentSet.add(TimelineAgent.Instrument.Heap);break;case WebInspector.TimelineRecord.Type.Network:case WebInspector.TimelineRecord.Type.RenderingFrame:case WebInspector.TimelineRecord.Type.Layout:instrumentSet.add(TimelineAgent.Instrument.Timeline);break;case WebInspector.TimelineRecord.Type.Memory:instrumentSet.add(TimelineAgent.Instrument.Memory);break;}}
TimelineAgent.setInstruments([...instrumentSet]);}};WebInspector.TimelineManager.Event={RecordingCreated:"timeline-manager-recording-created",RecordingLoaded:"timeline-manager-recording-loaded",CapturingWillStart:"timeline-manager-capturing-will-start",CapturingStarted:"timeline-manager-capturing-started",CapturingStopped:"timeline-manager-capturing-stopped"};WebInspector.TimelineManager.MaximumAutoRecordDuration=90000;WebInspector.TimelineManager.MaximumAutoRecordDurationAfterLoadEvent=10000;WebInspector.TimelineManager.DeadTimeRequiredToStopAutoRecordingEarly=2000;WebInspector.TypeTokenAnnotator=class TypeTokenAnnotator extends WebInspector.Annotator
{constructor(sourceCodeTextEditor,script)
{super(sourceCodeTextEditor);this._script=script;this._typeTokenNodes=[];this._typeTokenBookmarks=[];}
insertAnnotations()
{if(!this.isActive())
return;var scriptSyntaxTree=this._script.scriptSyntaxTree;if(!scriptSyntaxTree){this._script.requestScriptSyntaxTree((syntaxTree)=>{if(syntaxTree)
this.insertAnnotations();});return;}
if(!scriptSyntaxTree.parsedSuccessfully)
return;var{startOffset,endOffset}=this.sourceCodeTextEditor.visibleRangeOffsets();var startTime=Date.now();var allNodesInRange=scriptSyntaxTree.filterByRange(startOffset,endOffset);scriptSyntaxTree.updateTypes(allNodesInRange,(nodesWithUpdatedTypes)=>{if(!this.isActive())
return;nodesWithUpdatedTypes.forEach(this._insertTypeToken,this);let totalTime=Date.now()-startTime;let timeoutTime=Number.constrain(8*totalTime,500,2000);this._timeoutIdentifier=setTimeout(()=>{this._timeoutIdentifier=null;this.insertAnnotations();},timeoutTime);});}
clearAnnotations()
{this._clearTypeTokens();}
_insertTypeToken(node)
{if(node.type===WebInspector.ScriptSyntaxTree.NodeType.Identifier){if(!node.attachments.__typeToken&&node.attachments.types&&node.attachments.types.valid)
this._insertToken(node.range[0],node,false,WebInspector.TypeTokenView.TitleType.Variable,node.name);if(node.attachments.__typeToken)
node.attachments.__typeToken.update(node.attachments.types);return;}
var functionReturnType=node.attachments.returnTypes;if(!functionReturnType||!functionReturnType.valid)
return;
var scriptSyntaxTree=this._script._scriptSyntaxTree;if(!node.attachments.__typeToken&&(scriptSyntaxTree.containsNonEmptyReturnStatement(node.body)||!functionReturnType.typeSet.isContainedIn(WebInspector.TypeSet.TypeBit.Undefined))){var functionName=node.id?node.id.name:null;this._insertToken(node.typeProfilingReturnDivot,node,true,WebInspector.TypeTokenView.TitleType.ReturnStatement,functionName);}
if(node.attachments.__typeToken)
node.attachments.__typeToken.update(node.attachments.returnTypes);}
_insertToken(originalOffset,node,shouldTranslateOffsetToAfterParameterList,typeTokenTitleType,functionOrVariableName)
{var tokenPosition=this.sourceCodeTextEditor.originalOffsetToCurrentPosition(originalOffset);var currentOffset=this.sourceCodeTextEditor.currentPositionToCurrentOffset(tokenPosition);var sourceString=this.sourceCodeTextEditor.string;if(shouldTranslateOffsetToAfterParameterList){currentOffset=this._translateToOffsetAfterFunctionParameterList(node,currentOffset,sourceString);tokenPosition=this.sourceCodeTextEditor.currentOffsetToCurrentPosition(currentOffset);}
var isSpaceRegexp=/\s/;var shouldHaveLeftMargin=currentOffset!==0&&!isSpaceRegexp.test(sourceString[currentOffset-1]);var shouldHaveRightMargin=!isSpaceRegexp.test(sourceString[currentOffset]);var typeToken=new WebInspector.TypeTokenView(this,shouldHaveRightMargin,shouldHaveLeftMargin,typeTokenTitleType,functionOrVariableName);var bookmark=this.sourceCodeTextEditor.setInlineWidget(tokenPosition,typeToken.element);node.attachments.__typeToken=typeToken;this._typeTokenNodes.push(node);this._typeTokenBookmarks.push(bookmark);}
_translateToOffsetAfterFunctionParameterList(node,offset,sourceString)
{var isMultiLineComment=false;var isSingleLineComment=false;var shouldIgnore=false;const isArrowFunction=node.type===WebInspector.ScriptSyntaxTree.NodeType.ArrowFunctionExpression;function isLineTerminator(char)
{
return char==="\n"||char==="\r"||char==="\u2028"||char==="\u2029";}
while(((!isArrowFunction&&sourceString[offset]!==")")||(isArrowFunction&&sourceString[offset]!==">")||shouldIgnore)&&offset<sourceString.length){if(isSingleLineComment&&isLineTerminator(sourceString[offset])){isSingleLineComment=false;shouldIgnore=false;}else if(isMultiLineComment&&sourceString[offset]==="*"&&sourceString[offset+1]==="/"){isMultiLineComment=false;shouldIgnore=false;offset++;}else if(!shouldIgnore&&sourceString[offset]==="/"){offset++;if(sourceString[offset]==="*")
isMultiLineComment=true;else if(sourceString[offset]==="/")
isSingleLineComment=true;else
throw new Error("Bad parsing. Couldn't parse comment preamble.");shouldIgnore=true;}
offset++;}
return offset+1;}
_clearTypeTokens()
{this._typeTokenNodes.forEach(function(node){node.attachments.__typeToken=null;});this._typeTokenBookmarks.forEach(function(bookmark){bookmark.clear();});this._typeTokenNodes=[];this._typeTokenBookmarks=[];}};WebInspector.VisualStyleCompletionsController=class VisualStyleCompletionsController extends WebInspector.Object
{constructor(delegate)
{super();this._delegate=delegate||null;this._suggestionsView=new WebInspector.CompletionSuggestionsView(this);this._completions=null;this._currentCompletions=[];this._selectedCompletionIndex=0;}
get visible()
{return this._completions&&this._currentCompletions.length&&this._suggestionsView.visible;}
get hasCompletions()
{return!!this._completions;}
get currentCompletion()
{if(!this.hasCompletions)
return null;return this._currentCompletions[this._selectedCompletionIndex]||null;}
set completions(completions)
{this._completions=completions||null;}
completionSuggestionsViewCustomizeCompletionElement(suggestionsView,element,item)
{if(this._delegate&&typeof this._delegate.visualStyleCompletionsControllerCustomizeCompletionElement==="function")
this._delegate.visualStyleCompletionsControllerCustomizeCompletionElement(suggestionsView,element,item);}
completionSuggestionsClickedCompletion(suggestionsView,text)
{suggestionsView.hide();this.dispatchEventToListeners(WebInspector.VisualStyleCompletionsController.Event.CompletionSelected,{text});}
previous()
{this._suggestionsView.selectPrevious();this._selectedCompletionIndex=this._suggestionsView.selectedIndex;}
next()
{this._suggestionsView.selectNext();this._selectedCompletionIndex=this._suggestionsView.selectedIndex;}
update(value)
{if(!this.hasCompletions)
return false;this._currentCompletions=this._completions.startsWith(value);var currentCompletionsLength=this._currentCompletions.length;if(currentCompletionsLength){if(currentCompletionsLength===1&&this._currentCompletions[0]===value){this.hide();return false;}
if(this._selectedCompletionIndex>=currentCompletionsLength)
this._selectedCompletionIndex=0;this._suggestionsView.update(this._currentCompletions,this._selectedCompletionIndex);return true;}
this.hide();return false;}
show(bounds,padding)
{if(!bounds)
return;this._suggestionsView.show(bounds.pad(padding||0));}
hide()
{if(this._suggestionsView.isHandlingClickEvent())
return;this._suggestionsView.hide();}};WebInspector.VisualStyleCompletionsController.Event={CompletionSelected:"visual-style-completions-controller-completion-selected"};WebInspector.WorkerManager=class WorkerManager extends WebInspector.Object
{constructor()
{super();this._connections=new Map;if(window.WorkerAgent)
WorkerAgent.enable();}
workerCreated(workerId,url)
{let connection=new InspectorBackend.WorkerConnection(workerId);let workerTarget=new WebInspector.WorkerTarget(workerId,url,connection);WebInspector.targetManager.addTarget(workerTarget);this._connections.set(workerId,connection);WorkerAgent.initialized(workerId);}
workerTerminated(workerId)
{let connection=this._connections.take(workerId);WebInspector.targetManager.removeTarget(connection.target);}
dispatchMessageFromWorker(workerId,message)
{let connection=this._connections.get(workerId);if(!connection)
return;connection.dispatch(message);}};WebInspector.XHRBreakpointTreeController=class XHRBreakpointsTreeController extends WebInspector.Object
{constructor(treeOutline)
{super();this._treeOutline=treeOutline;WebInspector.domDebuggerManager.addEventListener(WebInspector.DOMDebuggerManager.Event.XHRBreakpointAdded,this._xhrBreakpointAdded,this);WebInspector.domDebuggerManager.addEventListener(WebInspector.DOMDebuggerManager.Event.XHRBreakpointRemoved,this._xhrBreakpointRemoved,this);this._allReqestsBreakpointTreeElement=new WebInspector.XHRBreakpointTreeElement(WebInspector.domDebuggerManager.allRequestsBreakpoint,WebInspector.DebuggerSidebarPanel.AssertionIconStyleClassName,WebInspector.UIString("All Requests"));this._treeOutline.appendChild(this._allReqestsBreakpointTreeElement);for(let breakpoint of WebInspector.domDebuggerManager.xhrBreakpoints)
this._addTreeElement(breakpoint);}
revealAndSelect(breakpoint)
{let treeElement=this._treeOutline.findTreeElement(breakpoint);if(!treeElement)
return;treeElement.revealAndSelect();}
disconnect()
{WebInspector.Frame.removeEventListener(null,null,this);WebInspector.domDebuggerManager.removeEventListener(null,null,this);}
_xhrBreakpointAdded(event)
{this._addTreeElement(event.data.breakpoint);}
_xhrBreakpointRemoved(event)
{let breakpoint=event.data.breakpoint;let treeElement=this._treeOutline.findTreeElement(breakpoint);if(!treeElement)
return;this._treeOutline.removeChild(treeElement);}
_addTreeElement(breakpoint)
{let treeElement=this._treeOutline.findTreeElement(breakpoint);if(treeElement)
return;this._treeOutline.appendChild(new WebInspector.XHRBreakpointTreeElement(breakpoint));}};WebInspector.ContentViewCookieType={ApplicationCache:"application-cache",CookieStorage:"cookie-storage",Database:"database",DatabaseTable:"database-table",DOMStorage:"dom-storage",Resource:"resource",Timelines:"timelines"};WebInspector.DebuggableType={Web:"web",JavaScript:"javascript"};WebInspector.SelectedSidebarPanelCookieKey="selected-sidebar-panel";WebInspector.TypeIdentifierCookieKey="represented-object-type";WebInspector.StateRestorationType={Load:"state-restoration-load",Navigation:"state-restoration-navigation",Delayed:"state-restoration-delayed",};WebInspector.LayoutDirection={System:"system",LTR:"ltr",RTL:"rtl",};WebInspector.loaded=function()
{this.debuggableType=InspectorFrontendHost.debuggableType()==="web"?WebInspector.DebuggableType.Web:WebInspector.DebuggableType.JavaScript;this.hasExtraDomains=false;if(InspectorBackend.registerInspectorDispatcher)
InspectorBackend.registerInspectorDispatcher(new WebInspector.InspectorObserver);if(InspectorBackend.registerPageDispatcher)
InspectorBackend.registerPageDispatcher(new WebInspector.PageObserver);if(InspectorBackend.registerConsoleDispatcher)
InspectorBackend.registerConsoleDispatcher(new WebInspector.ConsoleObserver);if(InspectorBackend.registerNetworkDispatcher)
InspectorBackend.registerNetworkDispatcher(new WebInspector.NetworkObserver);if(InspectorBackend.registerDOMDispatcher)
InspectorBackend.registerDOMDispatcher(new WebInspector.DOMObserver);if(InspectorBackend.registerDebuggerDispatcher)
InspectorBackend.registerDebuggerDispatcher(new WebInspector.DebuggerObserver);if(InspectorBackend.registerHeapDispatcher)
InspectorBackend.registerHeapDispatcher(new WebInspector.HeapObserver);if(InspectorBackend.registerMemoryDispatcher)
InspectorBackend.registerMemoryDispatcher(new WebInspector.MemoryObserver);if(InspectorBackend.registerDatabaseDispatcher)
InspectorBackend.registerDatabaseDispatcher(new WebInspector.DatabaseObserver);if(InspectorBackend.registerDOMStorageDispatcher)
InspectorBackend.registerDOMStorageDispatcher(new WebInspector.DOMStorageObserver);if(InspectorBackend.registerApplicationCacheDispatcher)
InspectorBackend.registerApplicationCacheDispatcher(new WebInspector.ApplicationCacheObserver);if(InspectorBackend.registerScriptProfilerDispatcher)
InspectorBackend.registerScriptProfilerDispatcher(new WebInspector.ScriptProfilerObserver);if(InspectorBackend.registerTimelineDispatcher)
InspectorBackend.registerTimelineDispatcher(new WebInspector.TimelineObserver);if(InspectorBackend.registerCSSDispatcher)
InspectorBackend.registerCSSDispatcher(new WebInspector.CSSObserver);if(InspectorBackend.registerLayerTreeDispatcher)
InspectorBackend.registerLayerTreeDispatcher(new WebInspector.LayerTreeObserver);if(InspectorBackend.registerRuntimeDispatcher)
InspectorBackend.registerRuntimeDispatcher(new WebInspector.RuntimeObserver);if(InspectorBackend.registerWorkerDispatcher)
InspectorBackend.registerWorkerDispatcher(new WebInspector.WorkerObserver);if(InspectorBackend.registerCanvasDispatcher)
InspectorBackend.registerCanvasDispatcher(new WebInspector.CanvasObserver);WebInspector.mainTarget=new WebInspector.MainTarget;InspectorAgent.enable();WebInspector.CSSCompletions.requestCSSCompletions();WebInspector.Frame.addEventListener(WebInspector.Frame.Event.ProvisionalLoadStarted,this._provisionalLoadStarted,this);WebInspector.KeyboardShortcut.Key.Space._displayName=WebInspector.UIString("Space");
this.targetManager=new WebInspector.TargetManager;this.branchManager=new WebInspector.BranchManager;this.frameResourceManager=new WebInspector.FrameResourceManager;this.storageManager=new WebInspector.StorageManager;this.domTreeManager=new WebInspector.DOMTreeManager;this.cssStyleManager=new WebInspector.CSSStyleManager;this.logManager=new WebInspector.LogManager;this.issueManager=new WebInspector.IssueManager;this.analyzerManager=new WebInspector.AnalyzerManager;this.runtimeManager=new WebInspector.RuntimeManager;this.heapManager=new WebInspector.HeapManager;this.memoryManager=new WebInspector.MemoryManager;this.applicationCacheManager=new WebInspector.ApplicationCacheManager;this.timelineManager=new WebInspector.TimelineManager;this.debuggerManager=new WebInspector.DebuggerManager;this.sourceMapManager=new WebInspector.SourceMapManager;this.layerTreeManager=new WebInspector.LayerTreeManager;this.dashboardManager=new WebInspector.DashboardManager;this.probeManager=new WebInspector.ProbeManager;this.workerManager=new WebInspector.WorkerManager;this.domDebuggerManager=new WebInspector.DOMDebuggerManager;this.canvasManager=new WebInspector.CanvasManager;ConsoleAgent.enable();setTimeout(function(){if(InspectorAgent.initialized)
InspectorAgent.initialized();},0);this.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.Paused,this._debuggerDidPause,this);this.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.Resumed,this._debuggerDidResume,this);this.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.InspectModeStateChanged,this._inspectModeStateChanged,this);this.domTreeManager.addEventListener(WebInspector.DOMTreeManager.Event.DOMNodeWasInspected,this._domNodeWasInspected,this);this.storageManager.addEventListener(WebInspector.StorageManager.Event.DOMStorageObjectWasInspected,this._storageWasInspected,this);this.storageManager.addEventListener(WebInspector.StorageManager.Event.DatabaseWasInspected,this._storageWasInspected,this);this.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.MainFrameDidChange,this._mainFrameDidChange,this);this.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.FrameWasAdded,this._frameWasAdded,this);WebInspector.Frame.addEventListener(WebInspector.Frame.Event.MainResourceDidChange,this._mainResourceDidChange,this);document.addEventListener("DOMContentLoaded",this.contentLoaded.bind(this));this._showingSplitConsoleSetting=new WebInspector.Setting("showing-split-console",false);this._openTabsSetting=new WebInspector.Setting("open-tab-types",["elements","network","resources","timeline","debugger","storage","console"]);this._selectedTabIndexSetting=new WebInspector.Setting("selected-tab-index",0);this.showShadowDOMSetting=new WebInspector.Setting("show-shadow-dom",false);this.showJavaScriptTypeInformationSetting=new WebInspector.Setting("show-javascript-type-information",false);this.showJavaScriptTypeInformationSetting.addEventListener(WebInspector.Setting.Event.Changed,this._showJavaScriptTypeInformationSettingChanged,this);if(this.showJavaScriptTypeInformationSetting.value&&window.RuntimeAgent&&RuntimeAgent.enableTypeProfiler)
RuntimeAgent.enableTypeProfiler();this.enableControlFlowProfilerSetting=new WebInspector.Setting("enable-control-flow-profiler",false);this.enableControlFlowProfilerSetting.addEventListener(WebInspector.Setting.Event.Changed,this._enableControlFlowProfilerSettingChanged,this);if(this.enableControlFlowProfilerSetting.value&&window.RuntimeAgent&&RuntimeAgent.enableControlFlowProfiler)
RuntimeAgent.enableControlFlowProfiler();this.showPaintRectsSetting=new WebInspector.Setting("show-paint-rects",false);if(this.showPaintRectsSetting.value&&window.PageAgent&&PageAgent.setShowPaintRects)
PageAgent.setShowPaintRects(true);this.showPrintStylesSetting=new WebInspector.Setting("show-print-styles",false);if(this.showPrintStylesSetting.value&&window.PageAgent)
PageAgent.setEmulatedMedia("print");this.resourceCachingDisabledSetting=new WebInspector.Setting("disable-resource-caching",false);if(window.NetworkAgent&&NetworkAgent.setResourceCachingDisabled&&this.resourceCachingDisabledSetting.value){NetworkAgent.setResourceCachingDisabled(true);this.resourceCachingDisabledSetting.addEventListener(WebInspector.Setting.Event.Changed,this._resourceCachingDisabledSettingChanged,this);}
this.setZoomFactor(WebInspector.settings.zoomFactor.value);this.mouseCoords={x:0,y:0};this.visible=false;this._windowKeydownListeners=[];};WebInspector.contentLoaded=function()
{
if(window.__uncaughtExceptions)
return;document.addEventListener("beforecopy",this._beforecopy.bind(this));document.addEventListener("copy",this._copy.bind(this));document.addEventListener("click",this._mouseWasClicked.bind(this));document.addEventListener("dragover",this._dragOver.bind(this));document.addEventListener("focus",WebInspector._focusChanged.bind(this),true);window.addEventListener("focus",this._windowFocused.bind(this));window.addEventListener("blur",this._windowBlurred.bind(this));window.addEventListener("resize",this._windowResized.bind(this));window.addEventListener("keydown",this._windowKeyDown.bind(this));window.addEventListener("keyup",this._windowKeyUp.bind(this));window.addEventListener("mousedown",this._mouseDown.bind(this),true);window.addEventListener("mousemove",this._mouseMoved.bind(this),true);window.addEventListener("pagehide",this._pageHidden.bind(this));window.addEventListener("contextmenu",this._contextMenuRequested.bind(this));document.body.classList.add(WebInspector.Platform.name+"-platform");if(WebInspector.Platform.isNightlyBuild)
document.body.classList.add("nightly-build");if(WebInspector.Platform.name==="mac"){document.body.classList.add(WebInspector.Platform.version.name);if(WebInspector.Platform.version.release>=11)
document.body.classList.add("latest-mac");else
document.body.classList.add("legacy-mac");}
document.body.classList.add(this.debuggableType);document.body.setAttribute("dir",this.resolvedLayoutDirection());function setTabSize(){document.body.style.tabSize=WebInspector.settings.tabSize.value;}
WebInspector.settings.tabSize.addEventListener(WebInspector.Setting.Event.Changed,setTabSize);setTabSize();function setInvalidCharacterClassName(){document.body.classList.toggle("show-invalid-characters",WebInspector.settings.showInvalidCharacters.value);}
WebInspector.settings.showInvalidCharacters.addEventListener(WebInspector.Setting.Event.Changed,setInvalidCharacterClassName);setInvalidCharacterClassName();function setWhitespaceCharacterClassName(){document.body.classList.toggle("show-whitespace-characters",WebInspector.settings.showWhitespaceCharacters.value);}
WebInspector.settings.showWhitespaceCharacters.addEventListener(WebInspector.Setting.Event.Changed,setWhitespaceCharacterClassName);setWhitespaceCharacterClassName();this.settingsTabContentView=new WebInspector.SettingsTabContentView;this._settingsKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,WebInspector.KeyboardShortcut.Key.Comma,this._showSettingsTab.bind(this));this.toolbar=new WebInspector.Toolbar(document.getElementById("toolbar"));this.tabBar=new WebInspector.TabBar(document.getElementById("tab-bar"));this.tabBar.addEventListener(WebInspector.TabBar.Event.OpenDefaultTab,this._openDefaultTab,this);this._contentElement=document.getElementById("content");this._contentElement.setAttribute("role","main");this._contentElement.setAttribute("aria-label",WebInspector.UIString("Content"));this.consoleDrawer=new WebInspector.ConsoleDrawer(document.getElementById("console-drawer"));this.consoleDrawer.addEventListener(WebInspector.ConsoleDrawer.Event.CollapsedStateChanged,this._consoleDrawerCollapsedStateDidChange,this);this.consoleDrawer.addEventListener(WebInspector.ConsoleDrawer.Event.Resized,this._consoleDrawerDidResize,this);this.clearKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"K",this._clear.bind(this));this.quickConsole=new WebInspector.QuickConsole(document.getElementById("quick-console"));this._consoleRepresentedObject=new WebInspector.LogObject;this.consoleContentView=this.consoleDrawer.contentViewForRepresentedObject(this._consoleRepresentedObject);this.consoleLogViewController=this.consoleContentView.logViewController;this.breakpointPopoverController=new WebInspector.BreakpointPopoverController;this.navigationSidebar=new WebInspector.Sidebar(document.getElementById("navigation-sidebar"),WebInspector.Sidebar.Sides.Left);this.navigationSidebar.addEventListener(WebInspector.Sidebar.Event.WidthDidChange,this._sidebarWidthDidChange,this);this.detailsSidebar=new WebInspector.Sidebar(document.getElementById("details-sidebar"),WebInspector.Sidebar.Sides.Right,null,null,WebInspector.UIString("Details"),true);this.detailsSidebar.addEventListener(WebInspector.Sidebar.Event.WidthDidChange,this._sidebarWidthDidChange,this);this.searchKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,"F",this._focusSearchField.bind(this));this._findKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"F",this._find.bind(this));this._saveKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"S",this._save.bind(this));this._saveAsKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.Shift|WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"S",this._saveAs.bind(this));this.openResourceKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,"O",this._showOpenResourceDialog.bind(this));new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"P",this._showOpenResourceDialog.bind(this));this.navigationSidebarKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,"0",this.toggleNavigationSidebar.bind(this));this.detailsSidebarKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Option,"0",this.toggleDetailsSidebar.bind(this));let boundIncreaseZoom=this._increaseZoom.bind(this);let boundDecreaseZoom=this._decreaseZoom.bind(this);this._increaseZoomKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,WebInspector.KeyboardShortcut.Key.Plus,boundIncreaseZoom);this._decreaseZoomKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,WebInspector.KeyboardShortcut.Key.Minus,boundDecreaseZoom);this._increaseZoomKeyboardShortcut2=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,WebInspector.KeyboardShortcut.Key.Plus,boundIncreaseZoom);this._decreaseZoomKeyboardShortcut2=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,WebInspector.KeyboardShortcut.Key.Minus,boundDecreaseZoom);this._resetZoomKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"0",this._resetZoom.bind(this));this._showTabAtIndexKeyboardShortcuts=[1,2,3,4,5,6,7,8,9].map((i)=>new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Option,`${i}`,this._showTabAtIndex.bind(this,i)));this._openNewTabKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Option,"T",this.showNewTabTab.bind(this));this.tabBrowser=new WebInspector.TabBrowser(document.getElementById("tab-browser"),this.tabBar,this.navigationSidebar,this.detailsSidebar);this.tabBrowser.addEventListener(WebInspector.TabBrowser.Event.SelectedTabContentViewDidChange,this._tabBrowserSelectedTabContentViewDidChange,this);this._reloadPageKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"R",this._reloadPage.bind(this));this._reloadPageIgnoringCacheKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,"R",this._reloadPageIgnoringCache.bind(this));this._reloadPageKeyboardShortcut.implicitlyPreventsDefault=this._reloadPageIgnoringCacheKeyboardShortcut.implicitlyPreventsDefault=false;this._consoleTabKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.Option|WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"C",this._showConsoleTab.bind(this));this._quickConsoleKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.Control,WebInspector.KeyboardShortcut.Key.Apostrophe,this._focusConsolePrompt.bind(this));this._inspectModeKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,"C",this._toggleInspectMode.bind(this));this._undoKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"Z",this._undoKeyboardShortcut.bind(this));this._redoKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,"Z",this._redoKeyboardShortcut.bind(this));this._undoKeyboardShortcut.implicitlyPreventsDefault=this._redoKeyboardShortcut.implicitlyPreventsDefault=false;this.toggleBreakpointsKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"Y",this.debuggerToggleBreakpoints.bind(this));this.pauseOrResumeKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.Control|WebInspector.KeyboardShortcut.Modifier.CommandOrControl,"Y",this.debuggerPauseResumeToggle.bind(this));this.stepOverKeyboardShortcut=new WebInspector.KeyboardShortcut(null,WebInspector.KeyboardShortcut.Key.F6,this.debuggerStepOver.bind(this));this.stepIntoKeyboardShortcut=new WebInspector.KeyboardShortcut(null,WebInspector.KeyboardShortcut.Key.F7,this.debuggerStepInto.bind(this));this.stepOutKeyboardShortcut=new WebInspector.KeyboardShortcut(null,WebInspector.KeyboardShortcut.Key.F8,this.debuggerStepOut.bind(this));this.pauseOrResumeAlternateKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,WebInspector.KeyboardShortcut.Key.Backslash,this.debuggerPauseResumeToggle.bind(this));this.stepOverAlternateKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,WebInspector.KeyboardShortcut.Key.SingleQuote,this.debuggerStepOver.bind(this));this.stepIntoAlternateKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl,WebInspector.KeyboardShortcut.Key.Semicolon,this.debuggerStepInto.bind(this));this.stepOutAlternateKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.Shift|WebInspector.KeyboardShortcut.Modifier.CommandOrControl,WebInspector.KeyboardShortcut.Key.Semicolon,this.debuggerStepOut.bind(this));this._closeToolbarButton=new WebInspector.ControlToolbarItem("dock-close",WebInspector.UIString("Close"),"Images/Close.svg",16,14);this._closeToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this.close,this);this._undockToolbarButton=new WebInspector.ButtonToolbarItem("undock",WebInspector.UIString("Detach into separate window"),null,"Images/Undock.svg");this._undockToolbarButton.element.classList.add(WebInspector.Popover.IgnoreAutoDismissClassName);this._undockToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._undock,this);let dockImage=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?"Images/DockLeft.svg":"Images/DockRight.svg";this._dockToSideToolbarButton=new WebInspector.ButtonToolbarItem("dock-right",WebInspector.UIString("Dock to side of window"),null,dockImage);this._dockToSideToolbarButton.element.classList.add(WebInspector.Popover.IgnoreAutoDismissClassName);let dockToSideCallback=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?this._dockLeft:this._dockRight;this._dockToSideToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,dockToSideCallback,this);this._dockBottomToolbarButton=new WebInspector.ButtonToolbarItem("dock-bottom",WebInspector.UIString("Dock to bottom of window"),null,"Images/DockBottom.svg");this._dockBottomToolbarButton.element.classList.add(WebInspector.Popover.IgnoreAutoDismissClassName);this._dockBottomToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._dockBottom,this);this._togglePreviousDockConfigurationKeyboardShortcut=new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl|WebInspector.KeyboardShortcut.Modifier.Shift,"D",this._togglePreviousDockConfiguration.bind(this));var toolTip;if(WebInspector.debuggableType===WebInspector.DebuggableType.JavaScript)
toolTip=WebInspector.UIString("Restart (%s)").format(this._reloadPageKeyboardShortcut.displayName);else
toolTip=WebInspector.UIString("Reload this page (%s)\nReload ignoring cache (%s)").format(this._reloadPageKeyboardShortcut.displayName,this._reloadPageIgnoringCacheKeyboardShortcut.displayName);this._reloadToolbarButton=new WebInspector.ButtonToolbarItem("reload",toolTip,null,"Images/ReloadToolbar.svg");this._reloadToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._reloadPageClicked,this);this._downloadToolbarButton=new WebInspector.ButtonToolbarItem("download",WebInspector.UIString("Download Web Archive"),null,"Images/DownloadArrow.svg");this._downloadToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._downloadWebArchive,this);this._updateReloadToolbarButton();this._updateDownloadToolbarButton();if(this.debuggableType===WebInspector.DebuggableType.Web){var toolTip=WebInspector.UIString("Start element selection (%s)").format(WebInspector._inspectModeKeyboardShortcut.displayName);var activatedToolTip=WebInspector.UIString("Stop element selection (%s)").format(WebInspector._inspectModeKeyboardShortcut.displayName);this._inspectModeToolbarButton=new WebInspector.ActivateButtonToolbarItem("inspect",toolTip,activatedToolTip,null,"Images/Crosshair.svg");this._inspectModeToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked,this._toggleInspectMode,this);}
this._dashboardContainer=new WebInspector.DashboardContainerView;this._dashboardContainer.showDashboardViewForRepresentedObject(this.dashboardManager.dashboards.default);this._searchToolbarItem=new WebInspector.SearchBar("inspector-search",WebInspector.UIString("Search"),null,true);this._searchToolbarItem.addEventListener(WebInspector.SearchBar.Event.TextChanged,this._searchTextDidChange,this);this.toolbar.addToolbarItem(this._closeToolbarButton,WebInspector.Toolbar.Section.Control);this.toolbar.addToolbarItem(this._undockToolbarButton,WebInspector.Toolbar.Section.Left);this.toolbar.addToolbarItem(this._dockToSideToolbarButton,WebInspector.Toolbar.Section.Left);this.toolbar.addToolbarItem(this._dockBottomToolbarButton,WebInspector.Toolbar.Section.Left);this.toolbar.addToolbarItem(this._reloadToolbarButton,WebInspector.Toolbar.Section.CenterLeft);this.toolbar.addToolbarItem(this._downloadToolbarButton,WebInspector.Toolbar.Section.CenterLeft);this.toolbar.addToolbarItem(this._dashboardContainer.toolbarItem,WebInspector.Toolbar.Section.Center);if(this._inspectModeToolbarButton)
this.toolbar.addToolbarItem(this._inspectModeToolbarButton,WebInspector.Toolbar.Section.CenterRight);this.toolbar.addToolbarItem(this._searchToolbarItem,WebInspector.Toolbar.Section.Right);this.modifierKeys={altKey:false,metaKey:false,shiftKey:false};let dockedResizerElement=document.getElementById("docked-resizer");dockedResizerElement.classList.add(WebInspector.Popover.IgnoreAutoDismissClassName);dockedResizerElement.addEventListener("mousedown",this._dockedResizerMouseDown.bind(this));this._dockingAvailable=false;this._updateDockNavigationItems();this._setupViewHierarchy();let productionTabClasses=[WebInspector.ConsoleTabContentView,WebInspector.DebuggerTabContentView,WebInspector.ElementsTabContentView,WebInspector.NetworkTabContentView,WebInspector.NewTabContentView,WebInspector.ResourcesTabContentView,WebInspector.SearchTabContentView,WebInspector.SettingsTabContentView,WebInspector.StorageTabContentView,WebInspector.TimelineTabContentView,];this._knownTabClassesByType=new Map;
for(let tabClass of productionTabClasses)
this._knownTabClassesByType.set(tabClass.Type,tabClass);this._pendingOpenTabs=[];let openTabTypes=this._openTabsSetting.value;let seenTabTypes=new Set;for(let i=0;i<openTabTypes.length;++i){let tabType=openTabTypes[i];if(seenTabTypes.has(tabType))
continue;seenTabTypes.add(tabType);if(!this.isTabTypeAllowed(tabType)){this._pendingOpenTabs.push({tabType,index:i});continue;}
let tabContentView=this._createTabContentViewForType(tabType);if(!tabContentView)
continue;this.tabBrowser.addTabForContentView(tabContentView,{suppressAnimations:true});}
this._restoreCookieForOpenTabs(WebInspector.StateRestorationType.Load);this.tabBar.selectedTabBarItem=this._selectedTabIndexSetting.value;if(!this.tabBar.selectedTabBarItem)
this.tabBar.selectedTabBarItem=0;if(!this.tabBar.normalTabCount)
this.showNewTabTab({suppressAnimations:true});this.tabBar.addEventListener(WebInspector.TabBar.Event.TabBarItemAdded,this._rememberOpenTabs,this);this.tabBar.addEventListener(WebInspector.TabBar.Event.TabBarItemRemoved,this._rememberOpenTabs,this);this.tabBar.addEventListener(WebInspector.TabBar.Event.TabBarItemsReordered,this._rememberOpenTabs,this);InspectorFrontendAPI.loadCompleted();
InspectorFrontendHost.loaded();if(this._showingSplitConsoleSetting.value)
this.showSplitConsole();window.__frontendCompletedLoad=true;if(this.runBootstrapOperations)
this.runBootstrapOperations();};
WebInspector.instanceForClass=function(constructor)
{let key=`__${constructor.name}`;if(!WebInspector[key])
WebInspector[key]=new constructor;return WebInspector[key];};WebInspector.isTabTypeAllowed=function(tabType)
{let tabClass=this._knownTabClassesByType.get(tabType);if(!tabClass)
return false;return tabClass.isTabAllowed();};WebInspector.knownTabClasses=function()
{return new Set(this._knownTabClassesByType.values());};WebInspector._showOpenResourceDialog=function()
{if(!this._openResourceDialog)
this._openResourceDialog=new WebInspector.OpenResourceDialog(this);if(this._openResourceDialog.visible)
return;this._openResourceDialog.present(this._contentElement);};WebInspector._createTabContentViewForType=function(tabType)
{let tabClass=this._knownTabClassesByType.get(tabType);if(!tabClass){console.error("Unknown tab type",tabType);return null;}
return new tabClass;};WebInspector._rememberOpenTabs=function()
{let seenTabTypes=new Set;let openTabs=[];for(let tabBarItem of this.tabBar.tabBarItems){let tabContentView=tabBarItem.representedObject;if(!(tabContentView instanceof WebInspector.TabContentView))
continue;if(!tabContentView.constructor.shouldSaveTab())
continue;openTabs.push(tabContentView.type);seenTabTypes.add(tabContentView.type);}
for(let{tabType,index}of this._pendingOpenTabs){if(seenTabTypes.has(tabType))
continue;openTabs.insertAtIndex(tabType,index);seenTabTypes.add(tabType);}
this._openTabsSetting.value=openTabs;};WebInspector._openDefaultTab=function(event)
{this.showNewTabTab({suppressAnimations:true});};WebInspector._showSettingsTab=function(event)
{this.tabBrowser.showTabForContentView(this.settingsTabContentView);};WebInspector._tryToRestorePendingTabs=function()
{let stillPendingOpenTabs=[];for(let{tabType,index}of this._pendingOpenTabs){if(!this.isTabTypeAllowed(tabType)){stillPendingOpenTabs.push({tabType,index});continue;}
let tabContentView=this._createTabContentViewForType(tabType);if(!tabContentView)
continue;this.tabBrowser.addTabForContentView(tabContentView,{suppressAnimations:true,insertionIndex:index,});tabContentView.restoreStateFromCookie(WebInspector.StateRestorationType.Load);}
this._pendingOpenTabs=stillPendingOpenTabs;this.tabBrowser.tabBar.updateNewTabTabBarItemState();};WebInspector.showNewTabTab=function(options)
{if(!this.isNewTabWithTypeAllowed(WebInspector.NewTabContentView.Type))
return;let tabContentView=this.tabBrowser.bestTabContentViewForClass(WebInspector.NewTabContentView);if(!tabContentView)
tabContentView=new WebInspector.NewTabContentView;this.tabBrowser.showTabForContentView(tabContentView,options);};WebInspector.isNewTabWithTypeAllowed=function(tabType)
{let tabClass=this._knownTabClassesByType.get(tabType);if(!tabClass||!tabClass.isTabAllowed())
return false;for(let tabBarItem of this.tabBar.tabBarItems){let tabContentView=tabBarItem.representedObject;if(!(tabContentView instanceof WebInspector.TabContentView))
continue;if(tabContentView.constructor===tabClass)
return false;}
if(tabClass===WebInspector.NewTabContentView){let allTabs=Array.from(this.knownTabClasses());let addableTabs=allTabs.filter((tabClass)=>!tabClass.isEphemeral());let canMakeNewTab=addableTabs.some((tabClass)=>WebInspector.isNewTabWithTypeAllowed(tabClass.Type));return canMakeNewTab;}
return true;};WebInspector.createNewTabWithType=function(tabType,options={})
{let{referencedView,shouldReplaceTab,shouldShowNewTab}=options;let tabContentView=this._createTabContentViewForType(tabType);const suppressAnimations=true;this.tabBrowser.addTabForContentView(tabContentView,{suppressAnimations,insertionIndex:referencedView?this.tabBar.tabBarItems.indexOf(referencedView.tabBarItem):undefined,});if(shouldReplaceTab)
this.tabBrowser.closeTabForContentView(referencedView,{suppressAnimations});if(shouldShowNewTab)
this.tabBrowser.showTabForContentView(tabContentView);};WebInspector.registerTabClass=function(tabClass)
{if(!WebInspector.TabContentView.isPrototypeOf(tabClass))
return;if(this._knownTabClassesByType.has(tabClass.Type))
return;this._knownTabClassesByType.set(tabClass.Type,tabClass);this._tryToRestorePendingTabs();this.notifications.dispatchEventToListeners(WebInspector.Notification.TabTypesChanged);};WebInspector.activateExtraDomains=function(domains)
{this.hasExtraDomains=true;for(var domain of domains){var agent=InspectorBackend.activateDomain(domain);if(agent.enable)
agent.enable();}
this.notifications.dispatchEventToListeners(WebInspector.Notification.ExtraDomainsActivated,{"domains":domains});WebInspector.CSSCompletions.requestCSSCompletions();this._updateReloadToolbarButton();this._updateDownloadToolbarButton();this._tryToRestorePendingTabs();};WebInspector.updateWindowTitle=function()
{var mainFrame=this.frameResourceManager.mainFrame;if(!mainFrame)
return;var urlComponents=mainFrame.mainResource.urlComponents;var lastPathComponent;try{lastPathComponent=decodeURIComponent(urlComponents.lastPathComponent||"");}catch(e){lastPathComponent=urlComponents.lastPathComponent;}
if(urlComponents.host&&lastPathComponent)
var title=this.displayNameForHost(urlComponents.host)+" \u2014 "+lastPathComponent;else if(urlComponents.host)
var title=this.displayNameForHost(urlComponents.host);else if(lastPathComponent)
var title=lastPathComponent;else
var title=mainFrame.url;
InspectorFrontendHost.inspectedURLChanged(title);};WebInspector.updateDockingAvailability=function(available)
{this._dockingAvailable=available;this._updateDockNavigationItems();};WebInspector.updateDockedState=function(side)
{if(this._dockConfiguration===side)
return;this._previousDockConfiguration=this._dockConfiguration;if(!this._previousDockConfiguration){if(side===WebInspector.DockConfiguration.Right||side===WebInspector.DockConfiguration.Left)
this._previousDockConfiguration=WebInspector.DockConfiguration.Bottom;else
this._previousDockConfiguration=WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL?WebInspector.DockConfiguration.Left:WebInspector.DockConfiguration.Right;}
this._dockConfiguration=side;this.docked=side!==WebInspector.DockConfiguration.Undocked;this._ignoreToolbarModeDidChangeEvents=true;if(side===WebInspector.DockConfiguration.Bottom){document.body.classList.add("docked",WebInspector.DockConfiguration.Bottom);document.body.classList.remove("window-inactive",WebInspector.DockConfiguration.Right,WebInspector.DockConfiguration.Left);}else if(side===WebInspector.DockConfiguration.Right){document.body.classList.add("docked",WebInspector.DockConfiguration.Right);document.body.classList.remove("window-inactive",WebInspector.DockConfiguration.Bottom,WebInspector.DockConfiguration.Left);}else if(side===WebInspector.DockConfiguration.Left){document.body.classList.add("docked",WebInspector.DockConfiguration.Left);document.body.classList.remove("window-inactive",WebInspector.DockConfiguration.Bottom,WebInspector.DockConfiguration.Right);}else
document.body.classList.remove("docked",WebInspector.DockConfiguration.Right,WebInspector.DockConfiguration.Left,WebInspector.DockConfiguration.Bottom);this._ignoreToolbarModeDidChangeEvents=false;this._updateDockNavigationItems();if(!this.dockedConfigurationSupportsSplitContentBrowser()&&!this.doesCurrentTabSupportSplitContentBrowser())
this.hideSplitConsole();};WebInspector.updateVisibilityState=function(visible)
{this.visible=visible;this.notifications.dispatchEventToListeners(WebInspector.Notification.VisibilityStateDidChange);};WebInspector.handlePossibleLinkClick=function(event,frame,options={})
{var anchorElement=event.target.enclosingNodeOrSelfWithNodeName("a");if(!anchorElement||!anchorElement.href)
return false;if(WebInspector.isBeingEdited(anchorElement)){return false;}
event.preventDefault();event.stopPropagation();this.openURL(anchorElement.href,frame,Object.shallowMerge(options,{lineNumber:anchorElement.lineNumber}));return true;};WebInspector.openURL=function(url,frame,options={})
{if(!url)
return;if(options.alwaysOpenExternally===undefined||options.alwaysOpenExternally===null)
options.alwaysOpenExternally=window.event?window.event.metaKey:false;if(options.alwaysOpenExternally){InspectorFrontendHost.openInNewTab(url);return;}
var searchChildFrames=false;if(!frame){frame=this.frameResourceManager.mainFrame;searchChildFrames=true;}
let simplifiedURL=removeURLFragment(url);var resource=frame.url===simplifiedURL?frame.mainResource:frame.resourceForURL(simplifiedURL,searchChildFrames);if(resource){let positionToReveal=new WebInspector.SourceCodePosition(options.lineNumber,0);this.showSourceCode(resource,Object.shallowMerge(options,{positionToReveal}));return;}
InspectorFrontendHost.openInNewTab(url);};WebInspector.close=function()
{if(this._isClosing)
return;this._isClosing=true;InspectorFrontendHost.closeWindow();};WebInspector.saveDataToFile=function(saveData,forceSaveAs)
{if(!saveData)
return;if(typeof saveData.customSaveHandler==="function"){saveData.customSaveHandler(forceSaveAs);return;}
if(!saveData.content)
return;let url=saveData.url||"";let suggestedName=parseURL(url).lastPathComponent;if(!suggestedName){suggestedName=WebInspector.UIString("Untitled");let dataURLTypeMatch=/^data:([^;]+)/.exec(url);if(dataURLTypeMatch)
suggestedName+=WebInspector.fileExtensionForMIMEType(dataURLTypeMatch[1])||"";}
if(typeof saveData.content==="string"){const base64Encoded=false;InspectorFrontendHost.save(suggestedName,saveData.content,base64Encoded,forceSaveAs||saveData.forceSaveAs);return;}
let fileReader=new FileReader;fileReader.readAsDataURL(saveData.content);fileReader.addEventListener("loadend",()=>{let dataURLComponents=parseDataURL(fileReader.result);const base64Encoded=true;InspectorFrontendHost.save(suggestedName,dataURLComponents.data,base64Encoded,forceSaveAs||saveData.forceSaveAs);});};WebInspector.isConsoleFocused=function()
{return this.quickConsole.prompt.focused;};WebInspector.isShowingSplitConsole=function()
{return!this.consoleDrawer.collapsed;};WebInspector.dockedConfigurationSupportsSplitContentBrowser=function()
{return this._dockConfiguration!==WebInspector.DockConfiguration.Bottom;};WebInspector.doesCurrentTabSupportSplitContentBrowser=function()
{var currentContentView=this.tabBrowser.selectedTabContentView;return!currentContentView||currentContentView.supportsSplitContentBrowser;};WebInspector.toggleSplitConsole=function()
{if(!this.doesCurrentTabSupportSplitContentBrowser()){this.showConsoleTab();return;}
if(this.isShowingSplitConsole())
this.hideSplitConsole();else
this.showSplitConsole();};WebInspector.showSplitConsole=function()
{if(!this.doesCurrentTabSupportSplitContentBrowser()){this.showConsoleTab();return;}
this.consoleDrawer.collapsed=false;if(this.consoleDrawer.currentContentView===this.consoleContentView)
return;
if(this.consoleContentView.parentContainer)
this.consoleContentView.parentContainer.closeContentView(this.consoleContentView);this.consoleDrawer.showContentView(this.consoleContentView);};WebInspector.hideSplitConsole=function()
{if(!this.isShowingSplitConsole())
return;this.consoleDrawer.collapsed=true;};WebInspector.showConsoleTab=function(requestedScope)
{requestedScope=requestedScope||WebInspector.LogContentView.Scopes.All;this.hideSplitConsole();this.consoleContentView.scopeBar.item(requestedScope).selected=true;this.showRepresentedObject(this._consoleRepresentedObject);};WebInspector.isShowingConsoleTab=function()
{return this.tabBrowser.selectedTabContentView instanceof WebInspector.ConsoleTabContentView;};WebInspector.showElementsTab=function()
{var tabContentView=this.tabBrowser.bestTabContentViewForClass(WebInspector.ElementsTabContentView);if(!tabContentView)
tabContentView=new WebInspector.ElementsTabContentView;this.tabBrowser.showTabForContentView(tabContentView);};WebInspector.showDebuggerTab=function(options)
{var tabContentView=this.tabBrowser.bestTabContentViewForClass(WebInspector.DebuggerTabContentView);if(!tabContentView)
tabContentView=new WebInspector.DebuggerTabContentView;if(options.breakpointToSelect instanceof WebInspector.Breakpoint)
tabContentView.revealAndSelectBreakpoint(options.breakpointToSelect);if(options.showScopeChainSidebar)
tabContentView.showScopeChainDetailsSidebarPanel();this.tabBrowser.showTabForContentView(tabContentView);};WebInspector.isShowingDebuggerTab=function()
{return this.tabBrowser.selectedTabContentView instanceof WebInspector.DebuggerTabContentView;};WebInspector.showResourcesTab=function()
{var tabContentView=this.tabBrowser.bestTabContentViewForClass(WebInspector.ResourcesTabContentView);if(!tabContentView)
tabContentView=new WebInspector.ResourcesTabContentView;this.tabBrowser.showTabForContentView(tabContentView);};WebInspector.isShowingResourcesTab=function()
{return this.tabBrowser.selectedTabContentView instanceof WebInspector.ResourcesTabContentView;};WebInspector.showStorageTab=function()
{var tabContentView=this.tabBrowser.bestTabContentViewForClass(WebInspector.StorageTabContentView);if(!tabContentView)
tabContentView=new WebInspector.StorageTabContentView;this.tabBrowser.showTabForContentView(tabContentView);};WebInspector.showNetworkTab=function()
{var tabContentView=this.tabBrowser.bestTabContentViewForClass(WebInspector.NetworkTabContentView);if(!tabContentView)
tabContentView=new WebInspector.NetworkTabContentView;this.tabBrowser.showTabForContentView(tabContentView);};WebInspector.showTimelineTab=function()
{var tabContentView=this.tabBrowser.bestTabContentViewForClass(WebInspector.TimelineTabContentView);if(!tabContentView)
tabContentView=new WebInspector.TimelineTabContentView;this.tabBrowser.showTabForContentView(tabContentView);};WebInspector.indentString=function()
{if(WebInspector.settings.indentWithTabs.value)
return"\t";return" ".repeat(WebInspector.settings.indentUnit.value);};WebInspector.restoreFocusFromElement=function(element)
{if(element&&element.isSelfOrAncestor(this.currentFocusElement))
this.previousFocusElement.focus();};WebInspector.toggleNavigationSidebar=function(event)
{if(!this.navigationSidebar.collapsed||!this.navigationSidebar.sidebarPanels.length){this.navigationSidebar.collapsed=true;return;}
if(!this.navigationSidebar.selectedSidebarPanel)
this.navigationSidebar.selectedSidebarPanel=this.navigationSidebar.sidebarPanels[0];this.navigationSidebar.collapsed=false;};WebInspector.toggleDetailsSidebar=function(event)
{if(!this.detailsSidebar.collapsed||!this.detailsSidebar.sidebarPanels.length){this.detailsSidebar.collapsed=true;return;}
if(!this.detailsSidebar.selectedSidebarPanel)
this.detailsSidebar.selectedSidebarPanel=this.detailsSidebar.sidebarPanels[0];this.detailsSidebar.collapsed=false;};WebInspector.tabContentViewClassForRepresentedObject=function(representedObject)
{if(representedObject instanceof WebInspector.DOMTree)
return WebInspector.ElementsTabContentView;if(representedObject instanceof WebInspector.TimelineRecording)
return WebInspector.TimelineTabContentView;if(representedObject===this._consoleRepresentedObject)
return WebInspector.ConsoleTabContentView;if(WebInspector.debuggerManager.paused){if(representedObject instanceof WebInspector.Script)
return WebInspector.DebuggerTabContentView;if(representedObject instanceof WebInspector.Resource&&(representedObject.type===WebInspector.Resource.Type.Document||representedObject.type===WebInspector.Resource.Type.Script))
return WebInspector.DebuggerTabContentView;}
if(representedObject instanceof WebInspector.Frame||representedObject instanceof WebInspector.Resource||representedObject instanceof WebInspector.Script||representedObject instanceof WebInspector.CSSStyleSheet||representedObject instanceof WebInspector.Canvas)
return WebInspector.ResourcesTabContentView;if(representedObject instanceof WebInspector.ContentFlow)
return WebInspector.ResourcesTabContentView;if(representedObject instanceof WebInspector.DOMStorageObject||representedObject instanceof WebInspector.CookieStorageObject||representedObject instanceof WebInspector.DatabaseTableObject||representedObject instanceof WebInspector.DatabaseObject||representedObject instanceof WebInspector.ApplicationCacheFrame||representedObject instanceof WebInspector.IndexedDatabaseObjectStore||representedObject instanceof WebInspector.IndexedDatabaseObjectStoreIndex)
return WebInspector.ResourcesTabContentView;return null;};WebInspector.tabContentViewForRepresentedObject=function(representedObject,options={})
{let tabContentView=this.tabBrowser.bestTabContentViewForRepresentedObject(representedObject,options);if(tabContentView)
return tabContentView;var tabContentViewClass=this.tabContentViewClassForRepresentedObject(representedObject);if(!tabContentViewClass){console.error("Unknown representedObject, couldn't create TabContentView.",representedObject);return null;}
tabContentView=new tabContentViewClass;this.tabBrowser.addTabForContentView(tabContentView);return tabContentView;};WebInspector.showRepresentedObject=function(representedObject,cookie,options={})
{let tabContentView=this.tabContentViewForRepresentedObject(representedObject,options);if(!tabContentView)
return;this.tabBrowser.showTabForContentView(tabContentView,options);tabContentView.showRepresentedObject(representedObject,cookie);};WebInspector.showMainFrameDOMTree=function(nodeToSelect,options={})
{if(!WebInspector.frameResourceManager.mainFrame)
return;this.showRepresentedObject(WebInspector.frameResourceManager.mainFrame.domTree,{nodeToSelect},options);};WebInspector.showSourceCodeForFrame=function(frameIdentifier,options={})
{var frame=WebInspector.frameResourceManager.frameForIdentifier(frameIdentifier);if(!frame){this._frameIdentifierToShowSourceCodeWhenAvailable=frameIdentifier;return;}
this._frameIdentifierToShowSourceCodeWhenAvailable=undefined;this.showRepresentedObject(frame,null,options);};WebInspector.showSourceCode=function(sourceCode,options={})
{const positionToReveal=options.positionToReveal;var representedObject=sourceCode;if(representedObject instanceof WebInspector.Script){representedObject=representedObject.resource||representedObject;}
var cookie=positionToReveal?{lineNumber:positionToReveal.lineNumber,columnNumber:positionToReveal.columnNumber}:{};this.showRepresentedObject(representedObject,cookie,options);};WebInspector.showSourceCodeLocation=function(sourceCodeLocation,options={})
{this.showSourceCode(sourceCodeLocation.displaySourceCode,Object.shallowMerge(options,{positionToReveal:sourceCodeLocation.displayPosition(),}));};WebInspector.showOriginalUnformattedSourceCodeLocation=function(sourceCodeLocation,options={})
{this.showSourceCode(sourceCodeLocation.sourceCode,Object.shallowMerge(options,{positionToReveal:sourceCodeLocation.position(),forceUnformatted:true,}));};WebInspector.showOriginalOrFormattedSourceCodeLocation=function(sourceCodeLocation,options={})
{this.showSourceCode(sourceCodeLocation.sourceCode,Object.shallowMerge(options,{positionToReveal:sourceCodeLocation.formattedPosition(),}));};WebInspector.showOriginalOrFormattedSourceCodeTextRange=function(sourceCodeTextRange,options={})
{var textRangeToSelect=sourceCodeTextRange.formattedTextRange;this.showSourceCode(sourceCodeTextRange.sourceCode,Object.shallowMerge(options,{positionToReveal:textRangeToSelect.startPosition(),textRangeToSelect,}));};WebInspector.showResourceRequest=function(resource,options={})
{this.showRepresentedObject(resource,{[WebInspector.ResourceClusterContentView.ContentViewIdentifierCookieKey]:WebInspector.ResourceClusterContentView.RequestIdentifier},options);};WebInspector.debuggerToggleBreakpoints=function(event)
{WebInspector.debuggerManager.breakpointsEnabled=!WebInspector.debuggerManager.breakpointsEnabled;};WebInspector.debuggerPauseResumeToggle=function(event)
{if(WebInspector.debuggerManager.paused)
WebInspector.debuggerManager.resume();else
WebInspector.debuggerManager.pause();};WebInspector.debuggerStepOver=function(event)
{WebInspector.debuggerManager.stepOver();};WebInspector.debuggerStepInto=function(event)
{WebInspector.debuggerManager.stepInto();};WebInspector.debuggerStepOut=function(event)
{WebInspector.debuggerManager.stepOut();};WebInspector._searchTextDidChange=function(event)
{var tabContentView=this.tabBrowser.bestTabContentViewForClass(WebInspector.SearchTabContentView);if(!tabContentView)
tabContentView=new WebInspector.SearchTabContentView;var searchQuery=this._searchToolbarItem.text;this._searchToolbarItem.text="";this.tabBrowser.showTabForContentView(tabContentView);tabContentView.performSearch(searchQuery);};WebInspector._focusSearchField=function(event)
{if(this.tabBrowser.selectedTabContentView instanceof WebInspector.SearchTabContentView){this.tabBrowser.selectedTabContentView.focusSearchField();return;}
this._searchToolbarItem.focus();};WebInspector._focusChanged=function(event)
{
if(WebInspector.isEventTargetAnEditableField(event)){var codeMirrorEditorElement=event.target.enclosingNodeOrSelfWithClass("CodeMirror");if(codeMirrorEditorElement&&codeMirrorEditorElement!==this.currentFocusElement){this.previousFocusElement=this.currentFocusElement;this.currentFocusElement=codeMirrorEditorElement;}
if(!WebInspector.isBeingEdited(event.target))
return;}
var selection=window.getSelection();if(!selection.isCollapsed)
return;var element=event.target;if(element!==this.currentFocusElement){this.previousFocusElement=this.currentFocusElement;this.currentFocusElement=element;}
if(element.isInsertionCaretInside())
return;var selectionRange=element.ownerDocument.createRange();selectionRange.setStart(element,0);selectionRange.setEnd(element,0);selection.removeAllRanges();selection.addRange(selectionRange);};WebInspector._mouseWasClicked=function(event)
{this.handlePossibleLinkClick(event);};WebInspector._dragOver=function(event)
{if(event.defaultPrevented)
return;if(WebInspector.isEventTargetAnEditableField(event))
return;event.dataTransfer.dropEffect="none";event.preventDefault();};WebInspector._debuggerDidPause=function(event)
{this.showDebuggerTab({showScopeChainSidebar:WebInspector.settings.showScopeChainOnPause.value});this._dashboardContainer.showDashboardViewForRepresentedObject(this.dashboardManager.dashboards.debugger);InspectorFrontendHost.bringToFront();};WebInspector._debuggerDidResume=function(event)
{this._dashboardContainer.closeDashboardViewForRepresentedObject(this.dashboardManager.dashboards.debugger);};WebInspector._frameWasAdded=function(event)
{if(!this._frameIdentifierToShowSourceCodeWhenAvailable)
return;var frame=event.data.frame;if(frame.id!==this._frameIdentifierToShowSourceCodeWhenAvailable)
return;function delayedWork()
{const options={ignoreNetworkTab:true,ignoreSearchTab:true,};this.showSourceCodeForFrame(frame.id,options);}
setTimeout(delayedWork.bind(this));};WebInspector._mainFrameDidChange=function(event)
{this._updateDownloadToolbarButton();this.updateWindowTitle();};WebInspector._mainResourceDidChange=function(event)
{if(!event.target.isMainFrame())
return;this._inProvisionalLoad=false;
setTimeout(this._restoreCookieForOpenTabs.bind(this,WebInspector.StateRestorationType.Navigation));this._updateDownloadToolbarButton();this.updateWindowTitle();};WebInspector._provisionalLoadStarted=function(event)
{if(!event.target.isMainFrame())
return;this._saveCookieForOpenTabs();this._inProvisionalLoad=true;};WebInspector._restoreCookieForOpenTabs=function(restorationType)
{for(var tabBarItem of this.tabBar.tabBarItems){var tabContentView=tabBarItem.representedObject;if(!(tabContentView instanceof WebInspector.TabContentView))
continue;tabContentView.restoreStateFromCookie(restorationType);}};WebInspector._saveCookieForOpenTabs=function()
{for(var tabBarItem of this.tabBar.tabBarItems){var tabContentView=tabBarItem.representedObject;if(!(tabContentView instanceof WebInspector.TabContentView))
continue;tabContentView.saveStateToCookie();}};WebInspector._windowFocused=function(event)
{if(event.target.document.nodeType!==Node.DOCUMENT_NODE)
return;document.body.classList.remove(this.docked?"window-docked-inactive":"window-inactive");};WebInspector._windowBlurred=function(event)
{if(event.target.document.nodeType!==Node.DOCUMENT_NODE)
return;document.body.classList.add(this.docked?"window-docked-inactive":"window-inactive");};WebInspector._windowResized=function(event)
{this.toolbar.updateLayout(WebInspector.View.LayoutReason.Resize);this.tabBar.updateLayout(WebInspector.View.LayoutReason.Resize);this._tabBrowserSizeDidChange();};WebInspector._updateModifierKeys=function(event)
{var didChange=this.modifierKeys.altKey!==event.altKey||this.modifierKeys.metaKey!==event.metaKey||this.modifierKeys.shiftKey!==event.shiftKey;this.modifierKeys={altKey:event.altKey,metaKey:event.metaKey,shiftKey:event.shiftKey};if(didChange)
this.notifications.dispatchEventToListeners(WebInspector.Notification.GlobalModifierKeysDidChange,event);};WebInspector._windowKeyDown=function(event)
{this._updateModifierKeys(event);};WebInspector._windowKeyUp=function(event)
{this._updateModifierKeys(event);};WebInspector._mouseDown=function(event)
{if(this.toolbar.element.isSelfOrAncestor(event.target))
this._toolbarMouseDown(event);};WebInspector._mouseMoved=function(event)
{this._updateModifierKeys(event);this.mouseCoords={x:event.pageX,y:event.pageY};};WebInspector._pageHidden=function(event)
{this._saveCookieForOpenTabs();};WebInspector._contextMenuRequested=function(event)
{let proposedContextMenu;if(WebInspector.isDebugUIEnabled()){proposedContextMenu=WebInspector.ContextMenu.createFromEvent(event);proposedContextMenu.appendSeparator();proposedContextMenu.appendItem(WebInspector.unlocalizedString("Reload Web Inspector"),()=>{window.location.reload();});let protocolSubMenu=proposedContextMenu.appendSubMenuItem(WebInspector.unlocalizedString("Protocol Debugging"),null,false);let isCapturingTraffic=InspectorBackend.activeTracer instanceof WebInspector.CapturingProtocolTracer;protocolSubMenu.appendCheckboxItem(WebInspector.unlocalizedString("Capture Trace"),()=>{if(isCapturingTraffic)
InspectorBackend.activeTracer=null;else
InspectorBackend.activeTracer=new WebInspector.CapturingProtocolTracer;},isCapturingTraffic);protocolSubMenu.appendSeparator();protocolSubMenu.appendItem(WebInspector.unlocalizedString("Export Trace\u2026"),()=>{const forceSaveAs=true;WebInspector.saveDataToFile(InspectorBackend.activeTracer.trace.saveData,forceSaveAs);},!isCapturingTraffic);}else{const onlyExisting=true;proposedContextMenu=WebInspector.ContextMenu.createFromEvent(event,onlyExisting);}
if(proposedContextMenu)
proposedContextMenu.show();};WebInspector.isDebugUIEnabled=function()
{return WebInspector.showDebugUISetting&&WebInspector.showDebugUISetting.value;};WebInspector._undock=function(event)
{InspectorFrontendHost.requestSetDockSide(WebInspector.DockConfiguration.Undocked);};WebInspector._dockBottom=function(event)
{InspectorFrontendHost.requestSetDockSide(WebInspector.DockConfiguration.Bottom);};WebInspector._dockRight=function(event)
{InspectorFrontendHost.requestSetDockSide(WebInspector.DockConfiguration.Right);};WebInspector._dockLeft=function(event)
{InspectorFrontendHost.requestSetDockSide(WebInspector.DockConfiguration.Left);};WebInspector._togglePreviousDockConfiguration=function(event)
{InspectorFrontendHost.requestSetDockSide(this._previousDockConfiguration);};WebInspector._updateDockNavigationItems=function()
{if(this._dockingAvailable||this.docked){this._closeToolbarButton.hidden=!this.docked;this._undockToolbarButton.hidden=this._dockConfiguration===WebInspector.DockConfiguration.Undocked;this._dockBottomToolbarButton.hidden=this._dockConfiguration===WebInspector.DockConfiguration.Bottom;this._dockToSideToolbarButton.hidden=this._dockConfiguration===WebInspector.DockConfiguration.Right||this._dockConfiguration===WebInspector.DockConfiguration.Left;}else{this._closeToolbarButton.hidden=true;this._undockToolbarButton.hidden=true;this._dockBottomToolbarButton.hidden=true;this._dockToSideToolbarButton.hidden=true;}};WebInspector._tabBrowserSizeDidChange=function()
{this.tabBrowser.updateLayout(WebInspector.View.LayoutReason.Resize);this.consoleDrawer.updateLayout(WebInspector.View.LayoutReason.Resize);this.quickConsole.updateLayout(WebInspector.View.LayoutReason.Resize);};WebInspector._consoleDrawerCollapsedStateDidChange=function(event)
{this._showingSplitConsoleSetting.value=WebInspector.isShowingSplitConsole();WebInspector._consoleDrawerDidResize();};WebInspector._consoleDrawerDidResize=function(event)
{this.tabBrowser.updateLayout(WebInspector.View.LayoutReason.Resize);};WebInspector._sidebarWidthDidChange=function(event)
{this._tabBrowserSizeDidChange();};WebInspector._setupViewHierarchy=function()
{let rootView=WebInspector.View.rootView();rootView.addSubview(this.toolbar);rootView.addSubview(this.tabBar);rootView.addSubview(this.navigationSidebar);rootView.addSubview(this.tabBrowser);rootView.addSubview(this.consoleDrawer);rootView.addSubview(this.quickConsole);rootView.addSubview(this.detailsSidebar);};WebInspector._tabBrowserSelectedTabContentViewDidChange=function(event)
{if(this.tabBar.selectedTabBarItem&&this.tabBar.selectedTabBarItem.representedObject.constructor.shouldSaveTab())
this._selectedTabIndexSetting.value=this.tabBar.tabBarItems.indexOf(this.tabBar.selectedTabBarItem);if(this.doesCurrentTabSupportSplitContentBrowser()){if(this._shouldRevealSpitConsoleIfSupported){this._shouldRevealSpitConsoleIfSupported=false;this.showSplitConsole();}
return;}
this._shouldRevealSpitConsoleIfSupported=this.isShowingSplitConsole();this.hideSplitConsole();};WebInspector._toolbarMouseDown=function(event)
{if(event.ctrlKey)
return;if(this._dockConfiguration===WebInspector.DockConfiguration.Right||this._dockConfiguration===WebInspector.DockConfiguration.Left)
return;if(this.docked)
this._dockedResizerMouseDown(event);else
this._moveWindowMouseDown(event);};WebInspector._dockedResizerMouseDown=function(event)
{if(event.button!==0||event.ctrlKey)
return;if(!this.docked)
return;if(event.target.id!=="docked-resizer"&&!event.target.classList.contains("toolbar")&&!event.target.classList.contains("flexible-space")&&!event.target.classList.contains("item-section"))
return;event[WebInspector.Popover.EventPreventDismissSymbol]=true;let windowProperty=this._dockConfiguration===WebInspector.DockConfiguration.Bottom?"innerHeight":"innerWidth";let eventScreenProperty=this._dockConfiguration===WebInspector.DockConfiguration.Bottom?"screenY":"screenX";let eventClientProperty=this._dockConfiguration===WebInspector.DockConfiguration.Bottom?"clientY":"clientX";var resizerElement=event.target;var firstClientPosition=event[eventClientProperty];var lastScreenPosition=event[eventScreenProperty];function dockedResizerDrag(event)
{if(event.button!==0)
return;var position=event[eventScreenProperty];var delta=position-lastScreenPosition;var clientPosition=event[eventClientProperty];lastScreenPosition=position;if(this._dockConfiguration===WebInspector.DockConfiguration.Left){if(delta>0&&clientPosition<firstClientPosition)
return;if(delta<0&&clientPosition>window[windowProperty])
return;
delta*=-1;}else{if(delta>0&&clientPosition<firstClientPosition)
return;if(delta<0&&clientPosition>firstClientPosition)
return;}
let dimension=Math.max(0,window[windowProperty]-delta);
dimension*=this.getZoomFactor();if(this._dockConfiguration===WebInspector.DockConfiguration.Bottom)
InspectorFrontendHost.setAttachedWindowHeight(dimension);else
InspectorFrontendHost.setAttachedWindowWidth(dimension);}
function dockedResizerDragEnd(event)
{if(event.button!==0)
return;WebInspector.elementDragEnd(event);}
WebInspector.elementDragStart(resizerElement,dockedResizerDrag.bind(this),dockedResizerDragEnd.bind(this),event,this._dockConfiguration===WebInspector.DockConfiguration.Bottom?"row-resize":"col-resize");};WebInspector._moveWindowMouseDown=function(event)
{if(event.button!==0||event.ctrlKey)
return;if(!event.target.classList.contains("toolbar")&&!event.target.classList.contains("flexible-space")&&!event.target.classList.contains("item-section"))
return;event[WebInspector.Popover.EventPreventDismissSymbol]=true;if(WebInspector.Platform.name==="mac"){if(WebInspector.Platform.version.release>=11){InspectorFrontendHost.startWindowDrag();event.preventDefault();return;}
if(WebInspector.Platform.version.release===10){const windowDragHandledTitleBarHeight=22;if(event.pageY<windowDragHandledTitleBarHeight){event.preventDefault();return;}}}
var lastScreenX=event.screenX;var lastScreenY=event.screenY;function toolbarDrag(event)
{if(event.button!==0)
return;var x=event.screenX-lastScreenX;var y=event.screenY-lastScreenY;InspectorFrontendHost.moveWindowBy(x,y);lastScreenX=event.screenX;lastScreenY=event.screenY;}
function toolbarDragEnd(event)
{if(event.button!==0)
return;WebInspector.elementDragEnd(event);}
WebInspector.elementDragStart(event.target,toolbarDrag,toolbarDragEnd,event,"default");};WebInspector._storageWasInspected=function(event)
{this.showStorageTab();};WebInspector._domNodeWasInspected=function(event)
{this.domTreeManager.highlightDOMNodeForTwoSeconds(event.data.node.id);InspectorFrontendHost.bringToFront();this.showElementsTab();this.showMainFrameDOMTree(event.data.node);};WebInspector._inspectModeStateChanged=function(event)
{this._inspectModeToolbarButton.activated=this.domTreeManager.inspectModeEnabled;};WebInspector._toggleInspectMode=function(event)
{this.domTreeManager.inspectModeEnabled=!this.domTreeManager.inspectModeEnabled;};WebInspector._downloadWebArchive=function(event)
{this.archiveMainFrame();};WebInspector._reloadPage=function(event)
{if(!window.PageAgent)
return;PageAgent.reload();event.preventDefault();};WebInspector._reloadPageClicked=function(event)
{PageAgent.reload.invoke({shouldIgnoreCache:window.event?window.event.shiftKey:false});};WebInspector._reloadPageIgnoringCache=function(event)
{if(!window.PageAgent)
return;PageAgent.reload(true);event.preventDefault();};WebInspector._updateReloadToolbarButton=function()
{if(!window.PageAgent){this._reloadToolbarButton.hidden=true;return;}
this._reloadToolbarButton.hidden=false;};WebInspector._updateDownloadToolbarButton=function()
{if(!window.PageAgent||!PageAgent.archive||this.debuggableType!==WebInspector.DebuggableType.Web){this._downloadToolbarButton.hidden=true;return;}
if(this._downloadingPage){this._downloadToolbarButton.enabled=false;return;}
this._downloadToolbarButton.enabled=this.canArchiveMainFrame();};WebInspector._toggleInspectMode=function(event)
{this.domTreeManager.inspectModeEnabled=!this.domTreeManager.inspectModeEnabled;};WebInspector._showConsoleTab=function(event)
{this.showConsoleTab();};WebInspector._focusConsolePrompt=function(event)
{this.quickConsole.prompt.focus();};WebInspector._focusedContentBrowser=function()
{if(this.tabBrowser.element.isSelfOrAncestor(this.currentFocusElement)||document.activeElement===document.body){var tabContentView=this.tabBrowser.selectedTabContentView;if(tabContentView instanceof WebInspector.ContentBrowserTabContentView)
return tabContentView.contentBrowser;return null;}
if(this.consoleDrawer.element.isSelfOrAncestor(this.currentFocusElement)||(WebInspector.isShowingSplitConsole()&&this.quickConsole.element.isSelfOrAncestor(this.currentFocusElement)))
return this.consoleDrawer;return null;};WebInspector._focusedContentView=function()
{if(this.tabBrowser.element.isSelfOrAncestor(this.currentFocusElement)||document.activeElement===document.body){var tabContentView=this.tabBrowser.selectedTabContentView;if(tabContentView instanceof WebInspector.ContentBrowserTabContentView)
return tabContentView.contentBrowser.currentContentView;return tabContentView;}
if(this.consoleDrawer.element.isSelfOrAncestor(this.currentFocusElement)||(WebInspector.isShowingSplitConsole()&&this.quickConsole.element.isSelfOrAncestor(this.currentFocusElement)))
return this.consoleDrawer.currentContentView;return null;};WebInspector._focusedOrVisibleContentBrowser=function()
{let focusedContentBrowser=this._focusedContentBrowser();if(focusedContentBrowser)
return focusedContentBrowser;var tabContentView=this.tabBrowser.selectedTabContentView;if(tabContentView instanceof WebInspector.ContentBrowserTabContentView)
return tabContentView.contentBrowser;return null;};WebInspector.focusedOrVisibleContentView=function()
{let focusedContentView=this._focusedContentView();if(focusedContentView)
return focusedContentView;var tabContentView=this.tabBrowser.selectedTabContentView;if(tabContentView instanceof WebInspector.ContentBrowserTabContentView)
return tabContentView.contentBrowser.currentContentView;return tabContentView;};WebInspector._beforecopy=function(event)
{var selection=window.getSelection();if(selection.isCollapsed&&!WebInspector.isEventTargetAnEditableField(event)){var focusedCopyHandler=this.currentFocusElement&&this.currentFocusElement.copyHandler;if(focusedCopyHandler&&typeof focusedCopyHandler.handleBeforeCopyEvent==="function"){focusedCopyHandler.handleBeforeCopyEvent(event);if(event.defaultPrevented)
return;}
var focusedContentView=this._focusedContentView();if(focusedContentView&&typeof focusedContentView.handleCopyEvent==="function"){event.preventDefault();return;}
return;}
if(selection.isCollapsed)
return;event.preventDefault();};WebInspector._find=function(event)
{let contentBrowser=this._focusedOrVisibleContentBrowser();if(!contentBrowser)
return;contentBrowser.showFindBanner();};WebInspector._save=function(event)
{var contentView=this.focusedOrVisibleContentView();if(!contentView||!contentView.supportsSave)
return;WebInspector.saveDataToFile(contentView.saveData);};WebInspector._saveAs=function(event)
{var contentView=this.focusedOrVisibleContentView();if(!contentView||!contentView.supportsSave)
return;WebInspector.saveDataToFile(contentView.saveData,true);};WebInspector._clear=function(event)
{let contentView=this.focusedOrVisibleContentView();if(!contentView||typeof contentView.handleClearShortcut!=="function"){
this.logManager.requestClearMessages();return;}
contentView.handleClearShortcut(event);};WebInspector._copy=function(event)
{var selection=window.getSelection();if(selection.isCollapsed&&!WebInspector.isEventTargetAnEditableField(event)){var focusedCopyHandler=this.currentFocusElement&&this.currentFocusElement.copyHandler;if(focusedCopyHandler&&typeof focusedCopyHandler.handleCopyEvent==="function"){focusedCopyHandler.handleCopyEvent(event);if(event.defaultPrevented)
return;}
var focusedContentView=this._focusedContentView();if(focusedContentView&&typeof focusedContentView.handleCopyEvent==="function"){focusedContentView.handleCopyEvent(event);return;}
let tabContentView=this.tabBrowser.selectedTabContentView;if(tabContentView&&typeof tabContentView.handleCopyEvent==="function"){tabContentView.handleCopyEvent(event);return;}
return;}
if(selection.isCollapsed)
return;var selectionString=selection.toString().removeWordBreakCharacters();event.clipboardData.setData("text/plain",selectionString);event.preventDefault();};WebInspector._increaseZoom=function(event)
{const epsilon=0.0001;const maximumZoom=2.4;let currentZoom=this.getZoomFactor();if(currentZoom+epsilon>=maximumZoom){InspectorFrontendHost.beep();return;}
this.setZoomFactor(Math.min(maximumZoom,currentZoom+0.2));};WebInspector._decreaseZoom=function(event)
{const epsilon=0.0001;const minimumZoom=0.6;let currentZoom=this.getZoomFactor();if(currentZoom-epsilon<=minimumZoom){InspectorFrontendHost.beep();return;}
this.setZoomFactor(Math.max(minimumZoom,currentZoom-0.2));};WebInspector._resetZoom=function(event)
{this.setZoomFactor(1);};WebInspector.getZoomFactor=function()
{return WebInspector.settings.zoomFactor.value;};WebInspector.setZoomFactor=function(factor)
{InspectorFrontendHost.setZoomFactor(factor);WebInspector.settings.zoomFactor.value=InspectorFrontendHost.zoomFactor();};WebInspector.resolvedLayoutDirection=function()
{let layoutDirection=WebInspector.settings.layoutDirection.value;if(layoutDirection===WebInspector.LayoutDirection.System)
layoutDirection=InspectorFrontendHost.userInterfaceLayoutDirection();return layoutDirection;};WebInspector.setLayoutDirection=function(value)
{if(!Object.values(WebInspector.LayoutDirection).includes(value))
WebInspector.reportInternalError("Unknown layout direction requested: "+value);if(value===WebInspector.settings.layoutDirection.value)
return;WebInspector.settings.layoutDirection.value=value;if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.RTL&&this._dockConfiguration===WebInspector.DockConfiguration.Right)
this._dockLeft();if(WebInspector.resolvedLayoutDirection()===WebInspector.LayoutDirection.LTR&&this._dockConfiguration===WebInspector.DockConfiguration.Left)
this._dockRight();window.location.reload();};WebInspector._showTabAtIndex=function(i,event)
{if(i<=WebInspector.tabBar.tabBarItems.length)
WebInspector.tabBar.selectedTabBarItem=i-1;};WebInspector._showJavaScriptTypeInformationSettingChanged=function(event)
{if(this.showJavaScriptTypeInformationSetting.value){for(let target of WebInspector.targets)
target.RuntimeAgent.enableTypeProfiler();}else{for(let target of WebInspector.targets)
target.RuntimeAgent.disableTypeProfiler();}};WebInspector._enableControlFlowProfilerSettingChanged=function(event)
{if(this.enableControlFlowProfilerSetting.value){for(let target of WebInspector.targets)
target.RuntimeAgent.enableControlFlowProfiler();}else{for(let target of WebInspector.targets)
target.RuntimeAgent.disableControlFlowProfiler();}};WebInspector._resourceCachingDisabledSettingChanged=function(event)
{NetworkAgent.setResourceCachingDisabled(this.resourceCachingDisabledSetting.value);}
WebInspector.elementDragStart=function(element,dividerDrag,elementDragEnd,event,cursor,eventTarget)
{if(WebInspector._elementDraggingEventListener||WebInspector._elementEndDraggingEventListener)
WebInspector.elementDragEnd(event);if(element){ if(WebInspector._elementDraggingGlassPane)
WebInspector._elementDraggingGlassPane.remove();var glassPane=document.createElement("div");glassPane.style.cssText="position:absolute;top:0;bottom:0;left:0;right:0;opacity:0;z-index:1";glassPane.id="glass-pane-for-drag";element.ownerDocument.body.appendChild(glassPane);WebInspector._elementDraggingGlassPane=glassPane;}
WebInspector._elementDraggingEventListener=dividerDrag;WebInspector._elementEndDraggingEventListener=elementDragEnd;var targetDocument=event.target.ownerDocument;WebInspector._elementDraggingEventTarget=eventTarget||targetDocument;WebInspector._elementDraggingEventTarget.addEventListener("mousemove",dividerDrag,true);WebInspector._elementDraggingEventTarget.addEventListener("mouseup",elementDragEnd,true);targetDocument.body.style.cursor=cursor;event.preventDefault();};WebInspector.elementDragEnd=function(event)
{WebInspector._elementDraggingEventTarget.removeEventListener("mousemove",WebInspector._elementDraggingEventListener,true);WebInspector._elementDraggingEventTarget.removeEventListener("mouseup",WebInspector._elementEndDraggingEventListener,true);event.target.ownerDocument.body.style.removeProperty("cursor");if(WebInspector._elementDraggingGlassPane)
WebInspector._elementDraggingGlassPane.remove();delete WebInspector._elementDraggingGlassPane;delete WebInspector._elementDraggingEventTarget;delete WebInspector._elementDraggingEventListener;delete WebInspector._elementEndDraggingEventListener;event.preventDefault();};WebInspector.createMessageTextView=function(message,isError)
{var messageElement=document.createElement("div");messageElement.className="message-text-view";if(isError)
messageElement.classList.add("error");messageElement.textContent=message;return messageElement;};WebInspector.createGoToArrowButton=function()
{var button=document.createElement("button");button.addEventListener("mousedown",(event)=>{event.stopPropagation();},true);button.className="go-to-arrow";button.tabIndex=-1;return button;};WebInspector.createSourceCodeLocationLink=function(sourceCodeLocation,options={})
{if(!sourceCodeLocation)
return null;var linkElement=document.createElement("a");linkElement.className="go-to-link";WebInspector.linkifyElement(linkElement,sourceCodeLocation,options);sourceCodeLocation.populateLiveDisplayLocationTooltip(linkElement);if(options.useGoToArrowButton)
linkElement.appendChild(WebInspector.createGoToArrowButton());else
sourceCodeLocation.populateLiveDisplayLocationString(linkElement,"textContent",options.columnStyle,options.nameStyle,options.prefix);if(options.dontFloat)
linkElement.classList.add("dont-float");return linkElement;};WebInspector.linkifyLocation=function(url,sourceCodePosition,options={})
{var sourceCode=WebInspector.sourceCodeForURL(url);if(!sourceCode){var anchor=document.createElement("a");anchor.href=url;anchor.lineNumber=sourceCodePosition.lineNumber;if(options.className)
anchor.className=options.className;anchor.append(WebInspector.displayNameForURL(url)+":"+sourceCodePosition.lineNumber);return anchor;}
let sourceCodeLocation=sourceCode.createSourceCodeLocation(sourceCodePosition.lineNumber,sourceCodePosition.columnNumber);let linkElement=WebInspector.createSourceCodeLocationLink(sourceCodeLocation,Object.shallowMerge(options,{dontFloat:true}));if(options.className)
linkElement.classList.add(options.className);return linkElement;};WebInspector.linkifyElement=function(linkElement,sourceCodeLocation,options={}){function showSourceCodeLocation(event)
{event.stopPropagation();event.preventDefault();if(event.metaKey)
this.showOriginalUnformattedSourceCodeLocation(sourceCodeLocation,options);else
this.showSourceCodeLocation(sourceCodeLocation,options);}
linkElement.addEventListener("click",showSourceCodeLocation.bind(this));linkElement.addEventListener("contextmenu",(event)=>{let contextMenu=WebInspector.ContextMenu.createFromEvent(event);WebInspector.appendContextMenuItemsForSourceCode(contextMenu,sourceCodeLocation);});};WebInspector.sourceCodeForURL=function(url)
{var sourceCode=WebInspector.frameResourceManager.resourceForURL(url);if(!sourceCode){sourceCode=WebInspector.debuggerManager.scriptsForURL(url,WebInspector.assumingMainTarget())[0];if(sourceCode)
sourceCode=sourceCode.resource||sourceCode;}
return sourceCode||null;};WebInspector.linkifyURLAsNode=function(url,linkText,classes)
{if(!linkText)
linkText=url;classes=(classes?classes+" ":"");var a=document.createElement("a");a.href=url;a.className=classes;a.textContent=linkText;a.style.maxWidth="100%";return a;};WebInspector.linkifyStringAsFragmentWithCustomLinkifier=function(string,linkifier)
{var container=document.createDocumentFragment();var linkStringRegEx=/(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\/\/|www\.)[\w$\-_+*'=\|\/\\(){}[\]%@&#~,:;.!?]{2,}[\w$\-_+*=\|\/\\({%@&#~]/;var lineColumnRegEx=/:(\d+)(:(\d+))?$/;while(string){var linkString=linkStringRegEx.exec(string);if(!linkString)
break;linkString=linkString[0];var linkIndex=string.indexOf(linkString);var nonLink=string.substring(0,linkIndex);container.append(nonLink);if(linkString.startsWith("data:")||linkString.startsWith("javascript:")||linkString.startsWith("mailto:")){container.append(linkString);string=string.substring(linkIndex+linkString.length,string.length);continue;}
var title=linkString;var realURL=linkString.startsWith("www.")?"http://"+linkString:linkString;var lineColumnMatch=lineColumnRegEx.exec(realURL);if(lineColumnMatch)
realURL=realURL.substring(0,realURL.length-lineColumnMatch[0].length);var lineNumber;if(lineColumnMatch)
lineNumber=parseInt(lineColumnMatch[1])-1;var linkNode=linkifier(title,realURL,lineNumber);container.appendChild(linkNode);string=string.substring(linkIndex+linkString.length,string.length);}
if(string)
container.append(string);return container;};WebInspector.linkifyStringAsFragment=function(string)
{function linkifier(title,url,lineNumber)
{var urlNode=WebInspector.linkifyURLAsNode(url,title,undefined);if(lineNumber!==undefined)
urlNode.lineNumber=lineNumber;return urlNode;}
return WebInspector.linkifyStringAsFragmentWithCustomLinkifier(string,linkifier);};WebInspector.createResourceLink=function(resource,className)
{function handleClick(event)
{event.stopPropagation();event.preventDefault();WebInspector.showRepresentedObject(resource);}
let linkNode=document.createElement("a");linkNode.classList.add("resource-link",className);linkNode.title=resource.url;linkNode.textContent=(resource.urlComponents.lastPathComponent||resource.url).insertWordBreakCharacters();linkNode.addEventListener("click",handleClick.bind(this));return linkNode;};WebInspector._undoKeyboardShortcut=function(event)
{if(!this.isEditingAnyField()&&!this.isEventTargetAnEditableField(event)){this.undo();event.preventDefault();}};WebInspector._redoKeyboardShortcut=function(event)
{if(!this.isEditingAnyField()&&!this.isEventTargetAnEditableField(event)){this.redo();event.preventDefault();}};WebInspector.undo=function()
{DOMAgent.undo();};WebInspector.redo=function()
{DOMAgent.redo();};WebInspector.highlightRangesWithStyleClass=function(element,resultRanges,styleClass,changes)
{changes=changes||[];var highlightNodes=[];var lineText=element.textContent;var ownerDocument=element.ownerDocument;var textNodeSnapshot=ownerDocument.evaluate(".//text()",element,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);var snapshotLength=textNodeSnapshot.snapshotLength;if(snapshotLength===0)
return highlightNodes;var nodeRanges=[];var rangeEndOffset=0;for(var i=0;i<snapshotLength;++i){var range={};range.offset=rangeEndOffset;range.length=textNodeSnapshot.snapshotItem(i).textContent.length;rangeEndOffset=range.offset+range.length;nodeRanges.push(range);}
var startIndex=0;for(var i=0;i<resultRanges.length;++i){var startOffset=resultRanges[i].offset;var endOffset=startOffset+resultRanges[i].length;while(startIndex<snapshotLength&&nodeRanges[startIndex].offset+nodeRanges[startIndex].length<=startOffset)
startIndex++;var endIndex=startIndex;while(endIndex<snapshotLength&&nodeRanges[endIndex].offset+nodeRanges[endIndex].length<endOffset)
endIndex++;if(endIndex===snapshotLength)
break;var highlightNode=ownerDocument.createElement("span");highlightNode.className=styleClass;highlightNode.textContent=lineText.substring(startOffset,endOffset);var lastTextNode=textNodeSnapshot.snapshotItem(endIndex);var lastText=lastTextNode.textContent;lastTextNode.textContent=lastText.substring(endOffset-nodeRanges[endIndex].offset);changes.push({node:lastTextNode,type:"changed",oldText:lastText,newText:lastTextNode.textContent});if(startIndex===endIndex){lastTextNode.parentElement.insertBefore(highlightNode,lastTextNode);changes.push({node:highlightNode,type:"added",nextSibling:lastTextNode,parent:lastTextNode.parentElement});highlightNodes.push(highlightNode);var prefixNode=ownerDocument.createTextNode(lastText.substring(0,startOffset-nodeRanges[startIndex].offset));lastTextNode.parentElement.insertBefore(prefixNode,highlightNode);changes.push({node:prefixNode,type:"added",nextSibling:highlightNode,parent:lastTextNode.parentElement});}else{var firstTextNode=textNodeSnapshot.snapshotItem(startIndex);var firstText=firstTextNode.textContent;var anchorElement=firstTextNode.nextSibling;firstTextNode.parentElement.insertBefore(highlightNode,anchorElement);changes.push({node:highlightNode,type:"added",nextSibling:anchorElement,parent:firstTextNode.parentElement});highlightNodes.push(highlightNode);firstTextNode.textContent=firstText.substring(0,startOffset-nodeRanges[startIndex].offset);changes.push({node:firstTextNode,type:"changed",oldText:firstText,newText:firstTextNode.textContent});for(var j=startIndex+1;j<endIndex;j++){var textNode=textNodeSnapshot.snapshotItem(j);var text=textNode.textContent;textNode.textContent="";changes.push({node:textNode,type:"changed",oldText:text,newText:textNode.textContent});}}
startIndex=endIndex;nodeRanges[startIndex].offset=endOffset;nodeRanges[startIndex].length=lastTextNode.textContent.length;}
return highlightNodes;};WebInspector.revertDomChanges=function(domChanges)
{for(var i=domChanges.length-1;i>=0;--i){var entry=domChanges[i];switch(entry.type){case"added":entry.node.remove();break;case"changed":entry.node.textContent=entry.oldText;break;}}};WebInspector.archiveMainFrame=function()
{this._downloadingPage=true;this._updateDownloadToolbarButton();PageAgent.archive((error,data)=>{this._downloadingPage=false;this._updateDownloadToolbarButton();if(error)
return;let mainFrame=WebInspector.frameResourceManager.mainFrame;let archiveName=mainFrame.mainResource.urlComponents.host||mainFrame.mainResource.displayName||"Archive";let url="web-inspector:///"+encodeURI(archiveName)+".webarchive";InspectorFrontendHost.save(url,data,true,true);});};WebInspector.canArchiveMainFrame=function()
{if(!PageAgent.archive||this.debuggableType!==WebInspector.DebuggableType.Web)
return false;if(!WebInspector.frameResourceManager.mainFrame||!WebInspector.frameResourceManager.mainFrame.mainResource)
return false;return WebInspector.Resource.typeFromMIMEType(WebInspector.frameResourceManager.mainFrame.mainResource.mimeType)===WebInspector.Resource.Type.Document;};WebInspector.addWindowKeydownListener=function(listener)
{if(typeof listener.handleKeydownEvent!=="function")
return;this._windowKeydownListeners.push(listener);this._updateWindowKeydownListener();};WebInspector.removeWindowKeydownListener=function(listener)
{this._windowKeydownListeners.remove(listener);this._updateWindowKeydownListener();};WebInspector._updateWindowKeydownListener=function()
{if(this._windowKeydownListeners.length===1)
window.addEventListener("keydown",WebInspector._sharedWindowKeydownListener,true);else if(!this._windowKeydownListeners.length)
window.removeEventListener("keydown",WebInspector._sharedWindowKeydownListener,true);};WebInspector._sharedWindowKeydownListener=function(event)
{for(var i=WebInspector._windowKeydownListeners.length-1;i>=0;--i){if(WebInspector._windowKeydownListeners[i].handleKeydownEvent(event)){event.stopImmediatePropagation();event.preventDefault();break;}}};WebInspector.reportInternalError=function(errorOrString,details={})
{
let error=(errorOrString instanceof Error)?errorOrString:new Error(errorOrString);error.details=details;if(WebInspector.isDebugUIEnabled()){
handleInternalException(error);}else
console.error(error);};Object.defineProperty(WebInspector,"targets",{get(){return this.targetManager.targets;}});
WebInspector.assumingMainTarget=function()
{return WebInspector.mainTarget;};WebInspector.dialogWasDismissed=function(dialog)
{let representedObject=dialog.representedObject;if(!representedObject)
return;WebInspector.showRepresentedObject(representedObject,dialog.cookie);};WebInspector.DockConfiguration={Right:"right",Left:"left",Bottom:"bottom",Undocked:"undocked",};